【问题标题】:Codepipeline : Read data from previous stepCodepipeline:从上一步读取数据
【发布时间】:2018-10-14 00:12:20
【问题描述】:

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

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

【问题讨论】:

    标签: aws-lambda amazon-cloudformation aws-codepipeline aws-codecommit


    【解决方案1】:

    使用 CloudFormation 创建/更新操作的输出工件作为 Lambda 函数的输入工件。在 Lambda 函数中,它将作为带有 zip 文件的 s3 上的位置出现在 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

    【讨论】:

    • 是的.. 这正是我所做的。我能够在 lambda 中获取 Bucket 和 KeyName。想要进一步处理,即得到文件,然后输出。谢谢。我会尝试并更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    相关资源
    最近更新 更多