翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
テンプレート制約のルール
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" } ] } }