0

我的 AWS devops 概念仍然很模糊,我需要一些帮助。这就是我想做的事情 - 我有一个 CloudFormation 嵌套堆栈,其中包含一些 lambda、eventbridge、api 网关等。我将代码推送到 CodeCommit 并设置了一个具有跨账户角色等的 ci/cd 管道。我有两个帐户设置 - 开发和质量保证。代码、管道和 CodeCommit 都在 dev 帐户中设置,每当更改推送到 dev 中的 CodeCommit 时,管道将运行以将更改推送到 QA。我已按照此处提到的步骤操作: https ://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create-cross-account.html#pipelines-create-cross-account-create

管道正在工作。但是,部署失败,因为堆栈无法创建。这可能是由于访问设置不正确。这是我的问题,这是我对概念不太清楚的地方:

  1. 我正在将 lambdas 的所有代码(在 zip 文件中)和嵌套堆栈模板上传到 S3 存储桶中,并将相同的代码推送到 CodeCommit。是否需要将此代码放在两个地方?如果我只选择 CodeCommit – 如何重写以下当前指向 S3 存储桶的代码?
 CreateOrder:
    Type: AWS::Serverless::Function
    Properties:
        CodeUri: 
          Bucket: my-code-bucket
          Key: lambdas/create-order/index.js.zip
        FunctionName: createOrder
        Handler: index.handler
        Runtime: nodejs14.x
        Role: !Ref LambdaExecutionRole

我的猜测是堆栈无法在 QA 中创建,因为它正在 QA 中寻找不存在的“my-code-bucket”。这是一个正确的猜测吗?

  1. 管道能否在 QA 环境中创建新堆栈,或者我是否需要第一次手动创建堆栈,然后在后续部署中执行变更集?处理此问题的最佳方法是什么?谢谢。
4

0 回答 0