🍡

[AWS SAM] samconfig.tomlのparameter_overridesを配列形式に変更して記述ミスを防ぐ

2024/01/13に公開

はじめに

業務でAWS SAM(以降、SAMと略)を使用しており、今回はsamconfig.tomlのparameter_overrides項目に関する学びを得たので、それについて記事にしました。プロジェクトによっては、samconfig.tomlが別名で扱われている場合があるかもしれませんので、その点も考慮してご参照いただければと思います。

parameter_overridesとは

SAMプロジェクトをデプロイする際に、テンプレート内のParametersセクションのパラメータを上書きすることが可能です。説明よりもコードを交えた方が理解しやすいかと考え、以下にその一例を紹介します。

template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Parameters:
  param1:
    Type: String
  param2:
    Type: String
  param3:
    Type: String
  param4:
    Type: String
  param5:
    Type: String
samconfig.toml
[stg.deploy.parameters]
parameter_overrides = "param1=\"てすと1\" param2=\"てすと2\" param3=\"てすと3\" param4=\"てすと4\" param5=\"てすと5\""

デプロイ時には、parameter_overrides項目に記載されたパラメータの値がテンプレートに適用されます。[stg.deploy.parameters]に示されている通り、各環境ごとに異なる設定が可能です。
参考として、以下の記事がわかりやすい内容を提供していますので、ぜひご覧いただければと思います。
https://dev.classmethod.jp/articles/recommend-sam-config-toml/

文字列形式のparameter_overrides

parameter_overridesは文字列形式で記述されます。

samconfig.toml
parameter_overrides = "param1=\"てすと1\" param2=\"てすと2\" param3=\"てすと3\" param4=\"てすと4\" param5=\"てすと5\""

sam deploy --guidedを使用して生成されたsamconfig.tomlでは、文字列形式が採用されています。パラメータの数が増えると可読性が低下し、10個以上などになると見つけにくく、記述ミスのリスクが高まります。

samconfig.toml
parameter_overrides = "param1=\"てすと1\" param2=\"てすと2\" param3=\"てすと3\" param4=\"てすと4\" param5=\"てすと5\" param6=\"てすと6\" param7=\"てすと7\" param8=\"てすと8\" param9=\"てすと9\" param10=\"てすと10\""

配列形式のparameter_overrides

parameter_overridesは、以下のページにあるように配列形式でも記述可能です。
https://qiita.com/nujust/items/ab9a7d23cb42de15c4e5

配列形式に変更することで、見やすさが向上し、特にパラメータの数が多い場合には可読性が向上します。文字列形式と比較して、見栄えが綺麗で記述ミスも減りそうです。

samconfig.toml
parameter_overrides = [
  "param1=てすと1",
  "param2=てすと2",
  "param3=てすと3",
  "param4=てすと4",
  "param5=てすと5",
  "param6=てすと6",
  "param7=てすと7",
  "param8=てすと8",
  "param9=てすと9",
  "param10=てすと10",
]

Discussion