概要
New for AWS Lambda – Environment Variables and Serverless Application Model (SAM)
これ、Lambderにとっては結構なニュースです。今までLambdaで環境変数を使うとしたら次のような手法を取るしかありませんでした。
- API Gatewayからステージ環境変数を渡す
- Lambdaの
Description
に環境変数を書いてアプリケーション側でパースする - 環境変数ファイルをCIで動的生成
それがついに公式に環境変数がサポートされたので、このような対応は今後不要になりました。
使い方
とても簡単。Lambdaファンクションの Code
タブに環境変数の項目が追加されてるので、キーと値のペアを入れるだけ。
NodeJSで環境変数を取得してみる (上図参照)。
console.log(`NODE_ENV: ${process.env.NODE_ENV}`)
CloudFormationで環境変数をセットする
最近趣味でサーバレスな ヘルスケアアプリ を作ってるんですが、デプロイにCloudFormationを利用していたので、デプロイ時に環境変数がセットされるよう対応してみました (今まではAPI Gatewayのステージ変数を使ってた)。
CloudFormation経由でLambdaに環境変数をセットするには Environment プロパティを使えば良いらしいです。テンプレートの修正例はこちら。