次の条件があります。その条件に従っていくつかのリソースを作成しますが、その条件が満たされない場合は他のリソースを作成します。
Conditions:
ISProduction:
"Fn::Equals":
- !Ref Environment
- staging
ISNotProduction:
"Fn::Not":
- !Ref ISProduction
しかし、上記のスニペットでテンプレートを評価しようとすると、エラーが発生します。
テンプレートエラー:すべてのFn :: Notオブジェクトにはブールパラメーターが1つ必要です
クラウド形成テンプレートの条件を無効にするにはどうすればよいですか?または、ISProductionの否定をどのように使用できますか?
以下の条件もリソース作成で試しましたが、「すべての条件メンバーは文字列である必要がある」ため、テンプレートは検証に合格しませんでした。
Condition:
"Fn::Not":
- !Ref ISProduction
条件論理IDの前に条件キーを使用すると、他の条件を参照できます。
リソース、リソースプロパティ、または出力を条件付きで作成するには、条件をそれらに関連付ける必要があります。次のスニペットに示すように、Condition:キーと条件の論理IDを属性として追加して、条件を関連付けます。 AWS CloudFormationは、CreateProdResources条件がtrueと評価された場合にのみNewVolumeリソースを作成します。
あなたの例は次のようになります:
Conditions:
ISProduction:
"Fn::Equals":
- !Ref Environment
- staging
ISNotProduction:
"Fn::Not":
- Condition: ISProduction
オプションで、短い形式で記述できます。
Conditions:
ISProduction:
!Equals [!Ref Environment, staging]
ISNotProduction:
!Not [Condition: ISProduction]