Other
ymlでenv(環境変数)を使う方法
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
オススメ本
はじめに
この記事では、
Error:
Cannot resolve serverless.yml: Variables resolution errored with:
- Cannot resolve variable at "provider.environment.SLACK_SIGNING_SECRET": Value not found at "env" source,
- Cannot resolve variable at "provider.environment.SLACK_BOT_TOKEN": Value not found at "env" source
こんなエラーが解決するかもしれません。
経緯
Lambda などで、yml に環境変数を入れたくなる 時があります。
例えば、SlackAPI などを使う場合、
serverless.yml
service: serverless-bolt-js
frameworkVersion: '3'
provider:
name: aws
runtime: nodejs14.x
environment:
SLACK_SIGNING_SECRET: ${env:SLACK_SIGNING_SECRET}
SLACK_BOT_TOKEN: ${env:SLACK_BOT_TOKEN}
functions:
slack:
handler: app.handler
events:
- http:
path: slack/events
method: post
- http:
path: /slack/install
method: get
- http:
path: /slack/user_install
method: get
- http:
path: /slack/oauth_redirect
method: get
useDotenv: true
plugins:
- serverless-offline
環境変数が使いたくなります。
環境変数を使う方法
上記のコードは、すでに環境変数が使えるような設定になっています。
該当部分は、
environment:
SLACK_SIGNING_SECRET: ${env:SLACK_SIGNING_SECRET}
SLACK_BOT_TOKEN: ${env:SLACK_BOT_TOKEN}
useDotenv: true
の2箇所です。
プロジェクトのルートディレクトリに、
.env というファイルを作成し、
SLACK_SIGNING_SECRET=ここにAPIkeyなどを入力
SLACK_BOT_TOKEN=ここにAPIkeyなどを入力
とするだけで使えます。
まとめ
検索すると意外とこの簡単な方法が見つかりづらかったので記事にしました。
参考になれば幸いです。