gpt4 book ai didi

amazon-web-services - AWS CloudFormation 条件模板验证

转载 作者:行者123 更新时间:2023-12-02 02:57:48 24 4
gpt4 key购买 nike

我有一个模板,可以使用 DynamoDB 和 DAX 为多个区域(例如 us-east-1 和 ap-southeast-1)创建 CloudFormation。虽然适用于 us-east-1,但此模板不适用于 ap-southeast-1,因为 DAX 尚不适用于该区域。

我预计这可以使用 Conditions 来完成,这样对于一个区域 (us-east-1),我将同时拥有 DynamoDB 和 DAX,而对于另一个区域 (ap-southeast-1),我将拥有 DynamoDB 和 DAX - 仅 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:
.....

但不幸的是我收到一个错误:

An error occurred (ValidationError) when calling the ValidateTemplate operation: Template format error: Unrecognized resource types: [AWS::DAX::Cluster]

是否可以配置这样的模板,或者应该创建一个单独的模板?

最佳答案

模板验证是根据区域中的可用资源进行的。由于 DAX 目前在 ap-southeast-1 中不可用,因此 AWS::DAX::Cluster 资源将无法在该处进行验证。对于如何实现这项工作,我有一些建议:

  • 预处理您的模板以去除当前不受支持的区域中的 DAX 资源
  • 将您的模板拆分为三个单独的模板,我将其称为 DAXNoDAX其他:
    • 在支持 DAX 的区域中,使用包含集群的 DAX 模板创建堆栈,并将集群的名称导出为 ClusterName 的值。
    • 在不支持 DAX 的区域中,使用 NoDAX 模板创建堆栈,并将 none 导出为 ClusterName 的值。由于每个模板都需要一个资源,因此请包含一个 AWS::CloudFormation::WaitConditionHandle 作为该模板的唯一资源。
    • 在所有区域中,使用导入 DaxClusterNameOther 模板创建堆栈,并根据 Fn:Equals: [“DaxClusterName”, “无”]。然后使用条件判断该模板中的资源是否可以依赖于集群。

关于amazon-web-services - AWS CloudFormation 条件模板验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48228751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com