lulu

【AWS】docker-compose.ymlからAWS ECSのタスク定義(task definition)を作成する方法【ECS CLI】

やること

docker-compose.ymlからAWS ECSのタスク定義(task definition)を作成する方法

ecs-cliのinstall

$ brew install amazon-ecs-cli

~/.aws/credentials にsecret keyなどを記載しておきましょう

docker-compose.ymlとDockerfileを作成

ローカルでも使用できるdocker-compose.ymlを元に、タスク定義を作成できます。

docker-compose.yml

version: '3'
services:
  app:
    build: .
    image: <image url>
    container_name: lulu
    logging:
      driver: awslogs
      options:
        awslogs-group: /ecs/lulu
        awslogs-region: ap-northeast-1
        awslogs-stream-prefix: lulu

Dockerfile

FROM ubuntu
CMD echo 'lulu'

ecs-params.ymlを作成

ECSに必要なパラメータ情報を記載した設定ファイルを作成します。

version: 1
task_definition:
  ecs_network_mode: awsvpc
  task_execution_role: ecsTaskExecutionRole
  task_size:
    cpu_limit: 256
    mem_limit: 512

run_params:
  network_configuration:
    awsvpc_configuration:
      subnets:
        - subnet_id_1
        - subnet_id_2
      security_groups:
        - security_group_1
        - security_group_2
      assign_public_ip: ENABLED

ecs-cliを使って、タスク定義(task definition)を作成

$ ecs-cli compose -p test-lulu -c test-cluster -f ./docker-compose.yml --ecs-params ecs-params.yml create --launch-type FARGATE

各optionについて

option 初期値 使いみち
-p 現在のディレクトリ名 プロジェクト名(task名になる)
-f ./docker-compose.yml Docker Composeファイルを指定
--ecs-params ./ecs-params.yml ecsパラメータを指定
-c クラスター名を指定する
--launch-type 起動タイプを設定