我在cloudformation模板中定义了我的lambda函数。此lambda函数使用cloudformation Ref:BucketName获取存储桶名称。我面临的问题是BucketName值是在下一行,并打破python代码,因为python是空间敏感的。有没有办法解决它?
"ZipFile": {
"Fn::Join": [
"\n",
[
"import boto3",
"import json",
"def handler(event, context):",
" try:",
" s3BucketName=event['detail']['requestParameters']['bucketName']",
" if s3BucketName == '", {"Ref": "BucketName"},"':",
" return ",
答案 0 :(得分:0)
由于你的" \ n"它会进入下一行。在你的阵列之前。它在数组中的每个字符串之间添加换行符,包括引用BucketName的位置。
Wojciech是对的;在这种情况下,YAML会更容易。但是如果你想坚持JSON,你可以摆脱" \ n"并用空字符串替换它。然后将\ n放在您真正需要分隔符的每一行。 e.g:
"import boto3\n",
"import json\n",
答案 1 :(得分:-1)
使用!Sub,当然是用yaml写的,所以写起来比较容易。 这是"多线串和SUB SYNTAX"中的一个很好的例子。部分:http://www.fischco.org/technica/2017/cloud-formation-sub/
诀窍是使用"!Sub |"构造