我正在尝试使用下面的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模板时,更奇怪的是,它运行正常!欧盟爱尔兰地区和极光有什么问题吗?
答案 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的“删除”政策。
我们已经纠正了导致这种情况的测试中的差距, 并将继续改进我们的测试,以防止再次发生。我们 认识到保持现有行为对我们至关重要 我们的客户,并对此造成的不便表示道歉。