

# CloudFormation モジュールを使用してテンプレート全体に含めることができる再利用可能なリソース設定の作成
<a name="modules"></a>

*モジュール*は、スタックテンプレート全体に含めるリソース構成をパッケージ化する、透過的で管理しやすく、繰り返し可能な方法です。モジュールは、共通のサービス構成とベストプラクティスを、スタックテンプレートに含めるためのモジュール式のカスタマイズ可能なビルディングブロックとしてカプセル化できます。モジュールを使用すると、リソース実装の複雑さを深く理解することなく、ベストプラクティス、専門分野の知識、承認されたガイドライン (セキュリティ、コンプライアンス、ガバナンス、業界規制などの領域について) をテンプレートに含めることができます。

たとえば、ネットワークのドメイン専門家は、組み込みのセキュリティグループと、セキュリティガイドラインに準拠した入力/出力ルールを含むモジュールを作成できます。そうして、そのモジュールをテンプレートに含めることで、VPC、サブネット、セキュリティグループ、ゲートウェイがどのように機能するかを考えるのに時間を費やすことなく、セキュアなネットワーキングインフラストラクチャをスタックにプロビジョニングできます。また、モジュールはバージョン管理されているため、セキュリティガイドラインが時間の経過とともに変更された場合、モジュールの作成者はそれらの変更を組み込んだ新しいバージョンのモジュールを作成できます。

テンプレートでモジュールを使用することの特徴は次のとおりです。
+ **予測可能性** – モジュールは CloudFormation レジストリに登録されているスキーマに準拠する必要があります。そのため、テンプレートにモジュールを含めると解決できるリソースがわかります。
+ **再利用性** – 複数のテンプレートとアカウントで同じモジュールを使用できます。
+ **トレーサビリティ** – CloudFormation では、スタック内のどのリソースがモジュールからプロビジョニングされたかを把握できるため、リソース変更のソースを簡単に把握できます。
+ **管理機能** – モジュールを登録したら、バージョニング、アカウント、リージョンの可用性など、CloudFormation レジストリを使用してモジュールを管理できます。

モジュールには次のものを含めることができます。
+ モジュールからプロビジョニングされる 1 つ以上のリソース、および出力や条件などの関連データ。
+ 任意のモジュールパラメータ。モジュールが使用されるたびにカスタム値を指定できます。

モジュールの開発の詳細については、「*CloudFormation CLI ユーザーガイド*」の「[モジュールの開発](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/modules.html)」を参照してください。

**Topics**
+ [モジュールを使用するときの考慮事項](#module-considerations)
+ [モジュールのバージョニングの概要](module-versioning.md)
+ [CloudFormation プライベートレジストリのモジュールの使用](modules-using.md)
+ [パラメータを使用してモジュール値を指定する](module-using-params.md)
+ [CloudFormation テンプレートのリファレンスモジュールリソース](module-ref-resources.md)

## モジュールを使用するときの考慮事項
<a name="module-considerations"></a>
+ モジュールは追加料金なしで使用できます。スタック内でそれらのモジュールが解決したリソースに対してのみお支払いいただきます。
+ CloudFormation クォータ (スタックで許可されるリソースの最大数、テンプレート本文の最大サイズなど) は、テンプレートに含まれるリソースがモジュールから取得されているかどうかにかかわらず、処理されたテンプレートに適用されます。詳細については、「[CloudFormation クォータを理解する](cloudformation-limits.md)」を参照してください。
+ スタックレベルで指定するタグは、モジュールから派生した個々のリソースに割り当てられます。
+ モジュールレベルで指定されたヘルパースクリプトは、CloudFormation がテンプレートを処理するときに、モジュールに含まれる個々のリソースには伝達されません。
+ モジュールで指定された出力は、テンプレートレベルで出力に伝播されます。

  各出力には、モジュールで定義されたモジュールの論理名と出力名を連結した論理 ID が割り当てられます。詳細については、「[デプロイされた CloudFormation スタックからエクスポートされた出力を取得する](using-cfn-stack-exports.md)」を参照してください。
+ モジュールで指定されたパラメータは、テンプレートレベルのパラメータには伝達されません。

  ただし、モジュールレベルのパラメータを参照するテンプレートレベルのパラメータを作成できます。詳細については、「[パラメータを使用してモジュール値を指定する](module-using-params.md)」を参照してください。