我有这些配置文件serverless.yml和env.yml,当我尝试部署时,我收到一个错误。无法部署Lambda函数。
serverless.yml
---omitted---
provider:
environment: ${file(env.yml):${self:custom.stage}}
---omitted---
env.yml
---omitted---
dev:
keyzero: "valuezero"
keyone:
keyoneone: "valueoneone"
keyonetwo: "valueonetwo"
keyonethree: "valueonethree"
---omitted---
ERROR:
无服务器:操作失败!
无服务器错误---------------------------------------
发生错误:PingLambdaFunction - 属性值Variables 必须是具有String(或简单类型)属性的对象。
答案 0 :(得分:1)
环境变量不能是对象。它们只是键值对,其中value
应该是原始类型(即string / number / boolean / null)。
您的keyone
变量是一个对象,这就是它抛出错误的原因"变量必须是具有String(或简单类型)属性的对象"。
答案 1 :(得分:1)
您需要指定要使用的env.yml
中的哪个值。
在您的示例中,如果您想获得keyonetwo
的值,请使用
${file(env.yml):${opt:stage}.keyone.keyonetwo}
哪会产生valueonetwo
另外,检查documentation以及它们如何引用环境变量。
您需要设置每个环境变量,因此您需要
provider:
environment:
keyoneone: ${file(env.yml):${opt:stage}.keyone.keyoneone}
keyonetwo: ${file(env.yml):${opt:stage}.keyone.keyonetwo}