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 の背景や設計思想は関連書籍に詳しい。

関連用語