서버리스 프레임워크와 함께 dotenv 사용

previous post 에서 serverless-dotenv-plugin 은 서비스 파일(예: env )에서 serverless.yml 변수를 해결하기 위해 제 시간에 환경 변수를 더 이상 로드할 수 없다고 조언했습니다. 이번 포스팅에서는 플러그인 없이 dotenv을 사용하는 방법에 대해 자세히 알아보려고 합니다.

Serverless Framework에서는 file 변수를 dynamically evaluate variables by executing JavaScript code 으로 사용할 수 있습니다. 이 기능을 활용하면 dotenv을 호출하여 환경 변수를 로드하는 것과 같이 임의의 코드를 실행하도록 서버리스 프레임워크를 얻을 수 있습니다! 아래 프레임워크에 MY_ENV_VAR이 어떻게 로드되는지 확인하세요.
.env.local :

MY_ENV_VAR=loaded-by-dotenv

configs.js :

const dotenv = require('dotenv');

module.exports = async ({ options, resolveConfigurationProperty }) => {
  // Load env vars into Serverless environment
  // You can do more complicated env var resolution with dotenv here
  const envVars = dotenv.config({ path: '.env.local' }).parsed;
  return envVars;
};

serverless.yml :

service: my-service
# Required to use the new variables engine
# https://www.serverless.com/framework/docs/providers/aws/guide/variables#exporting-a-function
variablesResolutionMode: 20210219

custom:
  dotenvVars: ${file(configs.js)}

functions:
  hello:
    handler: src/hello.handler
    environment:
      MY_ENV_VAR: ${env:MY_ENV_VAR}


Serverless Framework가 ${file(configs.js)}을 볼 때 변수 해석기는 configs.js에서 내보낸 함수를 호출합니다. 여기에 있는 JavaScript 코드에는 dotenv.config()에 정의된 모든 환경 변수를 로드하는 .env.local에 대한 호출이 포함되어 있습니다. 이렇게 하면 환경 변수가 프로세스에 로드되므로 플러그인도 이에 액세스할 수 있습니다.
for 루프를 사용하면 여러 dotenv 파일(예: .env.env.local )을 로드하거나 options.stage 을 사용하여 --stage 매개변수 값을 기반으로 파일을 로드할 수 있습니다. dotenv과 같이 사용에 관심이 있을 수 있는 dotenv-expand 플러그인을 로드할 수도 있습니다. 임의의 JavaScript 코드를 실행할 수 있기 때문에 JavaScript에서 수행할 수 있는 작업으로만 제한됩니다!

전체 예제는 neverendingqs/serverless-dotenv-example에서 찾을 수 있습니다. 질문이 있거나 이와 같은 콘텐츠를 더 보고 싶으십니까? neverendingqs/ask-me-anything을 확인하세요!

좋은 웹페이지 즐겨찾기