如何通过AWS CDK获取Aurora RDS集群的ResourceID
你可以直接通过AWS CDK中aws-rds模块的DatabaseCluster实例的clusterResourceIdentifier属性获取Aurora集群的Resource ID,该属性返回的值正好对应构造IAM策略所需的DbClusterResourceId。
完整使用示例(TypeScript)
1. 创建Aurora集群
注意需要显式开启IAM身份验证,这是使用RDS IAM认证功能的前提:
import * as rds from 'aws-cdk-lib/aws-rds'; import * as iam from 'aws-cdk-lib/aws-iam'; import { Stack, StackProps } from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class AuroraStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); const auroraCluster = new rds.DatabaseCluster(this, 'AuroraCluster', { engine: rds.DatabaseClusterEngine.auroraMysql({ version: rds.AuroraMysqlEngineVersion.VER_3_03_0 }), // 其余集群配置:实例规格、VPC、安全组、凭据等省略 iamAuthentication: true, });
2. 构造RDS IAM认证托管策略
直接引用集群的clusterResourceIdentifier属性拼接资源ARN即可,CDK会自动处理依赖顺序,确保集群创建完成后再生成策略:
const rdsIamAuthPolicy = new iam.ManagedPolicy(this, 'RdsIamAuthPolicy', { statements: [ new iam.PolicyStatement({ effect: iam.Effect.ALLOW, actions: ['rds-db:connect'], resources: [ `arn:aws:rds-db:${this.region}:${this.account}:dbuser:${auroraCluster.clusterResourceIdentifier}/<你的数据库用户名>`, ], }), ], }); } }
其他说明
- 如果你使用Python版CDK,对应的属性名为
cluster_resource_identifier,用法逻辑完全一致。 - 如果你使用的是CDK L1层底层构造
CfnDBCluster,可以通过attrDbClusterResourceId属性获取该资源ID。
内容的提问来源于stack exchange,提问作者andreim
相关产品推荐
相关产品推荐

