

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

# カスタムプロジェクトテンプレートを作成する
<a name="sagemaker-projects-templates-custom"></a>

**重要**  
2024 年 10 月 28 日現在、 AWS CodeCommit テンプレートは削除されました。新しいプロジェクトでは、サードパーティーの Git リポジトリを使用する、利用可能なプロジェクトテンプレートから選択します。詳細については、「[MLOps プロジェクトテンプレート](sagemaker-projects-templates.md)」を参照してください。

SageMaker AI 提供のテンプレートがニーズを満たしていない場合 (複数のステージやカスタム承認ステップを使用する、より複雑なオーケストレーションを CodePipeline で行う場合など) は、独自のテンプレートを作成します。

最初に、SageMaker AI 提供のテンプレートを使用して、コードとリソースを編成する方法を理解し、その上に構築することをお勧めします。これを行うには、SageMaker AI テンプレートへの管理者アクセスを有効にした後に、[https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) にログインし、**[ポートフォリオ]**、**[インポート済み]** の順にクリックします。Service Catalog に関する詳細については、「Service Catalog ユーザーガイド」の「[Overview of Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html)」を参照してください。**

独自のプロジェクトテンプレートを作成して、MLOps プロジェクトをカスタマイズします。SageMaker AI プロジェクトテンプレートは、Service Catalog によってプロビジョンされた製品であり、MLOps プロジェクトのリソースをプロビジョンします。

カスタムプロジェクトテンプレートを作成するには、以下の手順を実行します。

1. ポートフォリオを作成します。詳細については、「[Step 3: Create an Service Catalog Portfolio](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-portfolio.html)」を参照してください。

1. 製品を作成します。製品は CloudFormation テンプレートです。製品の複数のバージョンを作成できます。詳細については、「[Step 4: Create an Service Catalog Product](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-product.html)」を参照してください。

   製品を SageMaker プロジェクトで使用するには、製品テンプレートに以下のパラメータを追加します。

   ```
   SageMakerProjectName:
   Type: String
   Description: Name of the project
   
   SageMakerProjectId:
   Type: String
   Description: Service generated Id of the project.
   ```
**重要**  
CodeCommit リポジトリを SageMaker AI コードリポジトリ内にラップして、プロジェクトのリポジトリを VPC モードで表示することをお勧めします。サンプルテンプレートと必要な追加内容を、次のコードサンプルに示します。  
オリジナル (サンプル) テンプレート:  

   ```
   ModelBuildCodeCommitRepository:
       Type: AWS::CodeCommit::Repository
       Properties:
         # Max allowed length: 100 chars
         RepositoryName: !Sub sagemaker-${SageMakerProjectName}-${SageMakerProjectId}-modelbuild # max: 10+33+15+10=68
         RepositoryDescription: !Sub SageMaker Model building workflow infrastructure as code for the Project ${SageMakerProjectName}
         Code:
           S3:
             Bucket: SEEDCODE_BUCKETNAME
             Key: toolchain/model-building-workflow-v1.0.zip
           BranchName: main
   ```
VPC モードで追加するその他のコンテンツ:  

   ```
   SageMakerRepository:
       Type: AWS::SageMaker::CodeRepository
       Properties:
           GitConfig:
               RepositoryUrl: !GetAtt ModelBuildCodeCommitRepository.CloneUrlHttp
               Branch: main
   ```

1. 起動制約を追加します。起動制約は、ユーザーが製品を起動するときに Service Catalog が引き受ける IAM ロールを指定します。詳細については、「[ステップ 6: IAM ロールを割り当てる起動制約を追加する](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-launchconstraint.html)」を参照してください。

1. 製品を [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) にプロビジョニングして、テンプレートをテストします。テンプレートに問題がなければ、次のステップに進み、Studio (または Studio Classic) でテンプレートを利用できるようにします。

1. ステップ 1 で作成した Service Catalog ポートフォリオへのアクセス許可を Studio (または Studio Classic) 実行ロールに付与します。ドメイン実行ロールか Studio (または Studio Classic) アクセス権が付与されているユーザーロールのいずれかを使用します。ポートフォリオへのロールの追加については、「[ステップ 7: ポートフォリオへのアクセス権限のエンドユーザーへの付与](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-deploy.html)」を参照してください。

1. Studio (または Studio Classic) の **[組織テンプレート]** リストでプロジェクトテンプレートを使用できるようにするには、ステップ 2 で作成した Service Catalog 製品に以下のキー値でタグを作成します。
   + **キー**: `sagemaker:studio-visibility`
   + **値**: `true`

上記のステップを完了すると、組織内の Studio (または Studio Classic) ユーザーは「[Amazon SageMaker Studio または Studio Classic を使用して MLOps プロジェクトを作成する](sagemaker-projects-create.md)」の手順を実行して、テンプレートの選択時に **[組織テンプレート]** を選択すれば、作成済みのテンプレートを使用してプロジェクトを作成できます。

## Amazon S3 バケットからのテンプレートの使用
<a name="sagemaker-projects-templates-s3"></a>

Amazon S3 に保存されているテンプレートを使用して SageMaker Amazon S3プロジェクトを作成することもできます。

**注記**  
でテンプレートを使用できますが AWS Service Catalog、S3 バケットにテンプレートを保存し、それらのテンプレートを使用してプロジェクトを作成することをお勧めします。

### 管理者セットアップ
<a name="sagemaker-projects-templates-s3-setup"></a>

S3 バケットのテンプレートを使用してプロジェクトを作成する前に、次の手順を実行します。

1. [S3 バケットを作成し](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)、テンプレートをバケットにアップロードします。

1. [S3 バケットに CORS ポリシーを設定して、アクセス許可を設定します](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html)。

1. 次のキーと値のタグをテンプレートに追加して、SageMaker AI に表示されるようにします。

   ```
   sagemaker:studio-visibility : true
   ```

1. [ドメインを作成する](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html)

1. SageMaker AI がドメインの作成を完了したら、次のキーと値のタグをドメインに追加します。

   ```
   sagemaker:projectS3TemplatesLocation : s3://<amzn-s3-demo-bucket>
   ```

次に、 AWS コンソール、Python、または [CreateProject](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProject.html) および [UpdateProject](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateProject.html) API オペレーションを使用して、S3 バケット内のテンプレートから SageMaker プロジェクトを作成または更新します。 S3 

------
#### [ Studio ]

**プロジェクトの作成**

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

1. 「[Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html)」の手順に従って、SageMaker Studio コンソールを開きます。

1. 左側のナビゲーションペインで、**デプロイ**、**プロジェクト**、**プロジェクトの作成**を選択します。

1. **組織テンプレート**を選択し、次に **S3 テンプレート**を選択して、使用可能なテンプレートを表示します。予期しているテンプレートが表示されない場合は、管理者に通知してください。

1. 使用するテンプレートを選択し、**次へ**を選択します。

1. プロジェクトの名前、オプションの説明、その他の必須フィールドを入力します。終了したら、[**作成**] を選択します。

**プロジェクトを更新する**

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

1. 「[Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html)」の手順に従って、SageMaker Studio コンソールを開きます。

1. 更新するプロジェクトを選択します。**「アクション**」を選択し、**「プロジェクトの更新**」を選択します。

1. プロジェクトを更新するときは、テンプレートパラメータまたはテンプレート URL を更新できます。終了したら、**[次へ]** を選択します。

1. 概要テーブルでプロジェクトの更新を確認して、**[更新]** をクリックします。

------
#### [ Python Boto3 ]

S3 バケットを作成してテンプレートをアップロードしたら、次の例を使用して SageMaker プロジェクトを作成できます。

```
sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

response = sagemaker_client.create_project(
    ProjectName='my-custom-project',
    ProjectDescription='SageMaker project with custom CFN template stored in S3',
    TemplateProviders=[{
        'CfnTemplateProvider': {
            'TemplateName': 'CustomProjectTemplate',
            'TemplateURL': f'https://<bucket_name>.s3.us-west-2.amazonaws.com/custom-project-template.yml',
            'Parameters': [
                {'Key': 'ParameterKey', 'Value': 'ParameterValue'}
            ]
        }
    }]
)
print(f"Project ARN: {response['ProjectArn']}")
```

SageMaker プロジェクトを更新するには、次の例を参照してください。

```
sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

response = sagemaker_client.update_project(
    ProjectName='my-custom-project',
    ProjectDescription='SageMaker project with custom CFN template stored in S3',
    TemplateProvidersToUpdate=[{
        'CfnTemplateProvider': {
            'TemplateName': 'CustomProjectTemplate',
            'TemplateURL': f'https://<bucket_name>.s3.us-west-2.amazonaws.com/custom-project-template.yml',
            'Parameters': [
                {'Key': 'ParameterKey', 'Value': 'ParameterValue'}
            ]
        }
    }]
)
print(f"Project ARN: {response['ProjectArn']}")
```

------