动态AWS Sam Schedule事件输入参数

时间:2018-09-10 06:25:38

标签: amazon-web-services aws-lambda amazon-cloudformation aws-sam-cli aws-sam

我们正在通过SAM自动运行lambda,使其在Schedule Event上运行。我们使用YAML,但无法确定如何使用!Sub使输入动态化。

如果您阅读sam documentation,则说明Input必须是JSON formatted string

以下代码对我们有用:

Events:
    Event1:
      Type: Schedule
      Properties:
        Schedule: rate(1 minute)
        Input: >-
          {
            "sqsUrl": "https://sqs.12344.url",
            "snsArn": "arn:val"
          }

但是我们需要像这样将动态参数插入Input中:

Events:
    Event1:
      Type: Schedule
      Properties:
        Schedule: rate(1 minute)
        Input: >-
          {
            "sqsUrl": "https://sqs.${AWS::AccountId}.url",
            "snsArn": "arn:val"
          }

我们尝试使用!Sub通过多种方式进行此操作,但是部署始终失败,因为它需要有效的JSON。

使此JSON字符串使用变量的正确方法是什么?

谢谢, 标记

2 个答案:

答案 0 :(得分:0)

因此,您应该使用Input函数包装所有quotes值(在您的情况下,这是json-string,当然应该用一些!Sub包装)。

然后,它看起来像:

Input:
  Fn::Sub: '{"sqsUrl": "https://sqs.${AWS::AccountId}.url","snsArn": "arn:val"}'

答案 1 :(得分:0)

我使用过类似的东西:

!Sub |
    {
      "sqsUrl": "https://sqs.${AWS::AccountId}.url",
      "snsArn": "arn:val"
    }

| (以及 >- 等等)定义 yaml handles the line breaks in the string 的方式。