service/rds/api_op_CreateDBCluster.go (290 lines of code) (raw):
// Code generated by smithy-go-codegen DO NOT EDIT.
package rds
import (
"context"
"fmt"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
presignedurlcust "github.com/aws/aws-sdk-go-v2/service/internal/presigned-url"
"github.com/aws/aws-sdk-go-v2/service/rds/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Creates a new Amazon Aurora DB cluster or Multi-AZ DB cluster.
//
// If you create an Aurora DB cluster, the request creates an empty cluster. You
// must explicitly create the writer instance for your DB cluster using the [CreateDBInstance]
// operation. If you create a Multi-AZ DB cluster, the request creates a writer and
// two reader DB instances for you, each in a different Availability Zone.
//
// You can use the ReplicationSourceIdentifier parameter to create an Amazon
// Aurora DB cluster as a read replica of another DB cluster or Amazon RDS for
// MySQL or PostgreSQL DB instance. For more information about Amazon Aurora, see [What is Amazon Aurora?]
// in the Amazon Aurora User Guide.
//
// You can also use the ReplicationSourceIdentifier parameter to create a Multi-AZ
// DB cluster read replica with an RDS for MySQL or PostgreSQL DB instance as the
// source. For more information about Multi-AZ DB clusters, see [Multi-AZ DB cluster deployments]in the Amazon RDS
// User Guide.
//
// [CreateDBInstance]: https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html
// [What is Amazon Aurora?]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html
// [Multi-AZ DB cluster deployments]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html
func (c *Client) CreateDBCluster(ctx context.Context, params *CreateDBClusterInput, optFns ...func(*Options)) (*CreateDBClusterOutput, error) {
if params == nil {
params = &CreateDBClusterInput{}
}
result, metadata, err := c.invokeOperation(ctx, "CreateDBCluster", params, optFns, c.addOperationCreateDBClusterMiddlewares)
if err != nil {
return nil, err
}
out := result.(*CreateDBClusterOutput)
out.ResultMetadata = metadata
return out, nil
}
type CreateDBClusterInput struct {
// The identifier for this DB cluster. This parameter is stored as a lowercase
// string.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Constraints:
//
// - Must contain from 1 to 63 (for Aurora DB clusters) or 1 to 52 (for Multi-AZ
// DB clusters) letters, numbers, or hyphens.
//
// - First character must be a letter.
//
// - Can't end with a hyphen or contain two consecutive hyphens.
//
// Example: my-cluster1
//
// This member is required.
DBClusterIdentifier *string
// The database engine to use for this DB cluster.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Valid Values:
//
// - aurora-mysql
//
// - aurora-postgresql
//
// - mysql
//
// - postgres
//
// - neptune - For information about using Amazon Neptune, see the [Amazon Neptune User Guide].
//
// [Amazon Neptune User Guide]: https://docs.aws.amazon.com/neptune/latest/userguide/intro.html
//
// This member is required.
Engine *string
// The amount of storage in gibibytes (GiB) to allocate to each DB instance in the
// Multi-AZ DB cluster.
//
// Valid for Cluster Type: Multi-AZ DB clusters only
//
// This setting is required to create a Multi-AZ DB cluster.
AllocatedStorage *int32
// Specifies whether minor engine upgrades are applied automatically to the DB
// cluster during the maintenance window. By default, minor engine upgrades are
// applied automatically.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB cluster.
//
// For more information about automatic minor version upgrades, see [Automatically upgrading the minor engine version].
//
// [Automatically upgrading the minor engine version]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Upgrading.html#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades
AutoMinorVersionUpgrade *bool
// A list of Availability Zones (AZs) where you specifically want to create DB
// instances in the DB cluster.
//
// For information on AZs, see [Availability Zones] in the Amazon Aurora User Guide.
//
// Valid for Cluster Type: Aurora DB clusters only
//
// Constraints:
//
// - Can't specify more than three AZs.
//
// [Availability Zones]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.RegionsAndAvailabilityZones.html#Concepts.RegionsAndAvailabilityZones.AvailabilityZones
AvailabilityZones []string
// The target backtrack window, in seconds. To disable backtracking, set this
// value to 0 .
//
// Valid for Cluster Type: Aurora MySQL DB clusters only
//
// Default: 0
//
// Constraints:
//
// - If specified, this value must be set to a number from 0 to 259,200 (72
// hours).
BacktrackWindow *int64
// The number of days for which automated backups are retained.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Default: 1
//
// Constraints:
//
// - Must be a value from 1 to 35.
BackupRetentionPeriod *int32
// The CA certificate identifier to use for the DB cluster's server certificate.
//
// For more information, see [Using SSL/TLS to encrypt a connection to a DB instance] in the Amazon RDS User Guide.
//
// Valid for Cluster Type: Multi-AZ DB clusters
//
// [Using SSL/TLS to encrypt a connection to a DB instance]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html
CACertificateIdentifier *string
// The name of the character set ( CharacterSet ) to associate the DB cluster with.
//
// Valid for Cluster Type: Aurora DB clusters only
CharacterSetName *string
// Specifies the scalability mode of the Aurora DB cluster. When set to limitless ,
// the cluster operates as an Aurora Limitless Database. When set to standard (the
// default), the cluster uses normal DB instance creation.
//
// Valid for: Aurora DB clusters only
//
// You can't modify this setting after you create the DB cluster.
ClusterScalabilityType types.ClusterScalabilityType
// Specifies whether to copy all tags from the DB cluster to snapshots of the DB
// cluster. The default is not to copy them.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
CopyTagsToSnapshot *bool
// The compute and memory capacity of each DB instance in the Multi-AZ DB cluster,
// for example db.m6gd.xlarge . Not all DB instance classes are available in all
// Amazon Web Services Regions, or for all database engines.
//
// For the full list of DB instance classes and availability for your engine, see [DB instance class]
// in the Amazon RDS User Guide.
//
// This setting is required to create a Multi-AZ DB cluster.
//
// Valid for Cluster Type: Multi-AZ DB clusters only
//
// [DB instance class]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html
DBClusterInstanceClass *string
// The name of the DB cluster parameter group to associate with this DB cluster.
// If you don't specify a value, then the default DB cluster parameter group for
// the specified DB engine and version is used.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Constraints:
//
// - If supplied, must match the name of an existing DB cluster parameter group.
DBClusterParameterGroupName *string
// A DB subnet group to associate with this DB cluster.
//
// This setting is required to create a Multi-AZ DB cluster.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Constraints:
//
// - Must match the name of an existing DB subnet group.
//
// Example: mydbsubnetgroup
DBSubnetGroupName *string
// Reserved for future use.
DBSystemId *string
// The mode of Database Insights to enable for the DB cluster.
//
// If you set this value to advanced , you must also set the
// PerformanceInsightsEnabled parameter to true and the
// PerformanceInsightsRetentionPeriod parameter to 465.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
DatabaseInsightsMode types.DatabaseInsightsMode
// The name for your database of up to 64 alphanumeric characters. A database
// named postgres is always created. If this parameter is specified, an additional
// database with this name is created.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
DatabaseName *string
// Specifies whether the DB cluster has deletion protection enabled. The database
// can't be deleted when deletion protection is enabled. By default, deletion
// protection isn't enabled.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
DeletionProtection *bool
// The Active Directory directory ID to create the DB cluster in.
//
// For Amazon Aurora DB clusters, Amazon RDS can use Kerberos authentication to
// authenticate users that connect to the DB cluster.
//
// For more information, see [Kerberos authentication] in the Amazon Aurora User Guide.
//
// Valid for Cluster Type: Aurora DB clusters only
//
// [Kerberos authentication]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/kerberos-authentication.html
Domain *string
// The name of the IAM role to use when making API calls to the Directory Service.
//
// Valid for Cluster Type: Aurora DB clusters only
DomainIAMRoleName *string
// The list of log types that need to be enabled for exporting to CloudWatch Logs.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// The following values are valid for each DB engine:
//
// - Aurora MySQL - audit | error | general | instance | slowquery |
// iam-db-auth-error
//
// - Aurora PostgreSQL - instance | postgresql | iam-db-auth-error
//
// - RDS for MySQL - error | general | slowquery | iam-db-auth-error
//
// - RDS for PostgreSQL - postgresql | upgrade | iam-db-auth-error
//
// For more information about exporting CloudWatch Logs for Amazon RDS, see [Publishing Database Logs to Amazon CloudWatch Logs] in
// the Amazon RDS User Guide.
//
// For more information about exporting CloudWatch Logs for Amazon Aurora, see [Publishing Database Logs to Amazon CloudWatch Logs] in
// the Amazon Aurora User Guide.
//
// [Publishing Database Logs to Amazon CloudWatch Logs]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch
EnableCloudwatchLogsExports []string
// Specifies whether to enable this DB cluster to forward write operations to the
// primary cluster of a global cluster (Aurora global database). By default, write
// operations are not allowed on Aurora DB clusters that are secondary clusters in
// an Aurora global database.
//
// You can set this value only on Aurora DB clusters that are members of an Aurora
// global database. With this parameter enabled, a secondary cluster can forward
// writes to the current primary cluster, and the resulting changes are replicated
// back to this cluster. For the primary DB cluster of an Aurora global database,
// this value is used immediately if the primary is demoted by a global cluster API
// operation, but it does nothing until then.
//
// Valid for Cluster Type: Aurora DB clusters only
EnableGlobalWriteForwarding *bool
// Specifies whether to enable the HTTP endpoint for the DB cluster. By default,
// the HTTP endpoint isn't enabled.
//
// When enabled, the HTTP endpoint provides a connectionless web service API (RDS
// Data API) for running SQL queries on the DB cluster. You can also query your
// database from inside the RDS console with the RDS query editor.
//
// For more information, see [Using RDS Data API] in the Amazon Aurora User Guide.
//
// Valid for Cluster Type: Aurora DB clusters only
//
// [Using RDS Data API]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html
EnableHttpEndpoint *bool
// Specifies whether to enable mapping of Amazon Web Services Identity and Access
// Management (IAM) accounts to database accounts. By default, mapping isn't
// enabled.
//
// For more information, see [IAM Database Authentication] in the Amazon Aurora User Guide or [IAM database authentication for MariaDB, MySQL, and PostgreSQL] in the Amazon
// RDS User Guide.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// [IAM Database Authentication]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html
// [IAM database authentication for MariaDB, MySQL, and PostgreSQL]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html
EnableIAMDatabaseAuthentication *bool
// Specifies whether to enable Aurora Limitless Database. You must enable Aurora
// Limitless Database to create a DB shard group.
//
// Valid for: Aurora DB clusters only
//
// This setting is no longer used. Instead use the ClusterScalabilityType setting.
EnableLimitlessDatabase *bool
// Specifies whether read replicas can forward write operations to the writer DB
// instance in the DB cluster. By default, write operations aren't allowed on
// reader DB instances.
//
// Valid for: Aurora DB clusters only
EnableLocalWriteForwarding *bool
// Specifies whether to turn on Performance Insights for the DB cluster.
//
// For more information, see [Using Amazon Performance Insights] in the Amazon RDS User Guide.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// [Using Amazon Performance Insights]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html
EnablePerformanceInsights *bool
// The life cycle type for this DB cluster.
//
// By default, this value is set to open-source-rds-extended-support , which
// enrolls your DB cluster into Amazon RDS Extended Support. At the end of standard
// support, you can avoid charges for Extended Support by setting the value to
// open-source-rds-extended-support-disabled . In this case, creating the DB
// cluster will fail if the DB major version is past its end of standard support
// date.
//
// You can use this setting to enroll your DB cluster into Amazon RDS Extended
// Support. With RDS Extended Support, you can run the selected major engine
// version on your DB cluster past the end of standard support for that engine
// version. For more information, see the following sections:
//
// - Amazon Aurora - [Using Amazon RDS Extended Support]in the Amazon Aurora User Guide
//
// - Amazon RDS - [Using Amazon RDS Extended Support]in the Amazon RDS User Guide
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Valid Values: open-source-rds-extended-support |
// open-source-rds-extended-support-disabled
//
// Default: open-source-rds-extended-support
//
// [Using Amazon RDS Extended Support]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/extended-support.html
EngineLifecycleSupport *string
// The DB engine mode of the DB cluster, either provisioned or serverless .
//
// The serverless engine mode only applies for Aurora Serverless v1 DB clusters.
// Aurora Serverless v2 DB clusters use the provisioned engine mode.
//
// For information about limitations and requirements for Serverless DB clusters,
// see the following sections in the Amazon Aurora User Guide:
//
// [Limitations of Aurora Serverless v1]
//
// [Requirements for Aurora Serverless v2]
//
// Valid for Cluster Type: Aurora DB clusters only
//
// [Limitations of Aurora Serverless v1]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.limitations
// [Requirements for Aurora Serverless v2]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html
EngineMode *string
// The version number of the database engine to use.
//
// To list all of the available engine versions for Aurora MySQL version 2
// (5.7-compatible) and version 3 (MySQL 8.0-compatible), use the following
// command:
//
// aws rds describe-db-engine-versions --engine aurora-mysql --query
// "DBEngineVersions[].EngineVersion"
//
// You can supply either 5.7 or 8.0 to use the default engine version for Aurora
// MySQL version 2 or version 3, respectively.
//
// To list all of the available engine versions for Aurora PostgreSQL, use the
// following command:
//
// aws rds describe-db-engine-versions --engine aurora-postgresql --query
// "DBEngineVersions[].EngineVersion"
//
// To list all of the available engine versions for RDS for MySQL, use the
// following command:
//
// aws rds describe-db-engine-versions --engine mysql --query
// "DBEngineVersions[].EngineVersion"
//
// To list all of the available engine versions for RDS for PostgreSQL, use the
// following command:
//
// aws rds describe-db-engine-versions --engine postgres --query
// "DBEngineVersions[].EngineVersion"
//
// For information about a specific engine, see the following topics:
//
// - Aurora MySQL - see [Database engine updates for Amazon Aurora MySQL]in the Amazon Aurora User Guide.
//
// - Aurora PostgreSQL - see [Amazon Aurora PostgreSQL releases and engine versions]in the Amazon Aurora User Guide.
//
// - RDS for MySQL - see [Amazon RDS for MySQL]in the Amazon RDS User Guide.
//
// - RDS for PostgreSQL - see [Amazon RDS for PostgreSQL]in the Amazon RDS User Guide.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// [Database engine updates for Amazon Aurora MySQL]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.html
// [Amazon RDS for PostgreSQL]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts
// [Amazon RDS for MySQL]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt
// [Amazon Aurora PostgreSQL releases and engine versions]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html
EngineVersion *string
// The global cluster ID of an Aurora cluster that becomes the primary cluster in
// the new global database cluster.
//
// Valid for Cluster Type: Aurora DB clusters only
GlobalClusterIdentifier *string
// The amount of Provisioned IOPS (input/output operations per second) to be
// initially allocated for each DB instance in the Multi-AZ DB cluster.
//
// For information about valid IOPS values, see [Provisioned IOPS storage] in the Amazon RDS User Guide.
//
// This setting is required to create a Multi-AZ DB cluster.
//
// Valid for Cluster Type: Multi-AZ DB clusters only
//
// Constraints:
//
// - Must be a multiple between .5 and 50 of the storage amount for the DB
// cluster.
//
// [Provisioned IOPS storage]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS
Iops *int32
// The Amazon Web Services KMS key identifier for an encrypted DB cluster.
//
// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN,
// or alias name for the KMS key. To use a KMS key in a different Amazon Web
// Services account, specify the key ARN or alias ARN.
//
// When a KMS key isn't specified in KmsKeyId :
//
// - If ReplicationSourceIdentifier identifies an encrypted source, then Amazon
// RDS uses the KMS key used to encrypt the source. Otherwise, Amazon RDS uses your
// default KMS key.
//
// - If the StorageEncrypted parameter is enabled and ReplicationSourceIdentifier
// isn't specified, then Amazon RDS uses your default KMS key.
//
// There is a default KMS key for your Amazon Web Services account. Your Amazon
// Web Services account has a different default KMS key for each Amazon Web
// Services Region.
//
// If you create a read replica of an encrypted DB cluster in another Amazon Web
// Services Region, make sure to set KmsKeyId to a KMS key identifier that is
// valid in the destination Amazon Web Services Region. This KMS key is used to
// encrypt the read replica in that Amazon Web Services Region.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
KmsKeyId *string
// Specifies whether to manage the master user password with Amazon Web Services
// Secrets Manager.
//
// For more information, see [Password management with Amazon Web Services Secrets Manager] in the Amazon RDS User Guide and [Password management with Amazon Web Services Secrets Manager] in the Amazon
// Aurora User Guide.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Constraints:
//
// - Can't manage the master user password with Amazon Web Services Secrets
// Manager if MasterUserPassword is specified.
//
// [Password management with Amazon Web Services Secrets Manager]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html
ManageMasterUserPassword *bool
// The password for the master database user.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Constraints:
//
// - Must contain from 8 to 41 characters.
//
// - Can contain any printable ASCII character except "/", """, or "@".
//
// - Can't be specified if ManageMasterUserPassword is turned on.
MasterUserPassword *string
// The Amazon Web Services KMS key identifier to encrypt a secret that is
// automatically generated and managed in Amazon Web Services Secrets Manager.
//
// This setting is valid only if the master user password is managed by RDS in
// Amazon Web Services Secrets Manager for the DB cluster.
//
// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN,
// or alias name for the KMS key. To use a KMS key in a different Amazon Web
// Services account, specify the key ARN or alias ARN.
//
// If you don't specify MasterUserSecretKmsKeyId , then the aws/secretsmanager KMS
// key is used to encrypt the secret. If the secret is in a different Amazon Web
// Services account, then you can't use the aws/secretsmanager KMS key to encrypt
// the secret, and you must use a customer managed KMS key.
//
// There is a default KMS key for your Amazon Web Services account. Your Amazon
// Web Services account has a different default KMS key for each Amazon Web
// Services Region.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
MasterUserSecretKmsKeyId *string
// The name of the master user for the DB cluster.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Constraints:
//
// - Must be 1 to 16 letters or numbers.
//
// - First character must be a letter.
//
// - Can't be a reserved word for the chosen database engine.
MasterUsername *string
// The interval, in seconds, between points when Enhanced Monitoring metrics are
// collected for the DB cluster. To turn off collecting Enhanced Monitoring
// metrics, specify 0 .
//
// If MonitoringRoleArn is specified, also set MonitoringInterval to a value other
// than 0 .
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Valid Values: 0 | 1 | 5 | 10 | 15 | 30 | 60
//
// Default: 0
MonitoringInterval *int32
// The Amazon Resource Name (ARN) for the IAM role that permits RDS to send
// Enhanced Monitoring metrics to Amazon CloudWatch Logs. An example is
// arn:aws:iam:123456789012:role/emaccess . For information on creating a
// monitoring role, see [Setting up and enabling Enhanced Monitoring]in the Amazon RDS User Guide.
//
// If MonitoringInterval is set to a value other than 0 , supply a
// MonitoringRoleArn value.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// [Setting up and enabling Enhanced Monitoring]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html#USER_Monitoring.OS.Enabling
MonitoringRoleArn *string
// The network type of the DB cluster.
//
// The network type is determined by the DBSubnetGroup specified for the DB
// cluster. A DBSubnetGroup can support only the IPv4 protocol or the IPv4 and the
// IPv6 protocols ( DUAL ).
//
// For more information, see [Working with a DB instance in a VPC] in the Amazon Aurora User Guide.
//
// Valid for Cluster Type: Aurora DB clusters only
//
// Valid Values: IPV4 | DUAL
//
// [Working with a DB instance in a VPC]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html
NetworkType *string
// The option group to associate the DB cluster with.
//
// DB clusters are associated with a default option group that can't be modified.
OptionGroupName *string
// The Amazon Web Services KMS key identifier for encryption of Performance
// Insights data.
//
// The Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN,
// or alias name for the KMS key.
//
// If you don't specify a value for PerformanceInsightsKMSKeyId , then Amazon RDS
// uses your default KMS key. There is a default KMS key for your Amazon Web
// Services account. Your Amazon Web Services account has a different default KMS
// key for each Amazon Web Services Region.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
PerformanceInsightsKMSKeyId *string
// The number of days to retain Performance Insights data.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Valid Values:
//
// - 7
//
// - month * 31, where month is a number of months from 1-23. Examples: 93 (3
// months * 31), 341 (11 months * 31), 589 (19 months * 31)
//
// - 731
//
// Default: 7 days
//
// If you specify a retention period that isn't valid, such as 94 , Amazon RDS
// issues an error.
PerformanceInsightsRetentionPeriod *int32
// The port number on which the instances in the DB cluster accept connections.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Valid Values: 1150-65535
//
// Default:
//
// - RDS for MySQL and Aurora MySQL - 3306
//
// - RDS for PostgreSQL and Aurora PostgreSQL - 5432
Port *int32
// When you are replicating a DB cluster from one Amazon Web Services GovCloud
// (US) Region to another, an URL that contains a Signature Version 4 signed
// request for the CreateDBCluster operation to be called in the source Amazon Web
// Services Region where the DB cluster is replicated from. Specify PreSignedUrl
// only when you are performing cross-Region replication from an encrypted DB
// cluster.
//
// The presigned URL must be a valid request for the CreateDBCluster API operation
// that can run in the source Amazon Web Services Region that contains the
// encrypted DB cluster to copy.
//
// The presigned URL request must contain the following parameter values:
//
// - KmsKeyId - The KMS key identifier for the KMS key to use to encrypt the copy
// of the DB cluster in the destination Amazon Web Services Region. This should
// refer to the same KMS key for both the CreateDBCluster operation that is
// called in the destination Amazon Web Services Region, and the operation
// contained in the presigned URL.
//
// - DestinationRegion - The name of the Amazon Web Services Region that Aurora
// read replica will be created in.
//
// - ReplicationSourceIdentifier - The DB cluster identifier for the encrypted DB
// cluster to be copied. This identifier must be in the Amazon Resource Name (ARN)
// format for the source Amazon Web Services Region. For example, if you are
// copying an encrypted DB cluster from the us-west-2 Amazon Web Services Region,
// then your ReplicationSourceIdentifier would look like Example:
// arn:aws:rds:us-west-2:123456789012:cluster:aurora-cluster1 .
//
// To learn how to generate a Signature Version 4 signed request, see [Authenticating Requests: Using Query Parameters (Amazon Web Services Signature Version 4)] and [Signature Version 4 Signing Process].
//
// If you are using an Amazon Web Services SDK tool or the CLI, you can specify
// SourceRegion (or --source-region for the CLI) instead of specifying PreSignedUrl
// manually. Specifying SourceRegion autogenerates a presigned URL that is a valid
// request for the operation that can run in the source Amazon Web Services Region.
//
// Valid for Cluster Type: Aurora DB clusters only
//
// [Authenticating Requests: Using Query Parameters (Amazon Web Services Signature Version 4)]: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
// [Signature Version 4 Signing Process]: https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html
PreSignedUrl *string
// The daily time range during which automated backups are created if automated
// backups are enabled using the BackupRetentionPeriod parameter.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// The default is a 30-minute window selected at random from an 8-hour block of
// time for each Amazon Web Services Region. To view the time blocks available, see
// [Backup window]in the Amazon Aurora User Guide.
//
// Constraints:
//
// - Must be in the format hh24:mi-hh24:mi .
//
// - Must be in Universal Coordinated Time (UTC).
//
// - Must not conflict with the preferred maintenance window.
//
// - Must be at least 30 minutes.
//
// [Backup window]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Backups.html#Aurora.Managing.Backups.BackupWindow
PreferredBackupWindow *string
// The weekly time range during which system maintenance can occur.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// The default is a 30-minute window selected at random from an 8-hour block of
// time for each Amazon Web Services Region, occurring on a random day of the week.
// To see the time blocks available, see [Adjusting the Preferred DB Cluster Maintenance Window]in the Amazon Aurora User Guide.
//
// Constraints:
//
// - Must be in the format ddd:hh24:mi-ddd:hh24:mi .
//
// - Days must be one of Mon | Tue | Wed | Thu | Fri | Sat | Sun .
//
// - Must be in Universal Coordinated Time (UTC).
//
// - Must be at least 30 minutes.
//
// [Adjusting the Preferred DB Cluster Maintenance Window]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#AdjustingTheMaintenanceWindow.Aurora
PreferredMaintenanceWindow *string
// Specifies whether the DB cluster is publicly accessible.
//
// When the DB cluster is publicly accessible and you connect from outside of the
// DB cluster's virtual private cloud (VPC), its Domain Name System (DNS) endpoint
// resolves to the public IP address. When you connect from within the same VPC as
// the DB cluster, the endpoint resolves to the private IP address. Access to the
// DB cluster is ultimately controlled by the security group it uses. That public
// access isn't permitted if the security group assigned to the DB cluster doesn't
// permit it.
//
// When the DB cluster isn't publicly accessible, it is an internal DB cluster
// with a DNS name that resolves to a private IP address.
//
// Valid for Cluster Type: Multi-AZ DB clusters only
//
// Default: The default behavior varies depending on whether DBSubnetGroupName is
// specified.
//
// If DBSubnetGroupName isn't specified, and PubliclyAccessible isn't specified,
// the following applies:
//
// - If the default VPC in the target Region doesn’t have an internet gateway
// attached to it, the DB cluster is private.
//
// - If the default VPC in the target Region has an internet gateway attached to
// it, the DB cluster is public.
//
// If DBSubnetGroupName is specified, and PubliclyAccessible isn't specified, the
// following applies:
//
// - If the subnets are part of a VPC that doesn’t have an internet gateway
// attached to it, the DB cluster is private.
//
// - If the subnets are part of a VPC that has an internet gateway attached to
// it, the DB cluster is public.
PubliclyAccessible *bool
// Reserved for future use.
RdsCustomClusterConfiguration *types.RdsCustomClusterConfiguration
// The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this
// DB cluster is created as a read replica.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
ReplicationSourceIdentifier *string
// For DB clusters in serverless DB engine mode, the scaling properties of the DB
// cluster.
//
// Valid for Cluster Type: Aurora DB clusters only
ScalingConfiguration *types.ScalingConfiguration
// Contains the scaling configuration of an Aurora Serverless v2 DB cluster.
//
// For more information, see [Using Amazon Aurora Serverless v2] in the Amazon Aurora User Guide.
//
// [Using Amazon Aurora Serverless v2]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html
ServerlessV2ScalingConfiguration *types.ServerlessV2ScalingConfiguration
// The AWS region the resource is in. The presigned URL will be created with this
// region, if the PresignURL member is empty set.
SourceRegion *string
// Specifies whether the DB cluster is encrypted.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
StorageEncrypted *bool
// The storage type to associate with the DB cluster.
//
// For information on storage types for Aurora DB clusters, see [Storage configurations for Amazon Aurora DB clusters]. For information
// on storage types for Multi-AZ DB clusters, see [Settings for creating Multi-AZ DB clusters].
//
// This setting is required to create a Multi-AZ DB cluster.
//
// When specified for a Multi-AZ DB cluster, a value for the Iops parameter is
// required.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
//
// Valid Values:
//
// - Aurora DB clusters - aurora | aurora-iopt1
//
// - Multi-AZ DB clusters - io1 | io2 | gp3
//
// Default:
//
// - Aurora DB clusters - aurora
//
// - Multi-AZ DB clusters - io1
//
// When you create an Aurora DB cluster with the storage type set to aurora-iopt1 ,
// the storage type is returned in the response. The storage type isn't returned
// when you set it to aurora .
//
// [Storage configurations for Amazon Aurora DB clusters]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html#aurora-storage-type
// [Settings for creating Multi-AZ DB clusters]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/create-multi-az-db-cluster.html#create-multi-az-db-cluster-settings
StorageType *string
// Tags to assign to the DB cluster.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
Tags []types.Tag
// A list of EC2 VPC security groups to associate with this DB cluster.
//
// Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters
VpcSecurityGroupIds []string
// Used by the SDK's PresignURL autofill customization to specify the region the
// of the client's request.
destinationRegion *string
noSmithyDocumentSerde
}
type CreateDBClusterOutput struct {
// Contains the details of an Amazon Aurora DB cluster or Multi-AZ DB cluster.
//
// For an Amazon Aurora DB cluster, this data type is used as a response element
// in the operations CreateDBCluster , DeleteDBCluster , DescribeDBClusters ,
// FailoverDBCluster , ModifyDBCluster , PromoteReadReplicaDBCluster ,
// RestoreDBClusterFromS3 , RestoreDBClusterFromSnapshot ,
// RestoreDBClusterToPointInTime , StartDBCluster , and StopDBCluster .
//
// For a Multi-AZ DB cluster, this data type is used as a response element in the
// operations CreateDBCluster , DeleteDBCluster , DescribeDBClusters ,
// FailoverDBCluster , ModifyDBCluster , RebootDBCluster ,
// RestoreDBClusterFromSnapshot , and RestoreDBClusterToPointInTime .
//
// For more information on Amazon Aurora DB clusters, see [What is Amazon Aurora?] in the Amazon Aurora
// User Guide.
//
// For more information on Multi-AZ DB clusters, see [Multi-AZ deployments with two readable standby DB instances] in the Amazon RDS User
// Guide.
//
// [Multi-AZ deployments with two readable standby DB instances]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html
// [What is Amazon Aurora?]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html
DBCluster *types.DBCluster
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationCreateDBClusterMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsAwsquery_serializeOpCreateDBCluster{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsAwsquery_deserializeOpCreateDBCluster{}, middleware.After)
if err != nil {
return err
}
if err := addProtocolFinalizerMiddlewares(stack, options, "CreateDBCluster"); err != nil {
return fmt.Errorf("add protocol finalizers: %v", err)
}
if err = addlegacyEndpointContextSetter(stack, options); err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = addClientRequestID(stack); err != nil {
return err
}
if err = addComputeContentLength(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = addComputePayloadSHA256(stack); err != nil {
return err
}
if err = addRetry(stack, options); err != nil {
return err
}
if err = addRawResponseToMetadata(stack); err != nil {
return err
}
if err = addRecordResponseTiming(stack); err != nil {
return err
}
if err = addSpanRetryLoop(stack, options); err != nil {
return err
}
if err = addClientUserAgent(stack, options); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addCreateDBClusterPresignURLMiddleware(stack, options); err != nil {
return err
}
if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
return err
}
if err = addTimeOffsetBuild(stack, c); err != nil {
return err
}
if err = addUserAgentRetryMode(stack, options); err != nil {
return err
}
if err = addCredentialSource(stack, options); err != nil {
return err
}
if err = addOpCreateDBClusterValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateDBCluster(options.Region), middleware.Before); err != nil {
return err
}
if err = addRecursionDetection(stack); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
return err
}
if err = addSpanInitializeStart(stack); err != nil {
return err
}
if err = addSpanInitializeEnd(stack); err != nil {
return err
}
if err = addSpanBuildRequestStart(stack); err != nil {
return err
}
if err = addSpanBuildRequestEnd(stack); err != nil {
return err
}
return nil
}
func copyCreateDBClusterInputForPresign(params interface{}) (interface{}, error) {
input, ok := params.(*CreateDBClusterInput)
if !ok {
return nil, fmt.Errorf("expect *CreateDBClusterInput type, got %T", params)
}
cpy := *input
return &cpy, nil
}
func getCreateDBClusterPreSignedUrl(params interface{}) (string, bool, error) {
input, ok := params.(*CreateDBClusterInput)
if !ok {
return ``, false, fmt.Errorf("expect *CreateDBClusterInput type, got %T", params)
}
if input.PreSignedUrl == nil || len(*input.PreSignedUrl) == 0 {
return ``, false, nil
}
return *input.PreSignedUrl, true, nil
}
func getCreateDBClusterSourceRegion(params interface{}) (string, bool, error) {
input, ok := params.(*CreateDBClusterInput)
if !ok {
return ``, false, fmt.Errorf("expect *CreateDBClusterInput type, got %T", params)
}
if input.SourceRegion == nil || len(*input.SourceRegion) == 0 {
return ``, false, nil
}
return *input.SourceRegion, true, nil
}
func setCreateDBClusterPreSignedUrl(params interface{}, value string) error {
input, ok := params.(*CreateDBClusterInput)
if !ok {
return fmt.Errorf("expect *CreateDBClusterInput type, got %T", params)
}
input.PreSignedUrl = &value
return nil
}
func setCreateDBClusterdestinationRegion(params interface{}, value string) error {
input, ok := params.(*CreateDBClusterInput)
if !ok {
return fmt.Errorf("expect *CreateDBClusterInput type, got %T", params)
}
input.destinationRegion = &value
return nil
}
func addCreateDBClusterPresignURLMiddleware(stack *middleware.Stack, options Options) error {
return presignedurlcust.AddMiddleware(stack, presignedurlcust.Options{
Accessor: presignedurlcust.ParameterAccessor{
GetPresignedURL: getCreateDBClusterPreSignedUrl,
GetSourceRegion: getCreateDBClusterSourceRegion,
CopyInput: copyCreateDBClusterInputForPresign,
SetDestinationRegion: setCreateDBClusterdestinationRegion,
SetPresignedURL: setCreateDBClusterPreSignedUrl,
},
Presigner: &presignAutoFillCreateDBClusterClient{client: NewPresignClient(New(options))},
})
}
type presignAutoFillCreateDBClusterClient struct {
client *PresignClient
}
// PresignURL is a middleware accessor that satisfies URLPresigner interface.
func (c *presignAutoFillCreateDBClusterClient) PresignURL(ctx context.Context, srcRegion string, params interface{}) (*v4.PresignedHTTPRequest, error) {
input, ok := params.(*CreateDBClusterInput)
if !ok {
return nil, fmt.Errorf("expect *CreateDBClusterInput type, got %T", params)
}
optFn := func(o *Options) {
o.Region = srcRegion
o.APIOptions = append(o.APIOptions, presignedurlcust.RemoveMiddleware)
}
presignOptFn := WithPresignClientFromClientOptions(optFn)
return c.client.PresignCreateDBCluster(ctx, input, presignOptFn)
}
func newServiceMetadataMiddleware_opCreateDBCluster(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "CreateDBCluster",
}
}
// PresignCreateDBCluster is used to generate a presigned HTTP Request which
// contains presigned URL, signed headers and HTTP method used.
func (c *PresignClient) PresignCreateDBCluster(ctx context.Context, params *CreateDBClusterInput, optFns ...func(*PresignOptions)) (*v4.PresignedHTTPRequest, error) {
if params == nil {
params = &CreateDBClusterInput{}
}
options := c.options.copy()
for _, fn := range optFns {
fn(&options)
}
clientOptFns := append(options.ClientOptions, withNopHTTPClientAPIOption)
result, _, err := c.client.invokeOperation(ctx, "CreateDBCluster", params, clientOptFns,
c.client.addOperationCreateDBClusterMiddlewares,
presignConverter(options).convertToPresignMiddleware,
)
if err != nil {
return nil, err
}
out := result.(*v4.PresignedHTTPRequest)
return out, nil
}