web-dev-qa-db-ja.com

CloudFormationテンプレートで条件を無効にする

次の条件があります。その条件に従っていくつかのリソースを作成しますが、その条件が満たされない場合は他のリソースを作成します。

Conditions:
  ISProduction:
    "Fn::Equals":
      - !Ref Environment
      - staging
  ISNotProduction:
      "Fn::Not":
        - !Ref ISProduction

しかし、上記のスニペットでテンプレートを評価しようとすると、エラーが発生します。

テンプレートエラー:すべてのFn :: Notオブジェクトにはブールパラメーターが1つ必要です

クラウド形成テンプレートの条件を無効にするにはどうすればよいですか?または、ISProductionの否定をどのように使用できますか?

以下の条件もリソース作成で試しましたが、「すべての条件メンバーは文字列である必要がある」ため、テンプレートは検証に合格しませんでした。

Condition:
      "Fn::Not":
        - !Ref ISProduction
11
cloudy_weather

条件論理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]
14