2017-02-26 9 views
0

CloudFormationを使用してAPIGatewayを設定します。デフォルトのステージでテンプレートを準備しましたが、入力パラメータ(CF UIでスタックを作成中に入力される)に基づいて、testまたはprodステージを作成します。パラメータ名に基づいてステージを作成する

入力パラメータがprodの場合異なるburst,cachingなどのプロパティを持つステージを作成したいと思います。

入力パラメータがtestの場合は、すべてデフォルトにします。

私は入力パラメータを取り込む方法を知っており、test & prodのみをドロップダウンリストで提供しています。しかし、私はどのようにしてif/elseブロックをCFテンプレートで作成してステージをカスタマイズするのですか?

答えて

0

CloudFormationでは、Conditionsを使用してこれを行います。ここでEnvTypeprodに設定されているだけ999trueThrottlingBurstLimitCacheClusterEnabledを設定するテンプレートの抜粋です:

Parameters: 
    EnvType: 
    Description: Environment type. 
    Default: test 
    Type: String 
    AllowedValues: 
     - prod 
     - test 
    ConstraintDescription: must specify prod or test. 
Conditions: 
    ProdEnv: !Equals [ !Ref EnvType, prod ] 
Resources: 
    Stage: 
    Type: AWS::ApiGateway::Stage 
    Properties: 
     CacheClusterEnabled: !If [ProdEnv, true, !Ref "AWS::NoValue"] 
     MethodSettings: 
     - 
      ResourcePath: "/" 
      HttpMethod: "GET" 
      ThrottlingBurstLimit: !If [ProdEnv, 999, !Ref "AWS::NoValue"] 
     # ... 

AWS::NoValueFn::If機能で使用された場合に、すべての設定されてからプロパティを防ぐため、デフォルトであることEnvTypeprodでない場合に使用されます。

+0

ありがとうございました。この条件を設定するとしましょう:{"CreateProdStage":{"Fn :: Equals":[{"Ref": "EnvType"}、 "prod"]}}、 '今、私はしたいですテストステージを作成します。 ** 'CreateProdStage'条件を否定するにはどうすればいいですか? –

+0

条件を否定するには、次のようにします:1.' Fn :: If'配列の2番目(true)と3番目(false) 2. ['Fn :: Not']を使う(http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html#intrinsic-function-reference-conditions-not)別の逆条件を作成する: 'NotCreateProdStage:![条件:CreateProdStage]'。 – wjordan

+0

"条件":{"Fn :: Not":[{"条件": "CreateProdStage"}]}を使用して、 'テンプレート検証エラー:テンプレート形式エラー:すべての条件メンバーはa文字列。 –

関連する問題