AWS SAMで環境変数を扱う
AWS SAMでLambdaアプリの開発をする際に、環境変数をtemplate.yamlに直書きしたくなかったので対応方法を調べた。
template.yamlではParametersの定義のみをしておいて、deploy時に値を設定するようにすればできた。
例として[[SLACK_WEBHOOK_URL]]を環境変数として設定するサンプルを載せておく。
# template.yaml
Resources:
HelloFunction:
Type: AWS::Serverless::Function # More info about Function Resource:
Properties:
CodeUri: src/
Handler: app.lambdaHandler
Runtime: nodejs10.x
Environment:
Variables:
SLACK_WEBHOOK_URL: !Ref SlackWebhookUrl
Parameters:
SlackWebhookUrl:
Type: String
sam deployの際に[[parameter-overrides]]オプションで環境変数の値を設定する。
# deploy.sh
sam package \
--template-file template.yaml \
--output-template-file packaged.yaml \
--s3-bucket xxxxx
sam deploy \
--template-file packaged.yaml \
--stack-name hello \
--capabilities CAPABILITY_IAM \
--parameter-overrides SlackWebhookUrl=$SLACK_WEBHOOK_URL
ローカルでLambdaを試す場合は下記を実行する。
sam local invoke -e event.json