

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

# Amazon SageMaker Studio Classic 用のカスタム SageMaker イメージの前提条件
<a name="studio-byoi-create"></a>

**重要**  
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) には、それらのリソースの作成中にタグを追加するためのアクセス許可もあらかじめ含まれています。

**重要**  
2023 年 11 月 30 日以降、従来の Amazon SageMaker Studio のエクスペリエンスは Amazon SageMaker Studio Classic と名前が変更されました。以下のセクションは、Studio Classic アプリケーションの使用を前提とした内容です。更新後の Studio エクスペリエンスを使用する場合は、「[Amazon SageMaker Studio](studio-updated.md)」を参照してください。  
Studio Classic は既存のワークロードでも維持されていますが、オンボーディングに利用できなくなりました。既存の Studio Classic アプリケーションのみを停止または削除でき、新しいアプリケーションを作成することはできません。[ワークロードを新しい Studio エクスペリエンスに移行](studio-updated-migrate.md)することをお勧めします。

このトピックでは、SageMaker AI コンソールまたは AWS CLIを使用して、カスタム SageMaker イメージを作成する方法を説明します。

コンソールからイメージを作成すると、SageMaker AI が初期イメージバージョンも作成します。各イメージバージョンは、[Amazon Elastic Container Registry (ECR)](https://console.aws.amazon.com/ecr/) に保存されているコンテナイメージを表します。コンテナイメージを使用するには、Amazon SageMaker Studio Classic の要件を満たす必要があります。詳細については、「[Amazon SageMaker Studio Classic でのカスタム SageMaker イメージの仕様](studio-byoi-specs.md)」を参照してください。イメージをローカルでテストし、一般的な問題を解決する方法については、「[SageMaker Studio Classic Custom Image Samples repo](https://github.com/aws-samples/sagemaker-studio-custom-image-samples/blob/main/DEVELOPMENT.md)」を参照してください。

作成したカスタム SageMaker イメージを Studio Classic で使用するには、イメージをドメインまたは共有スペースにアタッチする必要があります。詳細については、「[Amazon SageMaker Studio Classic でカスタム SageMaker イメージをアタッチする場合の前提条件](studio-byoi-attach.md)」を参照してください。

## コンソールから SageMaker イメージを作成する
<a name="studio-byoi-create-console"></a>

次のセクションでは、SageMaker AI コンソールからカスタム 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 リージョンのアカウント内で一意である必要があります。
   + (オプション) 表示名 - Studio Classic のユーザーインターフェイスに表示される名前。入力しない場合は `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` ポリシーをアタッチします。このロールは、チェックマークの横に表示される S3 バケットにノートブックのユーザーがアクセスすることを許可します。
     + カスタム IAM ロールの ARN の入力 - IAM ロールの Amazon リソースネーム (ARN) を入力します。
     + 既存のロールの使用 - リストから既存のロールの 1 つを選択します。
   + (オプション) イメージタグ - **[新しいタグの追加]** を選択します。最大 50 個のタグを追加できます。タグは Studio Classic ユーザーインターフェイス、SageMaker AI コンソール、または SageMaker AI `Search` API を使って検索できます。

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

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

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

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

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

## から SageMaker イメージを作成する AWS CLI
<a name="studio-byoi-sdk-create-image"></a>

 AWS CLIを使用してコンテナイメージから SageMaker イメージを作成するには、次の手順に従います。
+ `Image` を作成します。
+ `ImageVersion` を作成します。
+ 設定ファイルを作成します。
+ `AppImageConfig` を作成します。

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

1. SageMaker イメージを作成します。

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

   レスポンスは次のようになります。

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

1. コンテナイメージから SageMaker イメージバージョンを作成します。

   ```
   aws sagemaker create-image-version \
       --image-name custom-image \
       --base-image {{<acct-id>}}.dkr.ecr.{{<region>}}.amazonaws.com/smstudio-custom:custom-image
   ```

   レスポンスは次のようになります。

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

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

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

   レスポンスは次のようになります。

   ```
   {
       "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/custom-image/1",
       "ImageVersionStatus": "CREATED"
   }
   ```
**注記**  
レスポンスが `"ImageVersionStatus": "CREATED_FAILED"` である場合、レスポンスにはその失敗の理由も記載されています。失敗の一般的な原因の 1 つは許可の問題です。また、カスタムイメージ用の KernelGateway アプリケーションを起動または実行する際に障害が発生した場合は、Amazon CloudWatch Logs を確認することもできます。ロググループの名前は `/aws/sagemaker/studio` です。ログストリームの名前は `$domainID/$userProfileName/KernelGateway/$appName` です。

1. `app-image-config-input.json` という名前の設定ファイルを作成します。`KernelSpecs` の `Name` 値は、この `AppImageConfig` に関連付けられたイメージの KernelSpec の名前と一致している必要があります。この値では、大文字と小文字が区別されます。イメージで使用できる KernelSpec は、コンテナ内のシェルから `jupyter-kernelspec list` を実行することで確認できます。`MountPath` は Amazon Elastic File System (Amazon EFS) ホームディレクトリをマウントするための、イメージ内のパスです。このパスは、Amazon EFS ホームディレクトリがマウントされる際に上書きされるため、コンテナ内で使うパスとは異なるパスにする必要があります。
**注記**  
`DefaultUID` と `DefaultGID` の値は、以下の組み合わせのみが許容されます。  
 DefaultUID: 1000 と DefaultGID: 100 
 DefaultUID: 0 と DefaultGID: 0 

   ```
   {
       "AppImageConfigName": "custom-image-config",
       "KernelGatewayImageConfig": {
           "KernelSpecs": [
               {
                   "Name": "python3",
                   "DisplayName": "Python 3 (ipykernel)"
               }
           ],
           "FileSystemConfig": {
               "MountPath": "/home/sagemaker-user",
               "DefaultUid": 1000,
               "DefaultGid": 100
           }
       }
   }
   ```

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/custom-image-config"
   }
   ```