amazon-web-services - 将单个 Codebuild 项目部署到多个 ECS 容器

标签 amazon-web-services amazon-ecs aws-codepipeline aws-codebuild

我成功地使用 codebuild 和 codepipeline 将多个项目的持续部署到 ECS 上,但遇到了一个问题。
在这个项目中,我需要将相同的构建部署到 四个不同的 ECS 容器

我使用 codebuild 和 codepipeline CD 的默认方式如 aws docs 所示 - 我在构建过程结束时创建 imagedefinitions.json 文件。
据我所知,这个文件可以包含 的定义,只有一个 ECS 容器

您必须提供容器的名称:

post_build:
commands:
  - echo Build completed on `date`
  - echo Pushing the Docker images...
  - docker push $REPOSITORY_URI:latest
  - docker push $REPOSITORY_URI:$IMAGE_TAG
  - echo Writing image definitions file...
  - printf '[{"name":"hello-world","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
artifacts:
files: imagedefinitions.json

对于此任务定义:
{
"taskDefinition": {
"family": "hello-world",
"containerDefinitions": [
  {
    "name": "hello-world",
    "image": "012345678910.dkr.ecr.us-west-2.amazonaws.com/hello-world:6a57b99",
    "cpu": 100,
    "portMappings": [
      {
        "protocol": "tcp",
        "containerPort": 80,
        "hostPort": 80
      }
    ],
    "memory": 128,
    "essential": true
  }
]

如果我将不同服务中的所有四个容器的名称更改为相同的名称,它就可以工作。例如那个特定的图像名称。但我不知道这是否是个好主意。

现在我想知道我是否可以在这个项目中使用 codepipeline 到 ECS 或者我应该以不同的方式部署。

最佳答案

codePipeline 中的 CodeBuild 操作当前仅支持一个输出工件。您可以将所有镜像定义文件压缩到一个 zip 文件中,并添加一个 lambda 调用操作以将其拆分为多个工件并在 ECS 部署操作中使用它们。

关于amazon-web-services - 将单个 Codebuild 项目部署到多个 ECS 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52963361/

相关文章:

amazon-web-services - 用于 ECS 计划任务的 AWS CodePipeline?

amazon-web-services - AWS API 网关 + lambda + rds 货币化的最佳方式

javascript - 某些网络上来自 AWS/Apache 的 CSS 和 JS 文件

amazon-web-services - 由于配置错误 : Illegal character in path in Api Gataway,执行失败

amazon-web-services - 无法使用AWS CodePipeline构建和部署Go Lambda-BundleType必须为YAML或JSON

amazon-web-services - AWS cloudformation - 堆栈存在但状态不可更新 : ROLLBACK_COMPLETE

amazon-web-services - aws apigateway lambda 总是返回 502

amazon-web-services - 如何在 CloudFormation YAML 中为 AWS ECS Fargate 容器指定 `logs:CreateLogGroup` 权限

amazon-web-services - 在 ECS 中附加卷 EFS

amazon-web-services - AWS ECS 长时间运行的作业扩展