无服务器和AWS Lambda的环境变量

时间:2019-01-25 18:10:37

标签: node.js serverless-framework serverless aws-serverless

我正在学习无服务器框架,并且正在制作一个简单的登录系统。

这是我的serverless.yml文件

service: lms-auth

provider:
    name: aws
    runtime: nodejs8.10
    stage: dev
    region: ap-south-1

environment:
    MONGODB_URI: $(file(../env.yml):MONOGDB_URI)
    JWT_SECRET: $(file(../env.yml):JWT_SECRET)

functions:
    register:
        handler: handler.register
        events:
            - http:
                  path: auth/register/
                  method: post
                  cors: true
    login:
        handler: handler.login
        events:
            - http:
                  path: auth/login/
                  method: post
                  cors: true

plugins:
    - serverless-offline

如您所见,我有两个环境变量,它们都引用同一根文件夹中的另一个文件。

这是env.yml文件

MONOGDB_URI: <MY_MONGO_DB_URI>
JWT_SECRET: LmS_JWt_secREt_auth_PasSWoRds

当我执行sls deploy时,我看到两个变量都记录为null。环境变量不会发送到lambda。

我该如何解决?

此外,当前我正在使用此方法,并将env.yml添加到.gitignore并保存值。还有其他有效的方法来隐藏敏感数据吗?

2 个答案:

答案 0 :(得分:1)

我会做这样的事情来帮助您使用语法

<form onsubmit="console.log('submitted');return false">
    <s-button>Select</s-button>
    <button>Outside</button>
</form>

然后在您的env.yml中可以

service: lms-auth

custom: ${file(env.yml)}
provider:
    name: aws
    runtime: nodejs8.10
    stage: dev
    region: ap-south-1

environment:
    MONGODB_URI: ${self:custom.mongodb_uri}
    JWT_SECRET: ${self:custom.jwt_secret}

functions:
    register:
        handler: handler.register
        events:
            - http:
                  path: auth/register/
                  method: post
                  cors: true
    login:
        handler: handler.login
        events:
            - http:
                  path: auth/login/
                  method: post
                  cors: true

plugins:
- serverless-offline

答案 1 :(得分:0)

我最终解决了它。我已经在AWS美国西部地区设置了Dynamo数据库。在US-East-2中重新初始化,然后在.yml文件中的“ provider”下重置区域。