社内システムの自動化を進めていく中で、SAMでインフラ構成のリソースを管理していてふと気になったので、備忘録的にざっくりまとめてみた。
SAMを触り始めたら、templateとsamconfigはセットでついてくるようなものなので、ここでちゃんと理解しておこうと思う。
template.yml
-
目的:
- AWS CloudFormation を使用してリソース(Lambda 関数や API Gateway など)を定義し、インフラを構築するためのテンプレート
-
役割:
- リソース構成、環境変数、ポリシーなどを定義
-
sam deploy
実行時に必要なリソース定義を提供
-
内容例:
-
Lambdaのコード場所(
CodeUri
)やハンドラー(Handler
) -
環境変数(
Environment
)や IAM ポリシー(Policies
) - CloudFormation に渡すパラメータ
-
Lambdaのコード場所(
samconfig.toml
-
目的:
- SAM CLI の動作をカスタマイズするための設定ファイル。
-
役割:
- 環境別の詳細設定(パラメータ名、デプロイ先のスタック、リージョンなど)を管理
-
sam deploy
コマンドを簡便化するため、補足実行情報を保持
-
内容例:
-
stack_name
: デプロイ対象のスタック名 -
parameter_overrides
: デプロイ時に渡すパラメータの上書き -
region
: AWS リージョン
-
主な違い
項目 | template.yml | samconfig.toml |
---|---|---|
目的 | リソース全体を定義するテンプレートファイル | デプロイ時のカスタマイズ設定 |
役割 | リソース構築 | デプロイ設定 |
作成先 | CloudFormation スタック作成 | SAM CLI 設定 |
内容の要項 | インフラ全体の構成を詳細に定義 | 環境ごとの設定パラメータを管理 |
実行時の利用方法 |
sam deploy 実行に必須 |
sam deploy 時にオプションで活用 |
結論:
-
template.yml:
インフラ全体の構成を定義する主要なテンプレートファイル
-
samconfig.toml:
環境ごとのデプロイパラメータを管理し、sam deploy 実行時に利用する設定ファイル