【问题标题】:AWS Lambda CodeDeploy using ECR image as a sourceAWS Lambda CodeDeploy 使用 ECR 图像作为源
【发布时间】:2021-10-30 14:58:52
【问题描述】:

我正在使用 CodePipeline 和 CodeDeploy 来自动化部署过程。 代码采购和 docker 镜像构建发生在 AWS 之外。我在 AWS 之外有一个 git 管道,它在代码推送时构建/打包 docker 映像并将 docker 映像推送到 ECR。

将 docker 映像推送到 AWS ECR 后,立即启动 AWS 管道并开始 ECR 源阶段。此阶段的输出工件不能直接传递到部署阶段。它需要一个 AppSpec 文件。

{
  "version": "0.0",
  "Resources": [
    {
      "awscodestar-gateway-api-lambda-HelloWorld": {
        "Type": "AWS::Lambda::Function",
        "Properties": {
          "Name": "awscodestar-gateway-api-lambda-HelloWorld",
          "Alias": "live",
          "CurrentVersion": "3",
          "TargetVersion": "4"
        }
      }
    }
  ]
}

我不知道如何将 Docker 映像 URL 和 AppSpec 文件传递​​到部署阶段,以便将映像部署到 lambda。

为 lambda 使用 CodeDeploy 阶段的原因是它支持蓝/绿部署和版本控制。

我找不到任何与 ECR 作为来源的 lambda 部署相关的文档。

如果有人有任何解决方法,请告诉我。

【问题讨论】:

    标签: docker aws-lambda deployment aws-codepipeline aws-code-deploy


    【解决方案1】:

    使用 ECR 作为指定 repo 和标签的源:

    Name: Source
    Actions:
      - InputArtifacts: []
        ActionTypeId:
          Version: '1'
          Owner: AWS
          Category: Source
          Provider: ECR
        OutputArtifacts:
          - Name: SourceArtifact
        RunOrder: 1
        Configuration:
          ImageTag: latest
          RepositoryName: my-image-repo
    
        Name: ImageSource
    

    所以你已经知道 docker 镜像 URL。

    一个管道可以有多个源阶段 (https://docs.aws.amazon.com/codebuild/latest/userguide/sample-pipeline-multi-input-output.html),因此大概一个可能是 ECR,另一个可能是带有 appspec 的 repo 或存储桶。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-31
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2020-11-23
      • 2022-08-12
      • 2021-07-27
      相关资源
      最近更新 更多