如何通过Go Lambda修改Aurora MySQL Serverless 2的最小ACUS?
解决Go SDK V2修改Aurora MySQL Serverless 2最小ACUS的参数错误问题
Aurora Serverless v2的ACU配置逻辑和v1不同,核心是要使用专属的参数结构体,以下是可行的实现方案:
正确实现方式
- 导入Go SDK V2的RDS相关包:
import ( "context" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/rds" "github.com/aws/aws-sdk-go-v2/service/rds/types" ) - 构造修改请求时,必须使用
ServerlessV2ScalingConfiguration字段(而非v1的ScalingConfiguration):func updateServerlessMinACU(rdsClient *rds.Client, clusterID string, minACU float64) error { modifyInput := &rds.ModifyDBClusterInput{ DBClusterIdentifier: aws.String(clusterID), ServerlessV2ScalingConfiguration: &types.ServerlessV2ScalingConfiguration{ MinCapacity: aws.Float64(minACU), // 如需同步修改最大ACU,可添加MaxCapacity字段 // MaxCapacity: aws.Float64(64.0), }, ApplyImmediately: aws.Bool(true), // 设置为true立即生效 } _, err := rdsClient.ModifyDBCluster(context.TODO(), modifyInput) return err }
参数错误排查要点
- 不要混用
ScalingConfiguration字段:该字段仅适用于Serverless v1集群,v2集群使用会直接触发参数错误。 - 严格遵守MinCapacity范围:Serverless v2的最小ACU必须在0.5~128之间,且为0.5的整数倍(如0.5、1、1.5等),超出范围或非合法步长会触发校验失败。
- 确保
DBClusterIdentifier不为空:必须传入集群的正确标识符(名称或ARN)。
Lambda权限配置
Lambda执行角色需添加rds:ModifyDBCluster权限,策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rds:ModifyDBCluster", "Resource": "arn:aws:rds:你的区域:账号ID:cluster:目标集群标识符" } ] }
内容的提问来源于stack exchange,提问作者Elba Nanero
相关产品推荐
相关产品推荐

