140 lines
4.1 KiB
TypeScript
140 lines
4.1 KiB
TypeScript
import type { IClusterEngine } from './cluster-engine';
|
|
import type { Endpoint } from './endpoint';
|
|
import type { DatabaseProxy, DatabaseProxyOptions } from './proxy';
|
|
import type * as ec2 from '../../aws-ec2';
|
|
import type * as iam from '../../aws-iam';
|
|
import type * as secretsmanager from '../../aws-secretsmanager';
|
|
import type { IResource } from '../../core';
|
|
import type { aws_rds } from '../../interfaces';
|
|
/**
|
|
* Create a clustered database with a given number of instances.
|
|
*/
|
|
export interface IDatabaseCluster extends IResource, ec2.IConnectable, secretsmanager.ISecretAttachmentTarget, aws_rds.IDBClusterRef {
|
|
/**
|
|
* Identifier of the cluster
|
|
*/
|
|
readonly clusterIdentifier: string;
|
|
/**
|
|
* The immutable identifier for the cluster; for example: cluster-ABCD1234EFGH5678IJKL90MNOP.
|
|
*
|
|
* This AWS Region-unique identifier is used in things like IAM authentication policies.
|
|
*/
|
|
readonly clusterResourceIdentifier: string;
|
|
/**
|
|
* Identifiers of the replicas
|
|
*/
|
|
readonly instanceIdentifiers: string[];
|
|
/**
|
|
* The endpoint to use for read/write operations
|
|
* @attribute EndpointAddress,EndpointPort
|
|
*/
|
|
readonly clusterEndpoint: Endpoint;
|
|
/**
|
|
* Endpoint to use for load-balanced read-only operations.
|
|
* @attribute ReadEndpointAddress
|
|
*/
|
|
readonly clusterReadEndpoint: Endpoint;
|
|
/**
|
|
* Endpoints which address each individual replica.
|
|
*/
|
|
readonly instanceEndpoints: Endpoint[];
|
|
/**
|
|
* The engine of this Cluster.
|
|
* May be not known for imported Clusters if it wasn't provided explicitly.
|
|
*/
|
|
readonly engine?: IClusterEngine;
|
|
/**
|
|
* The ARN of the database cluster
|
|
*/
|
|
readonly clusterArn: string;
|
|
/**
|
|
* Add a new db proxy to this cluster.
|
|
*/
|
|
addProxy(id: string, options: DatabaseProxyOptions): DatabaseProxy;
|
|
/**
|
|
* Grant the given identity connection access to the Cluster.
|
|
*
|
|
* @param grantee the Principal to grant the permissions to
|
|
* @param dbUser the name of the database user to allow connecting
|
|
*
|
|
*/
|
|
grantConnect(grantee: iam.IGrantable, dbUser: string): iam.Grant;
|
|
/**
|
|
* Grant the given identity to access to the Data API.
|
|
*
|
|
* @param grantee The principal to grant access to
|
|
*/
|
|
grantDataApiAccess(grantee: iam.IGrantable): iam.Grant;
|
|
}
|
|
/**
|
|
* Properties that describe an existing cluster instance
|
|
*/
|
|
export interface DatabaseClusterAttributes {
|
|
/**
|
|
* Identifier for the cluster
|
|
*/
|
|
readonly clusterIdentifier: string;
|
|
/**
|
|
* The immutable identifier for the cluster; for example: cluster-ABCD1234EFGH5678IJKL90MNOP.
|
|
*
|
|
* This AWS Region-unique identifier is used to grant access to the cluster.
|
|
*
|
|
* @default none
|
|
*/
|
|
readonly clusterResourceIdentifier?: string;
|
|
/**
|
|
* The database port
|
|
*
|
|
* @default - none
|
|
*/
|
|
readonly port?: number;
|
|
/**
|
|
* The security groups of the database cluster
|
|
*
|
|
* @default - no security groups
|
|
*/
|
|
readonly securityGroups?: ec2.ISecurityGroup[];
|
|
/**
|
|
* Identifier for the instances
|
|
*
|
|
* @default - no instance identifiers
|
|
*/
|
|
readonly instanceIdentifiers?: string[];
|
|
/**
|
|
* Cluster endpoint address
|
|
*
|
|
* @default - no endpoint address
|
|
*/
|
|
readonly clusterEndpointAddress?: string;
|
|
/**
|
|
* Reader endpoint address
|
|
*
|
|
* @default - no reader address
|
|
*/
|
|
readonly readerEndpointAddress?: string;
|
|
/**
|
|
* Endpoint addresses of individual instances
|
|
*
|
|
* @default - no instance endpoints
|
|
*/
|
|
readonly instanceEndpointAddresses?: string[];
|
|
/**
|
|
* The engine of the existing Cluster.
|
|
*
|
|
* @default - the imported Cluster's engine is unknown
|
|
*/
|
|
readonly engine?: IClusterEngine;
|
|
/**
|
|
* The secret attached to the database cluster
|
|
*
|
|
* @default - the imported Cluster's secret is unknown
|
|
*/
|
|
readonly secret?: secretsmanager.ISecret;
|
|
/**
|
|
* Whether the Data API for the cluster is enabled.
|
|
*
|
|
* @default false
|
|
*/
|
|
readonly dataApiEnabled?: boolean;
|
|
}
|