翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Service Catalog で Amazon EMR CloudFormation テンプレートを設定する
このトピックでは、管理者が AWS CloudFormation、 のポートフォリオと製品 AWS Service Catalog、および Amazon EMR に精通していることを前提としています。
Studio からの Amazon EMR クラスターの作成を簡素化するために、管理者は Amazon EMR CloudFormation テンプレートを AWS Service Catalog のポートフォリオの製品として登録できます。データサイエンティストがテンプレートを使用できるようにするには、ポートフォリオを Studio または Studio Classic で使用される SageMaker AI 実行ロールに関連付ける必要があります。最後に、ユーザーが Studio または Studio Classic からテンプレートを検出し、クラスターをプロビジョンして、Amazon EMR クラスターに接続できるようにするために、管理者は適切なアクセス許可を設定する必要があります。
Amazon EMR AWS CloudFormation テンプレートを使用すると、エンドユーザーはさまざまなクラスターの側面をカスタマイズできます。例えば、管理者は、クラスターの作成時にユーザーが選択できるように、承認済みのインスタンスタイプのリストを定義できます。
次の手順では、エンドツーエンドの CloudFormation スタック
注記
GitHub リポジトリ aws-samples/sagemaker-studio-emr
sagemaker-studio-emr/cloudformation/emr_servicecatalog_templates
Amazon EMR クラスターへの接続に使用できる認証方法の詳細については、「SageMaker Studio または Studio Classic から Amazon EMR クラスターに接続する」を参照してください。
データサイエンティストが Amazon EMR CloudFormation テンプレートを検出し、Studio または Studio Classic からクラスターをプロビジョンできるようにするには、以下の手順を実行します。
ステップ 0: ネットワークを確認して、CloudFormation スタックを準備する
開始する前に:
-
「Amazon EMR クラスターのネットワークアクセスを設定する」のネットワーク要件とセキュリティ要件を必ず確認します。
-
選択した認証方法をサポートする既存のエンドツーエンドの CloudFormation スタックが必要となります。CloudFormation テンプレートの例は aws-samples/sagemaker-studio-emr
の GitHub レポジトリに提供されています。次の手順では、Studio または Studio Classic 内で Amazon EMR テンプレートを使用できるようにするための、エンドツーエンドスタックの特定の設定について説明します。
ステップ 1: Service Catalog ポートフォリオを SageMaker AI に関連付ける
Service Catalog ポートフォリオで、クラスターにアクセスする SageMaker AI 実行ロールにポートフォリオ ID を関連付けます。
これを行うには、以下のセクション (ここでは YAML 形式) をスタックに追加します。これにより、Amazon EMR テンプレートなどの製品を含む指定された Service Catalog ポートフォリオへのアクセス権が SageMaker AI 実行ロールに付与されます。これにより、SageMaker AI が引き受けるロールがこれらの製品を起動できるようになります。
SageMakerExecutionRole.Arn
と SageMakerStudioEMRProductPortfolio.ID
は、実際の値に置き換えます。
SageMakerStudioEMRProductPortfolioPrincipalAssociation: Type: AWS::ServiceCatalog::PortfolioPrincipalAssociation Properties: PrincipalARN:
SageMakerExecutionRole.Arn
PortfolioId:SageMakerStudioEMRProductPortfolio.ID
PrincipalType: IAM
必要な IAM アクセス許可セットの詳細については、「アクセス許可」セクションを参照してください。
ステップ 2: Service Catalog 製品で Amazon EMR テンプレートを参照する
ポートフォリオの Service Catalog 製品で、Amazon EMR テンプレートリソースを参照し、Studio または Studio Classic でその可視性を確認します。
これを行うには、Service Catalog 製品定義で Amazon EMR テンプレートリソースを参照し、次のタグキー "sagemaker:studio-visibility:emr"
を追加して値を "true"
に設定します (YAML 形式の例を参照)。
Service Catalog 製品定義では、クラスターの AWS CloudFormation テンプレートは URL を介して参照されます。追加のタグを true に設定すると、Studio または Studio Classic の Amazon EMR テンプレートが可視化されます。
注記
この例で指定された URL で参照されている Amazon EMR テンプレートは、起動時に認証要件を適用しません。このオプションは、デモとトレーニングを目的として提供されています。本番環境での利用はお勧めしません。
SMStudioEMRNoAuthProduct: Type: AWS::ServiceCatalog::CloudFormationProduct Properties: Owner: AWS Name: SageMaker Studio Domain No Auth EMR ProvisioningArtifactParameters: - Name: SageMaker Studio Domain No Auth EMR Description: Provisions a SageMaker domain and No Auth EMR Cluster Info: LoadTemplateFromURL:
Link to your CloudFormation template. For example, https://aws-blogs-artifacts-public.s3.amazonaws.com/artifacts/astra-m4-sagemaker/end-to-end/CFN-EMR-NoStudioNoAuthTemplate-v3.yaml
Tags: - Key: "sagemaker:studio-visibility:emr" Value: "true"
ステップ 3: Amazon EMR CloudFormation テンプレートをパラメータ化する
Service Catalog 製品内で Amazon EMR クラスターの定義に使用される CloudFormation テンプレートを使用すると、管理者は設定可能なパラメータを指定できます。管理者は、テンプレートの Parameters
セクション内で、このようなパラメータの Default
値と AllowedValues
範囲を定義できます。クラスターの起動プロセス中、データサイエンティストは、Amazon EMR クラスターの特定の要素をカスタマイズするために、カスタム入力を指定したり、このような事前定義済みのオプションから選択したりできます。
以下の例は、管理者が Amazon EMR テンプレートを作成するときに設定できる追加の入力パラメータを示しています。
"Parameters": { "EmrClusterName": { "Type": "String", "Description": "EMR cluster Name." }, "MasterInstanceType": { "Type": "String", "Description": "Instance type of the EMR master node.", "Default": "m5.xlarge", "AllowedValues": [ "m5.xlarge", "m5.2xlarge", "m5.4xlarge" ] }, "CoreInstanceType": { "Type": "String", "Description": "Instance type of the EMR core nodes.", "Default": "m5.xlarge", "AllowedValues": [ "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge" ] }, "CoreInstanceCount": { "Type": "String", "Description": "Number of core instances in the EMR cluster.", "Default": "2", "AllowedValues": [ "2", "5", "10" ] }, "EmrReleaseVersion": { "Type": "String", "Description": "The release version of EMR to launch.", "Default": "emr-5.33.1", "AllowedValues": [ "emr-5.33.1", "emr-6.4.0" ] } }
管理者が Amazon EMR CloudFormation テンプレートを Studio 内で利用できるようにした後、データサイエンティストはこのようなテンプレートを使用して Amazon EMR クラスターをセルフプロビジョンできるようになります。テンプレートで定義されている Parameters
セクションは、Studio または Studio Classic 内のクラスター作成フォームの入力フィールドに変換されます。各パラメータについて、データサイエンティストは入力ボックスにカスタム値を入力するか、ドロップダウンメニューにリストされている事前定義されたオプションから選択することができます。これは、テンプレートで指定された AllowedValues
に対応するものです。
次の画像は、Studio または Studio Classic で Amazon EMR クラスターを作成するために CloudFormation Amazon EMR テンプレートから組み立てられた動的フォームを示しています。
![Studio または Studio Classic から Amazon EMR クラスターを作成するために CloudFormation Amazon EMR テンプレートから組み立てられた動的フォームの図](images/studio/emr/studio-notebooks-emr-cluster-creation.png)
このような Amazon EMR テンプレートを使用して、Studio または Studio Classic からクラスターを起動する方法の詳細については、「Studio または Studio Classic から Amazon EMR クラスターを起動する」にアクセスしてください。
ステップ 4: Studio から Amazon EMR クラスターを一覧表示して起動できるようにアクセス許可を設定する
最後に、必要な IAM アクセス許可をアタッチして、Studio または Studio Classic から既存の実行中の Amazon EMR クラスターを一覧表示し、新しいクラスターをセルフプロビジョンできるようにします。
このようなアクセス許可を追加する必要があるロールは、Studio または Studio Classic と Amazon EMR が同じアカウントにデプロイされているか (単一のアカウントを選択)、別々のアカウントにデプロイされているか (クロスアカウントを選択) によって異なります。
重要
プライベートスペースから起動される JupyterLab アプリケーションと Studio Classic アプリケーションの Amazon EMR クラスターのみを検出して接続できます。Amazon EMR クラスターが Studio 環境と同じ AWS リージョンにあることを確認します。
Amazon EMR クラスターと Studio または Studio Classic が同じ AWS アカウントにデプロイされている場合は、クラスターにアクセスする SageMaker AI 実行ロールに次のアクセス許可をアタッチします。
-
ステップ 1: プライベートスペースで使用される SageMaker AI 実行ロールの ARN を取得します。
SageMaker AI のスペースと実行ロールの詳細については、「」を参照してくださいドメインスペースのアクセス許可と実行ロールを理解する。
SageMaker AI の実行ロールの ARN を取得する方法の詳細については、「」を参照してください実行ロールを取得する。
-
ステップ 2: Amazon EMR クラスターにアクセスする SageMaker AI 実行ロールに次のアクセス許可をアタッチします。
-
[IAM console]
(IAM コンソール) に入ります。 -
[ロール] をクリックしてから、[検索] フィールドで名前を使って実行ロールを検索します。ロール名は、ARN の最後のスラッシュ (/) の後にある最後の部分です。
-
ロールへのリンクをクリックします。
-
[アクセス許可の追加] をクリックしてから、[インラインポリシーの作成] をクリックします。
-
[JSON] タブで、Amazon EMR アクセスとオペレーションを許可する Amazon EMR アクセス許可を追加します。ポリシードキュメントの詳細については、「リファレンスポリシー」の「Amazon EMR ポリシーを一覧表示する」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、
region
とaccountID
を実際の値に置き換えます。 -
[次へ] をクリックして、[ポリシー名] を指定します。
-
[Create policy] を選択します。
-
[インラインポリシーの作成] ステップを繰り返し、 AWS CloudFormation テンプレートを使用して新しい Amazon EMR クラスターをプロビジョンするアクセス許可を実行ロールに付与する別のポリシーを追加します。ポリシードキュメントの詳細については、「リファレンスポリシー」の「Create Amazon EMRclusters policies」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、
region
とaccountID
を実際の値に置き換えます。
-
注記
Amazon EMR クラスターへのロールベースのアクセスコントロール (RBAC) 接続を使用する場合も、「Amazon EMR クラスターと Studio が同じアカウントにある場合のランタイムロール認証の設定」を参照する必要があります。
開始する前に、プライベートスペースで使用される SageMaker AI 実行ロールの ARN を取得します。
SageMaker AI のスペースと実行ロールの詳細については、「」を参照してくださいドメインスペースのアクセス許可と実行ロールを理解する。
SageMaker AI の実行ロールの ARN を取得する方法の詳細については、「」を参照してください実行ロールを取得する。
Amazon EMR クラスターと Studio または Studio Classic が別々の AWS アカウントにデプロイされている場合は、両方のアカウントでアクセス許可を設定します。
注記
Amazon EMR クラスターへのロールベースのアクセスコントロール (RBAC) 接続を使用する場合も、「クラスターと Studio が別のアカウントにある場合のランタイムロール認証の設定」を参照する必要があります。
Amazon EMR クラスターアカウントの設定
信頼するアカウントとも呼ばれる、Amazon EMR がデプロイされているアカウントに必要なロールとポリシーを作成するには、次の手順に従います。
-
ステップ 1: Amazon EMR クラスターのサービスロールの ARN を取得します。
クラスターのサービスロールの ARN を検索する方法については、「AWS のサービスおよびリソースへのアクセス許可を Amazon EMR に付与する IAM サービスロールの設定」を参照してください。
-
ステップ 2: 以下の設定を使用して、
AssumableRole
という名前のカスタム IAM ロールを作成します。-
アクセス許可: Amazon EMR リソースへのアクセスを許可するために必要なアクセス許可を
AssumableRole
に付与します。このロールは、クロスアカウントアクセスのシナリオでのアクセスロールとも呼ばれます。 -
信頼関係: アクセスを必要とする Studio アカウントから実行ロール (クロスアカウント図の
SageMakerExecutionRole
) を引き受けることができるように、AssumableRole
の信頼ポリシーを設定します。
このロールを引き受けることで、Studio または Studio Classic は Amazon EMR で必要なアクセス許可への一時的なアクセスを取得できます。
Amazon EMR AWS アカウント
AssumableRole
で新しい を作成する方法の詳細については、次の手順に従います。-
[IAM console]
(IAM コンソール) に入ります。 -
左側のナビゲーションペインで、[ポリシー]、[ポリシーの作成] の順に選択します。
-
[JSON] タブで、Amazon EMR アクセスとオペレーションを許可する Amazon EMR アクセス許可を追加します。ポリシードキュメントの詳細については、「リファレンスポリシー」の「Amazon EMR ポリシーを一覧表示する」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、
region
とaccountID
を実際の値に置き換えます。 -
[次へ] をクリックして、[ポリシー名] を指定します。
-
[Create policy] を選択します。
-
左側のナビゲーションペインで、[ロール]、[ロールを作成] の順に選択します。
-
[ロールを作成] ページで、信頼されたエンティティとして、[カスタム信頼ポリシー] を選択します。
-
[カスタム信頼ポリシー] セクションで、以下の JSON ドキュメントに貼り付け、[次へ] をクリックします。
-
[アクセス許可を追加] ページで、先ほど作成したアクセス許可を追加し、[次へ] をクリックします。
-
[レビュー] ページで、
AssumableRole
など、ロール名と、必要に応じて説明を入力します。 -
ロールの詳細を確認し、[ロールの作成] を選択します。
AWS アカウントでのロールの作成の詳細については、「IAM ロールの作成 (コンソール)」を参照してください。
-
Studio アカウントの設定
Studio がデプロイされているアカウントで、信頼されたアカウントとも呼ばれる SageMaker AI 実行ロールを更新し、信頼するアカウントのリソースにアクセスするために必要なアクセス許可でクラスターにアクセスします。
-
ステップ 1: プライベートスペースで使用される SageMaker AI 実行ロールの ARN を取得します。
SageMaker AI のスペースと実行ロールの詳細については、「」を参照してくださいドメインスペースのアクセス許可と実行ロールを理解する。
SageMaker AI の実行ロールの ARN を取得する方法の詳細については、「」を参照してください実行ロールを取得する。
-
ステップ 2: Amazon EMR クラスターにアクセスする SageMaker AI 実行ロールに次のアクセス許可をアタッチします。
-
[IAM console]
(IAM コンソール) に入ります。 -
[ロール] をクリックしてから、[検索] フィールドで名前を使って実行ロールを検索します。ロール名は、ARN の最後のスラッシュ (/) の後にある最後の部分です。
-
ロールへのリンクをクリックします。
-
[アクセス許可の追加] をクリックしてから、[インラインポリシーの作成] をクリックします。
-
[JSON] タブで、ドメイン、ユーザープロファイル、スペースを更新するロールアクセス許可を付与するインラインポリシーを追加します。ポリシードキュメントの詳細については、「リファレンスポリシー」の「ドメイン、ユーザープロファイル、およびスペース更新アクションポリシー」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、
region
とaccountID
を実際の値に置き換えます。 -
[次へ] をクリックして、[ポリシー名] を指定します。
-
[Create policy] を選択します。
-
[インラインポリシーの作成] ステップを繰り返して、実行ロールに
AssumableRole
を引き受け、ロールのアクセスポリシーで許可されるアクションを実行するためのアクセス許可を付与する別のポリシーを追加します。emr-account
は Amazon EMR アカウント ID に、AssumableRole
は Amazon EMR アカウントで作成された、引き受けられるロールの名前に置き換えます。{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::
emr-account
:role/AssumableRole
" ] }] } -
[インラインポリシーの作成] ステップを繰り返し、 AWS CloudFormation テンプレートを使用して新しい Amazon EMR クラスターをプロビジョンするアクセス許可を実行ロールに付与する別のポリシーを追加します。ポリシードキュメントの詳細については、「リファレンスポリシー」の「Create Amazon EMRclusters policies」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、
region
とaccountID
を実際の値に置き換えます。 -
(オプション) Studio と同じアカウントにデプロイされた Amazon EMR クラスターのリストの一覧表示を許可するには、「リファレンスポリシー」の「Amazon EMR ポリシーを一覧表示する」で定義されているとおり、Studio の実行ロールに追加のインラインポリシーを追加します。
-
-
ステップ 3: 引き受けられるロール (アクセスロール) をドメインまたはユーザープロファイルに関連付けます。Studio の JupyterLab ユーザーは、SageMaker AI コンソールまたは提供されたスクリプトを使用できます。
ユースケースに対応するタブをクリックします。