3

我们正在通过 SAM 自动化 lambda 以在Schedule Event. 我们使用 YAML,但我们无法弄清楚如何使用!Sub来使 Input 成为动态的。

如果您阅读sam 文档,它会说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 字符串使用变量的正确方法是什么?

谢谢,马克

4

2 回答 2

1

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

然后,它看起来像:

Input:
  Fn::Sub: '{"sqsUrl": "https://sqs.${AWS::AccountId}.url","snsArn": "arn:val"}'
于 2018-09-11T10:01:22.453 回答
0

我用过类似的东西:

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

的| (以及 >- 等)定义yaml 处理字符串中的换行符的方式。

于 2021-06-14T13:04:47.063 回答