概要

ECS CLI を使って Docker ボリュームを使用したコンテナの立ち上げ方法。

クラスターの作成

まずはプロファイルを設定してクラスターを作成します。
AWS 公式のチュートリアルでもおなじみ。

ecs-cli configure profile --profile-name ecs-example-profile --access-key $AWS_ACCESS_KEY_ID --secret-key $AWS_SECRET_ACCESS_KEY
ecs-cli configure --cluster ecs-example --default-launch-type EC2 --region ap-northeast-1 --config-name ecs-example

そして次のコマンドを実行するとクラスターとなる EC2 が立ち上がります。
1 行目では AWS CLI を使ってキーペアを生成しています。

aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem
ecs-cli up --keypair MyKeyPair --capability-iam --size 1 --instance-type t2.medium --cluster-config ecs-example --ecs-profile ecs-example-profile

設定ファイルの作成

次に Docker コンテナを構成する設定ファイルを作成します。

# docker-compose.yml
version: "3"
services:
  database:
    image: postgres
    ports:
      - "8086:8086"
    volumes:
      - database:/var/lib/postgresql/data
    logging:
      driver: awslogs
      options:
        awslogs-group: ecs-exmaple
        awslogs-region: ap-northeast-1
        awslogs-stream-prefix: database

volumes:
  database:

Docker ボリュームを ECS で利用するには別に ECS 用の設定ファイルに追記する必要があります。
以下の内容で ecs-params.yml というファイルを作成してください。

# ecs-params.yml
version: 1
task_definition:
  services:
    database:
      cpu_shares: 100
      mem_limit: 524288000
  docker_volumes:
    - name: database
      scope: shared
      autoprovision: true
      driver: local
      labels:
        database: database_name

構成ファイルのデプロイ

設定ファイルを作成したら、compose up コマンドを使ってデプロイするだけです。

ecs-cli compose up --create-log-groups --cluster-config ecs-example --ecs-profile ecs-example-profile

コンテナを停止するには以下のコマンドを実行します。

ecs-cli compose stop --cluster-config ecs-example --ecs-profile ecs-example-profile

最後に、今回作成したクラスターは以下のコマンドでクリーンアップできます。

ecs-cli down --force --cluster-config ecs-example --ecs-profile ecs-example-profile