メインコンテンツまでスキップ

SageMaker デプロイの AWS 認証を設定する

この記事では、 MLflow モデルを AWS SageMaker にデプロイできるようにインスタンスプロファイルを設定する方法について説明します。AWSここで指定したIAM ロールと同様の権限を持つ ユーザーのアクセス キーを使用することもできますが、Databricks を推奨しますインスタンスプロファイル を使用して、SageMaker にデプロイするためのクラスター許可を付与します。

ステップ 1: AWS IAMロールを作成し、SageMaker permission ポリシーをアタッチする

  1. AWSコンソールで、 [IAM] サービスに移動します。

  2. サイドバーの「 ロール 」タブをクリックします。

  3. ロールの作成 」をクリックします。

    1. [信頼できるエンティティの種類の選択] で、 [AWSサービス] を選択します。

    2. [このロールを使用するサービスの選択] で、 [EC2] サービスをクリックします。

      サービスの選択

    3. [次へ:アクセス許可] をクリックします。

  4. [アクセス許可のアタッチ] 画面で、 [AmazonSageMakerFullAccess] を選択します。

    SageMakerアクセス許可をアタッチする

  5. [次へ:確認] をクリックします。

  6. ロール名 」フィールドにロール名を入力します。

  7. ロールの作成 」をクリックします。

  8. ロールリストで、ロール名をクリックします。

    ロールの概要

ロールARN(形式はarn:aws:iam::<account-id>:role/<role-name>)をメモします。

ステップ 2: SageMaker デプロイリソースにアクセスするためのインラインポリシーを追加する

ロールにポリシーを追加します。

  1. [ インラインポリシー] をクリックします。

  2. 次の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クラスターで次のことを実行できるようにするために必要です。

  1. 新しいロールの正規ARNを取得します。
  2. SageMakerエンドポイントサーバーで使用するために、権限スコープのオブジェクトをS3にアップロードします。

ロールのアクセス許可は次のようになります。

ロールの権限

ステップ 3: ロールの信頼ポリシーを更新する

sagemaker.amazonaws.comiam:AssumeRoleアクセスを追加します。

  1. [ロールの概要] > [信頼関係] > [信頼関係の編集] に移動します。

  2. 次の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 ロールがロールを渡すことを許可する

  1. Databricks ワークスペースの AWS ロールに移動します。

  2. [ インラインポリシー] をクリックします。

  3. 次の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 クラスター インスタンスプロファイルを作成する

  1. Databricksワークスペースの管理者設定で、[ セキュリティ ]タブに移動し、[ インスタンスプロファイル ]の横にある [管理 ]をクリックします。

  2. [ インスタンスプロファイルの追加 ] をクリックします。

  3. 作成したAWSロールに関連付けられたインスタンスプロファイルARNを貼り付けます。このARNはarn:aws:iam::<account-id>:instance-profile/<role-name>の形式で、AWSコンソールに表示されます。

    インスタンスプロファイルARN

  4. [追加] ボタンをクリックします。

    IAMロールを追加

詳細については、「 チュートリアル: インスタンスプロファイルを使用して S3 アクセスを設定する」を参照してください。

ステップ6:インスタンスプロファイルでクラスターを起動する

「インスタンスプロファイル」を参照してください。