7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SageMaker Studio Code EditorでDocker開発環境構築 - Cloud9代替としての活用法

7
Posted at

はじめに

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 > ドメイン > [ドメインの作成] を押下します。

image.png

2. クイックセットアップの選択

[シングルユーザー向けの設定(クイックセットアップ)] を選択し、設定を押下します。

このときにVPC、サブネット、ルートテーブル、インターネットゲートウェイも自動で作成されます。

image.png

3. Docker機能の有効化

ドメインを作成できたら、アプリケーション設定タブからDockerを有効化します。

image.png

Code Editorの起動

1. Studioの起動

ユーザープロファイルタブから [起動] > [Studio] を押下します。

image.png

2. ツアーのスキップ

[Skip Tour for Now] を押下します。

image.png

3. Code Editorの選択

[Code Editor] を選択します。

image.png

4. Code Editorスペースの作成

[Create Code Editor space] を押下し、名前を入力後、[Create Space] を押下します。

image.png
image.png

5. スペースの実行

[Run Space] を押下します。

image.png

6. Code Editorの起動

[Open Code Editor] を押下します。

image.png

GitHubからクローン

1. 初期画面のスキップ

最初の画面は [Next Section] を押下してスキップします。

image.png

2. リポジトリのクローン

[Clone Repository] を押下し、GitHubのURLを入力します。

image.png

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 をコピーします。

image.png

2. IAMロールの選択

IAM > ロールに遷移し、AmazonSageMaker-ExecutionRole-xxxxxxxxxxxxxxx を選択します。

[許可を追加] を押下します。

image.png

3. ECR権限の追加

AmazonEC2ContainerRegistryFullAccess を追加します。

image.png

まとめ

AWS Cloud9の代替として、Amazon SageMaker Studio Code EditorでのWeb開発やコンテナ化されたアプリケーションの開発が可能です。

ただし、SageMaker特有の制限事項があるため、通常のDockerコマンドを実行すると上手くいかない場合があります。制限事項を理解知ったうえで進めるとスムーズかと思います。

7
1
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
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?