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

Step Functionsステートマシンから別のStep Functionsを呼び出す

複雑なステートマシンを小さいステートマシンに分割しておけばテストと確認がやりやすくなる

マネージメントコンソール上のエディタでLambdaのコードを書く際にnpmライブラリを追加したい

ローカルでライブラリをインストールしてからインポートする必要があった

Amazon API Gatewayのタイムアウト設定は最大29秒まで

上限緩和もできないので注意

MFA必須のスイッチロールアカウントでaws cliを使う

switch role用のprofileを追加する

AWSのコスト異常検出を設定する

意図しない課金を防ぐためにとりあえず設定しておくと良さそう