我正在尝试通过AWS CloudFormation模板向文件中添加多行来向AWS lambda serverless-output.yaml文件添加与部署相关的变量。
我有以下sed命令:
sed -ie '/^ Properties:/a\ Tags:' ./serverless-output.yaml
当我在amazon linux的命令行运行时,它会按预期运行并在属性:行
下正确缩进标签:行EC2StartStop:
Properties:
Tags:
当我将该行放入cloudformation模板时,我收到格式错误:
"sed -ie '/^ Properties:/a\ Tags:' ./serverless-output.yaml",
Error
Template validation error: Template format error: JSON not well-formed.
(line 200, column 36)
要摆脱错误,我必须在' / a'之后删除反斜杠:
"sed -ie '/^ Properties:/a Tags:' ./serverless-output.yaml"
但是然后Tags:行没有缩进,导致.yaml文件中出现语法错误:
EC2StartStop:
Properties:
Tags:
sed命令适用于识别我需要插入行的位置,但是如何通过cloudformation运行命令时在插入的行上获得正确的缩进?
答案 0 :(得分:0)
不了解cloudformation template
规则,但通常双引号字符串允许\
用于特殊序列,允许不可打印的字符及其oct / hex表示等。 :\"
用于表示引号内的双引号字符。因此,要表示\
,需要\\
"sed -ie '/^ Properties:/a\\ Tags:' ./serverless-output.yaml",