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