ECSがざっくりわかる

ECSとは?

  • Dockerコンテナ実行環境を提供
  • これまではEC2上にDockerを載せる必要があった(これは前の会社でやってた)
  • EC2インスタンス上で実行されるコンテナのことを「Task」、EC2インスタンスのことを「Cluster」と呼ぶ

構成要素

タスク定義(ここめっちゃ詰まる)

  • コンテナの設計書(コンテナイメージや実行ロールを設定する)
  • それをregister-task-definitionで登録することが可能
{
    "family": "{{TASK_NAME}}-task",
    "containerDefinitions": [                                 // コンテナの設定(docker-compose.yml的なイメージ)
        {
            "name": "{{TASK_NAME}}",                   // コンテナ名
            "image": "dkr.ecr.ap-northeast-1.amazonaws.com/", // コンテナイメージ
            "cpu": 0,
            "essential": true,
            "environment": [                                  // 環境変数
                {"name": "MYSQL_HOST", "value": "{{MYSQL_HOST}}"},
            ],
            "logConfiguration": {                             // ログ設定
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/{{TASK_NAME}}-task",
                }
            }
        }
    ],
    "taskRoleArn": "arn:aws:iam::role", // IAMロール
    "executionRoleArn": "arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/ecsTaskExecutionRole",
    "networkMode": "awsvpc",
    "cpu": "{{ECS_CPU}}",
    "memory": "{{ECS_TASK_MEMORY}}"
}

ECRにイメージを登録するまでの流れ(AWS CLIを想定)

ECR = AWSが提供するコンテナレジストリ(コンテナイメージを保存および配布するための中心的な場所)

# リポジトリの作成
aws ecr create-repository --repository-name ${REPOSITORY_NAME} --region ${AWS_REGION}

# リポジトリの詳細確認
aws ecr describe-repositories --region ${AWS_REGION}

# レジストリに対して Docker クライアントを認証
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin xxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com

※ $(aws ecr get-login --region ${AWS_REGION} --no-include-email)だと一発でdocker loginまでやってくれる

# Dockerfileをビルドしてイメージを作成
docker build -t ${REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${REPOSITORY_NAME}:v1.0 .

# イメージをECRにPUSH
docker push ${REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${REPOSITORY_NAME}:v1.0

# イメージの確認
aws ecr list-images --repository-name ${REPOSITORY_NAME} --region ${AWS_REGION}

AWS CLIを使ってECRにDockerイメージを登録する | DevelopersIO

参考