

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

# Service Catalog で Amazon EMR CloudFormation テンプレートを設定する
<a name="studio-notebooks-set-up-emr-templates"></a>

このトピックでは、管理者が [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)、 [のポートフォリオと製品 AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-portfolio.html)、および [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html) に精通していることを前提としています。

Studio からの Amazon EMR クラスターの作成を簡素化するために、管理者は [Amazon EMR CloudFormation テンプレート](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html)を [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) のポートフォリオの製品として登録できます。このようなテンプレートをデータサイエンティストが利用できるようにするには、ポートフォリオを Studio または Studio Classic で使用される SageMaker AI 実行ロールに関連付ける必要があります。最後に、ユーザーが Studio または Studio Classic からテンプレートを検出し、クラスターをプロビジョンして、Amazon EMR クラスターに接続できるようにするために、管理者は適切なアクセス許可を設定する必要があります。

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

次の手順では、エンドツーエンドの [CloudFormation スタック](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started)を使用して、Studio または Studio Classic のドメイン、ユーザープロファイル、Service Catalog ポートフォリオを設定して、Amazon EMR 起動テンプレートを入力します。次の手順では、Studio または Studio Classic が Service Catalog 製品にアクセスして、Amazon EMR クラスターをプロビジョンできるように、管理者がエンドツーエンドのスタックに適用する必要がある特定の設定を中心に説明します。

**注記**  
GitHub リポジトリ [aws-samples/sagemaker-studio-emr](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) は、必要な IAM ロール、ネットワーク、SageMaker ドメイン、ユーザープロファイル、Service Catalog ポートフォリオをデプロイして、Amazon EMR の起動 CloudFormation テンプレートを追加する、エンドツーエンドの CloudFormation スタックの例を提供しています。このテンプレートは、Studio または Studio Classic のクラスターと Amazon EMR クラスター間でのさまざまな認証オプションを提供します。このようなサンプルテンプレートでは、親 CloudFormation スタックが SageMaker AI VPC、セキュリティグループ、サブネットパラメータを Amazon EMR クラスターテンプレートに渡します。  
[sagemaker-studio-emr/cloudformation/emr\_servicecatalog\_templates](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/emr_servicecatalog_templates) リポジトリは、単一のアカウントおよびクロスアカウントのデプロイオプションなど、さまざまなサンプル Amazon EMR CloudFormation 起動テンプレートを提供しています。  
Amazon EMR クラスターへの接続に使用できる認証方法の詳細については、「[SageMaker Studio または Studio Classic から Amazon EMR クラスターに接続する](connect-emr-clusters.md)」を参照してください。

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

## ステップ 0: ネットワークを確認して、CloudFormation スタックを準備する
<a name="studio-set-up-emr-prereq"></a>

開始する前に:
+ 「[Amazon EMR クラスターのネットワークアクセスを設定する](studio-notebooks-emr-networking.md)」のネットワーク要件とセキュリティ要件を必ず確認します。
+ 選択した認証方法をサポートする既存のエンドツーエンドの CloudFormation スタックが必要となります。CloudFormation テンプレートの例は [aws-samples/sagemaker-studio-emr](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) の GitHub レポジトリに提供されています。次の手順では、Studio または Studio Classic 内で Amazon EMR テンプレートを使用できるようにするための、エンドツーエンドスタックの特定の設定について説明します。

## ステップ 1: Service Catalog ポートフォリオを SageMaker AI に関連付ける
<a name="studio-set-up-emr-service-catalog-portfolio"></a>

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

これを行うには、以下のセクション (ここでは 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 アクセス許可セットの詳細については、「[アクセス許可](#studio-emr-permissions)」セクションを参照してください。

## ステップ 2: Service Catalog 製品で Amazon EMR テンプレートを参照する
<a name="studio-set-up-emr-service-catalog-product"></a>

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

これを行うには、Service Catalog 製品定義で Amazon EMR テンプレートリソースを参照し、次のタグキー `"sagemaker:studio-visibility:emr"` を追加して値を `"true"` に設定します (YAML 形式の例を参照)。

Service Catalog 製品定義では、クラスターの 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 テンプレートをパラメータ化する
<a name="studio-set-up-emr-cfn-template"></a>

**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 テンプレートから組み立てられた動的フォームの図](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-cluster-creation.png)


このような Amazon EMR テンプレートを使用して、Studio または Studio Classic からクラスターを起動する方法の詳細については、「[Studio または Studio Classic から Amazon EMR クラスターを起動する](studio-notebooks-launch-emr-cluster-from-template.md)」にアクセスしてください。

## ステップ 4: Studio から Amazon EMR クラスターを一覧表示して起動できるようにアクセス許可を設定する
<a name="studio-emr-permissions"></a>

最後に、必要な IAM アクセス許可をアタッチして、Studio または Studio Classic から既存の実行中の Amazon EMR クラスターを一覧表示し、新しいクラスターをセルフプロビジョンできるようにします。

このようなアクセス許可を追加する必要があるロールは、Studio または Studio Classic と Amazon EMR が同じアカウントにデプロイされているか (*単一のアカウント*を選択)、別々のアカウントにデプロイされているか (*クロスアカウント*を選択) によって異なります。

**重要**  
プライベートスペースから起動される JupyterLab アプリケーションと Studio Classic アプリケーションの Amazon EMR クラスターのみを検出して接続できます。Amazon EMR クラスターが Studio 環境と同じ AWS リージョンにあることを確認します。

### 単一のアカウント
<a name="studio-set-up-emr-permissions-singleaccount"></a>

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

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

   SageMaker AI のスペースと実行ロールの詳細については、「[ドメインスペースのアクセス許可と実行ロールを理解する](execution-roles-and-spaces.md)」を参照してください。

   SageMaker AI 実行ロールの ARN を取得する方法の詳細については、「[実行ロールを取得する](sagemaker-roles.md#sagemaker-roles-get-execution-role)」を参照してください。

1. **ステップ 2**: Amazon EMR クラスターにアクセスする SageMaker AI 実行ロールに次のアクセス許可を付与します。

   1. [[IAM console]](https://console.aws.amazon.com/iam) (IAM コンソール) に入ります。

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

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

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

   1. **[JSON]** タブで、Amazon EMR アクセスとオペレーションを許可する Amazon EMR アクセス許可を追加します。ポリシードキュメントの詳細については、「[リファレンスポリシー](studio-set-up-emr-permissions-reference.md)」の「*Amazon EMR ポリシーを一覧表示する*」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、`region` と `accountID` を実際の値に置き換えます。

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

   1. [**Create policy**] (ポリシーの作成) を選択します。

   1. **[インラインポリシーの作成]** ステップを繰り返し、 CloudFormation テンプレートを使用して新しい Amazon EMR クラスターをプロビジョンするアクセス許可を実行ロールに付与する別のポリシーを追加します。ポリシードキュメントの詳細については、「[リファレンスポリシー](studio-set-up-emr-permissions-reference.md)」の「*Create Amazon EMRclusters policies*」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、`region` と `accountID` を実際の値に置き換えます。

**注記**  
Amazon EMR クラスターへのロールベースのアクセスコントロール (RBAC) 接続を使用する場合も、「[Amazon EMR クラスターと Studio が同じアカウントにある場合のランタイムロール認証の設定](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-same)」を参照する必要があります。

### クロスアカウント
<a name="studio-set-up-emr-permissions-crossaccount"></a>

開始する前に、プライベートスペースで使用する SageMaker AI 実行ロールの ARN を取得します。

SageMaker AI のスペースと実行ロールの詳細については、「[ドメインスペースのアクセス許可と実行ロールを理解する](execution-roles-and-spaces.md)」を参照してください。

SageMaker AI 実行ロールの ARN を取得する方法の詳細については、「[実行ロールを取得する](sagemaker-roles.md#sagemaker-roles-get-execution-role)」を参照してください。

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

**注記**  
Amazon EMR クラスターへのロールベースのアクセスコントロール (RBAC) 接続を使用する場合も、「[クラスターと Studio が別のアカウントにある場合のランタイムロール認証の設定](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-diff)」を参照する必要があります。

#### Amazon EMR クラスターアカウントの設定
<a name="studio-set-up-emr-permissions-crossaccount-emraccount"></a>

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

1. **ステップ 1**: [Amazon EMR クラスターのサービスロール](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html)の ARN を取得します。

   クラスターのサービスロールの ARN を検索する方法については、「[AWS のサービスおよびリソースへのアクセス許可を Amazon EMR に付与する IAM サービスロールの設定](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html#emr-iam-role-landing)」を参照してください。

1. **ステップ 2**: 以下の設定を使用して、`AssumableRole` という名前のカスタム IAM ロールを作成します。
   + アクセス許可: Amazon EMR リソースへのアクセスを許可するために必要なアクセス許可を `AssumableRole` に付与します。このロールは、クロスアカウントアクセスのシナリオでの*アクセスロール*とも呼ばれます。
   + 信頼関係: アクセスを必要とする Studio アカウントから実行ロール (クロスアカウント図の `SageMakerExecutionRole`) を引き受けることができるように、`AssumableRole` の信頼ポリシーを設定します。

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

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

   1. [[IAM console]](https://console.aws.amazon.com/iam) (IAM コンソール) に入ります。

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

   1. **[JSON]** タブで、Amazon EMR アクセスとオペレーションを許可する Amazon EMR アクセス許可を追加します。ポリシードキュメントの詳細については、「[リファレンスポリシー](studio-set-up-emr-permissions-reference.md)」の「*Amazon EMR ポリシーを一覧表示する*」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、`region` と `accountID` を実際の値に置き換えます。

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

   1. [**Create policy**] (ポリシーの作成) を選択します。

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

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

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

------
#### [ For users of Studio and JupyterLab ]

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

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::{{111122223333}}:role/service-role/{{AmazonSageMaker-ExecutionRole}}"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------
#### [ For users of Studio Classic ]

      `studio-account` は Studio Classic アカウント ID に置き換えます。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::{{111122223333}}:root"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------

   1. **[アクセス許可を追加]** ページで、先ほど作成したアクセス許可を追加し、**[次へ]** をクリックします。

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

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

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

#### Studio アカウントの設定
<a name="studio-set-up-emr-permissions-crossaccount-studioaccount"></a>

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

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

   SageMaker AI のスペースと実行ロールの詳細については、「[ドメインスペースのアクセス許可と実行ロールを理解する](execution-roles-and-spaces.md)」を参照してください。

   SageMaker AI 実行ロールの ARN を取得する方法の詳細については、「[実行ロールを取得する](sagemaker-roles.md#sagemaker-roles-get-execution-role)」を参照してください。

1. **ステップ 2**: Amazon EMR クラスターにアクセスする SageMaker AI 実行ロールに次のアクセス許可を付与します。

   1. [[IAM console]](https://console.aws.amazon.com/iam) (IAM コンソール) に入ります。

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

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

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

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

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

   1. [**Create policy**] (ポリシーの作成) を選択します。

   1. **[インラインポリシーの作成]** ステップを繰り返して、実行ロールに `AssumableRole` を引き受け、ロールのアクセスポリシーで許可されるアクションを実行するためのアクセス許可を付与する別のポリシーを追加します。`emr-account` は Amazon EMR アカウント ID に、`AssumableRole` は Amazon EMR アカウントで作成された、引き受けられるロールの名前に置き換えます。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "AllowRoleAssumptionForCrossAccountDiscovery",
                  "Effect": "Allow",
                  "Action": "sts:AssumeRole",
                  "Resource": [
                      "arn:aws:iam::{{111122223333}}:role/{{AssumableRole}}"
                  ]
              }
          ]
      }
      ```

------

   1. **[インラインポリシーの作成]** ステップを繰り返し、 CloudFormation テンプレートを使用して新しい Amazon EMR クラスターをプロビジョンするアクセス許可を実行ロールに付与する別のポリシーを追加します。ポリシードキュメントの詳細については、「[リファレンスポリシー](studio-set-up-emr-permissions-reference.md)」の「*Create Amazon EMRclusters policies*」を参照してください。ステートメントのリストをロールのインラインポリシーにコピーする前に、`region` と `accountID` を実際の値に置き換えます。

   1. (オプション) Studio と同じアカウントにデプロイされた Amazon EMR クラスターのリストの一覧表示を許可するには、「[リファレンスポリシー](studio-set-up-emr-permissions-reference.md)」の「*Amazon EMR ポリシーを一覧表示する*」で定義されているとおり、Studio の実行ロールに追加のインラインポリシーを追加します。

1. **ステップ 3**: 引き受けられるロール (アクセスロール) をドメインまたはユーザープロファイルに関連付けます。Studio で JupyterLab を使用する場合は、SageMaker AI コンソールまたは提供されているスクリプトを使用できます。

    ユースケースに対応するタブをクリックします。

------
#### [ Associate your assumable roles in JupyterLab using the SageMaker AI console ]

   SageMaker AI コンソールを使用して、引き受けられるロールをユーザープロファイルまたはドメインに関連付けるには:

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

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

   1. 
      + ドメインに引き受けられるロール (アクセスロール) を追加するには: **[ドメインの詳細]** ページの**[アプリケーション設定]** タブで、**[JupyterLab]** セクションに移動します。
      + 引き受け可能なロール (アクセスロール) をユーザープロファイルに追加するには: **[ドメインの詳細]** ページで、**[ユーザープロファイル]** タブをクリックして、アクセス許可を更新した SageMaker AI 実行ロールを使用してユーザープロファイルを選択します。**[アプリケーション設定]** タブで、**[JupyterLab]** セクションに移動します。

   1. **[編集]** をクリックして、引き受けられるロール (アクセスロール) の ARN を追加します。

   1. [**Submit**] を選択してください。

------
#### [ Associate your assumable roles in JupyterLab using a Python script ]

    アクセス許可を更新した SageMaker AI 実行ロールを使用してスペースから起動した JupyterLab アプリケーションのターミナルで以下のコマンドを実行します。`domainID`、`user-profile-name`、`emr-accountID`、`AssumableRole` ([RBAC ランタイムロール]() の場合は `EMRServiceRole`) は、適切な値に置き換えます。このコードスニペットは、SageMaker AI ドメイン内の特定のユーザープロファイル (`client.update_userprofile` を使用) またはドメインの設定 (`client.update_domain` を使用) のユーザープロファイル設定を更新します。具体的には、JupyterLab アプリケーションが Amazon EMR アカウント内で Amazon EMR クラスターを実行するための特定の 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/{{EMRServiceRole}}", 
                                "arn:aws:iam::{{emr-accountID}}:role/{{AnotherServiceRole}}"]
           }
           
       }
   })
   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))
   ```

------
#### [ For users of Studio Classic ]

   Studio Classic の実行ロールに `AssumableRole` の ARN を指定します。Jupyter サーバーは起動時にこの ARN をロードします。Studio が使用する実行ロールは、*信頼するアカウント*の Amazon EMR クラスターを検出して接続するクロスアカウントロールを想定しています。

   この情報は、ライフサイクル設定 (LCC) スクリプトを使用して指定できます。LCC は、ドメインまたは特定のユーザープロファイルにアタッチできます。使用する LCC スクリプトは JupyterServer 設定である必要があります。LCC スクリプトを作成する方法の詳細については、「[Use Lifecycle Configurations with Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lcc.html)」を参照してください。

   以下は LCC スクリプトの例です。スクリプトを変更するには、`AssumableRole` と `emr-account` をそれぞれの値に置き換えます。クロスアカウントの数は、最大 5 つに制限されています。

   ```
   # This script creates the file that informs Studio Classic that the role "arn:aws:iam::emr-account:role/AssumableRole" in remote account "emr-account" must be assumed to list and describe Amazon EMR clusters in the remote account.
   
   #!/bin/bash
   
   set -eux
   
   FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE"
   FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json"
   FILE="$FILE_DIRECTORY/$FILE_NAME"
   
   mkdir -p $FILE_DIRECTORY
   
   cat > "$FILE" <<- "EOF"
   {
     {{emr-cross-account1}}: "arn:aws:iam::{{emr-cross-account1}}:role/AssumableRole",
     {{emr-cross-account2}}: "arn:aws:iam::{{emr-cross-account2}}:role/AssumableRole"
   }
   EOF
   ```

    LCC が実行され、ファイルが書き込まれると、サーバーはファイル `/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json` を読み取り、クロスアカウント ARN を保存します。

------