AWS CLIでSageMaker Studioの新UIを起動してみた

2024.02.03

はじめに

昨年のre:InventでSageMaker Stuidoの新しいUIが発表されました。

今回はこのSageMaker Stuidoの新しいUIをAWS CLIを使って起動してみました。

いきなりまとめ

以下のコマンドでSageMaker Studioを新しいUIで起動することができます。

aws sagemaker create-domain --domain-name <ドメイン名> --auth-mode IAM --vpc-id <VPC-ID> --subnet-ids <サブネットID> --default-user-settings '{"StudioWebPortal": "ENABLED", "DefaultLandingUri": "studio::", "ExecutionRole":"<IAMロールのarn\>":}'

<ドメイン名>、<VPC-ID>、<サブネットID>、<IAMロールのarn>は適宜入力して下さい。
また、IAMロールにはSageMakerFullAccessが許可されたIAMロールが必要です。

CloudFormationでSageMaker ドメインを作成

今回このような検証を行った事の発端は、SageMakerドメインをCloudFormationで作成したことが始まりでした。
CloudFormationで作成したドメインからStudioを起動したところ、見覚えのない起動画面に遷移しました。

あれ?なんだこれ、いつもと違うぞ?
そうです、古いUIのStudioが起動していたのです。

私は最近SageMakerを触り始めた人間なので、こちらのUIとは初対面でした。
起動時間がとても長かったので、あれ?おかしいな...と思いながらしばらく待っていると

やはりいつもと違うUIでした。
やけに起動に時間がかかり、画面も違うということで、ここでやっと古いStudioが起動していることに気づきました。

SageMakerのドキュメントを確認してみました。

Administrators can make Studio the default experience when creating a domain from the SageMaker console or the AWS CLI

執筆時点では新UIに対応したドメインはマネジメントコンソールまたはAWS CLIからのみ作成することができるようです。

こちら私の勘違いでした。
よくドキュメントを確認したところ、CloudFormationにも対応していそうなので試してみました。
以下のCloudFormationテンプレートでドメインを作成します。

AWSTemplateFormatVersion: "2010-09-09"
Description: AWS CloudFormation Sample Template for SageMaker Studio Domain

Resources:
  SageMakerStudioDomain:
    Type: "AWS::SageMaker::Domain"
    Properties:
      DomainName: "<ドメイン名>"
      AuthMode: "IAM"
      DefaultUserSettings:
        ExecutionRole: "<IAMロールのarn\>"
        StudioWebPortal: "ENABLED"
      SubnetIds: "<サブネットID>"
      VpcId: "<VPC-ID\>"

作成されたドメインから起動したStudioでは、新しいUIで起動することができました。

AWS CLIでSageMaker Studioの新UIを立ち上げる

注意点として、
AWS CLIでドメインを作成する場合、SageMakerのフルアクセス権限を持ったIAMロールが必要です。
IAMロールの情報がない状態で作成すると、画像のようにステータスがFaildとなります。
詳細を調べても「内部エラー」という情報しか得られず、IAMロールが必要ということに気づくまでに時間がかかりました。

それではドメインを作成します。

aws sagemaker create-domain --domain-name <ドメイン名> --auth-mode IAM --vpc-id <VPC ID> --subnet-ids <サブネットID> --default-user-settings '{"StudioWebPortal": "ENABLED", "DefaultLandingUri": "studio::", "ExecutionRole":"<IAM Roleのarn>":}'
{
    "Domainarn": "arn:aws:sagemaker:ap-northeast-1:1234567890:domain/d-asdfghjklqwer",
    "Url": "https://d-asdfghjklqwer.studio.ap-northeast-1.sagemaker.aws"
}

ドメインを作成すると、ドメインarnがレスポンスとして返ってきます。
ドメインの作成は少し時間がかかるので数分待ちます。

ステータスがInServiceになったことが確認できたらユーザープロファイルを作成します。
<ドメインID>の部分には先ほど作成したドメインのIDを入力します。
ドメインIDはarnの末尾の部分です(今回の場合はd-asdfghjklqwer)
<ユーザープロファイル>にはユーザープロファイル名
<IAMロールのarn>にはドメイン作成時と同じarnを入力します。

aws sagemaker create-user-profile --domain-id <ドメインID> --user-profile-name <ユーザープロファイル名> --user-settings '{"ExecutionRole":"IAM Roleのarn"}'

ユーザープロファイルが作成されたらStudioを起動します。

新しいUIで起動されていますね。

まとめ

  • 記事執筆時点ではCloudFormationはStudioの新UIに対応していない
  • AWS CLIからドメインを作成する際はIAMロールを指定する