Set up AWS authentication for SageMaker deployment | Databricks on AWS [2021/3/17時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
本書では、MLflowモデルをAWS SageMakerにデプロイするために、どのようにインスタンスプロファイルをセットアップするのかを説明します。ここで用いるIAMロールと同様のアクセス権をAWSユーザーのアクセスキーで設定することは可能ですが、SageMakerにデプロイするクラスターにアクセス権を設定する際にはインスタンスプロファイルを使用することをお勧めします。
ステップ1: AWS IAMロールを作成し、SageMakerのアクセス権ポリシーにアタッチする
- AWSコンソールでIAMサービスに移動します。
- サイドバーのロールをクリックします。
- ロールの作成をクリックします。
-
アクセス権ポリシーのアタッチ画面で、AmazonSageMakerFullAccessを選択します。
- 次へ:レビューをクリックします。
- ロール名にロール名を入力します。
- ロールの作成をクリックします。
- ロール一覧でロール名をクリックします。
arn:aws:iam::<account-id>:role/<role-name>
のフォーマットのロールのARNをメモしておきます。
ステップ2: SageMakerデプロイメントリソースにアクセスするためのインラインポリシーを追加する
ロールにポリシーを追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:PutObjectAcl",
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::mlflow-sagemaker-*-<account-id>",
"arn:aws:s3:::mlflow-sagemaker-*-<account-id>/*"
],
"Effect": "Allow"
},
{
"Action": [
"iam:GetRole"
],
"Resource": [
"arn:aws:iam::<account-id>:role/<role-name>"
],
"Effect": "Allow"
},
{
"Action": [
"ecr:DescribeRepositories"
],
"Resource": [
"arn:aws:ecr:*:<account-id>:repository/*"
],
"Effect": "Allow"
}
]
}
これらのアクセス権により、Databricksクラスターに以下のことを許可します。
- 新規ロールのカノニカルARNの取得
- SageMakerエンドポイントサーバーによって使用されるS3に対するアクセス権スコープオブジェクトのアップロード
ステップ3: ロールの信頼ポリシーを更新する
sagemaker.amazonaws.com
へのiam:AssumeRole
を追加します。
- Role Summary > Trust relationships > Edit trust relationshipに移動します。
- 以下のJSONを貼り付けて保存します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"Service": "sagemaker.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
ステップ4: お使いのDatabricksワークスペースのAWSロールが、ロールを引き渡せるように設定する
- DatabricksワークスペースのAWSロールに移動します。
- をクリックします。
- 以下のJSON定義を貼り付けて保存します。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::<account-id>:role/<role-name>"
],
"Effect": "Allow"
}
]
}
account-id
はAWS SageMakerサービスを実行しているアカウントのIDであり、role-name
はステップ1で定義したロールとなります。
ステップ5: Databricksクラスターのインスタンスプロファイルを作成する
- DatabricksのAdminコンソールでInstance Profilesタブを開き、Add Instance Profileをクリックします。
- 作成したAWSロールと紐付けられているインスタンスプロファイルARNを貼り付けます。ARNは
arn:aws:iam::<account-id>:instance-profile/<role-name>
のフォーマットであり、AWSコンソールで取得できます。
-
Addボタンをクリックします。
詳細につていは、Databricksにおけるインスタンスプロファイルを用いたS3バケットへのセキュアなアクセスをご覧ください。
ステップ6: インスタンスプロファイルを設定したクラスターを起動する
ステップ6 インスタンスプロファイルを指定してクラスターを起動するをご覧ください。