4

我只在 SAM 模板中看到了具有单个值的示例:

Environment:
  Variables:
    TABLE_NAME: my-table

我想做这样的事情,但似乎不起作用:

Environment:
  Variables:
      myVar:
      -   prop1: aaa
          prop2: sdfsdfsd
          prop3: ssss
      -   prop1: bbb
          prop2: wwwwww
          prop3: aaaaa

我想要一个类似于对象列表的环境变量。我可以存储一个分隔字符串并自己解析它,但我更希望它像一个对象/地图/列表,就像我准备好一个 YAML 文件一样。

4

1 回答 1

2

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

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

如果您想阻止在每个请求上解码 json,请将您的解码逻辑移到处理程序之外,在这种情况下,当 lambda 很热时,代码不会重新执行。

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

阅读有关lambda 执行模型的信息

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

于 2018-09-26T01:19:53.010 回答