AWS Copilot
コンテナアプリケーションを ECS / Fargate に簡単にデプロイするための AWS CLI ツール
AWSコンテナ
AWS Copilot とは
AWS Copilot は、コンテナアプリケーションを ECS / Fargate にデプロイするための CLI ツールである。VPC、ALB、ECS クラスター、ECR リポジトリ、CI/CD パイプラインを自動的に構築する。SAM が Lambda 向けであるように、Copilot は ECS 向けのデプロイツールだ。
SAM との比較
| 観点 | AWS Copilot | AWS SAM |
|---|---|---|
| 対象 | ECS / Fargate | Lambda |
| 設定ファイル | manifest.yml |
template.yaml |
| インフラ | 自動構築 (VPC, ALB, ECS) | 自動構築 (API Gateway, Lambda) |
| コンテナ | 必須 | オプション |
| 用途 | 常時稼働サービス | イベント駆動関数 |
基本的なワークフロー
# アプリケーションの初期化
copilot app init myapp
# サービスの作成 (Dockerfile から自動検出)
copilot svc init --name api --svc-type "Load Balanced Web Service"
# 環境の作成 (VPC, ECS クラスター, ALB を自動構築)
copilot env init --name dev
# デプロイ
copilot svc deploy --name api --env dev
manifest.yml
name: api
type: Load Balanced Web Service
image:
build: Dockerfile
port: 3000
http:
path: '/'
healthcheck: '/healthz'
cpu: 256
memory: 512
count:
range: 1-10
cpu_percentage: 70
variables:
NODE_ENV: production
secrets:
DATABASE_URL: /copilot/myapp/dev/secrets/db-url
サービスタイプ
| タイプ | 説明 | 用途 |
|---|---|---|
| Load Balanced Web Service | ALB + Fargate | Web API |
| Backend Service | Fargate (ALB なし) | 内部サービス |
| Worker Service | SQS + Fargate | 非同期処理 |
| Request-Driven Web Service | App Runner | 低トラフィック API |
| Static Site | S3 + CloudFront | 静的サイト |
CI/CD パイプライン
copilot pipeline init
copilot pipeline deploy
CodePipeline + CodeBuild のパイプラインが自動構築され、Git プッシュで自動デプロイされる。
Copilot を使うべきケース
コンテナアプリを ECS にデプロイしたい場合や、VPC・ALB・ECS クラスターの構築を自動化したい小〜中規模チームに適する。一方、Lambda ベースのサーバーレス構成や、細かいインフラ制御が必要な場合、既存の ECS クラスターがある場合には向かない。
AWS Copilot の背景や設計思想は関連書籍に詳しい。