我正在尝试设置测试管道。第一步是“源”,从 CodeCommit 存储库获取 CF 模板。下一阶段是在 CloudFormation 中执行模板的地方 - 构建 ELB、AS 组和启动配置(用户数据 - 安装 HTTPD、部署自定义 index.html 并启动 HTTPD)。输出部分将显示 ELB 的 DNS 名称("Value": {"Fn::GetAtt": [ "elbTest", "DNSName"]})
现在我需要在第三阶段读取这个 ELB DNS 名称,这将是一个 Lambda 函数来验证 URL 运行状况检查。我该怎么做?我不想在“用户参数”字段中对 DNS 名称进行硬编码。我调用的 Lambda 函数有办法获取该值吗?
最佳答案
使用 CloudFormation 创建/更新操作的输出工件作为 Lambda 函数的输入工件。在 Lambda 函数中,它将作为 s3 上 zip 文件的位置出现在 inputArtifacts
数组中的事件数据中。该 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
特别是第一个链接中的“示例 JSON 事件”和第二个链接中的“OutputFileName”。
关于aws-lambda - 代码管道: Read data from previous step,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50159124/