将环境变量放入env.yml

时间:2017-11-10 07:13:16

标签: amazon-web-services aws-lambda serverless-framework

我有这些配置文件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(或简单类型)属性的对象。

2 个答案:

答案 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}