Node.js 具有Serverless和AWS Lambda的环境变量

Node.js 具有Serverless和AWS Lambda的环境变量,node.js,serverless-framework,serverless,aws-serverless,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)

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

这是我的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
MONOGDB\u URI:
JWT_密码:LmS_JWT_密码\u身份验证\u密码
当我执行sls部署时,我看到两个变量都记录为null。环境变量不会发送到lambda

我怎样才能解决这个问题


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

我会做一些类似的事情来帮助您了解语法

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
然后在你的环境中,你可以

mongodb_uri: MY_MONGO_DB_URI
jwt_secret: LmS_JWt_secREt_auth_PasSWoRds

我会做一些类似的事情来帮助你理解语法

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
然后在你的环境中,你可以

mongodb_uri: MY_MONGO_DB_URI
jwt_secret: LmS_JWt_secREt_auth_PasSWoRds

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

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

您写入“同一根文件夹中的不同文件”,但从中读取环境的文件是相同的。你也能分享你的目录结构吗?env.yml是否在serverless.yml的父文件夹中?您写的是“同一根文件夹中的不同文件”。但从中读取env的文件是相同的。你也能分享你的目录结构吗?env.yml是否位于serverless.yml的父文件夹中?