如何从 InstanceClass 枚举映射到实际的 AWS 实例类型

How to map from InstanceClass enum to actual AWS instance types

我正在尝试使用 AWS CDK docdb 程序包 (Java) 部署 DocumentDB 实例,但我不断收到此错误:

Invalid DB Instance class: db.d2.large (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterValue; Request
ID: 41494b4b-d14f-46ff-b077-9ee73aad515f; Proxy: null)

我知道,例如,r5.large 会起作用,但我找不到从 InstanceType 枚举值映射的方法(STANDARDxSTORAGE2等)到实际的 AWS 实例类型;它似乎没有在任何地方记录,并且示例(在 TypeScript 中)愉快地使用 instanceType: 'r5.large' 之类的东西并继续。

这是我的代码,为了完整性:

    DatabaseCluster dbCluster = DatabaseCluster.Builder.create(scope, "ApiDocDb")
        .dbClusterName(dataProps.getTableName())
        .masterUser(Login.builder()
            .username(masterUsername)
            .password(SecretValue.plainText(masterPwd))
            .build())
        .instanceType(InstanceType.of(InstanceClass.STORAGE2, InstanceSize.LARGE))
        .vpc(Vpc.Builder.create(scope, "DocDB-VPC")
            .cidr("10.2.0.0/16")
            .build())
        .vpcSubnets(SubnetSelection.builder().subnetType(SubnetType.PUBLIC).build())
        .build();

通过反复试验(大部分)我终于得出了这个:

        .instanceType(InstanceType.of(InstanceClass.MEMORY5, InstanceSize.LARGE))

这似乎有效。 来自 this page 的一些帮助 - 与以下事实相互关联:在控制台中,如果尝试添加实例,则下拉列表中只允许 r5

我只希望 AWS 能更好地记录枚举。

对于其他解决相同问题的人,我创建了一个 gist 1 所有当前可用的枚举键(从 CDK v2.12.0 开始)映射到它们相应的实例类型。

请记住,每个实例类型都有一组对应的实例大小 2