社内システムの自動化を進めていく中で、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 実行時に利用する設定ファイル