前提条件
・AWSアカウントをセットアップしてある
・タスク実行IAMロールを作成してある (ECSコンテナエージェントはユーザに変わってAWS APIを呼び出すのでIAMポリシーとロールが必要
・Amazon ECS CLIのインストールしてある
・AWS CLIをインストールして設定してある
クラスター設定
ECS CLIで使用するクラスター名、リージョン、リソース作成プレフィックスを定義してクラスター設定を作成します。
ecs-cli configure --cluster クラスター名 --default-launch-type FARGATE --config-name チュートリアル --region ap-northeast-1
クラスターとセキュリティを作成
1. ecs-cli up コマンドでECSクラスタを作成
このコマンドの出力に作成されたVPCとサブネットIDは後で使うのでメモっておく。
--vpc VPC_ID
で既存のVPCを指定することができます。
その場合、そのVPC内の既存サブネットのリストを--subnets
で指定する必要があります。
ecs-cli up --capability-iam --cluster-config クラスター名
2. AWS CLIを使用してVPCのデフォルトのセキュリティグループIDを取得する
前の出力のVPC IDを使用する
このコマンドの出力には次のステップで使用するセキュリティグループIDが含まれる
aws ec2 describe-security-groups --filters Name=vpc-id,Values=VPC_ID --region ap-northeast-1
3. AWS CLIを使ってセキュリティグループルールを追加し、ポート80でインバウンドアクセスを許可する
aws ec2 authorize-security-group-ingress --group-id SECURITY_GROUP_ID --protocol tcp --port 80 --cidr 0.0.0.0/0 --region ap-northeast-1
構成ファイルを作る
デプロイ用のdocker-compose.yml
を作成
ここでは例としてWEBアプリケーションを作成するdocker-compose.yml
を作成します。
ECS CLIではバージョン1, 2, 3がサポートされています。ここでは3を使用する。
version: '3'
services:
web:
image: イメージ
ports:
- '80:80'
logging:
driver: awslogs
options:
awslogs-group: test
awslogs-region: ap-northeast-1
awslogs-stream-prefix: web
ECS固有のパラメータをecs-params.yml
を作成する
さっきメモったサブネット、セキュリティグループIDを書き込む
version: 1
task_definition:
task_execution_role: ecsTaskExecutionRole
ecs_network_mode: awsvpc
task_size:
mem_limit: 0.5GB
cpu_limit: 256
run_params:
network_configuration:
awsvpc_configuration:
subnets:
- "subnet ID 1"
- "subnet ID 2"
security_groups:
- "security group ID"
assign_public_ip: ENABLED
クラスターに設定ファイルをデプロイする
ecs-cli compose service up
でクラスターにデプロイする。デフォルトは現在ディレクトリで
docker-compose.yml
とecs-params.yml
を検索します。--file
オプションを使用して別構成ファイルを指定することや、--ecs-params
オプションで別のECS Paramsファイルを指定することもできます。
ecs-cli compose --project-name タスク名 service up --create-log-groups ロググループ名 --cluster-config クラスター名