
AWS CLIでSageMaker Studioの新UIを起動してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
昨年の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ロールを指定する
 








