我们正在通过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字符串使用变量的正确方法是什么?
谢谢, 标记
答案 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 的方式。