SageMaker デプロイの AWS 認証を設定する
この記事では、 MLflow モデルを AWS SageMaker にデプロイできるようにインスタンスプロファイルを設定する方法について説明します。AWSここで指定したIAM ロールと同様の権限を持つ ユーザーのアクセス キーを使用することもできますが、Databricks を推奨しますインスタンスプロファイル を使用して、SageMaker にデプロイするためのクラスター許可を付与します。
ステップ 1: AWS IAMロールを作成し、SageMaker permission ポリシーをアタッチする
-
AWSコンソールで、 [IAM] サービスに移動します。
-
サイドバーの「 ロール 」タブをクリックします。
-
「 ロールの作成 」をクリックします。
-
[信頼できるエンティティの種類の選択] で、 [AWSサービス] を選択します。
-
[このロールを使用するサービスの選択] で、 [EC2] サービスをクリックします。
-
[次へ:アクセス許可] をクリックします。
-
-
[アクセス許可のアタッチ] 画面で、 [AmazonSageMakerFullAccess] を選択します。
-
[次へ:確認] をクリックします。
-
「 ロール名 」フィールドにロール名を入力します。
-
「 ロールの作成 」をクリックします。
-
ロールリストで、ロール名をクリックします。
ロールARN(形式はarn:aws:iam::<account-id>:role/<role-name>
)をメモします。
ステップ 2: SageMaker デプロイリソースにアクセスするためのインラインポリシーを追加する
ロールにポリシーを追加します。
-
[
] をクリックします。
-
次のJSON定義を貼り付けます。
JSON{
"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:DescribeGitRepositories"],
"Resource": ["arn:aws:ecr:*:<account-id>:repository/*"],
"Effect": "Allow"
}
]
}
これらのアクセス許可は、Databricksクラスターで次のことを実行できるようにするために必要です。
- 新しいロールの正規ARNを取得します。
- SageMakerエンドポイントサーバーで使用するために、権限スコープのオブジェクトをS3にアップロードします。
ロールのアクセス許可は次のようになります。
ステップ 3: ロールの信頼ポリシーを更新する
sagemaker.amazonaws.com
にiam:AssumeRole
アクセスを追加します。
-
[ロールの概要] > [信頼関係] > [信頼関係の編集] に移動します。
-
次のJSONを貼り付けて保存します。
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定義を貼り付けて保存します。
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ワークスペースの管理者設定で、[ セキュリティ ]タブに移動し、[ インスタンスプロファイル ]の横にある [管理 ]をクリックします。
-
[ インスタンスプロファイルの追加 ] をクリックします。
-
作成したAWSロールに関連付けられたインスタンスプロファイルARNを貼り付けます。このARNは
arn:aws:iam::<account-id>:instance-profile/<role-name>
の形式で、AWSコンソールに表示されます。 -
[追加] ボタンをクリックします。
詳細については、「 チュートリアル: インスタンスプロファイルを使用して S3 アクセスを設定する」を参照してください。
ステップ6:インスタンスプロファイルでクラスターを起動する
「インスタンスプロファイル」を参照してください。