我正在编写一些自动化的工具来创建我的AWS生产环境的副本,以供开发人员和质量检查人员进行测试。我正在使用bash脚本通过AWS Cloudformation模板调用AWS CLI。
当我使用Cloudformation进行此操作时,它将创建数据库,然后RDS花费7个小时用“将修改应用于分配的存储”日志对其进行修改,直到CloudFormation失败并显示“ DBInstance testaedb不稳定”并开始回滚时,也会失败。
如果我使用相同的参数从控制台创建相同的RDS实例,则大约需要7分钟才能创建RDS实例并激活它。我今天早上才进行测试,如果使用CLI工具创建它,情况也是如此。
这是CloudFormation模板代码段:
AccountsRds:
Type: 'AWS::RDS::DBInstance'
Properties:
DBInstanceIdentifier: !Sub '${EnvName}aedb'
DBSnapshotIdentifier: !Sub '${AccountsSnapshot}'
DBInstanceClass: 'db.t3.xlarge'
DBSubnetGroupName:
Fn::ImportValue:
!Sub '${NetworkStackName}-RdsSubnetGroupId'
AutoMinorVersionUpgrade: 'true'
PubliclyAccessible: 'false'
VPCSecurityGroups:
- !GetAtt AccountsRdsSecurityGroup.GroupId
这是CLI片段:
aws rds restore-db-instance-from-db-snapshot \
--region ${AE_REGION} \
--db-instance-identifier "${AE_ENV_NAME}"aedb \
--db-snapshot-identifier ${AE_DB_SNAPSHOT_ID} \
--db-instance-class db.t3.xlarge \
--db-subnet-group-name ${AE_DB_SUBNET_GROUP_NAME} \
--no-publicly-accessible \
--auto-minor-version-upgrade \
--vpc-security-group-ids ${AE_DB_SECURITY_GROUP}
我希望CloudFormtation和CLI花费相同的时间。知道为什么Cloudformation需要7个小时吗?我的数据库不是那么大,只有250GB。
答案 0 :(得分:0)
AWS支持人员已确定了问题的根本原因。根据他们的说法,RDS实例的默认StorageType
随配置方式的不同而不同:
gp2
gp2
因此,它失败了,因为磁盘的性能不足以处理快照还原。
解决方案是将StorageType
简单地包含在Cloudformation模板中,并且其配置速度与CLI命令类似。