Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS CloudFormation条件模板验证_Amazon Web Services_Amazon Cloudformation_Amazon Dynamodb Dax - Fatal编程技术网

Amazon web services AWS CloudFormation条件模板验证

Amazon web services AWS CloudFormation条件模板验证,amazon-web-services,amazon-cloudformation,amazon-dynamodb-dax,Amazon Web Services,Amazon Cloudformation,Amazon Dynamodb Dax,我有一个模板,可以使用DynamoDB和DAX为多个地区创建云结构,例如us-east-1和ap-Southwest-1。 在为us-east-1工作时,此模板不适用于ap-Southast-1,因为该地区尚未提供DAX 我希望这可以通过使用条件来实现,因此对于一个地区(美国东部-1),我将拥有DynamoDB和DAX,而对于另一个地区(ap-Southwest-1),只有DynamoDB: Conditions: isDAXAvailable: !Not [!Equals [ !Ref

我有一个模板,可以使用DynamoDB和DAX为多个地区创建云结构,例如us-east-1和ap-Southwest-1。 在为us-east-1工作时,此模板不适用于ap-Southast-1,因为该地区尚未提供DAX

我希望这可以通过使用
条件来实现,因此对于一个地区(美国东部-1),我将拥有DynamoDB和DAX,而对于另一个地区(ap-Southwest-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::群集]


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

模板验证是针对区域内可用的资源进行的。由于DAX当前在ap-southeast-1中不可用,因此AWS::DAX::Cluster资源将在那里验证失败。我有几点建议可以让这项工作顺利进行:

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

对于存在相同问题的任何人:不幸的是,我找不到任何其他解决方案,只能为其他地区创建一个单独的模板。DAX现在在ap-Southwest-1中可用,因此,如果这是唯一一个给您带来问题的地区,它应该不会再出现了。