簡體   English   中英

AWS Cloudformation參數依賴項

[英]AWS Cloudformation parameter dependency

我正在嘗試執行以下操作:

"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,則只需要一個接口,不需要InlineSubnetId。 通常,用戶會將“InlineSubnetId”下拉列表保留為空,但這不適用於雲形式驗證,因為它需要AWS類型的值。 我不能只使用字符串類型,因為我希望用戶從AWS提供的SubnetId中進行選擇。

怎么解決這個問題?

  1. 有沒有辦法繞過驗證,允許選擇的AWS類型為空?
  2. 有沒有辦法在Subnet :: Id列表中添加“None”等其他選項?
  3. 有沒有辦法在模式內聯時隱藏inlineSubnetId參數?
  4. 第二頁參數怎么樣,這取決於第一頁參數的輸出?

謝謝您的幫助。

不幸的是,如果您希望Parameter是可選的,則不能使用任何特定於AWS的參數類型(即AWS::* )。 您希望的解決方案也不會起作用。 我建議使用一個類型的String ,其AllowedPattern設置為^(subnet-[0-9a-fA-F]{8})?$ ,但這不符合您使用現有預先填充的下拉列表的要求子網值。

我不認為你的問題有一個很好的解決方案。 您可以嘗試的一件事是使用AWS :: NoValue作為默認默認值,但我懷疑它是否有效。

我一直在尋找這種類型的條件參數,據我所知,它不存在。 您最接近的是AWS Condition。

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的

這將允許您根據輸入參數定義評估為true或false的條件,然后可以將這些條件與Fn:If語句一起使用以將不同的值注入資源。

因此,對於上面的場景,您可能希望將值默認為已知的子網ID,但如果不需要,則使用條件忽略此值。 不幸的是,如果您嘗試在不同的VPC上使用相同的CloudFormation模板,這會有點短暫,因為默認子網不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM