【问题标题】:AWS: passing parameters to Lambda from code deploy triggersAWS:将参数从代码部署触发器传递给 Lambda
【发布时间】:2018-11-08 22:29:16
【问题描述】:

我有 lambda 函数,它通过传递自动缩放组名称来创建新的启动配置。它有效并且 我创建了代码部署并附加了一个触发器以在部署成功时执行 Lambda 函数。但我得到这个错误

'targetASG':KeyError Traceback(最近一次调用最后一次):文件 “/var/task/lambda_function.py”,第 12 行,在 lambda_handler ASG = asObj.describe_auto_scaling_groups(AutoScalingGroupNames=[event['targetASG']]) KeyError: 'targetASG'

targetASG 是我的参数,但我没有看到任何可以定义它的地方(触发器、SNS)。如何从代码部署中传递此参数?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-code-deploy


    【解决方案1】:

    不幸的是,今天 CodeDeploy 不支持客户在调用挂钩函数时传递其他元数据/参数的方式。

    作为一种解决方法,在这种情况下,您必须在挂钩函数中实现逻辑以提取目标 ASG 名称。

    【讨论】:

      【解决方案2】:

      您可以为您的 SNS 和 SNS page 定义一个 Lambda 端点。

      1. 登录 AWS 管理控制台并通过 https://console.aws.amazon.com/sns/v2/home 打开 Amazon SNS 控制台。

      2. 在左侧导航窗格中,单击主题,然后单击要订阅 Lambda 终端节点的主题。

      3. 单击操作,然后单击订阅主题。

      4. 在协议下拉框中,选择 AWS Lambda。

      5. 在 Endpoint 下拉框中,选择 Lambda 函数的 ARN。

      6. 在“版本或别名”下拉框中,选择要使用的可用版本或别名。您还可以选择 $LATEST 来指定 Lambda 函数的最新版本。如果不想指定版本或别名,也可以选择默认值,其功能与 $LATEST 相同。有关更多信息,请参阅 AWS Lambda 函数版本控制和别名。

      7. 点击创建订阅。

      【讨论】:

      • 好的,所以我已经像上面一样创建了 SNS,给定别名默认值并创建了包含此 {"targetASG":"ASG"} 的测试,但我没有在任何地方定义上述参数,所以我的 lambda 函数不知道它当我从代码部署触发 SNS 时。有什么解决办法吗?
      猜你喜欢
      • 2017-12-30
      • 2020-10-22
      • 2019-07-05
      • 1970-01-01
      • 2020-11-06
      • 2022-11-11
      • 2016-04-10
      • 2020-11-07
      • 1970-01-01
      相关资源
      最近更新 更多