

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

# カスタム RStudio イメージを作成する
イメージの作成

**重要**  
Amazon SageMaker Studio または Amazon SageMaker Studio Classic に Amazon SageMaker リソースの作成を許可するカスタム IAM ポリシーでは、これらのリソースにタグを追加するアクセス許可も付与する必要があります。Studio と Studio Classic は、作成したリソースに自動的にタグ付けするため、リソースにタグを追加するアクセス許可が必要になります。IAM ポリシーで Studio と Studio Classic によるリソースの作成が許可されていても、タグ付けが許可されていない場合は、リソースを作成しようとしたときに「AccessDenied」エラーが発生する可能性があります。詳細については、「[SageMaker AI リソースにタグ付けのアクセス許可を付与する](security_iam_id-based-policy-examples.md#grant-tagging-permissions)」を参照してください。  
SageMaker リソースを作成するためのアクセス許可を付与する [AWS Amazon SageMaker AI の マネージドポリシー](security-iam-awsmanpol.md) には、それらのリソースの作成中にタグを追加するためのアクセス許可もあらかじめ含まれています。

このトピックでは、SageMaker AI コンソールと AWS CLIを使用して、カスタム RStudio イメージを作成する方法を説明します。を使用する場合は AWS CLI、ローカルマシンからステップを実行する必要があります。以下の手順は Amazon SageMaker Studio Classic 内から実行することはできません。

イメージを作成すると、SageMaker AI が初期イメージバージョンも作成します。各イメージバージョンは、[Amazon Elastic Container Registry (ECR)](https://console.aws.amazon.com/ecr/) に保存されているコンテナイメージを表します。コンテナイメージを使用するには、RStudio の要件を満たす必要があります。詳細については、「[カスタム RStudio イメージの仕様](rstudio-byoi-specs.md)」を参照してください。

イメージをローカルでテストし、よくある問題を解決する方法については、「[SageMaker Studio Custom Image Samples repo](https://github.com/aws-samples/sagemaker-studio-custom-image-samples/blob/main/DEVELOPMENT.md)」を参照してください。

**Topics**
+ [

## SageMaker AI 互換の RStudio Docker コンテナイメージを Amazon ECR に追加する
](#rstudio-byoi-sdk-add-container-image)
+ [

## コンソールから SageMaker イメージを作成する
](#rstudio-byoi-create-console)
+ [

## からイメージを作成する AWS CLI
](#rstudio-byoi-create-cli)

## SageMaker AI 互換の RStudio Docker コンテナイメージを Amazon ECR に追加する


Amazon ECR に Docker コンテナイメージを追加するには、次の手順を実行します。
+ Amazon ECR リポジトリを作成します。
+ Amazon ECR で認証を行います。
+ SageMaker AI 互換の RStudio Docker イメージをビルドします。
+ Amazon ECR リポジトリにイメージをプッシュします

**注記**  
Amazon ECR リポジトリは、ドメイン AWS リージョン と同じ にある必要があります。

**Docker イメージを構築して Amazon ECR に追加するには**

1.  AWS CLIコマンドを使って、Amazon ECR リポジトリを作成します。Amazon ECR コンソールを使ってリポジトリを作成するには、「[リポジトリを作成する](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html)」を参照してください。

   ```
   aws ecr create-repository \
       --repository-name rstudio-custom \
       --image-scanning-configuration scanOnPush=true
   ```

   レスポンス:

   ```
   {
       "repository": {
           "repositoryArn": "arn:aws:ecr:us-east-2:acct-id:repository/rstudio-custom",
           "registryId": "acct-id",
           "repositoryName": "rstudio-custom",
           "repositoryUri": "acct-id.dkr.ecr.us-east-2.amazonaws.com/rstudio-custom",
           ...
       }
   }
   ```

1. `create-repository` コマンドからのレスポンスとして返されたリポジトリ URI を使用して Amazon ECR への認証を行います。Docker アプリケーションが実行中であることを確認します。詳細については、「[レジストリの認証](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth)」を参照してください。

   ```
   aws ecr get-login-password | \
       docker login --username AWS --password-stdin <repository-uri>
   ```

   レスポンス:

   ```
   Login Succeeded
   ```

1. Docker イメージを作成します。Dockerfile を含むディレクトリから次のコマンドを実行します。

   ```
   docker build .
   ```

1. 構築したイメージに固有のタグを付けます。

   ```
   docker tag <image-id> "<repository-uri>:<tag>"
   ```

1. Amazon ECR リポジトリにコンテナイメージをプッシュします。詳細については、「[ImagePush](https://docs.docker.com/engine/api/v1.40/#operation/ImagePush)」と「[イメージをプッシュする](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)」を参照してください。

   ```
   docker push <repository-uri>:<tag>
   ```

   レスポンス:

   ```
   The push refers to repository [<account-id>.dkr.ecr.us-east-2.amazonaws.com/rstudio-custom]
   r: digest: <digest> size: 3066
   ```

## コンソールから SageMaker イメージを作成する


**イメージを作成するには**

1. Amazon SageMaker AI コンソール ([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)) を開きます。

1. 左側のナビゲーションペインで、**[管理設定]‭** を選択します。

1. **[管理設定]** で **[イメージ]** を選択します。

1. **[カスタムイメージ]** ページで **[イメージの作成]** を選択します。

1. **[イメージソース]** に Amazon ECR のコンテナイメージへのレジストリパスを入力します。パスの形式は次のとおりです。

   ` acct-id.dkr.ecr.region.amazonaws.com/repo-name[:tag] or [@digest] `

1. **[次へ]** を選択します。

1. **[イメージプロパティ]** に次を入力します。
   + イメージ名 – この名前は、現在の AWS リージョンのアカウント内で一意である必要があります。
   + (オプション) 画像表示名 - ドメインユーザーインターフェイスに表示される名前。入力しない場合は `Image name` が表示されます。
   + (オプション) 説明 – イメージの説明。
   + IAM ロール – ロールには [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess) ポリシーがアタッチされている必要があります。ドロップダウンメニューから次のいずれかのオプションを選択します。
     + 新しいロールの作成 – ノートブックのユーザーにアクセスさせたい追加の Amazon Simple Storage Service (Amazon S3) バケットを指定します。アクセスを許可するバケットを追加しない場合は **[なし]** を選択します。

       SageMaker AI はそのロールに `AmazonSageMakerFullAccess` ポリシーをアタッチします。このロールは、チェックマークの横に表示される Amazon S3 バケットへのアクセスをノートブックユーザーに許可します。
     + カスタム IAM ロールの ARN の入力 - IAM ロールの Amazon リソースネーム (ARN) を入力します。
     + 既存のロールの使用 - リストから既存のロールの 1 つを選択します。
   + (オプション) イメージタグ - **[新しいタグの追加]** を選択します。最大 50 個のタグを追加できます。タグは、SageMaker AI コンソール、または SageMaker AI `Search` API を使って検索できます。

1. **[イメージタイプ]** で [RStudio イメージ] を選択します。

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

新しいイメージは、**[カスタムイメージ]** リストで一時的に強調表示されます。イメージが正常に作成されたら、イメージ名を選択してそのプロパティを表示するか、**[バージョンの作成]** を選択して、別のバージョンを作成します。

**別のイメージバージョンを作成するには**

1. イメージと同じ行にある **[バージョンを作成]** を選択します。

1. **[イメージソース]** に Amazon ECR イメージへのレジストリパスを入力します。以前のバージョンの SageMaker AI イメージで使用されていたものと同じイメージは使用できません。

RStudio でカスタムイメージを使うには、そのイメージをドメインにアタッチする必要があります。詳細については、「[カスタム SageMaker イメージをアタッチする](rstudio-byoi-attach.md)」を参照してください。

## からイメージを作成する AWS CLI


このセクションでは、 AWS CLIを使用してカスタム Amazon SageMaker イメージを作成する方法を示します。

以下の手順を使用して、SageMaker イメージを作成します。
+ `Image` を作成します。
+ `ImageVersion` を作成します。
+ 設定ファイルを作成します。
+ `AppImageConfig` を作成します。

**SageMaker イメージエンティティを作成するには**

1. SageMaker イメージを作成します。ロール ARN には、少なくとも `AmazonSageMakerFullAccessPolicy` ポリシーがアタッチされている必要があります。

   ```
   aws sagemaker create-image \
       --image-name rstudio-custom-image \
       --role-arn arn:aws:iam::<acct-id>:role/service-role/<execution-role>
   ```

   レスポンス:

   ```
   {
       "ImageArn": "arn:aws:sagemaker:us-east-2:acct-id:image/rstudio-custom-image"
   }
   ```

1. イメージから SageMaker イメージバージョンを作成します。イメージを Amazon ECR にプッシュしたときに選択した一意のタグ値を渡します。

   ```
   aws sagemaker create-image-version \
       --image-name rstudio-custom-image \
       --base-image <repository-uri>:<tag>
   ```

   レスポンス:

   ```
   {
       "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/rstudio-image/1"
   }
   ```

1. イメージバージョンが正常に作成されたことを確認します。

   ```
   aws sagemaker describe-image-version \
       --image-name rstudio-custom-image \
       --version 1
   ```

   レスポンス:

   ```
   {
       "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/rstudio-custom-image/1",
       "ImageVersionStatus": "CREATED"
   }
   ```
**注記**  
レスポンスが `"ImageVersionStatus": "CREATED_FAILED"` である場合、レスポンスにはその失敗の理由も記載されています。失敗の一般的な原因の 1 つは許可の問題です。Amazon CloudWatch Logs でも確認できます。ロググループの名前は `/aws/sagemaker/studio` です。ログストリームの名前は `$domainID/$userProfileName/KernelGateway/$appName` です。

1. `app-image-config-input.json` という名前の設定ファイルを作成します。アプリイメージ設定は、カーネルゲートウェイアプリケーションとして SageMaker イメージを実行するための設定に使用されます。

   ```
   {
       "AppImageConfigName": "rstudio-custom-config"
   }
   ```

1. 前のステップで作成したファイルを使って AppImageConfig を作成します。

   ```
   aws sagemaker create-app-image-config \
       --cli-input-json file://app-image-config-input.json
   ```

   レスポンス:

   ```
   {
       "AppImageConfigArn": "arn:aws:sagemaker:us-east-2:acct-id:app-image-config/r-image-config"
   }
   ```