AWS SAMで環境変数を扱う

公開日時
更新日時

AWS SAMでLambdaアプリの開発をする際に、環境変数をtemplate.yamlに直書きしたくなかったので対応方法を調べた。

template.yamlではParametersの定義のみをしておいて、deploy時に値を設定するようにすればできた。

例として[[SLACKWEBHOOKURL]]を環境変数として設定するサンプルを載せておく。

# 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

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

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

AWS SAMで作ったLambdaアプリをCircleCIでデプロイする

circleci/aws-serverlessのOrbを使った

s3の署名付きURLが有効期限より前に見れなくなってしまう

IAMロールではなくIAMユーザの権限でURLを生成する必要があった

AWS CDK使用時にリージョンを指定する

new Stackの際にenvで指定できる