153
105

AWS Cloud9が突然、新規利用不可に? 代替策「SageMaker Studio コードエディタ」の利用手順

Last updated at Posted at 2024-07-29

背景

2024年7月29日、日本時間20時ごろからAWS Cloud9の新規利用に制限がかかるようになりました。

  • 新規作成したAWSアカウントや、これまでCloud9を利用していなかったAWSアカウントで、Cloud9コンソールにアクセスできなくなっている模様
  • AWS Organizations配下に作成した新規AWSアカウントも同様の状況

image.png

当初、本件に関するAWSからの公式アナウンスはなく、数日前から「Cloud9から類似環境への移行方法」を紹介する意味深なブログが投稿されていたのみでした。

そして7/31にようやく、AWSのチーフエバンジェリストJeffさんより以下のアナウンスが出ています。

過去このように唐突なサービス利用制限はAWSであまり聞かなかったため、AWSコミュニティも大変ざわついています。とても残念ですね。

拙著「Amazon Bedrock 生成AIアプリ開発入門」でもCloud9を例としたハンズオン手順を掲載していたため、急きょ代替策をご紹介します。

(アドバイスくださった @ren8k さん、ありがとうございます🙇‍♂️)

利用手順

Cloud9の代替として「Amazon SageMaker Studio コードエディタ」を利用します。

前提条件

  • 新規AWSアカウントを作成済みであること(書籍の付録1に掲載)
  • 作業用のIAMユーザーを作成済みであること(書籍の付録2に掲載)
  • VPCを作成済みであること(書籍の付録3に掲載)

下記内容は、書籍の「付録4」に相当する代替手順となります。

1. SageMakerドメインの作成

AWSマネジメントコンソールのトップ画面より「Amazon SageMaker」を検索してクリック

スクリーンショット 2024-07-30 1.53.44.png

左サイドバーの「ドメイン」をクリックし、右側の「ドメインを作成」をクリック

スクリーンショット 2024-07-30 1.54.37.png

「シングルユーザー向けの設定」を選択し、「設定」をクリック

スクリーンショット 2024-07-30 1.55.40.png

上部の青色のバーが緑色に変化し、ドメインの作成完了メッセージが表示されるまで数分待つ

スクリーンショット 2024-07-30 1.56.38.png

ここで表示されている「認証と認可」セクション内の「デフォルトの実行ロール」に記載されているIAMロール名をメモしておいてください。後続のIAMロール設定時に必要となります。

  • AmazonSageMaker-ExecutionRole-<15桁の文字列>

2. SageMaker Studio Code Editorの起動

その後、「ユーザープロファイル」タブをクリックし、右下の「起動」プルダウンから「Studio」をクリック

スクリーンショット 2024-07-30 2.00.15.png

「Skip Tour for now」をクリックして、ポップアップを閉じる

スクリーンショット 2024-07-30 2.00.50.png

画面左上の「Code Editor」をクリック

スクリーンショット 2024-07-30 2.02.24.png

画面右上の「Create Code Editor space」をクリック

スクリーンショット 2024-07-30 2.03.28.png

「Name」欄に handson など任意の名前を付け、「Create space」をクリック

スクリーンショット 2024-07-30 2.04.05.png

数秒待機すると環境が起動可能となるため、「Run space」をクリック

利用するマシンイメージは、デフォルトの SageMaker Distribution 1.9 の前提で本記事を記載しています。

スクリーンショット 2024-07-30 2.05.06.png

数秒待機すると、画面下側に環境の作成完了メッセージが表示されるので、「Open Code Editor」をクリック

スクリーンショット 2024-07-30 2.06.28.png

新しいタブで開発環境が開く

スクリーンショット 2024-07-30 2.08.27.png

3. 開発環境の初期設定

画面左上、上から2つ目の「ファイル」アイコンをクリックし、展開された左サイドバーから「Open Folder」をクリック。

その後、画面上部に表示される「Open Folder」ポップアップ右側の「OK」をクリック

スクリーンショット 2024-07-30 2.10.06.png

ポップアップの「Trust the authors...(以下略)」にチェックを入れ、「Yes, I trust the authors」をクリック

スクリーンショット 2024-07-30 2.11.28.png

画面右上、左から2つ目の「下ペイン表示」アイコンをクリックすると、画面下部にターミナルが起動する

スクリーンショット 2024-07-30 2.13.14.png

これで、AWS Cloud9を起動した直後と同等の開発環境が準備できました。

4. IAMロールへの権限追加

コードエディタの初期設定では権限が限定されているため、書籍「Amazon Bedrock 生成AIアプリ開発入門」のハンズオンを実施される方は、事前にIAMロールへのポリシー追加を実施ください。

AWSマネジメントコンソール画面上部の検索バーより、「IAM」を探してアクセス

スクリーンショット 2024-07-30 14.37.36.png

左側メニューの「ロール」をクリックし、前述の手順1の最後でメモした「SageMaker Studio用のIAMロール名」を右側のポリシー検索ボックスに入力して、表示されるIAMロールをクリック

スクリーンショット 2024-07-30 14.51.56.png

画面右下の「許可を追加」プルダウンから「ポリシーをアタッチ」をクリック

スクリーンショット 2024-07-30 14.53.37.png

「その他の許可ポリシー」から以下のポリシーを検索し、4件ともにチェックを入れた状態で「許可を追加」をクリック

  • AmazonBedrockFullAccess
  • AWSLambda_FullAccess
  • AmazonDynamoDBFullAccess
  • AWSStepFunctionsFullAccess

スクリーンショット 2024-07-30 14.55.53.png

これで、コードエディタからハンズオンに必要なAWSサービスの操作(Bedrock、Lambdaなど)を実行できるようになります。

主な操作方法

Cloud9と異なる部分

新規ファイルを作成する場合は、画面上部のタブバーをクリックして「New Text File」をクリック

スクリーンショット 2024-07-30 2.14.39.png

作成したファイルを保存する場合は、Command + s(Windowsの場合は Ctrl + s)を押し、画面上部の「Save As」ポップアップ内に保存したいパス+ファイル名を入力して「OK」をクリック

スクリーンショット 2024-07-30 2.24.07.png

ファイルをアップロードする場合は、左サイドバーの空き領域を右クリックして「Upload...」をクリック

スクリーンショット 2024-07-30 2.16.23.png

Streamlitアプリの起動&プレビュー方法

Streamlitの実行コマンドは以下です。画面下部のターミナルで実行します

Cloud9利用時に付与していた --server.port 8080 オプションは省いてください。

ターミナル
streamlit run <ファイル名>

streamlitが実行され、URLがターミナルに表示されたら、ターミナル右上の「+」ボタンをクリック

スクリーンショット 2024-07-30 2.26.49.png

新たに起動されたターミナルで以下コマンドを実行

Pinggyという外部サービスを利用してURLを一時公開しています。

ターミナル
ssh -p 443 -R0:localhost:8501 a.pinggy.io

ブラウザからクリップボードのアクセス許可ポップアップが表示された場合は「許可する」をクリック

スクリーンショット 2024-07-30 2.20.55.png

ターミナルで Are you sure you want to continue connecting (yes/no/[fingerprint])? というメッセージが表示されたら yes と入力してEnterキーを押す

スクリーンショット 2024-07-30 2.30.31.png

表示されるURLのうち下側(https:// で始まる方)をコピーして、ブラウザの新しいタブで開き、「Enter site」をクリック

スクリーンショット 2024-07-30 2.33.26.png

Streamlitアプリへアクセス完了(これがCloud9で言う「プレビュー」を開いた画面と同等になります)

スクリーンショット 2024-07-30 2.34.31.png

環境の停止方法

SageMaker Studioのコードエディタ用コンソールより、「Stop」ボタンをクリックするとインスタンスの停止が可能です。

スクリーンショット 2024-07-30 14.22.46.png

注意点

Pythonバージョン

コードエディタのPythonバージョンは 3.10.14 となります。Cloud9のもの(3.9.16)と少し異なりますので、ハンズオンの動作が変わる可能性があります。

また、pip installでライブラリのインストール時にもバージョンの依存関係エラーが出力される可能性があります。Pythonのバージョンを3.9.16に合わせる場合は、ターミナルで以下のコマンドを実行してください。

ターミナル
conda init
conda create -n handson python=3.9.16 --yes

echo "conda activate handson" >> ~/.bashrc

source ~/.bashrc 

追加でインストールが必要なソフトウェア

現時点で、Cloud9との差分として以下のソフトウェアが不足していることを確認しています。エラー発生の際は、以下コマンドでインストールを実施してからハンズオンを続行ください。

  • zip
sudo apt install -y zip

利用料金

コードエディタ用の最小スペックのインスタンス ml.t3.medium の利用料金は、バージニア北部リージョンの場合「1時間あたり0.05 USドル」となっています。

スクリーンショット 2024-07-30 3.03.44.png

Cloud9と異なり、恒常的に無料利用枠となるインスタンスが存在しないため、ハンズオンの終了後はインスタンスを忘れず停止もしくは削除しましょう。

SageMakerの「ドメイン」自体に対する課金は発生しません。

外部サービスの利用

今回、Streamlitのプレビュー画面をWebブラウザから確認できるよう、Pinggyというサービスを用いて外部からアクセス可能なURLを一時的に作成しています。

セキュリティ上、URLは第三者へ公開しないようお気をつけください。また、ハンズオンの動作確認後は、お早めにCtrl + c でターミナルからPinggyを動作停止ください。料金は無料の範囲内で利用できます。

書籍ハンズオンの各章補足

書籍「Amazon Bedrock 生成AIアプリ開発入門」においては、著者陣にて各章のハンズオンを再検証中です。

本Qiita記事、および公式GitHubリポジトリのREADMEを随時更新しますので、適時チェックくださいますと幸いです。

第3章(開発手法)

コードエディタにインストールされているデフォルトのPythonバージョンが変わるため、以下を読み替えのうえ実施ください。

  • Lambdaレイヤーの作成コマンドにて、python3.9 を指定している部分を python3.10 に変更する(P.171)
  • Lambda関数の作成時に、ランタイムとして Python 3.9 の代わりに Python 3.10 を指定する(P.173)

第5章(エージェント)

第3章と同様、Lambdaレイヤーに関する箇所を以下のとおり読み替えください。

  • Lambdaレイヤーの作成時、「互換性のあるランタイム」として Python 3.9 の代わりに Python 3.10 を指定する(P.301)
  • Lambda関数の作成時に、ランタイムとして Python 3.9 の代わりに Python 3.10 を指定する(P.313)

よくある質問

起動したアプリにアクセスすると「このページは動作していません」と表示される

以下の画面が表示される場合は、Streamlit起動時にCloud9用のポート指定オプション --server.port 8080 が残っている可能性があります。オプションを削除して再度お試しください。

image.png

153
105
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
153
105