【问题标题】:How can my CodeBuild in a CodePipeline resolve resources created by the previous CloudFormation step?CodePipeline 中的 CodeBuild 如何解析上一个 CloudFormation 步骤创建的资源?
【发布时间】:2019-01-07 11:53:05
【问题描述】:
我的 CodePipeline 设置如下:
- 来源:Github
- CodeBuild:打包 SAM 应用程序(CloudFormation 资源,如 DB)
- 部署 CloudFormation:是否创建和执行变更集
- CodeBuild:我想为 CloudFormation 创建的数据库运行数据库迁移...但我如何获得它... CodeBuild 不支持来自我的管道的参数
也许我创建管道错误?
【问题讨论】:
标签:
amazon-web-services
amazon-cloudformation
aws-codepipeline
【解决方案1】:
CloudFormation 操作可以输出堆栈参数,但目前 CodePipeline 中的 CodeBuild 操作不能同时接受代码工件和具有 CloudFormation 输出的工件。
现在我会从您的构建脚本中的 CLI 调用 aws cloudformation describe-stacks,以从您的 CloudFormation 堆栈中检索数据库信息。
【解决方案2】:
也许在第 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'
)