テンプレート制約のルール - AWS Service Catalog

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

テンプレート制約のルール

AWS Service Catalog ポートフォリオでテンプレート制約を定義するルールでは、エンドユーザーがテンプレートをいつ使用できるかと、使用を試みている製品を作成するために使用される AWS CloudFormation テンプレートで宣言されるパラメータ用に指定できる値を示します。ルールは、エンドユーザーが意図せずに不適切な値を指定することを防ぐために役立ちます。たとえば、エンドユーザーが、特定の VPC で有効なサブネットを指定したかどうかや、テスト環境用に m1.small インスタンスタイプを使用したかどうかを確認するルールを追加できます。AWS CloudFormation​ は、ルールを使用して、製品のリソースを作成する前にパラメータ値を確認します。

各ルールは、ルール条件 (オプション) とアサーション (必須) の 2 つのプロパティで構成されます。ルール条件では、ルールがいつ有効になるかを決定します。アサーションでは、特定のパラメータにユーザーが指定できる値を示します。ルール条件を定義しない場合、ルールのアサーションが常に有効になります。ルール条件とアサーションを定義するには、ルール固有の組み込み関数を使用します。これは、テンプレートの Rules セクションでのみ使用できる関数です。関数をネストすることができますが、ルール条件またはアサーションの最終結果は、true または false である必要があります。

例として、Parameters セクションで VPC とサブネットパラメータを宣言したとします。特定のサブネットが特定の VPC 内にあることを検証するルールを作成できます。したがって、ユーザーが VPC を指定するときに、AWS CloudFormation はアサーションを評価して、サブネットのパラメータ値がその VPC にあるかどうか確認してから、スタックを作成または更新します。パラメータ値が無効の場合、AWS CloudFormation はスタックの作成または更新にすぐに失敗します。ユーザーが VPC を指定しない場合、AWS CloudFormation はサブネットのパラメータ値を確認しません。

構文

テンプレートの Rules セクションは、キーの名前 Rules とそれに続く単一のコロンで構成されます。ルールの宣言全体を中括弧で囲みます。複数のルールを宣言する場合は、カンマで区切ります。ルールごとに、引用符で囲んだ論理名、単一のコロン、およびルール条件とアサーションを囲む中括弧から成る形式で宣言します。

ルールには RuleCondition プロパティを含めることができ、Assertions プロパティを含める必要があります。ルールごとに、1 つのルール条件のみを定義できます。Assertions プロパティ内に 1 つ以上のアサーションを定義できます。次の擬似テンプレートに示すように、ルール固有の組み込み関数を使用してルール条件とアサーションを定義します。

"Rules":{ "Rule01":{ "RuleCondition":{ "Rule-specific intrinsic function" }, "Assertions":[ { "Assert":{ "Rule-specific intrinsic function" }, "AssertDescription":"Information about this assert" }, { "Assert":{ "Rule-specific intrinsic function" }, "AssertDescription":"Information about this assert" } ] }, "Rule02":{ "Assertions":[ { "Assert":{ "Rule-specific intrinsic function" }, "AssertDescription":"Information about this assert" } ] } }

擬似テンプレートには、Rules および Rule01 という 2 つのルールを含む Rule02 セクションが表示されます。Rule01​ には、ルール条件と 2 つのアサーションが含まれます。ルール条件の関数が true に評価される場合、各アサーションの両方の関数が評価および適用されます。ルール条件が false の場合、ルールは有効になりません。Rule02 にはルール条件がないため、常に有効になります。つまり、1 つのアサーションが常に評価および適用されます。

ルール条件とアサーションを定義するルール固有の組み込み関数については、AWS CloudFormationユーザーガイド の「AWSルール関数」を参照してください。

例: パラメータ値の条件付きの確認

次の 2 つのルールでは、InstanceType パラメータの値を確認します。Environment パラメータの値 (test または prod) に応じて、ユーザーは m1.small パラメータに対して m1.large または InstanceType を指定する必要があります。InstanceType および Environment パラメータは、同じテンプレートの Parameters セクションで宣言する必要があります。

"Rules" : { "testInstanceType" : { "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "test"]}, "Assertions" : [ { "Assert" : { "Fn::Contains" : [ ["m1.small"], {"Ref" : "InstanceType"} ] }, "AssertDescription" : "For the test environment, the instance type must be m1.small" } ] }, "prodInstanceType" : { "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "prod"]}, "Assertions" : [ { "Assert" : { "Fn::Contains" : [ ["m1.large"], {"Ref" : "InstanceType"} ] }, "AssertDescription" : "For the prod environment, the instance type must be m1.large" } ] } }