DeletionPolicy:无法为群集实例指定快照,请改为使用群集上的删除策略

时间:2017-07-15 10:22:01

标签: amazon-web-services amazon-cloudformation amazon-rds amazon-rds-aurora

我正在尝试使用下面的cloudoformation模板创建RDS集群和极光实例:

{
      "AWSTemplateFormatVersion" : "2010-09-09",

  "Description" : "example setup",

  "Parameters" : {
    "DBInstanceIdentifier" : {
      "Type": "String",
      "Description": "Name for the DB instance."
    },
    "DBUser" : {
      "Type": "String",
      "Description": "Master user"
    },
    "DBPassword" : {
      "Type": "String",
      "Description": "Pass"
    },
    "DBModel" : {
      "Type": "String",
      "Description": "Instance model to be used for the DB."
    }
  },


  "Resources": {
    "RDSCluster": {
      "Type": "AWS::RDS::DBCluster",
      "Properties": {
        "MasterUsername": { "Ref" : "DBUser" },
        "MasterUserPassword": { "Ref" : "DBPassword" },
        "Engine": "aurora",
        "DBClusterParameterGroupName": "default.aurora5.6",
        "VpcSecurityGroupIds": [{"Fn::GetAtt" : [ "DBFromSiteSecurityGroup" , "GroupId" ]}]
      }
    },
    "AuroraInstance": {
      "Type": "AWS::RDS::DBInstance",
      "Properties": {
        "DBInstanceIdentifier": { "Ref" : "DBInstanceIdentifier" },
        "DBParameterGroupName": "default.aurora5.6",
        "Engine": "aurora",
        "DBClusterIdentifier": {
          "Ref": "RDSCluster"
        },
        "PubliclyAccessible": "true",
        "DBInstanceClass": { "Ref" : "DBModel" }
      }
    },

    "DBFromSiteSecurityGroup" : {
       "Type" : "AWS::EC2::SecurityGroup",
       "Properties" : {
          "GroupDescription" : "Enable MySQL",
          "SecurityGroupIngress" : [
             {"IpProtocol" : "tcp", "FromPort" : "3306", "ToPort" : "3306", "CidrIp" : "195.171.102.98/32"}
          ]
       }
    },
     "DBFromSiteSecurityGroupIngress1" : {
         "Type" : "AWS::EC2::SecurityGroupIngress",
         "Properties" : {
             "GroupName" : { "Ref" : "DBFromSiteSecurityGroup" },
             "IpProtocol" : "tcp",
             "ToPort" : "3306",
             "FromPort" : "3306",
             "SourceSecurityGroupName" : { "Ref" : "DBFromSiteSecurityGroup" }
         }
     }
  }
}

我传递的db_model参数是“db.t2.medium”。群集在云信息控制台中成功创建,但AWS :: RDS :: DBInstance创建失败,并显示以下错误

"DeletionPolicy:Snapshot cannot be specified for a cluster instance, use deletion policy on the cluster instead." 

当我尝试在欧洲伦敦地区运行相同的CF模板时,更奇怪的是,它运行正常!欧盟爱尔兰地区和极光有什么问题吗?

2 个答案:

答案 0 :(得分:8)

来自AWS Support

  

这是一个已知问题,其他客户也已报告过。服务团队目前正在为这个问题进行修复,但是没有ETA可以推送它。

     

同时解决方法是在数据库实例资源定义中指定无法创建的DeletionPolicy,其值为'删除'。 [1]

     

以下示例:

"Resources": { 
    "Database1": { 
        "DeletionPolicy": "Delete", 
        "Properties": {...}, 
        "Type": "AWS::RDS::DBInstance" 
    } 
}
  

参考文献:   [1] DeletionPolicy - http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html#w2ab2c19c23c11c17

答案 1 :(得分:1)

来自AWS Support的更新:

  

使用AWS在数据库群集中创建Amazon Aurora DBInstance时   CloudFormation,CloudFormation应用默认的删除策略   如果未指定删除策略,则“删除”。如果删除政策   为Amazon Aurora DBInstance指定了“Snapshot”,   CloudFormation返回错误,因为数据库群集中的实例   无法单独拍摄;快照必须在   数据库集群级别。

     

作为最近部署的一部分,我们无意中更改了默认设置   Amazon Aurora DBInstance到“Snapshot”的删除策略。这个   导致我们的模板验证失败。为了解决这个问题,CloudFormation   正在恢复Amazon Aurora的默认DeletionPolicy值   DBInstances为“删除”。此修复程序将于7月21日完成,   2017.在完全推出此修复程序之前,客户可以通过指定删除显式覆盖我们不正确的默认值   Amazon Aurora DBInstances的“删除”政策。

     

我们已经纠正了导致这种情况的测试中的差距,   并将继续改进我们的测试,以防止再次发生。我们   认识到保持现有行为对我们至关重要   我们的客户,并对此造成的不便表示道歉。