前提条件
・ECRにDockerイメージをPushしている。 maya313.hatenablog.com
1. タスク定義の作成
ECSで以下の「task.json」ファイルを利用してタスク定義を作成します。
※以下の変数は右の値に変更してください。
・ecr_url:ECRのDockerイメージURL
・aws_account_id:AWSアカウントID
task.json
{ "family": "sample-task-definition", "containerDefinitions": [ { "name": "sample-task-definition", "image": "ecr_url", "cpu": 0, "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ], "essential": true, "environment": [], "environmentFiles": [], "mountPoints": [], "volumesFrom": [], "ulimits": [], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/sample-task-definition", "awslogs-region": "ap-northeast-1", "awslogs-stream-prefix": "ecs" }, "secretOptions": [] } } ], "taskRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole", "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole", "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072", "runtimePlatform": { "cpuArchitecture": "X86_64", "operatingSystemFamily": "LINUX" } }
$ aws ecs register-task-definition --cli-input-json file://home/maya313/task.json
2. クラスターの作成
ECSでクラスターを作成します。
$ aws ecs create-cluster \ --cluster-name sample-cluster \ --capacity-providers "FARGATE" "FARGATE_SPOT" \ --region ap-northeast-1
3. サービスの作成
ECSのクラスターの中にサービスを作成します。
※以下の変数は右の値に変更してください。
・subnet_id:サブネットID
・security_group_id:セキュリティグループID
$ aws ecs create-service \ --cluster sample-cluster \ --service-name sample-service \ --task-definition sample-task-definition \ --desired-count 1 \ --launch-type FARGATE \ --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \ --network-configuration "awsvpcConfiguration={subnets=[subnet_id,subnet_id],securityGroups=[security_group_id],assignPublicIp=ENABLED}" \ --enable-ecs-managed-tags