Dockerfileだけで、オートスケーリング/ロードバランサーを使用したコンテナ環境を1つのコマンドでデプロイ可能!!
https://aws.github.io/copilot-cli/ja/
https://aws.github.io/copilot-cli/ja/docs/getting-started/install/
Windowsの場合は、「C:\Program Files」にインストールされるので、環境変数PATHをとおしておくこと
対話形式でDockerfileを指定してECSをデプロイする
CloudFormationでリソースが作成されるため、作成されたリソースはCloudFormationで確認可能
※注意
: Dockerfileなどのパスを指定する際は、「manifest.yaml」空の相対パスではなく、「infra-ecs-copilot-cli」などのトップディレクトリからの相対パスで指定すること!!
# ★★★Dockerは起動しておくこと★★★
# ★★★Service名は、CloudMap(Service Connect)に登録されて、サービス名でコンテナ間通信が可能★★★
# .envとbackendのcorsのoriginを変更すること
# ★★★ECS Copilotでは、1つのALBに複数のECS Serviceがデプロイされるため、パスを意識する必要がある
# パスの書き換えはできないため、backendのECS Serviceのルートパスは、ECS Service名と一致させるなどにして、frontendの/と分けておくこと
# ALBは80や443でアクセスするとをターゲットのECSに3000や3005でルーティングしてくれる
copilot version
# 最初にApplicationを作成しつつ、1つserviceを作成
copilot init
# 2つ目以降のserviceを作成
copilot svc init
copilot svc deploy
copilot app delete
・Application
全体で1つ命名する
・Environment
Application内に複数のProd/Dev環境を作成可能
・Service
- インターネットからアクセス可能(Public Subnet)
- Load Balanced Web Service
ALB + ECS(Fargate)をデプロイ
- Request Driven Web Service
App Runnerをデプロイ
- Static Site
CloudFront + S3をデプロイ
- インターネットからアクセス不可能(Private Subnet)
- Backend Service
他のECS(Fargate)からアクセス可能
Service Discoveryを使用して通信
- Worker Service
SQSをデプロイし、他のECSと非同期通信(Pub/Sub)を行う
https://aws.amazon.com/jp/blogs/news/implementing-a-pub-sub-architecture-with-aws-copilot/
https://aws.github.io/copilot-cli/ja/docs/developing/publish-subscribe/
・Job
Scheduleして定期的(一時的)にECS(Fargate)をデプロイする
EventBridge(Cron)が使用されている
・Pipeline
GitHubへのPushをトリガーにして、ECS(Fargate)をデプロイする
CodePipeline(CodeConnections)が使用されている
CloudFormationテンプレートに変換されるECSデプロイ用設定ファイル
ECSの設定にフォーカスされ、VPCやIAMRoleの設定をしなくて良いことがメリット
https://aws.github.io/copilot-cli/ja/docs/manifest/lb-web-service/
ECSが追加したAWSリソースにアクセスするためのIAMPolicy(権限)は、自動的にECSのIAMRoleに付与されるため設定不要
・EFS、S3、DynamoDB、Aurora Serverless
「copilot storage init」で追加可能
https://aws.github.io/copilot-cli/ja/docs/developing/storage/
・その他のAWSサービス1
Service/JobレベルでのAddon
Prod/DevなどのEnvironmentごとにそれぞれ作成される
基本的にこっちを使用
1.「copilot/workload/addons/」ディレクトリ以下にCloudFormationテンプレートを作成
2.「copilot [svc/job] deploy」で追加可能
https://aws.github.io/copilot-cli/ja/docs/developing/addons/workload/
・その他のAWSサービス2
EnvironmentレベルでのAddon
1.「copilot/environments/addons」ディレクトリ以下にCloudFormationテンプレートを作成
2.「copilot env deploy」で追加可能
・CDKの利用
https://aws.github.io/copilot-cli/ja/docs/developing/overrides/cdk/
・X-Ray
https://aws.github.io/copilot-cli/ja/docs/developing/observability/
・Secrets Manager
https://aws.github.io/copilot-cli/ja/docs/developing/secrets/
・Service Connect
現在はデフォルト?
https://aws.github.io/copilot-cli/ja/docs/developing/svc-to-svc-communication/
・Sidecar Container
https://aws.github.io/copilot-cli/ja/docs/developing/sidecars/