AWS Config の公式テンプレートについて、押さえておきたいパラメータを整理してみた
こんにちは。
体脂肪率はA情報
運用イノベーション部のかわいです。
先日、とある環境で Control Tower のランディングゾーン設定を触る機会がありました。
すごく学びになった一方で、この手の作業は設定変更時の影響範囲が広いため、事前に綿密な調査が必要になります。
例えば AWS Config ですが、これは特にアカウントへの影響度が大きいサービスなので、コードでの管理が推奨されます。
その際役立つソリューションとして、Control Tower 利用環境向けに AWS Config の記録範囲等をカスタマイズできる公式テンプレートが提供されています。
公式テンプレートは以下。
※テンプレートの導入については以下記事で詳しく解説されています。
また、各パラメータについては公式のREADMEで解説されているので、
本記事では運用者目線で、以下の点に絞ってパラメータ設定の考え方を紹介します。
ConfigRecorderStrategyをINCLUSION、EXCLUSIONにした際の挙動とのその使い分けAccountSelectionModeをINCLUSIONにして、特定アカウントだけを段階的に対象にする方法(コスト感を見たい場合)- パラメータ変更を StackSet 経由で子アカウントに反映する際に気をつける点
INCLUSION/EXCLUTION 指定時の挙動について
まず重要なパラメータに、Config の記録方針を設定するConfigRecorderStrategyがあります。
これはEXCLUSIONとINCLUSIONの2値を取り、基本はデフォルトの EXCLUTION になるかと思いますが、
記録方法に大きな違いが出るため、要件に応じて適切な値を選択します。
EXCLUSION(デフォルト値)
- AWS Config がサポートする全リソースタイプをまず記録対象にしたうえで、
ConfigRecorderExcludedResourceTypesに列挙したものだけを対象から外す - 仮に新しいAWSリソースタイプが将来リリースされると、明示的に除外リストに追加しない限り自動的に記録対象へ入る(記録量やコストが暗黙的に増えてる)
- 基本は全部見たいけど、要らないものだけ間引きたいケース
INCLUSION
ConfigRecorderIncludedResourceTypesに列挙したリソースタイプだけを記録対象にする。列挙されていないものは一切記録されない。- 新しいリソースタイプが追加されても、リストに追加しない限りは記録対象に入らない(勝手に増えないが、必要なものは適宜追加していく必要がある)
- 監査要件で必須と決まっているリソースタイプだけを確実に記録したいケース向き
ConfigRecorderStrategy:
Default: EXCLUSION
Description: Config Recorder Strategy
Type: String
AllowedValues:
- EXCLUSION
- INCLUSION
前述の通り、EXCLUSION は全リソースタイプを記録対象にしたうえで ConfigRecorderExcludedResourceTypes に列挙したものだけを除外する方式。
対して INCLUSION はConfigRecorderIncludedResourceTypesに列挙したリソースタイプだけを記録対象にする方式です。
AccountSelectionMode
記録方法とは別に、そもそもどのアカウントを記録対象にするか?を決めるパラメータとしてAccountSelectionModeというものがあります。
こちらも先ほどと同様に EXCLUSION/INCLUSION の2値を取ります。
AccountSelectionMode:
Description: Account selection mode - EXCLUSION (processes all accounts except those in ExcludedAccounts) or INCLUSION (processes only accounts in IncludedAccounts). Default is EXCLUSION for backward compatibility.
Type: String
Default: EXCLUSION
AllowedValues:
- EXCLUSION
- INCLUSION
こちらも EXCLUSIONは ExcludedAccounts に記載したアカウント以外の全アカウントを、
INCLUSIONは IncludedAccountsに列挙したアカウントだけを対象とします。
記録方法(ConfigRecorderStrategy)とアカウント選定(AccountSelectionMode)は独立したパラメータなので、組み合わせは自由です。
新しい記録ポリシーを組織全体に適用するのが憚れる場合、例えばAccountSelectionMode: INCLUSIONに設定し、検証用アカウント1-2件だけをIncludedAccountsに指定、
想定通りの記録結果になることを確認したのち、AccountSelectionMode: EXCLUSIONに戻して組織全体へ展開する、という進め方が取れます。
これは、設定差分によるコスト感を、先行して一部OUやアカウントだけで確認したい場合などに有効です。
パラメータは置換される
ConfigRecorderIncludedResourceTypesやExcludedAccounts等の値ですが、これらはスタック更新ごとに指定した値で上書きされます(既存の値に追記されない)。
例えば、現在AWS::S3::Bucket,AWS::CloudTrail::TrailをINCLUDE対象にしている状態で、新たにAWS::IAM::Roleを追加したい場合
、パラメータにはAWS::S3::Bucket,AWS::CloudTrail::Trailのように既存分も含めてカンマ区切りで指定する必要があります。
AWS::IAM::Roleだけを指定すると、既存2つのリソースタイプは記録対象から外れてしまいます。
スタック更新前に、現在デプロイされているテンプレートのパラメータを(見やすいので)マネジメントコンソールの「パラメータ」タブから確認し、
変更差分ではなく最終的な着地点を設計するのが分かりやすくて良いと思います。
更新の際は CloudFormationVersion の値を変更する
このソリューションはProducerLambdaTrigger(Custom Resource)がCloudFormationVersionパラメータの値をトリガーに動作する設計になっているため、
CloudFormation の更新だけでは子アカウントへの反映処理が走りません。該当箇所は以下。
ProducerLambdaTrigger:
Type: "Custom::ExecuteLambda"
Properties:
ServiceToken: !GetAtt "ProducerLambda.Arn"
FunctionName: !Ref ProducerLambda
Version: !Ref CloudFormationVersion
仮にConfigRecorderStrategyやConfigRecorderIncludedResourceTypesだけを変更してCloudFormationVersionを据え置くと、
Custom Resourceの入力値に変化がないと判定され、Producer Lambdaの再実行がトリガーされません。
パラメータ変更の際は、必ずCloudFormationVersionも現在の値より大きい値にインクリメントすることを忘れないようにしてください。
今日はここまで
また会う日まで
完
【参考】
※本記事の内容は2026年9月時点のテンプレート内容に基づいています。





