2016-10-21 16 views
3

私は、次の操作を実行しようとしている:AWS Cloudformationパラメータ依存性

"Parameters": { 
    "InterfaceMode" : { 
     "Description": "Configure instance to run in onearm or inline mode", 
     "Type": "String", 
     "Default": "onearm", 
     "AllowedValues": [ "onearm", "inline" ], 
    } 
    "InlineSubnetId" : { 
     "Description": "Name of a subnet assigned to the VPC to use for second interface in inline mode.", 
     "Type": "AWS::EC2::Subnet::Id", 
     "Default": "None" 
    }, 

ユーザーがonearm選択した場合さて、1つのインターフェイスだけが必要とされているとInlineSubnetIdが必要とされていません。通常、ユーザーは "InlineSubnetId"ドロップダウンを空白にしますが、AWSタイプの値が必要なため、これは雲形の検証では機能しません。ユーザーがAWS提供のSubnetIdsから選択するようにするには、文字列型を使用することはできません。

これを回避するには?

  1. 選択されたAWSタイプを空にすることができるように、検証をバイパスする方法はありますか?
  2. "None"のような別のオプションをSubnet :: Idリストに追加する方法はありますか?
  3. モードがインラインの場合にのみ、inlineSubnetIdパラメータを非表示にする方法はありますか?
  4. パラメタの最初のページの出力に依存するパラメタの2ページ目はどうですか?

ありがとうございました。

答えて

0

私はあなたの問題の良い解決策はないと思います。あなたが試みることができる1つのことは、デフォルトのデフォルト値としてAWS::NoValueを使用することですが、うまくいくかどうかは疑問です。

0

残念ながら、パラメータをオプションにする場合は、AWS固有のパラメータタイプ(つまり、AWS::*)を使用できません。あなたの希望する回避策のどれもうまくいきません。 のAllowedPattern^(subnet-[0-9a-fA-F]{8})?$のように設定することをお勧めしますが、既存のサブネット値をあらかじめ入力しておく必要はありません。

0

私はこのタイプの条件付きパラメータも探していましたが、それが存在しないと言うことができます。あなたが一番近いのはAWSの条件です。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-conditions.html

これは、あなたが、その後のFnと一緒に使用することができ、入力パラメータに基づいて、真または偽に評価条件を定義することができます:文はリソースに異なる値を注入する場合を。

上記のシナリオでは、値を既知のサブネットIDにデフォルト設定し、必要がない場合は条件を使用してこの値を無視することができます。残念ながら、デフォルトのサブネットが存在しないため、異なるVPC間で同じCloudFormationテンプレートを使用しようとすると、これは少し短くなります。

関連する問題