【问题标题】:CodeDeploy to ECS container name not found, but configuration seems correct未找到 CodeDeploy 到 ECS 容器名称,但配置似乎正确
【发布时间】:2020-02-18 14:48:27
【问题描述】:

我正在使用 AWS 代码管道将构建的 docker 映像部署到 ecs (fargate)。

如下所示,构建创建的 imagedefinitions.json 文件指向名为 staging-core-api 的 docker 容器。

您还将在下面注意到,链接到此部署的服务的任务定义包含同名的 docker 映像。

我已经三次检查了 imagedefinitions.json 中指定的 URI 是否正确。

据我了解,这就是 ecs 检索 docker 映像所需的全部内容。但是部署失败后我不断收到以下错误:

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

情况似乎很简单,我完全不清楚如何继续调试问题。任何见解将不胜感激。

我附上了相关文件,包括以下构建的构建规范:

imagedefinitions.json

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

buildspec.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

taskdefinition.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": []
}

【问题讨论】:

    标签: amazon-web-services aws-code-deploy aws-codepipeline aws-fargate


    【解决方案1】:

    原来 ecs 服务配置使用的是旧的任务定义,而不是最新的。如果您觉得一切看起来都配置正确并且您收到此错误消息,请检查以确保您的服务正在使用更新的任务定义。请记住,当您创建新任务定义时,它不会自动开始使用它们,或者询问您是否愿意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2022-01-10
      • 2019-08-05
      • 2021-07-07
      相关资源
      最近更新 更多