@aws-cdk/aws-rds

中文文档
1.204.0发布于 2023/06/20Apache-2.0TypeScriptCommonJS近 30 天下载 8.5万

AWS:RDS 的 CDK 构造库

此软件包已被标记为弃用

AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html

中文使用文档
文档目录19 节
  1. 启动分组数据库
  2. 启动实例数据库
  3. 建立公众无障碍环境
  4. 事件
  5. 登录证书
  6. 快照证书
  7. 连接中
  8. 证书的轮换
  9. IAM 认证
  10. Kerberos 认证
  11. 计量
  12. 启用 S3 集成
  13. 创建数据库代理
  14. 导出日志
  15. 选项组
  16. 参数组
  17. 无服务器
  18. 数据 API
  19. 默认 VPC

亚马逊关系数据库服务构建库


End-of-Support

AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.

关于如何移徙的更多信息,请参见: 移动到 AWS CDK v2 指南。 。 。 .


import * as rds from '@aws-cdk/aws-rds';

启动分组数据库

要建立一个集群数据库(如Aurora),定义一个 DatabaseCluster您必须 总是在VPC中启动一个数据库. 使用 vpcSubnets 属性到控件是否 您的情况将被单独或公开启动 :

declare const vpc: ec2.Vpc;
const cluster = new rds.DatabaseCluster(this, 'Database', {
  engine: rds.DatabaseClusterEngine.auroraMysql({ version: rds.AuroraMysqlEngineVersion.VER_2_08_1 }),
  credentials: rds.Credentials.fromGeneratedSecret('clusteradmin'), // Optional - will default to 'admin' username and generated password
  instanceProps: {
    // optional , defaults to t3.medium
    instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.SMALL),
    vpcSubnets: {
      subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
    },
    vpc,
  },
});

如果没有一个常数,你想要使用的确切版本, 所有人,我们.. Version 类有静态 of 用于创建任意版本的方法.

const customEngineVersion = rds.AuroraMysqlEngineVersion.of('5.7.mysql_aurora.2.08.1');

默认情况下,主密码会生成并存储在AWS Secrets管理器中,并带有自动生成的描述.

您的集群默认为空 。 要在构建时添加默认数据库,请指定 defaultDatabaseName 属性.

使用 DatabaseClusterFromSnapshot 从快照创建集群:

declare const vpc: ec2.Vpc;
new rds.DatabaseClusterFromSnapshot(this, 'Database', {
  engine: rds.DatabaseClusterEngine.aurora({ version: rds.AuroraEngineVersion.VER_1_22_2 }),
  instanceProps: {
    vpc,
  },
  snapshotIdentifier: 'mySnapshot',
});

启动实例数据库

要建立实例数据库,请定义 DatabaseInstance您必须 总是在VPC中启动一个数据库. 使用 vpcSubnets 属性到控件是否 您的情况将被单独或公开启动 :

declare const vpc: ec2.Vpc;
const instance = new rds.DatabaseInstance(this, 'Instance', {
  engine: rds.DatabaseInstanceEngine.oracleSe2({ version: rds.OracleEngineVersion.VER_19_0_0_0_2020_04_R1 }),
  // optional, defaults to m5.large
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE3, ec2.InstanceSize.SMALL),
  credentials: rds.Credentials.fromGeneratedSecret('syscdk'), // Optional - will default to 'admin' username and generated password
  vpc,
  vpcSubnets: {
    subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
  }
});

如果没有一个常数 准确的引擎版本,你想使用, 所有人,我们.. Version 类有静态 of 用于创建任意版本的方法.

const customEngineVersion = rds.OracleEngineVersion.of('19.0.0.0.ru-2020-04.rur-2020-04.r1', '19');

默认情况下,主密码将生成并存储在 AWS 保密管理器中.

要使用 RDS 的存储自动缩放选项, 您可以指定最大分配的存储 . 这是RDS可以自动缩放存储的上限. 更多信息可以找到 这里 最大存储配置示例 :

declare const vpc: ec2.Vpc;
const instance = new rds.DatabaseInstance(this, 'Instance', {
  engine: rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_12_3 }),
  // optional, defaults to m5.large
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.SMALL),
  vpc,
  maxAllocatedStorage: 200,
});

使用 DatabaseInstanceFromSnapshot 财务报告和审定财务报表 DatabaseInstanceReadReplica 从快照创建实例或 来源数据库:

declare const vpc: ec2.Vpc;
new rds.DatabaseInstanceFromSnapshot(this, 'Instance', {
  snapshotIdentifier: 'my-snapshot',
  engine: rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_12_3 }),
  // optional, defaults to m5.large
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.LARGE),
  vpc,
});

declare const sourceInstance: rds.DatabaseInstance;
new rds.DatabaseInstanceReadReplica(this, 'ReadReplica', {
  sourceDatabaseInstance: sourceInstance,
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.LARGE),
  vpc,
});

仅支持MySQL和MariaDB自动备份已读复制实例. 默认, 自动备份为已读复制所禁用,只能启用(使用) backupRetention(中文(简体) ) 如果同时启用源实例.

创建带有选项和参数组的“ 生产” Oracle 数据库实例 :

建立生产甲骨文实例的例子

建立公众无障碍环境

您可以使用 publiclyAccessible 属性. 如果您指定 true,它创建了一个具有可公开解析的DNS名称的实例,它解决了一个公开的IP地址. 如果您指定 false,它创建了一个带有DNS名称的内部实例,可以解决一个私人IP地址. 默认值取决于 vpcSubnets。 。 。 . 会的 true 若为 vpcSubnets 实值 subnetType: SubnetType.PUBLIC, (中文(简体) ), false 否则.

declare const vpc: ec2.Vpc;
// Setting public accessibility for DB instance
new rds.DatabaseInstance(this, 'Instance', {
  engine: rds.DatabaseInstanceEngine.mysql({
    version: rds.MysqlEngineVersion.VER_8_0_19,
  }),
  vpc,
  vpcSubnets: {
    subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
  },
  publiclyAccessible: true,
});

// Setting public accessibility for DB cluster
new rds.DatabaseCluster(this, 'DatabaseCluster', {
  engine: rds.DatabaseClusterEngine.AURORA,
  instanceProps: {
    vpc,
    vpcSubnets: {
      subnetType: ec2.SubnetType.PRIVATE_WITH_NAT,
    },
    publiclyAccessible: true,
  },
});

事件

要定义数据库实例的 Amazon Cloud Watch 事件规则,请使用 onEvent 方法 :

declare const instance: rds.DatabaseInstance;
declare const fn: lambda.Function;
const rule = instance.onEvent('InstanceEvent', { target: new targets.LambdaFunction(fn) });

登录证书

默认情况下,数据库实例和集群(除 DatabaseInstanceFromSnapshot 财务报告和审定财务报表 ServerlessClusterFromSnapshot将拥有 admin 使用自动生成的密码. 可以为管理员用户指定一个替代用户名(和密码),而不是默认.

以下例子使用了 DatabaseInstance,但同样的用法适用于 DatabaseCluster。 。 。 .

declare const vpc: ec2.Vpc;
const engine = rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_12_3 });
new rds.DatabaseInstance(this, 'InstanceWithUsername', {
  engine,
  vpc,
  credentials: rds.Credentials.fromGeneratedSecret('postgres'), // Creates an admin user of postgres with a generated password
});

new rds.DatabaseInstance(this, 'InstanceWithUsernameAndPassword', {
  engine,
  vpc,
  credentials: rds.Credentials.fromPassword('postgres', SecretValue.ssmSecure('/dbPassword', '1')), // Use password from SSM
});

const mySecret = secretsmanager.Secret.fromSecretName(this, 'DBSecret', 'myDBLoginInfo');
new rds.DatabaseInstance(this, 'InstanceWithSecretLogin', {
  engine,
  vpc,
  credentials: rds.Credentials.fromSecret(mySecret), // Get both username and password from existing secret
});

由 fromGeneratedSecret() 可定制 :

declare const vpc: ec2.Vpc;
const engine = rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_12_3 });
const myKey = new kms.Key(this, 'MyKey');

new rds.DatabaseInstance(this, 'InstanceWithCustomizedSecret', {
  engine,
  vpc,
  credentials: rds.Credentials.fromGeneratedSecret('postgres', {
    secretName: 'my-cool-name',
    encryptionKey: myKey,
    excludeCharacters: '!&*^#@()',
    replicaRegions: [{ region: 'eu-west-1' }, { region: 'eu-west-2' }],
  }),
});

快照证书

如上所指出,数据库创建于 DatabaseInstanceFromSnapshot 或者说 ServerlessClusterFromSnapshot 默认情况下不会创建用户和自动生成的密码,因为无法为快照更改主用户名. 相反,他们会使用快照中现有的用户名和密码. 您仍然可以生成新的密码 - 生成一个类似于其它构造的秘密, 通过证书 fromGeneratedSecret() 或者说 fromGeneratedPassword()。 。 。 .

declare const vpc: ec2.Vpc;
const engine = rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_12_3 });
const myKey = new kms.Key(this, 'MyKey');

new rds.DatabaseInstanceFromSnapshot(this, 'InstanceFromSnapshotWithCustomizedSecret', {
  engine,
  vpc,
  snapshotIdentifier: 'mySnapshot',
  credentials: rds.SnapshotCredentials.fromGeneratedSecret('username', {
    encryptionKey: myKey,
    excludeCharacters: '!&*^#@()',
    replicaRegions: [{ region: 'eu-west-1' }, { region: 'eu-west-2' }],
  }),
});

连接中

要控制谁可以访问集群或实例,请使用 .connections 属性。 RDS数据库有: 默认端口,所以不需要指定端口 :

declare const cluster: rds.DatabaseCluster;
cluster.connections.allowFromAnyIpv4(ec2.Port.allTraffic(), 'Open to the world');

访问您数据库集群的终点将作为 .clusterEndpoint 财务报告和审定财务报表 .readerEndpoint 属性 :

declare const cluster: rds.DatabaseCluster;
const writeAddress = cluster.clusterEndpoint.socketAddress;   // "HOSTNAME:PORT"

例如,数据库:

declare const instance: rds.DatabaseInstance;
const address = instance.instanceEndpoint.socketAddress;   // "HOSTNAME:PORT"

证书的轮换

当主密码生成并存储在 AWS 秘密管理器中时,可以自动旋转:

import * as cdk from '@aws-cdk/core';

declare const instance: rds.DatabaseInstance;
instance.addRotationSingleUser({
  automaticallyAfter: cdk.Duration.days(7), // defaults to 30 days
  excludeCharacters: '!@#$%^&*', // defaults to the set " %+~`#$&*()|[]{}:;<>?!'/@\"\\"
});

为集群设置主密码旋转的例子

还有多种用户轮换计划:

declare const instance: rds.DatabaseInstance;
declare const myImportedSecret: rds.DatabaseSecret;
instance.addRotationMultiUser('MyUser', {
  secret: myImportedSecret, // This secret must have the `masterarn` key
});

也可以与实例/集群一起创建用户证书并加入旋转:

declare const instance: rds.DatabaseInstance;
const myUserSecret = new rds.DatabaseSecret(this, 'MyUserSecret', {
  username: 'myuser',
  secretName: 'my-user-secret', // optional, defaults to a CloudFormation-generated name
  masterSecret: instance.secret,
  excludeCharacters: '{}[]()\'"/\\', // defaults to the set " %+~`#$&*()|[]{}:;<>?!'/@\"\\"
});
const myUserSecretAttached = myUserSecret.attach(instance); // Adds DB connections information in the secret

instance.addRotationMultiUser('MyUser', { // Add rotation using the multi user scheme
  secret: myUserSecretAttached,
});

说明:这个用户必须使用主证书在数据库中手动创建. 一旦该用户存在, 旋转将立即开始 .

秘密旋转需要访问"秘密管理者API". 这可以通过 互联网连接(通过NAT)或带有VPC接口端点. 默认情况下, 旋转 Lambda 函数 与实例/集群在同一子网中部署。 如果无法从 这些子网或使用默认 API 端点,使用 vpcSubnets 和(或) endpoint 选项:

declare const instance: rds.DatabaseInstance;
declare const myEndpoint: ec2.InterfaceVpcEndpoint;

instance.addRotationSingleUser({
  vpcSubnets: { subnetType: ec2.SubnetType.PRIVATE_WITH_NAT }, // Place rotation Lambda in private subnets
  endpoint: myEndpoint, // Use VPC interface endpoint
});

另见 @aws-cdk/aws-机密管理员 (c) 现有集群/企业的证书轮换.

IAM 认证

也可以使用 AWS 身份和访问管理(IAM) 数据库认证来认证数据库实例; 见 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html 互联网档案馆的存檔,存档日期2014-12-22 更多信息 以及支持的版本和限制清单.

说明数字 : grantConnect() 目前不工作 - 见 此 GitHub 问题。 。 。 .

以下实例显示允许对数据库实例进行IAM认证,并允许连接访问IAM角色.

declare const vpc: ec2.Vpc;
const instance = new rds.DatabaseInstance(this, 'Instance', {
  engine: rds.DatabaseInstanceEngine.mysql({ version: rds.MysqlEngineVersion.VER_8_0_19 }),
  vpc,
  iamAuthentication: true, // Optional - will be automatically set if you call grantConnect().
});
const role = new iam.Role(this, 'DBRole', { assumedBy: new iam.AccountPrincipal(this.account) });
instance.grantConnect(role); // Grant the role connection access to the DB.

以下例子显示, RDS 代理服务器对一个IAM角色的连接访问.

declare const vpc: ec2.Vpc;
const cluster = new rds.DatabaseCluster(this, 'Database', {
  engine: rds.DatabaseClusterEngine.AURORA,
  instanceProps: { vpc },
});

const proxy = new rds.DatabaseProxy(this, 'Proxy', {
  proxyTarget: rds.ProxyTarget.fromCluster(cluster),
  secrets: [cluster.secret!],
  vpc,
});

const role = new iam.Role(this, 'DBProxyRole', { assumedBy: new iam.AccountPrincipal(this.account) });
proxy.grantConnect(role, 'admin'); // Grant the role connection access to the DB Proxy for database user 'admin'.

说明: 除了上述设置之外,还需要创建一个数据库用户来支持IAM auth. 见 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.DBcounts.html 互联网档案馆的存檔,存档日期2013-12-21 用于设置指令.

Kerberos 认证

也可以使用 Kerberos 认证到使用 AWS 管理 Microsoft AD 进行认证的数据库实例; 见 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-autentication.html 互联网档案馆的存檔,存档日期2014-12-21 更多信息 以及支持的版本和限制清单.

以下示例显示对数据库实例的允许域支持和创建IAM访问功能 目录服务.

declare const vpc: ec2.Vpc;
const role = new iam.Role(this, 'RDSDirectoryServicesRole', {
  assumedBy: new iam.ServicePrincipal('rds.amazonaws.com'),
  managedPolicies: [
    iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonRDSDirectoryServiceAccess'),
  ],
});
const instance = new rds.DatabaseInstance(this, 'Instance', {
  engine: rds.DatabaseInstanceEngine.mysql({ version: rds.MysqlEngineVersion.VER_8_0_19 }),
  vpc,
  domain: 'd-????????', // The ID of the domain for the instance to join.
  domainRole: role, // Optional - will be create automatically if not provided.
});

说明: 除以上设置外, 您还需要确保数据库实例具有网络连接 到域控制器。 这包括允许跨VPC的交通,如果在不同的VPC中,并设置 允许数据库实例和域控制器之间的通信. 配置后,请查看 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-autentication.html 互联网档案馆的存檔,存档日期2014-12-21 详情 用于每个可用的数据库引擎的用户配置.

计量

数据库实例和集群都暴露了度量衡(cloudwatch.Metric:

// The number of database connections in use (average over 5 minutes)
declare const instance: rds.DatabaseInstance;
const dbConnections = instance.metricDatabaseConnections();

// Average CPU utilization over 5 minutes
declare const cluster: rds.DatabaseCluster;
const cpuUtilization = cluster.metricCPUUtilization();

// The average amount of time taken per disk I/O operation (average over 1 minute)
const readLatency = instance.metric('ReadLatency', { statistic: 'Average', period: Duration.seconds(60) });

启用 S3 集成

S3桶中的数据可以使用SQL查询导入或从某些数据库引擎中导出. 启用此功能 函数,设置 s3ImportBuckets 财务报告和审定财务报表 s3ExportBuckets 用于导入和导出的属性。 何时 配置, CDK 自动创建并配置 IAM 角色 . 此外 s3ImportRole 财务报告和审定财务报表 s3ExportRole 属性可用于直接设置此角色.

您可以在此读取更多关于将数据加载到(或从) S3 的数据 :

  • 奥罗拉·迈斯克 导入 财务报告和审定财务报表 导出。 。 。 .
  • 奥罗拉·波斯格雷斯克 导入 财务报告和审定财务报表 导出。 。 。 .
  • 微软 SQL 服务器 - 进出口
  • 邮递SQL - 导入 财务报告和审定财务报表 导出
  • 预言 进出口

以下片段设置一个数据库集群,其中包含不同S3桶的数据被导入和输出 -

import * as s3 from '@aws-cdk/aws-s3';

declare const vpc: ec2.Vpc;
const importBucket = new s3.Bucket(this, 'importbucket');
const exportBucket = new s3.Bucket(this, 'exportbucket');
new rds.DatabaseCluster(this, 'dbcluster', {
  engine: rds.DatabaseClusterEngine.AURORA,
  instanceProps: {
    vpc,
  },
  s3ImportBuckets: [importBucket],
  s3ExportBuckets: [exportBucket],
});

创建数据库代理

亚马逊 RDS 代理服务器位于应用程序和关系数据库之间,以高效管理 连接数据库,提高应用程序的可扩展性。 学习更多关于 亚马逊 RDS 代理

以下代码配置 RDS 代理服务器 DatabaseInstance。 。 。 .

declare const vpc: ec2.Vpc;
declare const securityGroup: ec2.SecurityGroup;
declare const secrets: secretsmanager.Secret[];
declare const dbInstance: rds.DatabaseInstance;

const proxy = dbInstance.addProxy('proxy', {
    borrowTimeout: Duration.seconds(30),
    maxConnectionsPercent: 50,
    secrets,
    vpc,
});

导出日志

您可以将数据库日志发布到 Amazon Cloud Watch Logs. 有了Cloud Watch日志,你可以对日志数据进行实时分析, 将数据存储在高度耐用存储中,并使用 Cloud Watch 日志代理管理数据。 这两个数据库都可以使用 实例和集群; 可用的日志类型取决于正在使用的数据库类型和引擎.

import * as logs from '@aws-cdk/aws-logs';
declare const myLogsPublishingRole: iam.Role;
declare const vpc: ec2.Vpc;

// Exporting logs from a cluster
const cluster = new rds.DatabaseCluster(this, 'Database', {
  engine: rds.DatabaseClusterEngine.aurora({
    version: rds.AuroraEngineVersion.VER_1_17_9, // different version class for each engine type
  }),
  instanceProps: {
    vpc,
  },
  cloudwatchLogsExports: ['error', 'general', 'slowquery', 'audit'], // Export all available MySQL-based logs
  cloudwatchLogsRetention: logs.RetentionDays.THREE_MONTHS, // Optional - default is to never expire logs
  cloudwatchLogsRetentionRole: myLogsPublishingRole, // Optional - a role will be created if not provided
  // ...
});

// Exporting logs from an instance
const instance = new rds.DatabaseInstance(this, 'Instance', {
  engine: rds.DatabaseInstanceEngine.postgres({
    version: rds.PostgresEngineVersion.VER_12_3,
  }),
  vpc,
  cloudwatchLogsExports: ['postgresql'], // Export the PostgreSQL logs
  // ...
});

选项组

一些 DB 引擎提供了额外的功能,从而更容易管理数据和数据库,并为您的数据库提供额外的安全性. Amazon RDS使用选项组来启用并配置这些特性. 一个选项组可以指定特性,称为选项, 用于特定亚马逊 RDS DB 实例.

declare const vpc: ec2.Vpc;
declare const securityGroup: ec2.SecurityGroup;

new rds.OptionGroup(this, 'Options', {
  engine: rds.DatabaseInstanceEngine.oracleSe2({
    version: rds.OracleEngineVersion.VER_19,
  }),
  configurations: [
    {
      name: 'OEM',
      port: 5500,
      vpc,
      securityGroups: [securityGroup], // Optional - a default group will be created if not provided.
    },
  ],
});

参数组

数据库参数指定数据库的配置方式. 例如,数据库参数可以指定资源的数量,如内存,以分配给数据库. 您通过将您的 DB 实例与参数组连接来管理您的数据库配置 . Amazon RDS定义了带有默认设置的参数组.

您可以为您的集群或实例创建自己的参数组,并将其与您的数据库关联 :

declare const vpc: ec2.Vpc;

const parameterGroup = new rds.ParameterGroup(this, 'ParameterGroup', {
  engine: rds.DatabaseInstanceEngine.sqlServerEe({
    version: rds.SqlServerEngineVersion.VER_11,
  }),
  parameters: {
    locks: '100',
  },
});

new rds.DatabaseInstance(this, 'Database', {
  engine: rds.DatabaseInstanceEngine.SQL_SERVER_EE,
  vpc,
  parameterGroup,
});

指定参数的另一种方法是使用内置字段 parameters 为您创建 RDS 参数组. 如果您不想重复使用不同实例的参数组实例, 您可以使用 :

declare const vpc: ec2.Vpc;

new rds.DatabaseInstance(this, 'Database', {
  engine: rds.DatabaseInstanceEngine.sqlServerEe({ version: rds.SqlServerEngineVersion.VER_11 }),
  vpc,
  parameters: {
    locks: '100',
  },
});

您无法同时指定参数映射和参数组 .

无服务器

Amazon Aurora 无服务器 是对亚马逊的按需自动缩放配置 奥罗拉 数据库将自动启动、关闭和扩展容量 根据您的应用程序需要上下。 它能让你运行数据库 在云中不管理任何数据库实例.

以下示例初始化了一个Aurora Serverless PostgreSql集群. Aurora 无服务器集群可指定缩放属性,用于 根据工作量自动无缝地缩放数据库集群.

declare const vpc: ec2.Vpc;

const cluster = new rds.ServerlessCluster(this, 'AnotherCluster', {
  engine: rds.DatabaseClusterEngine.AURORA_POSTGRESQL,
  parameterGroup: rds.ParameterGroup.fromParameterGroupName(this, 'ParameterGroup', 'default.aurora-postgresql10'),
  vpc,
  scaling: {
    autoPause: Duration.minutes(10), // default is to pause after 5 minutes of idle time
    minCapacity: rds.AuroraCapacityUnit.ACU_8, // default is 2 Aurora capacity units (ACUs)
    maxCapacity: rds.AuroraCapacityUnit.ACU_32, // default is 16 Aurora capacity units (ACUs)
  }
});

Aurora 无服务器集群不支持以下特性:

  • 从 Amazon S3 桶装入数据
  • 将数据保存到 Amazon S3 桶
  • 引用带有 Aurora MySQL 本地函数的 AWS Lambda 函数
  • 奥罗拉复制品
  • 后跟踪
  • 多主集群
  • 数据库克隆
  • IAM 数据库克隆
  • IAM 数据库认证
  • 从 MySQL DB 实例恢复快照
  • 性能透视
  • RDS 代理服务器

更多关于 aurora 无服务器的限制

通过读取 Amazon Aurora 服务器来学习更多使用 文档

使用 ServerlessClusterFromSnapshot 从快照创建无服务器集群 :

declare const vpc: ec2.Vpc;
new rds.ServerlessClusterFromSnapshot(this, 'Cluster', {
  engine: rds.DatabaseClusterEngine.AURORA_MYSQL,
  vpc,
  snapshotIdentifier: 'mySnapshot',
});

数据 API

您可以使用内建数据 API 访问您的 Aurora 服务器无 DB 集群 。 Data API不需要持续连接到 DB 集群. 相反,它提供了一个安全的HTTP端点并和AWS SDKs集成.

以下示例显示给予Lamba函数Data API访问权限.

declare const vpc: ec2.Vpc;

const cluster = new rds.ServerlessCluster(this, 'AnotherCluster', {
  engine: rds.DatabaseClusterEngine.AURORA_MYSQL,
  vpc, // this parameter is optional for serverless Clusters
  enableDataApi: true, // Optional - will be automatically set if you call grantDataApiAccess()
});

declare const code: lambda.Code;
const fn = new lambda.Function(this, 'MyFunction', {
  runtime: lambda.Runtime.NODEJS_14_X,
  handler: 'index.handler',
  code,
  environment: {
    CLUSTER_ARN: cluster.clusterArn,
    SECRET_ARN: cluster.secret!.secretArn,
  },
});
cluster.grantDataApiAccess(fn);

说明:要引用 Data API,资源需要读取与集群相关的秘密.

要了解更多使用数据 API的情况,请参见 文档。 。 。 .

默认 VPC

这个 vpc 参数是可选的.

如果不提供,该集群将在账户和区域的默认 VPC 中创建. 由于此 VPC 不部署在 AWS CDK 中, 您无法配置 vpcSubnets, (中文(简体) ), subnetGroup 或者说 securityGroups aurora无服务器集群. 如果你想提供其中之一 vpcSubnets, (中文(简体) ), subnetGroup 或者说 securityGroups 参数,请提供a vpc。 。 。 .

版本与发布记录

@aws-cdk/aws-rds 共发布 288 个版本,首次发布于 2018/07/31;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.204.0latest2023/06/203 年前
1.203.02023/06/013 年前
1.202.02023/05/223 年前
1.201.02023/05/113 年前
1.200.02023/04/273 年前
1.199.02023/04/213 年前

关于 @aws-cdk/aws-rds 的常见问题

@aws-cdk/aws-rds 是什么?

AWS:RDS 的 CDK 构造库注意:该包已被作者标记为弃用——AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html

如何安装 @aws-cdk/aws-rds?

在项目目录运行 npm install @aws-cdk/aws-rds,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@aws-cdk/aws-cloudwatch(1.204.0)、@aws-cdk/aws-ec2(1.204.0)、@aws-cdk/aws-events(1.204.0)、@aws-cdk/aws-iam(1.204.0)、@aws-cdk/aws-kms(1.204.0)、@aws-cdk/aws-logs(1.204.0)、@aws-cdk/aws-s3(1.204.0)、@aws-cdk/aws-secretsmanager(1.204.0)、@aws-cdk/core(1.204.0)、@aws-cdk/cx-api(1.204.0)、constructs(^3.3.69)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aws-cdk/aws-rds 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-cdk/aws-rds 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aws-cdk/aws-rds 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 14.15.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aws-cdk/aws-rds 可以商用吗?

@aws-cdk/aws-rds 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-cdk/aws-rds 的下载量有多少?

根据 npm 官方下载统计,@aws-cdk/aws-rds 在 2026/10/08 – 2026/11/06 这 30 天内被下载 85,087 次,日均约 2,836 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-cdk/aws-rds 还在维护吗?

最新版本 1.204.0 发布于 2023/06/20(3 年前);至今共发布 288 个版本,其中过去 12 个月发布了 0 个;首次发布于 2018/07/31。作者已将其标记为弃用,新项目建议寻找替代方案。