AWS CloudFormationのマッピング(Mappings)と条件分岐(Conditions)を完全解説!初心者でもわかるインフラ自動化
生徒
「AWS CloudFormationって、環境ごとに設定を変えたいときはどうするんですか?」
先生
「そのときに活躍するのが、マッピング(Mappings)と条件分岐(Conditions)です。設定を自動で切り替えられます。」
生徒
「プログラミング未経験でも使えますか?」
先生
「大丈夫です。表と分岐ルールを覚える感覚で使えますよ。順番に見ていきましょう。」
1. AWS CloudFormationとは?インフラ自動化の基本
AWS CloudFormation(クラウドフォーメーション)は、AWSのインフラ構成をテンプレートで管理できる仕組みです。サーバーやネットワーク、ストレージなどを、手作業ではなく文章で定義できます。これにより、同じ環境を何度でも正確に作成でき、設定ミスも減ります。インフラ自動化、IaC(インフラ・アズ・コード)の代表的なサービスとして、多くの現場で使われています。
2. マッピング(Mappings)とは?設定を表で管理する仕組み
マッピング(マッピング)は、CloudFormationテンプレート内で使える「対応表」のような機能です。例えば、東京リージョンではこのAMI、大阪リージョンでは別のAMI、というように条件ごとの値をまとめて管理できます。プログラムが苦手な人でも、表を見る感覚で理解できるのが特徴です。環境差分の管理、リージョンごとの設定切り替えに強く、再利用性も高くなります。
3. マッピング(Mappings)の基本構文と書き方
マッピングは、テンプレートのMappingsセクションに記述します。キーと値を階層構造で定義し、あとから参照します。表の縦軸と横軸を決めて、交差する値を取り出すイメージです。
Mappings:
RegionMap:
ap-northeast-1:
AMI: ami-12345678
ap-northeast-3:
AMI: ami-87654321
この例では、リージョンごとにAMI IDを定義しています。設定を一か所にまとめられるため、管理がとても楽になります。
4. Fn::FindInMapでマッピングを使う方法
定義したマッピングは、Fn::FindInMapという関数で呼び出します。これは「この表から、この条件の値を取ってくる」という指示です。難しく考えず、表引きだと思ってください。
ImageId:
Fn::FindInMap:
- RegionMap
- !Ref AWS::Region
- AMI
現在のリージョンに応じて、自動的に正しいAMIが選ばれます。環境差分を意識せずにテンプレートを使い回せるのが大きなメリットです。
5. 条件分岐(Conditions)とは?環境で処理を切り替える
条件分岐(コンディション)は、「もし○○なら作成する」「違えば作らない」といった判断をCloudFormationにさせる仕組みです。開発環境では作るが、本番環境では作らないリソース、というような制御が可能になります。人の判断を減らし、自動化を進めるうえで欠かせません。
6. Conditionsの定義方法とよく使う関数
Conditionsは、Parametersと組み合わせて使うことが多いです。環境名を受け取り、それが特定の値かどうかを判定します。代表的な関数には、Fn::EqualsやFn::Andなどがあります。
Conditions:
IsProd:
Fn::Equals:
- !Ref EnvType
- prod
この条件は、EnvTypeがprodの場合に真になります。設定ファイルでON・OFFを切り替える感覚に近いです。
7. 条件分岐(Conditions)をリソースに適用する方法
定義した条件は、ResourcesセクションでConditionとして指定します。条件が真のときだけ、そのリソースが作成されます。これにより、環境ごとに無駄なリソースを作らずに済みます。
MyEC2:
Type: AWS::EC2::Instance
Condition: IsProd
Properties:
InstanceType: t3.micro
本番環境だけEC2を作成する、といった制御が簡単にできます。
8. マッピングと条件分岐を組み合わせる実践例
マッピングと条件分岐を組み合わせることで、より柔軟なテンプレートが作れます。例えば、環境ごとにインスタンスタイプを変えたり、特定環境だけ追加設定を入れたりできます。これにより、1つのテンプレートで複数環境を安全に管理できます。CloudFormationの理解が深まると、インフラ構築のスピードと品質が大きく向上します。