はじめに
AWS Cloud9が新規利用できないため、代わりにAmazon SageMaker Studio Code EditorでDocker開発環境を利用する方法を紹介します。
以下の書籍を参考にハンズオンを実施した際の記事です。とても分かりやすい書籍ですので、全体のハンズオンやコンテナの詳細説明については、ぜひこちらを参照ください。
Amazon.co.jp: AWSコンテナ設計・構築[本格]入門 eBook : 新井 雅也, 馬勝 淳史, 佐々木 拓郎: Kindleストア
Amazon SageMaker Studio特有の設定や制限があるため、初見ではうまくいかない箇所もありました。本記事では、それらの制限事項についても記載しています。
なお、今回はAmazon SageMaker Studio Code Editorを利用しましたが、Amazon SageMaker Studio内のJupyterLabを利用することも可能です。
Amazon SageMaker Studio Code Editorとは
Amazon SageMaker Studio Code Editorは、機械学習の統合開発環境(IDE)です。AWS Cloud9の新規利用停止に伴い、代替のサービスとして注目されています。
機械学習専用のサービスですが、Dockerを利用することで汎用的な開発環境としても活用できます。
参考ドキュメント:
Amazon SageMaker Studio の Code Editor - Amazon SageMaker AI
Amazon SageMaker StudioでDockerを利用する際の注意事項
SageMaker Studio環境でDockerを使用する際は、以下の制限事項があります。
主な制限事項:
- Dockerはデフォルトで無効のため、有効化する必要があります
- Dockerは自分でインストールする必要があります
- すべてのDockerコマンドがサポートされている訳ではなく、公式ドキュメントに記載のコマンドのみ利用できます
- ネットワーク制限があるため、
docker buildコマンドを利用する際には--network sagemakerを、docker runコマンドを利用する際には--net sagemakerを指定する必要があります - コンテナ実行中はDockerボリューム(
docker volume)は使用できず、バインドマウント(ホストのディレクトリをコンテナにマウントする)のみサポートされています -
-pを利用したポートマッピングは利用できません(例:-p 8080:80) - ポートを公開したい場合は以下のURLパターンでStudioからアクセスします:
http://localhost:port
参考ドキュメント:
Amazon SageMaker Studio でのローカルモードのサポート - Amazon SageMaker AI
Amazon SageMaker AIのドメインを作成
1. ドメイン作成の開始
Amazon SageMaker AI > ドメイン > [ドメインの作成] を押下します。
2. クイックセットアップの選択
[シングルユーザー向けの設定(クイックセットアップ)] を選択し、設定を押下します。
このときにVPC、サブネット、ルートテーブル、インターネットゲートウェイも自動で作成されます。
3. Docker機能の有効化
ドメインを作成できたら、アプリケーション設定タブからDockerを有効化します。
Code Editorの起動
1. Studioの起動
ユーザープロファイルタブから [起動] > [Studio] を押下します。
2. ツアーのスキップ
[Skip Tour for Now] を押下します。
3. Code Editorの選択
[Code Editor] を選択します。
4. Code Editorスペースの作成
[Create Code Editor space] を押下し、名前を入力後、[Create Space] を押下します。
5. スペースの実行
[Run Space] を押下します。
6. Code Editorの起動
[Open Code Editor] を押下します。
GitHubからクローン
1. 初期画面のスキップ
最初の画面は [Next Section] を押下してスキップします。
2. リポジトリのクローン
[Clone Repository] を押下し、GitHubのURLを入力します。
Dockerのインストール
1. Dockerリポジトリの設定
Dockerの公式リポジトリを設定します。
参考ドキュメント: Ubuntu | Dockerドキュメント
# Docker公式GPGキーの追加
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# リポジトリをAptソースに追加
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
2. Dockerパッケージのインストール
必要なDockerパッケージをインストールします。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker build / Docker run
1. 作業ディレクトリへの移動
作業するリポジトリに移動します。
cd /home/sagemaker-user/<repository>
2. Dockerイメージのビルド
ネットワーク上の制限があるため、--network sagemaker を指定してビルドします。
docker image build -t <repository>:<tag> <path> --network sagemaker
3. コンテナの実行
ネットワーク上の制限があるため、--net sagemaker を指定します。
-p 8080:80 をつけて実行すると、SageMaker Studioのセキュリティ制限のためエラーが出るため、内部ポートで実行します。
docker container run -d --net sagemaker ${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/sbcntr-backend:v1
4. サーバへのリクエスト送信
動作確認のため、サーバにリクエストを送信します。
curl http://localhost:80
補足:IAMロールへ権限追加
ECRにプッシュする際は権限を追加する必要があります。本記事ではECRの作成やプッシュは記載していませんが、権限追加が必要な場合は以下のように追加してください。
1. 実行ロールの確認
Amazon SageMaker AI > ドメイン > 認証と許可 > デフォルト実行ロールの、AmazonSageMaker-ExecutionRole-xxxxxxxxxxxxxxx をコピーします。
2. IAMロールの選択
IAM > ロールに遷移し、AmazonSageMaker-ExecutionRole-xxxxxxxxxxxxxxx を選択します。
[許可を追加] を押下します。
3. ECR権限の追加
AmazonEC2ContainerRegistryFullAccess を追加します。
まとめ
AWS Cloud9の代替として、Amazon SageMaker Studio Code EditorでのWeb開発やコンテナ化されたアプリケーションの開発が可能です。
ただし、SageMaker特有の制限事項があるため、通常のDockerコマンドを実行すると上手くいかない場合があります。制限事項を理解知ったうえで進めるとスムーズかと思います。














