Skip to content

Latest commit

 

History

History
108 lines (93 loc) · 4.92 KB

copilot.md

File metadata and controls

108 lines (93 loc) · 4.92 KB

ECS Copilot CLI まとめ

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をとおしておくこと

ECSデプロイ/削除

対話形式で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)が使用されている

Manifestファイル

CloudFormationテンプレートに変換されるECSデプロイ用設定ファイル
ECSの設定にフォーカスされ、VPCやIAMRoleの設定をしなくて良いことがメリット
https://aws.github.io/copilot-cli/ja/docs/manifest/lb-web-service/

他のAWSサービスの追加

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/

コマンド

https://aws.github.io/copilot-cli/ja/docs/commands/version/