使用无服务器v1.4.0设置AWS Lambda的环境变量时遇到问题

时间:2017-01-01 04:27:50

标签: javascript node.js amazon-web-services aws-lambda serverless-framework

在文档之后,我尝试在provider:

下的serverless.yml文件中声明环境变量
provider:
  cfLogs: true
  name: aws
  runtime: nodejs4.3
  stage: dev
  region: eu-west-1
  profile: serverless-admin
  environmnent:
    IS_REMOTE: ${file(./config.yml):IS_REMOTE}
    REMOTE_ENV: "YES"

尝试使用process.env.IS_REMOTE或process.env.REMOTE_ENV尝试获取它们时,这些都不可用。

这是尝试console.log的日志:

2017-01-01 06:22:57.777 (+02:00)        undefined       REMOTE_ENV:  undefined
2017-01-01 06:22:57.777 (+02:00)        undefined       IS_REMOTE:  undefined

当使用serverless invoke(非本地)时,这是在Lambda内部。

希望有人可以帮我解决这个问题,因为我似乎正在关注正确的文档。

2 个答案:

答案 0 :(得分:2)

从代码中看,环境似乎拼错了。

答案 1 :(得分:1)

这个功能对我来说很好。我相信你错了。

您能否请创建一个新项目并测试以下步骤?也许我们可以通过here找到您的问题。如果此代码不适合您,请给我反馈。

  1. 检查无服务器版本(预期:1.4.0)

    serverless --version
    
  2. 创建新项目

    serverless create --template aws-nodejs --name test-project
    
  3. 使用以下 serverless.yml

    service: test-project
    
    provider:
      name: aws
      runtime: nodejs4.3
      environment:
        VAR_1: foo
    
    functions:
      hello:
        handler: handler.hello
    
  4. 使用以下 handler.js

    module.exports.hello = (event, context, callback) => {
    
      console.log(process.env.VAR_1);
    
      const response = {
        statusCode: 200,
        body: JSON.stringify({
          message: process.env.VAR_1
        }),
      };
    
      callback(null, response);
    };
    
  5. 部署

    serverless deploy
    
  6. 测试

    serverless invoke --function hello
    
  7. HTTP结果:

    {
        "statusCode": 200,
        "body": "{\"message\":\"foo\"}"
    }
    

    日志:

    2017-01-02T20:13:58.551Z    fg57ea3c-e127-11e6-bf5a-93b2958503d8    foo