Aurora PostgreSQL实例CloudFormation部署:gp3与IOPS配置报错
问题描述
我编写了如下CloudFormation代码:
DatabasePrimaryInstanceAurora0: Type: AWS::RDS::DBInstance Condition: IsEnvPRO Properties: Engine: aurora-postgresql DBClusterIdentifier: !Ref Aurora0 DBInstanceClass: db.t4g.medium DBInstanceIdentifier: postgres0-0 DBSubnetGroupName: rds1 StorageType: gp3
根据AWS官方文档,该配置应该可行,但CloudFormation返回以下错误:
Resource handler returned message: "Invalid storage type: gp3 (Service: Rds, Status Code: 400, Request ID: 6b75124d-2e57-47fd-bbf3-54ab4f217a82)" (RequestToken: f72ffede-b654-a065-0c5e-cf91c05473d9, HandlerErrorCode: InvalidRequest)
参考建议添加了Iops: 3000配置后,又出现新错误:
Resource handler returned message: "Specifying IOPs is not allowed for this engine (Service: Rds, Status Code: 400, Request ID: 2a558dd8-9e6c-47c8-bef0-af674f05760b)" (RequestToken: 53f0e15e-53b7-d9f5-4817-9d2dcc34bef3, HandlerErrorCode: InvalidRequest)
我的引擎配置如下:
Engine: aurora-postgresql EngineMode: provisioned
请问该如何解决这一问题?
解决方案
问题核心在于Aurora PostgreSQL的存储配置逻辑:
- Aurora PostgreSQL(provisioned模式)的存储类型属于集群级属性,必须在
AWS::RDS::DBCluster资源中定义,而非AWS::RDS::DBInstance节点上。你之前把StorageType: gp3放在DBInstance层级,这是错误的——集群节点共享集群存储,节点本身不单独设置存储类型。 - Aurora PostgreSQL的gp3存储无需手动指定
Iops,AWS会根据集群存储容量自动分配IOPS,手动设置会触发不支持的报错。
修正后的配置示例:
- 在DBCluster资源中添加存储类型配置:
Aurora0: Type: AWS::RDS::DBCluster Condition: IsEnvPRO Properties: Engine: aurora-postgresql EngineMode: provisioned StorageType: gp3 # 正确的配置位置 # 其他必填集群属性(如MasterUsername、MasterUserPassword等)
- 移除DBInstance中的
StorageType和Iops参数:
DatabasePrimaryInstanceAurora0: Type: AWS::RDS::DBInstance Condition: IsEnvPRO Properties: Engine: aurora-postgresql DBClusterIdentifier: !Ref Aurora0 DBInstanceClass: db.t4g.medium DBInstanceIdentifier: postgres0-0 DBSubnetGroupName: rds1 # 移除StorageType和Iops配置
内容的提问来源于stack exchange,提问作者icalvete
相关产品推荐
相关产品推荐

