2017-11-10 1 views
0

나는이 설정 파일 serverless.yml과 env.yml을 가지고 있는데 배포하려고하면 에러가 난다. 람다 함수는 전개 될 수 없다.환경 변수를 env.yml에 넣기

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 :

Serverless: Operation failed!

Serverless Error ---------------------------------------

An error occurred: PingLambdaFunction - Value of property Variables must be an object with String (or simple type) properties.

+0

필요 했어. 이 문제는 이러한 환경 값을이 특정 람다에 매핑하는 방법과 관련이있는 것처럼 보입니다. –

답변

1

환경 변수 개체 수 없다. 그것들은 단지 value이 기본 유형 (예 : 문자열/숫자/부울/null)이어야하는 단순한 키 - 값 쌍입니다.

keyone 변수는 "변수가 문자열 (또는 단순 유형) ​​속성이있는 객체 여야합니다."라는 오류가 발생하는 이유입니다.

1

env.yml의 값을 지정해야합니다. 당신의 예에서

, 당신은 keyonetwo의 값을 얻으려면, 당신은

${file(env.yml):${opt:stage}.keyone.keyonetwo} 

가 어떤, 또한 valueonetwo

생산하는 documentation 그들이 어떻게 환경 변수를 참조를 체크 아웃 할 것이다 사용하십시오.

는 각 환경 변수를 설정해야합니다, 그래서 당신은 또한 당신이 실제로 PingLambdaFunction을 정의하여 serverless.yml의 조각을 제공해야

provider: 
    environment: 
    keyoneone: ${file(env.yml):${opt:stage}.keyone.keyoneone} 
    keyonetwo: ${file(env.yml):${opt:stage}.keyone.keyonetwo}