LoginSignup
1
0

More than 1 year has passed since last update.

機械学習モデルをSageMakerにデプロイするのためのAWS認証設定のセットアップ

Posted at

Set up AWS authentication for SageMaker deployment | Databricks on AWS [2021/3/17時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

本書では、MLflowモデルをAWS SageMakerにデプロイするために、どのようにインスタンスプロファイルをセットアップするのかを説明します。ここで用いるIAMロールと同様のアクセス権をAWSユーザーのアクセスキーで設定することは可能ですが、SageMakerにデプロイするクラスターにアクセス権を設定する際にはインスタンスプロファイルを使用することをお勧めします。

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

  1. AWSコンソールでIAMサービスに移動します。
  2. サイドバーのロールをクリックします。
  3. ロールの作成をクリックします。
    1. 信頼エンティティのタイプの選択AWSサービスを選択します。
    2. このロールを使用するサービスの選択EC2サービスを選択します。
    3. 次へ:アクセス権をクリックします。
  4. アクセス権ポリシーのアタッチ画面で、AmazonSageMakerFullAccessを選択します。
  5. 次へ:レビューをクリックします。
  6. ロール名にロール名を入力します。
  7. ロールの作成をクリックします。
  8. ロール一覧でロール名をクリックします。

arn:aws:iam::<account-id>:role/<role-name>のフォーマットのロールのARNをメモしておきます。

ステップ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:DescribeRepositories"
      ],
      "Resource": [
        "arn:aws:ecr:*:<account-id>:repository/*"
      ],
      "Effect": "Allow"
    }
  ]
}

これらのアクセス権により、Databricksクラスターに以下のことを許可します。

  1. 新規ロールのカノニカルARNの取得
  2. SageMakerエンドポイントサーバーによって使用されるS3に対するアクセス権スコープオブジェクトのアップロード

ロールのアクセス権は以下のようになります。

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

sagemaker.amazonaws.comへのiam:AssumeRoleを追加します。

  1. Role Summary > Trust relationships > Edit trust relationshipに移動します。
  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のAdminコンソールでInstance Profilesタブを開き、Add Instance Profileをクリックします。
  2. 作成したAWSロールと紐付けられているインスタンスプロファイルARNを貼り付けます。ARNはarn:aws:iam::<account-id>:instance-profile/<role-name>のフォーマットであり、AWSコンソールで取得できます。
  3. Addボタンをクリックします。

詳細につていは、Databricksにおけるインスタンスプロファイルを用いたS3バケットへのセキュアなアクセスをご覧ください。

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

ステップ6 インスタンスプロファイルを指定してクラスターを起動するをご覧ください。

Databricks 無料トライアル

Databricks 無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0