Service Catalog で Amazon EMR CloudFormation テンプレートを設定する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 実行ロールに関連付ける必要があります。最後に、ユーザーが Studio または Studio Classic からテンプレートを検出し、クラスターをプロビジョニングし、Amazon EMRクラスターに接続できるようにするには、管理者は適切なアクセス許可を設定する必要があります。

Amazon EMR AWS CloudFormation テンプレートを使用すると、エンドユーザーはクラスターのさまざまな側面をカスタマイズできます。例えば、管理者は、クラスターの作成時にユーザーが選択できるインスタンスタイプの承認済みリストを定義できます。

次の手順では end-to-end CloudFormation 、 スタックを使用して Studio または Studio Classic ドメイン、ユーザープロファイル、Service Catalog ポートフォリオを設定し、Amazon EMR起動テンプレートを設定します。次の手順では、Studio または Studio Classic が Service Catalog 製品にアクセスし、Amazon EMRクラスターをプロビジョニングできるように、管理者が end-to-end スタックに適用する必要がある特定の設定に焦点を当てます。

注記

GitHub リポジトリ aws-samples/sagemaker-studio-emr には、必要なIAMロール、ネットワーク、 SageMaker ドメイン、ユーザープロファイル、Service Catalog ポートフォリオをデプロイし、Amazon EMR起動 CloudFormation テンプレートを追加するスタックの例 end-to-end CloudFormationが含まれています。テンプレートには、Studio または Studio Classic と Amazon EMRクラスター間で異なる認証オプションが用意されています。これらのテンプレート例では、親 CloudFormation スタックは VPC、セキュリティグループ、サブネットパラメータを Amazon EMRクラスターテンプレートに渡 SageMakerします。

sagemaker-studio-emr/cloudformation/emr_servicecatalog_templates リポジトリには、単一アカウントおよびクロスアカウントデプロイのオプションなど、さまざまなサンプル Amazon EMR CloudFormation 起動テンプレートが含まれています。

Amazon EMRクラスターへの接続に使用できる認証方法の詳細については、Studio または Studio Classic から SageMaker Amazon EMRクラスターに接続する「」を参照してください。

データサイエンティストが Studio または Studio Classic から Amazon EMR CloudFormation テンプレートを検出し、クラスターをプロビジョニングできるようにするには、次の手順に従います。

ステップ 0: ネットワークを確認し、 CloudFormation スタックを準備する

開始する前に:

  • のネットワークとセキュリティの要件を確認していることを確認しますネットワークを設定する

  • 選択した認証方法をサポートする既存の end-to-end CloudFormation スタックが必要です。このような CloudFormation テンプレートの例は、aws-samples/sagemaker-studio-emr GitHub repository にあります。次の手順では、Studio または Studio Classic 内で Amazon EMR テンプレートを使用できるように、スタック内の特定の設定に焦点を当てます end-to-end。

ステップ 1: Service Catalog ポートフォリオを に関連付ける SageMaker

Service Catalog ポートフォリオ で、ポートフォリオ ID をクラスターにアクセスする SageMaker 実行ロールに関連付けます。

これを行うには、次のセクション (ここでは YAML 形式) をスタックに追加します。これにより、Amazon EMR テンプレートなどの製品を含む指定された Service Catalog ポートフォリオへのアクセス権が SageMaker 実行ロールに付与されます。これにより、 が引き受けるロールがそれらの製品を起動 SageMaker できるようになります。

置換 SageMakerExecutionRole.Arn また、SageMakerStudioEMRProductPortfolio.ID を実際の値で使用します。

SageMakerStudioEMRProductPortfolioPrincipalAssociation: Type: AWS::ServiceCatalog::PortfolioPrincipalAssociation Properties: PrincipalARN: SageMakerExecutionRole.Arn PortfolioId: SageMakerStudioEMRProductPortfolio.ID PrincipalType: IAM
注記

どの実行ロールを検討すべきですか?

Studio UI は、起動したユーザープロファイルに関連付けられた実行ロールからアクセス許可を決定します。UI は、起動時にこれらのアクセス許可を設定します。ただし、 JupyterLab または Studio Classic アプリケーションを起動するスペースには、個別のアクセス許可を持つことができます。

アプリケーション (Studio UI、Studio Classic など) 間で Amazon EMR テンプレートとクラスターに一貫してアクセスするには JupyterLab、ドメイン、ユーザープロファイル、またはスペースレベルのすべてのロールに同じアクセス許可のサブセットを付与します。アクセス許可により、Amazon EMRクラスターの検出とプロビジョニングが許可されます。

必要なIAMアクセス許可のセットの詳細については、「 アクセス許可」セクションを参照してください。

ステップ 2: Service Catalog 製品で Amazon EMR テンプレートを参照する

ポートフォリオ の Service Catalog 製品で、Amazon テンプレートリソースを参照し、Studio または Studio Classic でその可視性を確保します。 EMR

これを行うには、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" ] } }

管理者が Studio 内で Amazon EMR CloudFormation テンプレートを使用できるようにすると、データサイエンティストはそれらを使用して Amazon EMRクラスターを自己プロビジョニングできます。テンプレートで定義されている Parametersセクションは、Studio または Studio Classic 内のクラスター作成フォームの入力フィールドに変換されます。各パラメータについて、データサイエンティストは入力ボックスにカスタム値を入力するか、ドロップダウンメニューにリストされている定義済みのオプションから選択することができます。これは、テンプレートでAllowedValues指定された に対応します。

次の図は、Studio または Studio Classic で Amazon CloudFormationEMRクラスターを作成するために Amazon EMR テンプレートからアセンブルされた動的フォームを示しています。

Studio または Studio Classic から CloudFormation Amazon EMRクラスターを作成するために Amazon EMR テンプレートからアセンブルされた動的フォームの図。

これらの 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が同じアカウント (単一アカウントを選択) にデプロイされているか、異なるアカウント (クロスアカウントを選択) にデプロイされているかによって異なります。

注記

Studio は現在、Studio がデプロイされている AWS アカウントとは異なるアカウントで作成された Amazon EMRクラスターへのアクセスをサポートしていません。クロスアカウントアクセスは Studio Classic でのみ使用できます。

ロールを使用したクロスアカウントアクセスの詳細については、「」の「クロスアカウントリソースアクセスIAM」を参照してください。

Amazon EMRクラスターと Studio または Studio Classic が同じ AWS アカウントにデプロイされている場合は、クラスターにアクセスする SageMaker 実行ロールに次のアクセス許可をアタッチします。

注記

どの実行ロールを検討すべきですか?

Studio UI は、起動したユーザープロファイルに関連付けられた実行ロールからアクセス許可を決定します。UI は、起動時にこれらのアクセス許可を設定します。ただし、 JupyterLab または Studio Classic アプリケーションを起動するスペースには、個別のアクセス許可を持つことができます。

アプリケーション (Studio UI、Studio Classic など) 間で Amazon EMR テンプレートとクラスターに一貫してアクセスするには JupyterLab、ドメイン、ユーザープロファイル、またはスペースレベルのすべてのロールに同じアクセス許可のサブセットを付与します。アクセス許可により、Amazon EMRクラスターの検出とプロビジョニングが許可されます。

  1. ドメイン、ユーザープロファイル、またはスペースの実行ロールを検索します。実行ロールを取得する方法については、「」を参照してください実行ロールを取得する

  2. IAM コンソール (https://console.aws.amazon.com/sagemaker/) を開きます。

  3. 「ロール」を選択し、「検索」フィールドにロール名を入力して、作成したロールを検索します

  4. ロールへのリンクに従います。

  5. アクセス許可を追加 を選択し、インラインポリシー を作成します。

  6. JSON タブで、 アクセス許可を持つ次のJSONポリシーを追加します。

    • AllowPresignedUrl では、Studio または Studio Classic 内から Spark UI にアクセスURLsするための署名付き を生成できます。

    • AllowClusterDiscovery および AllowClusterDetailsDiscovery では、Studio または Studio Classic からアカウント/リージョン内の Amazon EMRクラスターを一覧表示および記述できます。

    • AllowEMRTemplateDiscovery では、Service Catalog で Amazon EMR テンプレートを検索できます。Studio と Studio Classic は、これを使用して使用可能なテンプレートを表示します。

    • AllowSagemakerProjectManagement では、 を作成および削除できます。では SageMaker、 へのアクセス AWS Service Catalog は を通じて管理されます SageMaker プロジェクトMLOpsによる自動化

    提供された で定義されているIAMポリシーは、これらのアクセス許可JSONを付与します。置換 studio-region また、studio-account ステートメントのリストをロールのインラインポリシーにコピーする前に、実際のリージョンと AWS アカウント ID の値を指定します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPresignedUrl", "Effect": "Allow", "Action": [ "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:GetOnClusterAppUIPresignedURL" ], "Resource": [ "arn:aws:elasticmapreduce:studio-region:studio-account:cluster/*" ] }, { "Sid": "AllowClusterDetailsDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:DescribeSecurityConfiguration" ], "Resource": [ "arn:aws:elasticmapreduce:studio-region:studio-account:cluster/*" ] }, { "Sid": "AllowClusterDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:ListClusters" ], "Resource": "*" }, { "Sid": "AllowEMRTemplateDiscovery", "Effect": "Allow", "Action": [ "servicecatalog:SearchProducts" ], "Resource": "*" }, { "Sid": "AllowSagemakerProjectManagement", "Effect": "Allow", "Action": [ "sagemaker:CreateProject", "sagemaker:DeleteProject" ], "Resource": "arn:aws:sagemaker:studio-region:studio-account:project/*" } ] }
  7. 次へ を選択し、ポリシー名 を指定します。

  8. [Create policy] を選択します。

Amazon EMRクラスターと Studio または Studio Classic が別々の AWS アカウントにデプロイされている場合は、両方のアカウントに対するアクセス許可を設定します。

Amazon EMRアカウントで

Amazon がデプロイされているアカウントEMRで、信頼するアカウント とも呼ばれ、次の設定ASSUMABLE-ROLEで という名前のカスタムIAMロールを作成します。

  • アクセス許可: Amazon EMRリソースへのアクセスを許可ASSUMABLE-ROLEするために必要なアクセス許可を に付与します。

  • 信頼関係: アクセスが必要な Studio アカウントからロールを引き受けるASSUMABLE-ROLEことを に許可するように、 の信頼ポリシーを設定します。

ロールを引き受けることで、Studio または Studio Classic は Amazon で必要なアクセス許可に一時的にアクセスできますEMR。

  • ロールの新しいポリシーを作成します。

    1. IAM コンソール (https://console.aws.amazon.com/sagemaker/) を開きます。

    2. 左側のメニューで、ポリシー を選択し、ポリシー を作成します。

    3. JSON タブで、 アクセス許可を持つ次のJSONポリシーを追加します。

      • AllowPresignedUrl では、Studio 内から Spark UI にアクセスURLsするための署名付き を生成できます。

      • AllowClusterDiscoveryAllowClusterDetailsDiscoveryでは、Studio からアカウント/リージョン内の Amazon EMRクラスターを一覧表示および記述できます。

      置換 emr-region また、emr-account をポリシーにコピーする前に、実際のリージョンと AWS アカウント ID の値JSONを入力します。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPresignedUrl", "Effect": "Allow", "Action": [ "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL", "elasticmapreduce:GetOnClusterAppUIPresignedURL" ], "Resource": [ "arn:aws:elasticmapreduce:emr-region:emr-account:cluster/*" ] }, { "Sid": "AllowClusterDetailsDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:DescribeSecurityConfiguration" ], "Resource": [ "arn:aws:elasticmapreduce:emr-region:emr-account:cluster/*" ] }, { "Sid": "AllowClusterDiscovery", "Effect": "Allow", "Action": [ "elasticmapreduce:ListClusters" ], "Resource": "*" } ] }
    4. ポリシーに名前を付け、ポリシーの作成 を選択します。

  • という名前のカスタムIAMロールを作成しASSUMABLE-ROLE、新しいポリシーをロールにアタッチします。

    1. IAM コンソールで、左側のメニューでロール を選択し、ロール を作成します。

    2. 信頼されたエンティティタイプ でAWS アカウントを選択し、次に を選択します。

    3. 先ほど作成したアクセス許可を選択し、次へ を選択します。

    4. ロールに名前を付けASSUMABLE-ROLEステップ 1: 信頼できるエンティティを選択する の右側にある編集ボタンを選択します。

    5. 信頼されたエンティティタイプ で、カスタム信頼ポリシーを選択し、次の信頼関係を貼り付けます。これにより、Studio がデプロイされているアカウント (信頼されたアカウント ) に、このロールを引き受けるアクセス許可が付与されます。

      置換 studio-account を実際の AWS アカウント ID で使用します。[Next (次へ)] を選択します。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:root" }, "Action": "sts:AssumeRole" } ] }
    6. 先ほど作成したアクセス許可を見つけて選択し、次へを選択します

    7. 信頼ポリシーは、JSON貼り付けた最新の で更新する必要があります。[ロールの作成] を選択します。

AWS アカウントでのロールの作成の詳細については、「 IAMロールの作成 (コンソール)」を参照してください。

Studio アカウントで

Studio または Studio Classic がデプロイされているアカウントで、信頼されたアカウント とも呼ばれます。クラスターにアクセスする SageMaker 実行ロールを、信頼するアカウントのリソースにアクセスするために必要なアクセス許可で更新します。

注記

どの実行ロールを検討すべきですか?

Studio UI は、起動したユーザープロファイルに関連付けられた実行ロールからアクセス許可を決定します。UI は、起動時にこれらのアクセス許可を設定します。ただし、 JupyterLab または Studio Classic アプリケーションを起動するスペースには、個別のアクセス許可を持つことができます。

アプリケーション (Studio UI、Studio Classic など) 間で Amazon EMR テンプレートとクラスターに一貫してアクセスするには JupyterLab、ドメイン、ユーザープロファイル、またはスペースレベルのすべてのロールに同じアクセス許可のサブセットを付与します。アクセス許可により、Amazon EMRクラスターの検出とプロビジョニングが許可されます。

  1. ドメイン、ユーザープロファイル、またはスペースの実行ロールを検索します。実行ロールを取得する方法については、「」を参照してください実行ロールを取得する

  2. IAM コンソール (https://console.aws.amazon.com/sagemaker/) を開きます。

  3. 「ロール」を選択し、「検索」フィールドにロール名を入力して、作成したロールを検索します。

  4. ロールへのリンクに従います。

  5. アクセス許可を追加 を選択し、インラインポリシー を作成します。

  6. JSON タブで、 アクセス許可を持つ次のJSONポリシーを追加します。

    • AllowEMRTemplateDiscovery では、Service Catalog で Amazon EMR テンプレートを検索できます。Studio Classic はこれを使用して使用可能なテンプレートを表示します。

    • AllowSagemakerProjectManagement では、 を作成および削除できます。では SageMaker、 へのアクセス AWS Service Catalog は を通じて管理されます SageMaker プロジェクトMLOpsによる自動化

    提供された で定義されているIAMポリシーは、これらのアクセス許可JSONを付与します。置換 studio-region また、studio-account ステートメントのリストをポリシーにコピーする前に、実際のリージョンと AWS アカウント ID の値を入力します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEMRTemplateDiscovery", "Effect": "Allow", "Action": [ "servicecatalog:SearchProducts" ], "Resource": "*" }, { "Sid": "AllowSagemakerProjectManagement", "Effect": "Allow", "Action": [ "sagemaker:CreateProject", "sagemaker:DeleteProject" ], "Resource": "arn:aws:sagemaker:studio-region:studio-account:project/*" } ] }
  7. Next を選択し、ポリシー名 を指定します。

  8. [Create policy] を選択します。

  9. ステップを繰り返して、Studio 実行ロールに別のインラインポリシーを追加します。このポリシーでは、別のアカウントのリソースを検出するためのクロスアカウントロールの引き受けを許可する必要があります。

    実行ロールの詳細ページで、アクセス許可を追加 を選択し、インラインポリシー を作成します。

  10. JSON タブに、次のJSONポリシーを追加します。を Amazon アカウントのアカウント ID emr-accountで更新しますEMR。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::emr-account:role/ASSUMABLE-ROLE" ] }] }
  11. へ を選択し、ポリシー名 を指定し、ポリシーの作成 を選択します。

  12. Studio と同じアカウントにデプロイされた Amazon EMRクラスターを一覧表示できるようにするには、 の単一アカウントタブで定義されているように、Studio 実行ロールにインラインポリシーを追加しますAmazon EMRクラスターのリストを設定する

Jupyter サーバーの起動ARN時にロールの を渡す

最後に、Studio 実行ロールクロスアカウントアクセスの追加設定に ARNの を提供する方法についてはASSUMABLE-ROLE、「」を参照してください。ARN は、起動時に Jupyter サーバーによってロードされます。Studio が使用する実行ロールは、信頼するアカウント 内の Amazon EMRクラスターを検出して接続するためのクロスアカウントロールを引き受けます。