亚马逊关系数据库服务构建库
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。 。 。 .