SageMaker Studio 共有スペースで共同編集を行ってみた

2023.03.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、データアナリティクス事業本部の八木です。
今回は昨年のre:Invent2022でSageMaker Studioの新たな機能として登場した、共有スペースについて解説します。

共有スペースとは

共有スペースとはSageMaker Studioの複数ユーザ(ユーザプロファイル)が共同で作業を行うことのできるSageMaker Studio環境です。

従来はユーザごとに環境が作成されており、作成したファイルやノートブックアプリケーションなどは、ユーザの個人環境内でしか利用することができませんでした。

また、作成したノートブックファイルの共有機能は存在していたものの、あくまで共有時に作成したスナップショットのコピーであり、同じファイルを複数ユーザが共同所有、編集するといったことはできませんでした。

以上のような課題を解決するのが共有スペースです。
共有スペースはユーザの個人環境とは異なり、共有された環境を作成します。この環境には複数ユーザがアクセスすることができるため、リソースの共同所有やリアルタイムの共同編集が可能になりました。

やってみた

ということで、実際に共有スペースを作成し、作業を行ってみました。
今回はSageMaker Studioのドメインとユーザが作成されている前提で、作業していきます。

まず、「スペースの管理」から共有スペースを作成します。

作成されると共有スペースが起動できるようになります。まずはユーザaliceで起動してみます。

起動後、コンソール右上の表示から個人環境ではなく、作成した共有スペースにいることがわかります。
試しにノートブックを実行してみると、個人環境と同様にインスタンスが起動し、実行されました。

続いてbobで共有スペースを起動し、スクリプトを編集してみます。
するとaliceの画面(左)でも、bobの編集(右)がリアルタイムに反映されていることがわかります。

指定ユーザでのみログインするには

共有スペースを利用できるユーザ(ユーザプロファイル)を制限することはできません。同じドメイン内のユーザはどの共有スペースも利用可能です。
じゃあ、他のユーザになりすまして共有スペースで作業できるのでは!?となりますが、この制限はIAMポリシーで特定ユーザプロファイルのみを利用できるように指定することで実現できます。
共有スペースへのログインは、署名付きURLを発行してアクセスしています。このため、署名付きURL発行の権限を以下のようなIAMポリシーで絞ります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "sagemaker:CreatePresignedDomainUrl",
            "NotResource": "arn:aws:sagemaker:<region>:123456789012:user-profile/<domain-id>/<profile-name>"
        }
    ]
}

これで、特定ユーザプロファイルでのみSageMaker Studioにログインできるようになりました。

最後に

今回の記事では、SageMaker Studioの共有スペースについて解説しました。複数のユーザで同じノートブックを共同で編集、実行できるため、リソースの共有だけでなく、リモートワーク中のペアプロなどにも利用でき非常に便利そうです。

以上、八木でした!