从控制台或CLI还原RDS快照是否比cloudformation更快?

时间:2019-07-09 13:01:50

标签: amazon-web-services amazon-cloudformation aws-cli

我正在编写一些自动化的工具来创建我的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。

1 个答案:

答案 0 :(得分:0)

AWS支持人员已确定了问题的根本原因。根据他们的说法,RDS实例的默认StorageType随配置方式的不同而不同:

  • CLI命令:gp2
  • Web控制台:gp2
  • CloudFormation:磁盘

因此,它失败了,因为磁盘的性能不足以处理快照还原。

解决方案是将StorageType简单地包含在Cloudformation模板中,并且其配置速度与CLI命令类似。