Имя контейнера CodeDeploy для ECS не найдено, но конфигурация кажется правильной - PullRequest
0 голосов
/ 18 февраля 2020

Я использую кодовый конвейер AWS для развертывания встроенного образа docker в ecs (fargate).

Как вы можете видеть ниже, файл изображения с определениями. json, созданный при сборке, указывает на контейнер docker с именем staging-core-api.

Вы также заметите, что определение задачи для службы, связанной с этим развертыванием, содержит изображение docker с тем же именем.

Я трижды проверил, указан ли URI в определениях изображений. json правильно.

Из того, что я понимаю, это все, что должно потребоваться для того, чтобы ecs мог получить изображение docker. Однако я продолжаю получать следующую ошибку после сбоя развертывания:

Invalid action configuration
The AWS ECS container staging-core-api does not exist

Ситуация кажется достаточно простой, и мне совершенно непонятно, как поступить при отладке проблемы. Любое понимание будет очень признательным.

Я приложил соответствующие файлы, включая buildspe c для сборки ниже:

определения изображений. json

[{"name":"staging-core-api","imageUri":"263512868235.dkr.ecr.us-west-2.amazonaws.com/staging-core-api:369a521"}]

buildspe c .yml

version: 0.2
phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws --version
      - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG
      - echo Writing image definitions file...
      - printf '[{"name":"%s","imageUri":"%s"}]' $CONTAINER_NAME $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
      - cat imagedefinitions.json
artifacts:
    files: imagedefinitions.json

определение задачи. json

{
  "ipcMode": null,
  "executionRoleArn": "arn:aws:iam::263512868235:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "dnsSearchDomains": null,
      "logConfiguration": {
        "logDriver": "awslogs",
        "secretOptions": null,
        "options": {
          "awslogs-group": "/ecs/core-api",
          "awslogs-region": "us-west-2",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "entryPoint": null,
      "portMappings": [
        {
          "hostPort": 8080,
          "protocol": "tcp",
          "containerPort": 8080
        }
      ],
      "command": null,
      "linuxParameters": null,
      "cpu": 0,
      "environment": [],
      "resourceRequirements": null,
      "ulimits": null,
      "dnsServers": null,
      "mountPoints": [],
      "workingDirectory": null,
      "secrets": null,
      "dockerSecurityOptions": null,
      "memory": null,
      "memoryReservation": null,
      "volumesFrom": [],
      "stopTimeout": null,
      "image": "263512868235.dkr.ecr.us-west-2.amazonaws.com/staging-core-api",
      "startTimeout": null,
      "firelensConfiguration": null,
      "dependsOn": null,
      "disableNetworking": null,
      "interactive": null,
      "healthCheck": null,
      "essential": true,
      "links": null,
      "hostname": null,
      "extraHosts": null,
      "pseudoTerminal": null,
      "user": null,
      "readonlyRootFilesystem": null,
      "dockerLabels": null,
      "systemControls": null,
      "privileged": null,
      "name": "staging-core-api"
    }
  ],
  "placementConstraints": [],
  "memory": "512",
  "taskRoleArn": null,
  "compatibilities": [
    "EC2",
    "FARGATE"
  ],
  "taskDefinitionArn": "arn:aws:ecs:us-west-2:263512868235:task-definition/core-api:2",
  "family": "core-api",
  "requiresAttributes": [
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.execution-role-awslogs"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.ecr-auth"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.execution-role-ecr-pull"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.task-eni"
    }
  ],
  "pidMode": null,
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "networkMode": "awsvpc",
  "cpu": "256",
  "revision": 2,
  "status": "ACTIVE",
  "inferenceAccelerators": null,
  "proxyConfiguration": null,
  "volumes": []
}

1 Ответ

1 голос
/ 18 февраля 2020

Оказывается, что в конфигурации службы ecs использовалось старое определение задачи вместо последнего. Если вы чувствуете, что все выглядит так, как будто оно настроено правильно, и вы получаете эту проверку сообщения об ошибке, чтобы убедиться, что ваша служба использует обновленное определение задачи. Помните, что когда вы создаете новые определения задач, они не начинают автоматически их использовать или спрашиваете, хотите ли вы.

...