1 つの AWS アカウントにある AWS CodeCommit レポジトリを別のアカウントの Amazon SageMaker AI Studio Classic に関連付ける
Amazon Web Services、Laurens van der Maas,Aubrey Oosthuizen
概要
注意: 新規のお客様への AWS CodeCommit の提供は終了しました。AWS CodeCommit の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細
このパターンでは、1 つの AWS アカウント (アカウント A) にある AWS CodeCommit を、別の AWS アカウントにある Amazon SageMaker AI Studio Classic に関連付ける方法の手順とコードを提供します。関連付けを設定するには、アカウント A に AWS Identity and Access Management (IAM) ポリシーとロールを作成し、アカウント B に IAM インラインポリシーを作成する必要があります。次に、シェルスクリプトを使用して CodeCommit リポジトリをアカウント A からアカウント B の Amazon SageMaker AI にクローンします。
前提条件と制限
前提条件
2 つの AWS アカウント
のうち 1 つには CodeCommit リポジトリが、もう 1 つにはユーザーの SageMaker AI ドメインが含まれていること インターネットアクセスがある、または仮想プライベートネットワーク (VPC) エンドポイント経由で CodeCommit および AWS Security Token Service (AWS STS) にアクセスできる、プロビジョニング済みの SageMaker AI ドメインとユーザー
「IAM」の基本的な理解
SageMaker AI Studio Classic の基本的な理解
Git
と CodeCommit に関する基本的な知識
機能制限
このパターンは SageMaker AI Studio Classic にのみ適用され、RStudio on Amazon SageMaker AI には適用されません。
アーキテクチャ
テクノロジースタック
Amazon SageMaker AI
Amazon SageMaker AI Studio Classic
AWS CodeCommit
AWS Identity and Access Management (IAM)
Git
ターゲットアーキテクチャ
以下の図は、アカウント A の CodeCommit リポジトリをアカウント B の SageMaker AI Studio Classic に関連付けるアーキテクチャを示したものです。

この図表は、次のワークフローを示しています:
ユーザーはアカウント A の
sts:AssumeRoleロールを通じてアカウント A のMyCrossAccountRepositoryContributorRoleロールを引き受け、アカウント B の SageMaker AI Studio Classic で SageMaker AI 実行ロールを使用します。引き受けたロールには、指定されたリポジトリをクローンして操作するための CodeCommit 権限が含まれています。ユーザーは Git コマンドを SageMaker AI Studio Classic のシステムターミナルから実行します。
自動化とスケール
このパターンは、AWS Cloud Development Kit (AWS CDK)、AWS CloudFormation、Terraform
ツール
AWS ツール
Amazon SageMaker AI はマネージド型の機械学習 (ML) サービスで、ML モデルの構築とトレーニングを行い、それらを本番稼働環境に対応したホスティング環境にデプロイします。
Amazon SageMaker AI Studio Classic は、ウェブベースの機械学習用の統合開発環境 (IDE) です。この IDE を使うと、機械学習モデルを構築、トレーニング、デバッグ、デプロイ、モニタリングできます。
AWS CodeCommit は、独自のソースコントロールシステムを管理しなくても、Git リポジトリを非公開で保存および管理できるバージョン管理サービスです。
注意: 新規のお客様への AWS CodeCommit の提供は終了しました。AWS CodeCommit の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細
「AWS Identity and Access Management (IAM)」では、リソースの使用を認証、許可されるユーザーを制御することで、AWSリソースへのアクセスを安全に管理できます。
その他のツール
「Git
」は、ソフトウェア開発中のソースコードの変更を追跡するための分散型バージョン管理システムです。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
Account A でリポジトリアクセスの IAM ポリシーを作成します。 |
ヒントIAM ポリシーの範囲をユースケースに最低限必要なアクセス権限に制限するのがベストプラクティスです。 | AWS DevOps |
Account A でリポジトリアクセスの IAM ロールを作成します。 |
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
アカウント B の SageMaker ドメインユーザーにアタッチされている実行ロールにインラインポリシーをアタッチします。 |
| AWS DevOps |
| タスク | 説明 | 必要なスキル |
|---|---|---|
アカウント B の SageMaker AI Studio Classic でシェルスクリプトを作成します。 |
| AWS DevOps |
システムターミナルからシェルスクリプトを呼び出します。 |
SageMaker AI Studio Classic のクロスアカウントで CodeCommit リポジトリのクローンが作成されました。システムターミナルからすべての Git コマンドを実行できるようになりました。 | AWS DevOps |
追加情報
IAM ポリシーの例:
この例のポリシーを使用するには、次を行います。
<CodeCommit_Repository_Region>をリポジトリの AWS リージョンに置き換えます。アカウント A のアカウント ID で
<Account_A_ID>を置き換えます。アカウント A の CodeCommit リポジトリの名前に
<CodeCommit_Repository_Name>置き換えてください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:BatchGet*", "codecommit:Create*", "codecommit:DeleteBranch", "codecommit:Get*", "codecommit:List*", "codecommit:Describe*", "codecommit:Put*", "codecommit:Post*", "codecommit:Merge*", "codecommit:Test*", "codecommit:Update*", "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:<CodeCommit_Repository_Region>:<Account_A_ID>:<CodeCommit_Repository_Name>" ] } ] }
SageMaker AI シェルスクリプトの例
この例のスクリプトを使用するには、次を行います。
アカウント A のアカウント ID で
<Account_A_ID>を置き換えます。前に作成した IAM ロールの名前で
<Account_A_Role_Name>を置き換えます。<CodeCommit_Repository_Region>をリポジトリの AWS リージョンに置き換えます。アカウント A の CodeCommit リポジトリの名前に
<CodeCommit_Repository_Name>を置き換えてください。
#!/usr/bin/env bash #Launch from system terminal pip install --quiet git-remote-codecommit mkdir -p ~/.aws touch ~/.aws/config echo "[profile CrossAccountAccessProfile] region = <CodeCommit_Repository_Region> credential_source=EcsContainer role_arn = arn:aws:iam::<Account_A_ID>:role/<Account_A_Role_Name> output = json" > ~/.aws/config echo '[credential "https://git-codecommit.<CodeCommit_Repository_Region>.amazonaws.com"] helper = !aws codecommit credential-helper $@ --profile CrossAccountAccessProfile UseHttpPath = true' > ~/.gitconfig git clone codecommit::<CodeCommit_Repository_Region>://CrossAccountAccessProfile@<CodeCommit_Repository_Name>