Переменные среды с помощью Serverless и AWS Lambda - PullRequest
0 голосов
/ 25 января 2019

Я изучаю бессерверную инфраструктуру и создаю простую систему входа в систему.

Вот мой файл 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, я вижу, что обе переменные записываются как ноль. Переменные окружения не отправляются в лямбду.

Как я могу это исправить?

Кроме того, в настоящее время я использую этот метод и добавляю env.yml к .gitignore и сохраняю значения. Есть ли другой эффективный способ скрыть конфиденциальные данные?

1 Ответ

0 голосов
/ 25 января 2019

Я бы сделал что-то вроде этого, чтобы помочь вам с синтаксисом

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

Тогда в вашем env.yml вы можете сделать

mongodb_uri: MY_MONGO_DB_URI
jwt_secret: LmS_JWt_secREt_auth_PasSWoRds
...