首页 > 解决方案 > Codepipeline:从上一步读取数据

问题描述

我正在尝试设置测试管道。第一步是“Source”,从 CodeCommit 存储库获取 CF 模板。下一阶段是在 CloudFormation 中执行模板的地方 - 构建 ELB、AS 组和启动配置(用户数据 - 安装 HTTPD,部署自定义 index.html 并启动 HTTPD)。Outputs 部分将显示 ELB 的 DNS 名称“Value”:{“Fn::GetAtt”:[“elbTest”,“DNSName”]}

现在我需要在第 3 阶段读取这个 ELB DNS 名称,这将是一个 Lambda 函数来验证 URL 健康检查。我该怎么做?我不想在用户参数字段中硬编码 DNS 名称。有没有办法我调用的 Lambda 函数可以获得这个值?

标签: aws-lambdaamazon-cloudformationaws-codepipelineaws-codecommit

解决方案


使用 CloudFormation 创建/更新操作的输出工件作为 Lambda 函数的输入工件。在 Lambda 函数中,它将inputArtifacts作为 zip 文件在 s3 上的位置出现在数组中的事件数据中。该 zip 文件将包含带有 Stack 输出的 JSON 文件(其文件名可以在 CloudFormation 部署操作中指定)。

作为参考,您可以在这里查看:

https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline -action-reference.html

OutputFileName特别是第一个链接和第二个链接中的“示例 JSON 事件” 。


推荐阅读