sam local invoke で環境変数が読み込めないトラブル解決方法
はじめに
AWS SAM のCLIで sam local invoke
という
Lambda関数をローカル実行するコマンドがあります。
前提
- cloud9でLambda関数およびLambdaLayerを開発
- Lambda関数
- Layer(2種)を使った処理
- 環境変数GEM_PATHを設定
- LambdaLayer(2種)
- gem
- 定数や独自実装メソッド
問題
deployしたLambda関数は問題なく処理を実行できるが、
sam local invoke
で実行したLambda関数はgemがrequireできずエラーに…
原因
samで使用しているtemplate.yamlでEnviroments設定をしているが、
sam local invoke
ではパラメータで環境変数を指定する必要がある!?
対処
# env.json { "HelloWorldFunction": { "GEM_PATH": "/opt/ruby/2.5.0" } }
$ sam local invoke HelloWorldFunction --event event.json --env-vars env.json
まとめ
template.yaml書いてれば良いと思い込んでしまってた…
でも、これでLambda開発環境は整った!(はず)