Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8835

SAMを使った環境毎のデプロイ方法のまとめ

$
0
0

はじめに

SAMを使ったサーバーレス環境の構築時に、1つのtemplate.yamlを使って、develop, staging, production毎に環境変数を切り替える方法を忘れるため、備忘もかねて記事にしました

目的

SAMのtemplateを使って、各環境毎に変数値を変えてlambdaを実行できるようにする

どうやるのか?

SAMテンプレートの中の、ParametersとMappingsを使うと、一つの環境変数でKey-Value方式で、複数の値を切り替えることができる

実例

まず、ParametersとMappingを記述する

Parameters:Environment:Type:StringAllowedValues:-development# 開発環境-staging# ステージング環境-production# 本番環境Default:developmentMappings:EnvironmentMap:development:HELLO:'developmenHelloWorld'staging:HELLO:'stagingHelloWorld'production:HELLO:'productionHelloWorld'

それを使いたい時は、以下のように指定すれば、環境変数がKeyになり、Valueが取得できる

Resources:HelloWorldFunction:Type:AWS::Serverless::FunctionProperties:CodeUri:hello-world/Handler:app.lambdaHandlerRuntime:nodejs12.xEvents:HelloWorld:Type:ApiProperties:Path:/helloMethod:getEnvironment:Variables:SAMPLE_ENV:!FindInMap[EnvironmentMap,!RefEnvironment,HELLO]

動作確認

# ビルド
sam build

# 実行
sam local start-api --parameter-overridesEnvironment={書き換えたい環境変数}

アクセスして確認する

curl 'http://localhost:3000/hello'

CI/CDをどうするか?

CIに関しては、一つのtemplate.yamlをビルドするだけで良い
CDの時に、 --parameter-overridesを使って、Parametersを書き換えてデプロイするフローになる

❯ sam deploy --guided

Configuring SAM deploy
======================

        Looking for config file [samconfig.toml] :  Found
        Reading default arguments  :  Success

        Setting default arguments for'sam deploy'=========================================
        Stack Name [SAMPLE-ENV]: 
        AWS Region [ap-northeast-1]: 
        Parameter Environment [staging]: ← ここで使いたい環境を指定するだけで良い
        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy----省略 ----

まとめ

かなり雑にまとめてしまいましたが、templateのParametersだけを使う場合だと、環境変数が多くなると管理が大変になるので、Mappingsを活用すると使いたい環境を指定するだけで、セットアップができる

誰かのご参考になれば幸いです


Viewing all articles
Browse latest Browse all 8835

Trending Articles