[英]AWS CloudFormation conditional template validation
我有一個模板,可以為多個區域(例如 us-east-1 和 ap-southeast-1)使用 DynamoDB 和 DAX 創建 CloudFormation。 在為 us-east-1 工作時,此模板不適用於 ap-southeast-1,因為該地區尚不可用 DAX。
我希望這可以使用Conditions
來完成,因此對於一個區域 (us-east-1),我將同時擁有 DynamoDB 和 DAX,而對於另一個區域 (ap-southeast-1) - 只有 DynamoDB:
Conditions:
isDAXAvailable: !Not [!Equals [ !Ref "AWS::Region", ap-southeast-1 ]]
Resources:
DynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
.....
DaxCluster:
Type: AWS::DAX::Cluster
Condition: isDAXAvailable
Properties:
.....
但不幸的是我收到一個錯誤:
調用 ValidateTemplate 操作時發生錯誤 (ValidationError):模板格式錯誤:無法識別的資源類型:[AWS::DAX::Cluster]
無論如何都可以配置這樣的模板還是應該創建一個單獨的模板?
模板驗證是針對區域中可用的資源完成的。 由於DAX目前在ap-southeast-1中不可用,因此AWS :: DAX :: Cluster資源將在那里驗證失敗。 關於如何完成這項工作,我有幾點建議:
Fn:Equals: [“DaxClusterName”, “none”]
創建條件Fn:Equals: [“DaxClusterName”, “none”]
。 然后使用條件來確定此模板中的資源是否可以依賴於群集。 目前,有一種變通方法可以將像Transform: AWS::Serverless-2016-10-31
這樣的Transform: AWS::Serverless-2016-10-31
添加到您的模板中
雖然這可能需要添加CAPABILITY_AUTO_EXPAND
功能,但“使用此轉換不會產生任何費用” ,如果您沒有任何AWS::Serverless
資源,它應該不會影響您的模板,並且您應該已經在使用此轉換,如果你有AWS::Serverless
資源
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.