tjinjin's blog

インフラ要素多めの個人メモ

複数AWS環境にserverlessを適用するときに環境変数を切り替えたい

About

lambdaの適用方法が辛かったので調べたら、ちょっとマシになりました。

動作環境

  • serverless@1.33.1

辛み

  • lambdaを複数環境に当てないといけない
  • 環境変数を指定するの辛いのでいい感じにしたい

適用方法

$ AWS_PROFILE=hoge sls deploy --region ap-northeast-1
$ AWS_PROFILE=fuga sls deploy --region ap-northeast-1

AWS_PROFILEを使って切り替える感じです。

仕組み

service: hoge # NOTE: update this with your service name

custom:
  environment: ${file(env.yml):${env:AWS_PROFILE}}

plugins:
  - serverless-python-requirements
provider:
  name: aws
  runtime: python3.6
  stage: dev
  region: ap-northeast-1

functions:
  logalert:
    handler: handler.handler
...
    environment:
      ENV: ${env:AWS_PROFILE, 'default'}
      SENTRY_DSN: ${self:custom.environment.sentry_dsn}

AWS_PROFILEを起点にして環境変数を切り替える感じにしてみました。

# test
default:
  sentry_dsn: <dsn_key>
hoge:
  sentry_dsn: <dsn_key>
fuga:
  sentry_dsn: <dsn_key>

環境変数を追加しても切り替えが便利そうですね。