Amazon web services SAM模板环境变量是否使用映射、列表、关联数组?
我只看到SAM模板中有单个值的示例:Amazon web services SAM模板环境变量是否使用映射、列表、关联数组?,amazon-web-services,aws-lambda,amazon-cloudformation,aws-sam-cli,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Aws Sam Cli,我只看到SAM模板中有单个值的示例: Environment: Variables: TABLE_NAME: my-table 我想做这样的事情,但似乎不起作用: Environment: Variables: myVar: - prop1: aaa prop2: sdfsdfsd prop3: ssss - prop1: bbb prop2: wwwwww
Environment:
Variables:
TABLE_NAME: my-table
我想做这样的事情,但似乎不起作用:
Environment:
Variables:
myVar:
- prop1: aaa
prop2: sdfsdfsd
prop3: ssss
- prop1: bbb
prop2: wwwwww
prop3: aaaaa
我想要一个类似于对象列表的环境变量。我可以存储一个带分隔符的字符串并自己解析它,但我更希望它像一个对象/映射/列表,就像我准备好了一个yaml文件一样。最接近的方法是用json编码环境变量的值 并使用运行时语言对其进行解码:
Environment:
Variables:
USER: '{"name": "john", "surname": "galt"}'
如果要防止对每个请求解码json,请将解码逻辑移到处理程序之外,在这种情况下,lambda处于热状态时代码不会重新执行
Lambda函数代码中的任何声明(处理程序代码之外,请参见编程模型)都保持初始化状态,以便在再次调用函数时提供额外的优化。例如,如果Lambda函数建立数据库连接,而不是重新建立连接,则在后续调用中使用原始连接。我们建议在代码中添加逻辑,以便在创建连接之前检查连接是否存在
了解
我个人会创建一个
json
文件,将其存储在s3 bucket中,并使用环境变量指定该文件的s3url
。此外,根据检索config
文件时的情况,使用我上面提到的相同技术,或者使用更复杂的缓存机制,我认为这是唯一一种太糟糕的方法。如果我必须为每个请求解码一个yaml字符串,这会破坏性能,对吗?在lambda中对每个请求进行yaml或json解码真的很糟糕吗?@red888如果你想阻止对每个请求进行解码,请将代码移到处理程序之外,请参阅更新的答案这是如何工作的?处理程序是入口点,对吗?我是否在处理程序外部定义函数并在处理程序内部调用它?