我在 CodePipeline 中的 CodeBuild 如何解析由之前的 CloudFormation 步骤创建的资源?

How can my CodeBuild in a CodePipeline resolve resources created by the previous CloudFormation step?

我已将我的 CodePipeline 设置为:

  1. 来源:Github
  2. CodeBuild:打包 SAM 应用程序(CloudFormation 资源,如 DB)
  3. 部署 CloudFormation:是否创建和执行变更集
  4. CodeBuild:我想 运行 为 CloudFormation 创建的数据库进行数据库迁移……但我该如何获取它……CodeBuild 不支持来自我的管道的参数

也许我创建的管道有误?

CloudFormation 操作可以输出堆栈参数,但目前 CodePipeline 中的 CodeBuild 操作不能同时接受代码工件和具有 CloudFormation 输出的工件。

现在我将从构建脚本中的 CLI 调用 aws cloudformation describe-stacks 以从 CloudFormation 堆栈中检索数据库信息。

也许在第 3 步中。您以这种方式设置您的 cloudformation:

1- 创建数据库...导出为数据库名称的输出

Outputs:
    DataBaseName:
        Description: "Name of the Database"
        Value: !Ref DataBaseName

2- 在代码构建中使用 Boto3 并使用 Describe Stacks 并获取输出(数据库的名称和有关它的其他信息),现在您可以利用 Python您的代码构建并使用 Boto3 开始迁移。

response = client.describe_stacks(
    StackName='string',
    NextToken='string'
)