AWS Copilot
コンテナアプリケーションを ECS / Fargate に簡単にデプロイするための AWS CLI ツール
AWS Copilot とは
AWS Copilot は、コンテナアプリケーションを ECS / Fargate にデプロイするための CLI ツールである。VPC、ALB、ECS クラスター、ECR リポジトリ、CI/CD パイプラインを自動的に構築する。SAM が Lambda 向けであるように、Copilot は ECS 向けのデプロイツールだ。
SAM との比較
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
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 パイプライン
CI/CD パイプラインの例を示す。
copilot pipeline init
copilot pipeline deploy
CodePipeline + CodeBuild のパイプラインが自動構築され、Git プッシュで自動デプロイされる。
Copilot を使うべきケース
コンテナアプリを ECS にデプロイしたい場合や、VPC・ALB・ECS クラスターの構築を自動化したい小〜中規模チームに適する。一方、Lambda ベースのサーバーレス構成や、細かいインフラ制御が必要な場合、既存の ECS クラスターがある場合には向かない。
AWS Copilot の背景や設計思想は関連書籍に詳しい。
この記事は役に立ちましたか?
関連用語
コンテナ
アプリケーションとその依存関係をパッケージ化し、環境に依存しない一貫した実行環境を提供する仮想化技術
ECR
AWS のマネージドコンテナレジストリで、Docker イメージを安全に保存・管理・配信する
Dockerfile
Docker イメージのビルド手順を記述するテキストファイルで、アプリケーションの実行環境を再現可能にする
ECS
AWS のマネージドコンテナオーケストレーションサービスで、Docker コンテナを実行・管理する
CodePipeline
AWS のマネージド CI/CD サービスで、ソースからデプロイまでのパイプラインを自動化する
CI/CD
コードの変更を自動的にビルド・テスト・デプロイするパイプライン