Amazon SageMaker AI インスタンスにコードリポジトリを追加しようとしています。
解決策
SageMaker AI は GitHub コードリポジトリとの統合をサポートしています。HTTPS では、SageMaker AI の組み込み Git 統合を使用してください。仮想プライベートクラウド (VPC) 経由でアクセスする SSH リポジトリまたは内部の Git サーバーには、ライフサイクル設定を使用してください。
HTTPS 用の SageMaker AI Git 統合を使用する
SageMaker AI アカウントに Git リポジトリを追加します。
リポジトリへのアクセスには、次の形式を使用してください。
- GitHub URL: https://github.com/workspace/repository.git
- Bitbucket URL: https://bitbucket.org/workspace/repository.git
- GitLab URL: https://gitlab.com/workspace/repository.git
SageMaker AI はリポジトリを /home/ec2-user/SageMaker/ にクローンします。
SSH ベースの Git 統合にライフサイクル設定を使用する
次の手順を実行します。
-
SSH のプライベートキーを AWS Secrets Manager に保存します。
-
ライフサイクル設定を作成します。
-
Start notebook エディタで次のスクリプトを入力し、お使いの Git サーバーとセキュリティポリシーに合わせてカスタマイズします。
bash
#!/bin/bash
python << EOF
import boto3
import base64
secret_name = "your_secret_name"
region_name = "your_region"
session = boto3.session.Session()
client = session.client(service_name='secretsmanager', region_name=region_name)
get_secret_value_response = client.get_secret_value(SecretId=secret_name)
if 'SecretString' in get_secret_value_response:
secret = get_secret_value_response['SecretString']
with open('/home/ec2-user/.ssh/id_rsa', 'wt') as tmp:
tmp.write(secret)
else:
decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary'])
with open('/home/ec2-user/.ssh/id_rsa', 'wt') as tmp:
tmp.write(decoded_binary_secret)
EOF
echo "Host github.com " >> /home/ec2-user/.ssh/config
echo " StrictHostKeyChecking no" >> /home/ec2-user/.ssh/config
echo " IdentityFile /home/ec2-user/.ssh/id_rsa" >> /home/ec2-user/.ssh/config
chmod 600 /home/ec2-user/.ssh/config
chmod 600 /home/ec2-user/.ssh/id_rsa
chown ec2-user:ec2-user /home/ec2-user/.ssh/config
chown ec2-user:ec2-user /home/ec2-user/.ssh/id_rsa
cd /home/ec2-user/SageMaker
sudo su ec2-user -c "git clone git@github.com:myAccount/SageMakerNotebook.git"
rm /home/ec2-user/.ssh/config
-
ノートブックインスタンスの AWS Identity and Access Management (IAM) ロールに、Secrets Manager にアクセスするための次のアクセス許可ポリシーが含まれていることを確認します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:region:account-id:secret:secret-name"
}
]
}
関連情報
Amazon SageMaker AI ノートブックインスタンスを作成する
ID ベースのポリシー
Git リポジトリを SageMaker AI ノートブックインスタンスに接続する際、関連する問題をトラブルシューティングする方法を教えてください