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

参考


Related #aws

CloudWatchアラームを一時的に無効化する

AWS CLIで設定する必要がある

RDSを定期的に停止するLambdaを作る

手動起動は大変なので

AWS SESの受信メールを暗号化してs3に保存しLambdaで読み込む

jsの場合、複合処理を独自実装する必要がある

Alexaに気温と二酸化炭素濃度を教えてもらう

「Alexa、気温」でセンサー情報を教えてくれるようになった

CloudWatchのカスタムメトリクスを減らす

あまりチェックしないセンサー値の送信を止めた