Slide 1

Slide 1 text

DockerからECSへ 〜 AWSの海に出る前に知っておきたいこと 〜 2025/08/21 JAWS-UGコンテナ支部 太田 暢 @iorandd Copyright © 3-shake, Inc. All Rights Reserved.

Slide 2

Slide 2 text

太田 暢 株式会社スリーシェイク Sreake事業部アプリケーション開発支援チーム ● バックエンドがメイン、たまにフロント ● JAWS初登壇✨ 自己紹介

Slide 3

Slide 3 text

1. ローカルでモック環境を使う ● LocalStack、MinIO など ● ✅ 権限不要・高速・無料 ● ⚠ 本番との差異 2. 検証環境で頻繁に試す ● dev/stgクラスタにデプロイ ● ✅ 本番との差が小さい ● ⚠ コスト・待ち時間が発生 マネージドコンテナサービスの前段階の開発パターン → 今回は1の流れで学んだことを共有  ※マネージドコンテナサービスの一例としてECSを取り上げます 3. IaCで環境を動的に作る ● PR毎にephemeral環境 ● ✅ 並行開発に強い ● ⚠ 運用負荷大

Slide 4

Slide 4 text

ローカル環境とAWS環境の間に考慮すべきことがたくさんある IAMロール タスク定義 ログ メトリクス コスト セキュリティ ビルド デプロイ 環境変数 ワークフロー アカウントID

Slide 5

Slide 5 text

LocalStack https://github.com/localstack/localstack ローカルでAWSサービスをエミュレートできるプラットフォーム ● CLIやDockerですぐ使える ● バックエンドのロジック実装に集中できる ● 無料で使える範囲でAPI GatewayやLambda、S3といった主要サービスをカバーしている

Slide 6

Slide 6 text

LocalStackで扱えるAWSサービス 最新情報: https://docs.localstack.cloud/aws/services/

Slide 7

Slide 7 text

AWSの環境を触る上で知っておきたいこと ①CICDの全容 例 1. コードをGitHubにpush →トリガーはpush? PR merge? 手動dispatch? 2. GitHub ActionsがECRにイメージをpush →ECRへの認証方法は?タグがずれていないか? 3. ECSサービスが新しいタスクを起動 →タスク定義のバージョンは?デプロイ方式は? ポイント ● 設計に立ち返る ● Terraform / CDK / コンソールからタスク定義を調べる方法を把握する ● LocalStackとAWSの環境切り替えを考慮して実装する

Slide 8

Slide 8 text

AWSの環境を触る上で知っておきたいこと ②権限 LocalStackとの違い ● LocalStack:権限設定不要 ● AWS環境:権限がないと動かない ポイント 何が必要かコミュニケーションを密に取る! ● GitHub ActionsがAWSに認証するためのロールなど ● Execution Role ○ ECRからイメージ取得・CloudWatch Logsの出力・SSM/Secretsの参照など ● Task Role ○ アプリのAWS API呼び出し=S3, DynamoDB, SQS 等に使う

Slide 9

Slide 9 text

AWSの環境を触る上で知っておきたいこと ③観測性 LocalStackとの違い ● LocalStack:docker logs ● CICDツール:ワークフローのログ ● ECS:CloudWatch Logs ポイント ● ログの構造化、詳細化(ジョブの実行を待つ→失敗→修正→…の手戻りを減らす) ● メトリクス・トレースも重要

Slide 10

Slide 10 text

まとめ ローカルでの開発からAWS環境へ移行する際に知っておくべきこと 1. CICDの全容→ 設計ドキュメントなどに立ち返る 2. 権限 → 必要なアクセスをアプリ側から提示、コミュニケーションを密に取る 3. 観測性 → ログを仕込んでおく 他にも ● コスト:LocalStack vs ECS ● セキュリティ:Secrets Managerでの機密情報管理 ● ネットワーク:Dockerコンテナ間 vs AWSサービス間・アカウント間

Slide 11

Slide 11 text

Thank you! ↑ Moby Dockという名前らしい