LabCodeシステムでAWS S3をストレージバックエンドとして使用するための設定手順を説明します。
- AWSアカウントを持っていること
- AWS Management Consoleへのアクセス権があること
- Docker/Docker Composeがインストールされていること
- AWS Management Console にアクセス
- ログイン後、サービス検索で「S3」を検索してS3コンソールを開く
-
「バケットを作成」ボタンをクリック
-
一般的な設定
- バケット名:
labcode-dev-artifacts(任意の名前に変更可) - AWSリージョン:
アジアパシフィック (東京) ap-northeast-1(推奨)
- バケット名:
-
オブジェクト所有者
- 「ACL無効(推奨)」を選択
-
このバケットのブロックパブリックアクセス設定
- 「パブリックアクセスをすべてブロック」にチェック(推奨)
-
バケットのバージョニング
- 「無効にする」(任意)
-
デフォルトの暗号化
- 「Amazon S3マネージドキー (SSE-S3)」を選択
-
「バケットを作成」をクリック
- AWSコンソールで「IAM」を検索してIAMコンソールを開く
- 左メニューから「ユーザー」を選択
- 「ユーザーを作成」をクリック
-
ユーザー詳細
- ユーザー名:
labcode-s3-user(任意) - 「次へ」をクリック
- ユーザー名:
-
許可を設定
- 「ポリシーを直接アタッチする」を選択
- 「ポリシーを作成」をクリック(新しいタブが開く)
- 「JSON」タブを選択
- 以下のポリシーを貼り付け(バケット名を適宜変更):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LabCodeS3Access",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::labcode-dev-artifacts",
"arn:aws:s3:::labcode-dev-artifacts/*"
]
}
]
}- 「次へ」をクリック
- ポリシー名:
LabCodeS3Policy - 「ポリシーを作成」をクリック
- 元のユーザー作成画面に戻る
- 作成した
LabCodeS3Policyを検索して選択 - 「次へ」→「ユーザーを作成」をクリック
- 作成したユーザー(
labcode-s3-user)をクリック - 「セキュリティ認証情報」タブを選択
- 「アクセスキーを作成」をクリック
- ユースケース: 「コマンドラインインターフェイス (CLI)」を選択
- 確認チェックボックスにチェックを入れて「次へ」
- 「アクセスキーを作成」をクリック
- 重要:
アクセスキーIDとシークレットアクセスキーをメモ(この画面を閉じると二度と表示されない)
labcode-test-environment/labcode-log-server/.env を作成または編集:
# S3ストレージ設定
AWS_ACCESS_KEY_ID=<取得したアクセスキーID>
AWS_SECRET_ACCESS_KEY=<取得したシークレットアクセスキー>
AWS_DEFAULT_REGION=ap-northeast-1
S3_BUCKET_NAME=labcode-dev-artifactsAWS_ACCESS_KEY_ID=AKIAXXXXXXXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AWS_DEFAULT_REGION=ap-northeast-1
S3_BUCKET_NAME=labcode-dev-artifacts| 環境変数 | 説明 | 必須 | デフォルト値 |
|---|---|---|---|
AWS_ACCESS_KEY_ID |
IAMアクセスキーID | Yes | - |
AWS_SECRET_ACCESS_KEY |
IAMシークレットアクセスキー | Yes | - |
AWS_DEFAULT_REGION |
AWSリージョン | No | ap-northeast-1 |
S3_BUCKET_NAME |
S3バケット名 | No | labcode-dev-artifacts |
S3_ENDPOINT_URL |
S3互換エンドポイント(MinIO等) | No | - |
STORAGE_MODE |
ストレージモード (s3 or local) |
No | s3 |
cd labcode-test-environment
docker compose up -d# コンテナ内でPythonシェルを起動
docker exec -it labcode_log_server python
# 以下のコードを実行
>>> from services.storage_service import get_storage
>>> storage = get_storage()
>>> print(storage.list_objects("runs/"))
# 空リストまたはオブジェクト一覧が表示されればOK# ストレージ情報取得(Run ID 1の場合)
curl http://localhost:8000/api/v2/storage/info/1S3を使用せずにローカルストレージのみで動作させる場合:
# ローカルモード設定
STORAGE_MODE=local
LOCAL_STORAGE_PATH=/data/storage
# ダミーS3設定(ローカルモードでは使用されない)
AWS_ACCESS_KEY_ID=dummy
AWS_SECRET_ACCESS_KEY=dummy
AWS_DEFAULT_REGION=ap-northeast-1
S3_BUCKET_NAME=labcode-dev-artifactsdocker compose -f compose.local.yaml up -d原因: IAMポリシーが正しく設定されていない
解決策:
- IAMユーザーに正しいポリシーがアタッチされているか確認
- ポリシーのリソースARNがバケット名と一致しているか確認
- バケットのブロックパブリックアクセス設定を確認
原因: バケットが存在しない、またはリージョンが異なる
解決策:
- バケット名のスペルミスを確認
AWS_DEFAULT_REGIONがバケットのリージョンと一致しているか確認
原因: アクセスキーIDが無効
解決策:
.envファイルのアクセスキーIDを確認- IAMコンソールでアクセスキーが有効か確認
- アクセスキーを再発行
原因: ネットワーク接続の問題
解決策:
- インターネット接続を確認
- プロキシ設定を確認(企業ネットワークの場合)
- AWS VPCエンドポイントの設定を確認(VPC内の場合)
-
アクセスキーの定期ローテーション
- 90日ごとにアクセスキーを更新することを推奨
-
最小権限の原則
- 必要最小限のS3操作権限のみを付与
-
環境変数ファイルの保護
.envファイルを.gitignoreに追加- 本番環境ではAWS Secrets Managerの使用を検討
-
バケットポリシーの確認
- パブリックアクセスを無効化
- 必要に応じてバケットポリシーでIPアドレス制限を追加
- アップグレードガイド - S3導入時のマイグレーション手順
- システムアーキテクチャ - ストレージ連携の概要