Serverless とLamdba環境変数
Serverless のコードをVersion 管理する上で 気になるのがAPIなどの認証キー
ソースコード内にコレを含めたくないときには、 .env
などのソリューションを思い浮かべる人も多いかもしれない。
AWS Lamdba は ダッシュボードから環境変数の設定が可能で、これはデプロイがあっても通常は消えない。
serverless.yml 内での環境変数設定
ダッシュボードから設定可能な環境変数の他に、serverless.yml 内でも環境変数の設定が可能
ただし、こちらでキーを設定した場合、yml内に登録されていないキーは 消える
provider:
name: aws
runtime: nodejs4.3
environment:
HOGE_APIKEY: XXXXXXXXXXXXXXXXX
PIYO_APIKEY: XXXXXXXXXXXXXXXXX
serverless コマンド実行環境の環境変数
service: new-service
provider: aws
functions:
hello:
name: ${env:FUNC_PREFIX}-hello
handler: handler.hello
world:
name: ${env:FUNC_PREFIX}-world
handler: handler.world
serverless.yml
の中ではCLIコマンド実行環境での環境変数を参照する事ができる。
これを上記と組み合わせて、以下のようなことも出来たりする。
provider:
name: aws
runtime: nodejs4.3
environment:
HOGE_APIKEY: ${env:SLS_HOGE_APIKEY}
PIYO_APIKEY: ${env:SLS_PIYO_APIKEY}
ちなみにこれは: の後ろにスペース忘れると ServerlessError: Invalid characters in environment variable
というエラーで怒られる。辛い。
まとめ
一昔前にserverless-webpack で作る複数環境運用に耐えるserverless-node環境 - Qiitaみたいな記事を書いたものの、
正直これはオレオレすぎて理解が難しいので、しっかりServerless 標準の環境変数構成を使っていきたいなぁと思った。
認証情報をどこに置くか、は非常に難しい問題なので要件に併せて諸々検討したい。