samconfig.tomlファイル内で環境毎にパラメータを設定してsam deployする
samを使用してデプロイする際にsamconfig.tomlファイルを環境毎に用意するのか、それともsamconfig.tomlファイルは1つにしてパラメータで動的にtemplate.yamlに値を設定するのかなど、構成を考えておく必要があります。
今回はsamconfig.tomlファイルは1つにして、ファイル内に環境毎のパラメータを用意してsam deployしてみます。
| 項目 | 値 |
|---|---|
| 環境 | dev,prod |
環境は、devとprodがあるとします。環境毎にstack-nameを指定する必要があります。
samconfig.toml
version = 0.1 [default] [default.global.parameters] stack_name = "sam-app" [dev.deploy.parameters] capabilities = "CAPABILITY_IAM" confirm_changeset = false resolve_s3 = true stack_name = "sam-app-dev" parameter_overrides = [ "Env=dev", "MemorySize=256" ] [prod.deploy.parameters] capabilities = "CAPABILITY_IAM" confirm_changeset = false resolve_s3 = true stack_name = "sam-app-prod" parameter_overrides = [ "Env=prod", "MemorySize=512" ]
[dev.deploy.parameters]と[prod.deploy.parameters]を用意して、それぞれの環境に合わせたパラメータ設定をしています。
template.yamlではパラメータとして受け取ることができます。
template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
sam-app
Sample SAM Template for sam-app
Parameters:
Env:
Type: String
Default: dev
AllowedValues:
- dev
- prod
MemorySize:
Type: Number
Default: 128
Globals:
Function:
Timeout: 3
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub "${Env}-samapplambda"
CodeUri: hello-world/
Handler: app.lambdaHandler
Runtime: nodejs20.x
Architectures:
- x86_64
MemorySize: !Ref MemorySize
これでsam deployしますが、オプションに--config-env 環境を指定します。※ここでは環境はdevまたはprod
dev環境へデプロイするコマンドです。
sam deploy --config-env dev
prod環境へデプロイするコマンドです。
sam deploy --config-env prod

なんちゃってですけどお料理得意なんです☆
保有資格:調理師免許、ふぐ取扱登録者(大阪)、食品衛生責任者、火元責任者
会社役員。趣味は食べ歩き飲み歩きと釣り。



