SageMaker Studio からの Amazon EMR アプリケーションの一覧表示と起動を有効にするアクセス許可を設定する - Amazon SageMaker AI

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

SageMaker Studio からの Amazon EMR アプリケーションの一覧表示と起動を有効にするアクセス許可を設定する

このセクションでは、Studio と EMR Serverless アプリケーションが同じ AWS アカウントまたは異なるアカウントにデプロイされるシナリオを考慮して、SageMaker Studio から EMR Serverless アプリケーションを一覧表示して接続するために必要なロールとアクセス許可について詳しく説明します。

必要なアクセス許可を追加する必要があるロールは、Studio と EMR Serverless アプリケーションが同じ AWS アカウント (単一アカウント) にあるか、別のアカウント (クロスアカウント) にあるかによって異なります。関連するロールタイプは、以下のとおり 2 つあります。

  • 実行ロール:

    • EMR Serverless で使用されるランタイム実行ロール (ロールベースのアクセスコントロールロール): これらは、データアクセス用の Amazon S3、ログ記録用の CloudWatch、 AWS Glue Data Catalog へのアクセス、ワークロード要件に基づくその他のサービスなど、ランタイムに必要な他の AWS サービスやリソースにアクセスするために EMR Serverless ジョブ実行環境で使用される IAM ロールです。EMR Serverless アプリケーションが実行されている アカウントでこれらのロールを作成することをお勧めします。

      ランタイムロールの詳細については、「EMR Serverless ユーザーガイド」の「ジョブランタイムロール」を参照してください。

      注記

      EMR Serverless アプリケーションには、いくつかの RBAC ロールを定義できます。これらのロールは、組織内のさまざまなユーザーまたはグループが必要とする責任とアクセスレベルに基づいて設定できます。RBAC アクセス許可の詳細については、「Amazon EMR Serverless のセキュリティに関するベストプラクティス」を参照してください。

    • SageMaker AI 実行ロール: SageMaker AI が Amazon S3 バケットからのデータの読み取り、CloudWatch へのログの書き込み、ワークフローに必要な他の AWS サービスへのアクセスなど、特定のタスクを実行できるようにする実行ロール。SageMaker AI 実行ロールには、SageMaker AI iam:PassRoleが一時的なランタイム実行ロールを EMR Serverless アプリケーションに渡すことを許可する という特別なアクセス許可もあります。これらのロールは、EMR Serverless アプリケーションが実行中に他の AWS リソースとやり取りするために必要なアクセス許可を付与します。

  • 引き受けられるロール (別名サービスアクセスロール):

    • これらは、SageMaker AI の実行ロールが EMR Serverless アプリケーションの管理に関連するオペレーションを実行するために引き受けることができる IAM ロールです。これらのロールでは、EMR Serverless アプリケーションの一覧表示、接続、または管理を行う際に必要なアクセス許可とアクセスポリシーを定義しています。通常、EMR Serverless アプリケーションが SageMaker AI ドメインとは異なる AWS アカウントにあるクロスアカウントシナリオで使用されます。EMR Serverless アプリケーション専用の IAM ロールを持つことで、最小特権の原則に従い、Amazon EMR が AWS アカウント内の他のリソースを保護しながらジョブを実行するために必要なアクセス許可のみを持つようにすることができます。

これらのロールを適切に理解して設定することで、SageMaker Studio に EMR Serverless アプリケーションを操作するために必要なアクセス許可を確実に付与できます。これは、同じアカウントにデプロイされている場合も、別々のアカウントにデプロイされている場合にも同様です。

単一のアカウント

次の図は、Studio とアプリケーションが同じ AWS アカウントにデプロイされているときに、Studio から EMR Serverless アプリケーションを一覧表示して接続するために必要なロールとアクセス許可を示しています。

この図は、Studio とアプリケーションが同じ AWS アカウントにある場合に、Studio から EMR Serverless アプリケーションを一覧表示して接続するために必要なロールとアクセス許可を示しています。

Amazon EMR アプリケーションと Studio が同じ AWS アカウントにデプロイされている場合は、次の手順に従います。

  1. ステップ 1: データソースに使用する Amazon S3 バケットの ARN を取得し、Amazon S3 コンソール でデータストレージを出力します。

    名前でバケットを検索する方法については、「Amazon S3 バケットに対するアクセスと一覧表示」を参照してください。Amazon S3 バケットの作成については、「バケットの作成」を参照してください。

  2. ステップ 2: アカウント内の EMR Serverless アプリケーションのジョブランタイム実行ロールを少なくとも 1 つ作成します (上記の単一のアカウントのユースケース図の EMRServerlessRuntimeExecutionRoleA)。信頼されたエンティティとして、[カスタム信頼ポリシー] を選択します。ジョブに必要なアクセス許可を追加します。少なくとも、Amazon S3 バケットへのフルアクセスと、 AWS Glue Data Catalog への作成および読み取りアクセスが必要です。

    EMR Serverless アプリケーションの新しいランタイム実行ロールを作成する方法の詳細については、以下の手順を実行します。

    1. [IAM console] (IAM コンソール) に入ります。

    2. 左側のナビゲーションペインで、[ポリシー][ポリシーの作成] の順に選択します。

    3. ランタイムロールに必要なアクセス許可を追加し、ポリシーに名前を付けて、[ポリシーの作成] をクリックします。

      EMR Serverless のジョブランタイムロール」を参照して、EMR Serverless ランタイムロールのサンプルランタイムポリシーを検索できます。

    4. 左側のナビゲーションペインで、[ロール][ロールを作成] の順に選択します。

    5. [ロールを作成] ページで、信頼されたエンティティとして、[カスタム信頼ポリシー] を選択します。

    6. [カスタム信頼ポリシー] セクションで、以下の JSON ドキュメントに貼り付け、[次へ] をクリックします。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. [アクセス許可を追加] ページで、作成したポリシーを追加してから、[次へ] をクリックします。

    8. [レビュー] ページで、EMRServerlessAppRuntimeRoleA など、ロール名と、必要に応じて説明を入力します。

    9. ロールの詳細を確認し、[ロールの作成] を選択します。

    このようなロールを使用すると、ユーザー自身とチームメイトが、データへの個別のアクセスレベルに一致するアクセス許可が設定されたランタイムロールを使用して、同じアプリケーションに接続できます。

    注記

    Spark セッションの動作はさまざまです。Spark セッションは Studio から使用する実行ロールに基づいて分離されるため、異なる実行ロールを持つユーザーには分離された個別の Spark セッションが提供されます。さらに、ドメインのソース ID を有効にしている場合、さまざまなソース ID 間で Spark セッションをさらに分離できます。

  3. ステップ 3: プライベートスペースで使用される SageMaker AI 実行ロールの ARN を取得します。

    SageMaker AI のスペースと実行ロールの詳細については、「」を参照してくださいドメインスペースのアクセス許可と実行ロールを理解する

    SageMaker AI の実行ロールの ARN を取得する方法の詳細については、「」を参照してください実行ロールを取得する

    注記

    または、SageMaker AI を初めて使用するユーザーは、適切なアクセス許可を持つ新しい SageMaker AI 実行ロールを自動的に作成することで、セットアッププロセスを簡素化できます。この場合、ステップ 3 と 4 はスキップします。代わりに、ユーザーは次のいずれかを実行できます。

    • SageMaker AI コンソールの左側のナビゲーションのドメインメニューから新しいドメインを作成するときに、組織のセットアップオプションを選択します。

    • コンソールの [Role Manager] メニューから新しい実行ロールを作成して、そのロールを既存のドメインまたはユーザープロファイルにアタッチします。

    ロールを作成する際に、[ユーザーが実行する ML アクティビティ][Studio EMR Serverless アプリケーションの実行] オプションを選択します。次に、Amazon S3 バケットの名前と、EMR Serverless アプリケーションで使用するジョブランタイム実行ロールを指定します (ステップ 2)。

    SageMaker Role Manager は、EMR Serverless アプリケーションの実行と接続に必要なアクセス許可を新しい実行ロールに自動的に追加します。SageMaker Role Manager を使用すると、EMR Serverless アプリケーションに割り当てることができるランタイムロールは、1 つのみであり、同じアカウント内で作成されたランタイムロールを使用して、Studio がデプロイされているのと同じアカウントで実行する必要があります。

  4. ステップ 4: EMR Serverless アプリケーションにアクセスする SageMaker AI 実行ロールに次のアクセス許可をアタッチします。

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

    2. [ロール] をクリックしてから、[検索] フィールドで名前を使って実行ロールを検索します。ロール名は、ARN の最後のスラッシュ (/) の後にある最後の部分です。

    3. ロールへのリンクをクリックします。

    4. [アクセス許可の追加] をクリックしてから、[インラインポリシーの作成] をクリックします。

    5. [JSON] タブで、EMR Serverless アクセスとオペレーションを許可する Amazon EMR Serverless アクセス許可を追加します。ポリシードキュメントの詳細については、「リファレンスポリシー」の「EMR Serverless ポリシー」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、regionaccountID、渡された EMRServerlessAppRuntimeRole を実際の値に置き換えます。

      注記

      ランタイムロールの ARN 文字列は、必要に応じてアクセス許可内にカンマで区切って含めることができます。

    6. [次へ] をクリックして、[ポリシー名] を指定します。

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

    8. [インラインポリシーの作成] ステップを繰り返して、ドメイン、ユーザープロファイル、スペースを更新するアクセス許可をロールに付与する別のインラインポリシーを追加します。SageMakerUpdateResourcesPolicy ポリシードキュメントの詳細については、「リファレンスポリシー」の「ドメイン、ユーザープロファイル、およびスペース更新アクションポリシー」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、regionaccountID を実際の値に置き換えます。

  5. ステップ 5:

    ランタイムロールのリストをユーザープロファイルまたはドメインに関連付けると、ロールのリストを視覚的に参照し、JupyterLab から EMR Serverless アプリケーションに接続する際に使用するロールを選択できます。SageMaker AI コンソールまたは次のスクリプトを使用できます。その後、ノートブックから作成された Apache Spark または Apache Hive のすべてのジョブは、選択したランタイムロールにアタッチされたポリシーが許可するデータとリソースにのみアクセスするようになります。

    重要

    このステップを完了しないと、JupyterLab ノートブックを EMR Serverless アプリケーションに接続できなくなります。

    SageMaker AI console

    SageMaker AI コンソールを使用してランタイムロールをユーザープロファイルまたはドメインに関連付けるには:

    1. https://console.aws.amazon.com/sagemaker/ で SageMaker AI コンソールに移動します。

    2. 左側のナビゲーションペインでドメインを選択し、アクセス許可を更新した SageMaker AI 実行ロールを使用してドメインを選択します。

      • ランタイムロールをドメインに追加するには: [ドメインの詳細] ページの[アプリケーション設定] タブで、[JupyterLab] セクションに移動します。

      • ランタイムロールをユーザープロファイルに追加するには: ドメインの詳細ページで、ユーザープロファイルタブを選択し、アクセス許可を更新した SageMaker AI 実行ロールを使用してユーザープロファイルを選択します。[アプリケーション設定] タブで、[JupyterLab] セクションに移動します。

    3. [編集] をクリックして、EMR Serverless ランタイム実行ロールの ARN を追加します。

    4. [送信] を選択します。

    次に JupyterLab を介して EMR Serverless アプリケーションに接続すると、ランタイムロールがドロップダウンメニューに表示されて選択できるようになります。

    Python script

    アクセス許可を更新した SageMaker AI 実行ロールを使用してプライベートスペースから開始された JupyterLab アプリケーションで、ターミナルで次のコマンドを実行します。domainIDuser-profile-namestudio-accountIDEMRServerlessRuntimeExecutionRole は、実際の適切な値に置き換えます。このコードスニペットは、特定のユーザープロファイル (client.update_userprofile) またはドメインの設定 (client.update_domain) のユーザープロファイル設定を更新します。具体的には、以前に作成した EMR Serverless ランタイム実行ロールを関連付けます。

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'ExecutionRoleArns': ["arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleA", "arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleAA"] } } }) resp = client.describe_domain(DomainId="domainID") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))

クロスアカウント

次の図は、Studio とアプリケーションが異なる AWS アカウントにデプロイされているときに、Studio から EMR Serverless アプリケーションを一覧表示して接続するために必要なロールとアクセス許可を示しています。

この図は、Studio とアプリケーションが異なる AWS アカウントにある場合に、Studio から EMR Serverless アプリケーションを一覧表示して接続するために必要なロールとアクセス許可を示しています。

AWS アカウントでのロールの作成の詳細については、「IAM ロールhttps://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.htmlの作成 (コンソール)」を参照してください。

始める前に :

EMR Serverless アプリケーションと Studio が別々の AWS アカウントにデプロイされている場合は、両方のアカウントでアクセス許可を設定します。

EMR Serverless アカウントの設定

信頼するアカウントとも呼ばれる、EMR Serverless アプリケーションが実行されているアカウントに必要なロールとポリシーを作成するには、次の手順に従います。

  1. ステップ 1: アカウント内の EMR Serverless アプリケーションのジョブランタイム実行ロールを少なくとも 1 つ作成します (上記のクロスアカウント図の EMRServerlessRuntimeExecutionRoleB)。信頼されたエンティティとして、[カスタム信頼ポリシー] を選択します。ジョブに必要なアクセス許可を追加します。少なくとも、Amazon S3 バケットへのフルアクセスと、 AWS Glue Data Catalog への作成および読み取りアクセスが必要です。

    EMR Serverless アプリケーションの新しいランタイム実行ロールを作成する方法の詳細については、以下の手順を実行します。

    1. [IAM console] (IAM コンソール) に入ります。

    2. 左側のナビゲーションペインで、[ポリシー][ポリシーの作成] の順に選択します。

    3. ランタイムロールに必要なアクセス許可を追加し、ポリシーに名前を付けて、[ポリシーの作成] をクリックします。

      EMR Serverless ランタイムロールのサンプルランタイムポリシーについては、「Amazon EMR Serverless のジョブランタイムロール」を参照してください。

    4. 左側のナビゲーションペインで、[ロール][ロールを作成] の順に選択します。

    5. [ロールを作成] ページで、信頼されたエンティティとして、[カスタム信頼ポリシー] を選択します。

    6. [カスタム信頼ポリシー] セクションで、以下の JSON ドキュメントに貼り付け、[次へ] をクリックします。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. [アクセス許可を追加] ページで、作成したポリシーを追加してから、[次へ] をクリックします。

    8. [レビュー] ページで、EMRServerlessAppRuntimeRoleB など、ロール名と、必要に応じて説明を入力します。

    9. ロールの詳細を確認し、[ロールの作成] を選択します。

    このようなロールを使用すると、ユーザー自身とチームメイトが、データへの個別のアクセスレベルに一致するアクセス許可が設定されたランタイムロールを使用して、同じアプリケーションに接続できます。

    注記

    Spark セッションの動作はさまざまです。Spark セッションは Studio から使用する実行ロールに基づいて分離されるため、さまざまな実行ロールを持つユーザーに、分離された個別の Spark セッションが提供されます。さらに、ドメインのソース ID を有効にしている場合、さまざまなソース ID 間で Spark セッションをさらに分離できます。

  2. ステップ 2: 以下の設定を使用して、AssumableRole という名前のカスタム IAM ロールを作成します。

    • アクセス許可: EMR Serverless リソースへのアクセスを許可するために、AssumableRole に必要なアクセス許可 (Amazon EMR Serverless ポリシー) を付与します。このロールは、アクセスロール とも呼ばれます。

    • 信頼関係: アクセスを必要とする Studio アカウントから実行ロール (クロスアカウント図の SageMakerExecutionRole) を引き受けることができるように、AssumableRole の信頼ポリシーを設定します。

    このロールを引き受けることで、Studio は EMR Serverless アカウントで必要なアクセス許可への一時的なアクセスを取得できます。

    EMR Serverless AWS アカウントAssumableRoleで新しい を作成する方法の詳細については、次の手順に従います。

    1. [IAM console] (IAM コンソール) に入ります。

    2. 左側のナビゲーションペインで、[ポリシー][ポリシーの作成] の順に選択します。

    3. [JSON] タブで、EMR Serverless アクセスとオペレーションを許可する Amazon EMR Serverless アクセス許可を追加します。ポリシードキュメントの詳細については、「リファレンスポリシー」の「EMR Serverless ポリシー」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、regionaccountID、渡された EMRServerlessAppRuntimeRole を実際の値に置き換えます。

      注記

      ここでの EMRServerlessAppRuntimeRole は、ステップ 1 で作成したジョブランタイム実行ロールです (上記のクロスアカウント図の EMRServerlessAppRuntimeRoleB)。ランタイムロールの ARN 文字列は、必要に応じてアクセス許可内にカンマで区切って含めることができます。

    4. [次へ] をクリックして、[ポリシー名] を指定します。

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

    6. 左側のナビゲーションペインで、[ロール][ロールを作成] の順に選択します。

    7. [ロールを作成] ページで、信頼されたエンティティとして、[カスタム信頼ポリシー] を選択します。

    8. [カスタム信頼ポリシー] セクションで、以下の JSON ドキュメントに貼り付け、[次へ] をクリックします。

      studio-account は Studio アカウント ID に、AmazonSageMaker-ExecutionRole は JupyterLab スペースで使用される実行ロールに置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:role/service-role/AmazonSageMaker-ExecutionRole" }, "Action": "sts:AssumeRole" } ] }
    9. [アクセス許可を追加] ページで、ステップ 2 で作成した EMRServerlessAppRuntimeRoleB アクセス許可を追加してから、[次へ] をクリックします。

    10. [レビュー] ページで、AssumableRole など、ロール名と、必要に応じて説明を入力します。

    11. ロールの詳細を確認し、[ロールの作成] を選択します。

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

Studio アカウントの設定

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

  1. ステップ 1: スペースで使用される SageMaker AI 実行ロールの ARN を取得します。

    SageMaker AI のスペースと実行ロールの詳細については、「」を参照してくださいドメインスペースのアクセス許可と実行ロールを理解する

    SageMaker AI の実行ロールの ARN を取得する方法の詳細については、「」を参照してください実行ロールを取得する

  2. ステップ 2: EMR Serverless アプリケーションにアクセスする SageMaker AI 実行ロールに次のアクセス許可をアタッチします。

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

    2. [ロール] をクリックしてから、[検索] フィールドで名前を使って実行ロールを検索します。ロール名は、ARN の最後のスラッシュ (/) の後にある最後の部分です。

    3. ロールへのリンクをクリックします。

    4. [アクセス許可の追加] をクリックしてから、[インラインポリシーの作成] をクリックします。

    5. [JSON] タブで、ドメイン、ユーザープロファイル、スペースを更新するロールアクセス許可を付与するインラインポリシーを追加します。SageMakerUpdateResourcesPolicy ポリシードキュメントの詳細については、「リファレンスポリシー」の「ドメイン、ユーザープロファイル、およびスペース更新アクションポリシー」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、regionaccountID を実際の値に置き換えます。

    6. [次へ] をクリックして、[ポリシー名] を指定します。

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

    8. [インラインポリシーの作成] ステップを繰り返して、実行ロールに AssumableRole を引き受け、ロールのアクセスポリシーで許可されるアクションを実行するためのアクセス許可を付与する別のポリシーを追加します。

      emr-account は Amazon EMR Serverless アカウント ID に、AssumableRole は Amazon EMR Serverless アカウントで作成された、引き受けられるロールの名前に置き換えます。

      { "Version": "2012-10-17", "Statement": { "Sid": "AllowSTSToAssumeAssumableRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr-account:role/AssumableRole" } }
  3. ステップ 3:

    ランタイムロールのリストをドメインまたはユーザープロファイルに関連付けると、ロールのリストを視覚的に参照し、JupyterLab から EMR Serverless アプリケーションに接続する際に使用するロールを選択できます。SageMaker AI コンソールまたは次のスクリプトを使用できます。その後、ノートブックから作成された Apache Spark または Apache Hive のすべてのジョブは、選択したランタイムロールにアタッチされたポリシーが許可するデータとリソースにのみアクセスするようになります。

    重要

    このステップを完了しないと、JupyterLab ノートブックを EMR Serverless アプリケーションに接続できなくなります。

    SageMaker AI console

    SageMaker AI コンソールを使用してランタイムロールをユーザープロファイルまたはドメインに関連付けるには:

    1. https://console.aws.amazon.com/sagemaker/ で SageMaker AI コンソールに移動します。

    2. 左側のナビゲーションペインでドメインを選択し、アクセス許可を更新した SageMaker AI 実行ロールを使用してドメインを選択します。

      • ランタイムロールをドメインに追加するには: [ドメインの詳細] ページの[アプリケーション設定] タブで、[JupyterLab] セクションに移動します。

      • ランタイムロールをユーザープロファイルに追加するには: ドメインの詳細ページで、ユーザープロファイルタブを選択し、アクセス許可を更新した SageMaker AI 実行ロールを使用してユーザープロファイルを選択します。[アプリケーション設定] タブで、[JupyterLab] セクションに移動します。

    3. [編集] をクリックして、引き受けられるロールの ARN と EMR Serverless ランタイム実行ロールの ARN を追加します。

    4. [送信] を選択します。

    次に JupyterLab を介して EMR Serverless アプリケーションに接続すると、ランタイムロールがドロップダウンメニューに表示されて選択できるようになります。

    Python script

    アクセス許可を更新した SageMaker AI 実行ロールを使用してプライベートスペースから開始された JupyterLab アプリケーションで、ターミナルで次のコマンドを実行します。domainIDuser-profile-namestudio-accountIDEMRServerlessRuntimeExecutionRole は、実際の適切な値に置き換えます。このコードスニペットは、SageMaker AI ドメイン内の特定のユーザープロファイル (client.update_userprofile) またはドメイン設定 (client.update_domain) のユーザープロファイル設定を更新します。具体的には、以前に作成した Amazon EMR Serverless のランタイム実行ロールを設定します。JupyterLab アプリケーションが Amazon EMR アカウント内で EMR Serverless アプリケーションを実行するための特定の IAM ロール (AssumableRole) を引き受けられるようにもなります。

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServerlessRuntimeExecutionRoleA", "arn:aws:iam::emr-accountID:role/AnotherRuntimeExecutionRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))

リファレンスポリシー

  • EMR Serverless ポリシー: このポリシーでは、一覧表示、作成 (SageMaker AI タグが必要)、開始、停止、詳細の取得、削除、Livy エンドポイントへのアクセス、ジョブ実行ダッシュボードの取得など、EMR Serverless アプリケーションの管理を許可します。必要な EMR Serverless アプリケーションのランタイムロールをサービスに渡すことも許可します。

    • EMRServerlessListApplications: 指定されたリージョンと AWS アカウント内のすべての EMR Serverless リソースで ListApplications アクションを許可します。

    • EMRServerlessPassRole: 指定された AWS アカウントで指定されたランタイムロール (複数可) を渡すことを許可します。ただし、ロールが に渡される場合に限りますemr-serverless.amazonaws.com service

    • EMRServerlessCreateApplicationAction: 指定したリージョンと AWS アカウントの EMR Serverless リソースに対する CreateApplication アクションと TagResource アクションを許可します。ただし、作成またはタグ付けされるリソースには、null 以外の値を持つ特定のタグキー (sagemaker:domain-arnsagemaker:user-profile-arnsagemaker:space-arn) が必要です。

    • EMRServerlessDenyTaggingAction: リソースに指定されたTagResourceおよび sagemaker:space-arn) が設定されていない場合sagemaker:user-profile-arn、指定されたリージョンと AWS アカウントの EMR Serverless リソースに対する TagResource および UntagResource アクション。sagemaker:domain-arn

    • EMRServerlessActions: EMR Serverless リソースにさまざまなアクション (StartApplicationStopApplicationGetApplicationDeleteApplicationAccessLivyEndpointsGetDashboardForJobRun) を許可します。ただし、リソースに指定されたタグキー (sagemaker:domain-arnsagemaker:user-profile-arnsagemaker:space-arn) null 以外の値で設定されている場合に限ります。

    提供された JSON ドキュメントで定義された IAM ポリシーは、これらのアクセス許可を付与しますが、特定の SageMaker AI ドメイン、ユーザープロファイル、およびスペースに関連付けられた Amazon EMR Serverless リソースのみが管理できるように、EMR Serverless アプリケーションに特定の SageMaker AI タグが存在するようにそのアクセスを制限します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessListApplications", "Effect": "Allow", "Action": [ "emr-serverless:ListApplications" ], "Resource": "arn:aws:emr-serverless:region:accountID:/*" }, { "Sid": "EMRServerlessPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::accountID:EMRServerlessAppRuntimeRole", "Condition": { "StringLike": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }, { "Sid": "EMRServerlessCreateApplicationAction", "Effect": "Allow", "Action": [ "emr-serverless:CreateApplication", "emr-serverless:TagResource" ], "Resource": "arn:aws:emr-serverless:region:accountID:/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "sagemaker:domain-arn", "sagemaker:user-profile-arn", "sagemaker:space-arn" ] }, "Null": { "aws:RequestTag/sagemaker:domain-arn": "false", "aws:RequestTag/sagemaker:user-profile-arn": "false", "aws:RequestTag/sagemaker:space-arn": "false" } } }, { "Sid": "EMRServerlessDenyTaggingAction", "Effect": "Deny", "Action": [ "emr-serverless:TagResource", "emr-serverless:UntagResource" ], "Resource": "arn:aws:emr-serverless:region:accountID:/*", "Condition": { "Null": { "aws:ResourceTag/sagemaker:domain-arn": "true", "aws:ResourceTag/sagemaker:user-profile-arn": "true", "aws:ResourceTag/sagemaker:space-arn": "true" } } }, { "Sid": "EMRServerlessActions", "Effect": "Allow", "Action": [ "emr-serverless:StartApplication", "emr-serverless:StopApplication", "emr-serverless:GetApplication", "emr-serverless:DeleteApplication", "emr-serverless:AccessLivyEndpoints", "emr-serverless:GetDashboardForJobRun" ], "Resource": "arn:aws:emr-serverless:region:accountID:/applications/*", "Condition": { "Null": { "aws:ResourceTag/sagemaker:domain-arn": "false", "aws:ResourceTag/sagemaker:user-profile-arn": "false", "aws:ResourceTag/sagemaker:space-arn": "false" } } } ] }
  • ドメイン、ユーザープロファイル、スペース更新アクションポリシー : 次のポリシーは、指定されたリージョンと AWS アカウント内の SageMaker AI ドメイン、ユーザープロファイル、スペースを更新するアクセス許可を付与します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerUpdateResourcesPolicy", "Effect": "Allow", "Action": [ "sagemaker:UpdateDomain", "sagemaker:UpdateUserprofile", "sagemaker:UpdateSpace" ], "Resource": [ "arn:aws:sagemaker:region>:accountID:domain/*", "arn:aws:sagemaker:region:accountID:user-profile/*" ] } ] }