SAM模板环境变量使用map,list,关联数组吗?

时间:2018-09-26 00:28:22

标签: 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
          prop3: aaaaa

我想要一个像对象列表一样的环境变量。我可以存储一个定界的字符串并自己解析,但我更希望它像对象/地图/列表一样,如果我准备好Yaml文件。

1 个答案:

答案 0 :(得分:1)

您能做的最接近的是对环境变量的值进行json编码 并使用运行时语言对其进行解码:

 Environment:
  Variables:
    USER: '{"name": "john", "surname": "galt"}'

如果要防止在每个请求上解码json,请将解码逻辑移到处理程序之外,在这种情况下,当lambda处于高温状态时,不会重新执行代码。

  

您的Lambda函数代码中的任何声明(在处理程序代码之外,请参阅编程模型)都将保持初始化,从而在再次调用该函数时提供其他优化。例如,如果您的Lambda函数建立数据库连接,而不是重新建立连接,则在后续调用中使用原始连接。我们建议在代码中添加逻辑,以在创建连接之前检查连接是否存在。

了解有关lambda execution model

的信息

我个人将创建一个json文件,将其存储在s3存储桶中,并使用环境变量为该文件指定s3 url。此外,在检索config文件时,请根据情况使用上面提到的相同技术或使用更复杂的缓存机制