service/rds/api_op_RestoreDBClusterToPointInTime.go (173 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/service/rds/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
"time"
)
// Restores a DB cluster to an arbitrary point in time. Users can restore to any
// point in time before LatestRestorableTime for up to BackupRetentionPeriod days.
// The target DB cluster is created from the source DB cluster with the same
// configuration as the original DB cluster, except that the new DB cluster is
// created with the default DB security group. Unless the RestoreType is set to
// copy-on-write , the restore may occur in a different Availability Zone (AZ) from
// the original DB cluster. The AZ where RDS restores the DB cluster depends on the
// AZs in the specified subnet group.
//
// For Aurora, this operation only restores the DB cluster, not the DB instances
// for that DB cluster. You must invoke the CreateDBInstance operation to create
// DB instances for the restored DB cluster, specifying the identifier of the
// restored DB cluster in DBClusterIdentifier . You can create DB instances only
// after the RestoreDBClusterToPointInTime operation has completed and the DB
// cluster is available.
//
// 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 DB cluster deployments] in the Amazon RDS User
// Guide.
//
// [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) RestoreDBClusterToPointInTime(ctx context.Context, params *RestoreDBClusterToPointInTimeInput, optFns ...func(*Options)) (*RestoreDBClusterToPointInTimeOutput, error) {
if params == nil {
params = &RestoreDBClusterToPointInTimeInput{}
}
result, metadata, err := c.invokeOperation(ctx, "RestoreDBClusterToPointInTime", params, optFns, c.addOperationRestoreDBClusterToPointInTimeMiddlewares)
if err != nil {
return nil, err
}
out := result.(*RestoreDBClusterToPointInTimeOutput)
out.ResultMetadata = metadata
return out, nil
}
type RestoreDBClusterToPointInTimeInput struct {
// The name of the new DB cluster to be created.
//
// Constraints:
//
// - Must contain from 1 to 63 letters, numbers, or hyphens
//
// - First character must be a letter
//
// - Can't end with a hyphen or contain two consecutive hyphens
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
//
// This member is required.
DBClusterIdentifier *string
// The target backtrack window, in seconds. To disable backtracking, set this
// value to 0.
//
// Default: 0
//
// Constraints:
//
// - If specified, this value must be set to a number from 0 to 259,200 (72
// hours).
//
// Valid for: Aurora MySQL DB clusters only
BacktrackWindow *int64
// Specifies whether to copy all tags from the restored DB cluster to snapshots of
// the restored DB cluster. The default is not to copy them.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
CopyTagsToSnapshot *bool
// The compute and memory capacity of the 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.
//
// Valid for: 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 custom DB cluster parameter group to associate with this DB
// cluster.
//
// If the DBClusterParameterGroupName parameter is omitted, the default DB cluster
// parameter group for the specified engine is used.
//
// Constraints:
//
// - If supplied, must match the name of an existing DB cluster parameter group.
//
// - Must be 1 to 255 letters, numbers, or hyphens.
//
// - First character must be a letter.
//
// - Can't end with a hyphen or contain two consecutive hyphens.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
DBClusterParameterGroupName *string
// The DB subnet group name to use for the new DB cluster.
//
// Constraints: If supplied, must match the name of an existing DBSubnetGroup.
//
// Example: mydbsubnetgroup
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
DBSubnetGroupName *string
// Specifies whether to enable deletion protection for the DB cluster. The
// database can't be deleted when deletion protection is enabled. By default,
// deletion protection isn't enabled.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
DeletionProtection *bool
// The Active Directory directory ID to restore the DB cluster in. The domain must
// be created prior to this operation.
//
// 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: 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 be used when making API calls to the Directory
// Service.
//
// Valid for: Aurora DB clusters only
DomainIAMRoleName *string
// The list of logs that the restored DB cluster is to export to CloudWatch Logs.
// The values in the list depend on the DB engine being used.
//
// RDS for MySQL
//
// Possible values are error , general , slowquery , and iam-db-auth-error .
//
// RDS for PostgreSQL
//
// Possible values are postgresql , upgrade , and iam-db-auth-error .
//
// Aurora MySQL
//
// Possible values are audit , error , general , instance , slowquery , and
// iam-db-auth-error .
//
// Aurora PostgreSQL
//
// Possible value are instance , postgresql , and 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.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
//
// [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 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: 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 turn on Performance Insights for the DB cluster.
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, RDS automatically
// upgrades your restored DB cluster to a higher engine version, if the major
// engine 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 engine mode of the new cluster. Specify provisioned or serverless ,
// depending on the type of the cluster you are creating. You can create an Aurora
// Serverless v1 clone from a provisioned cluster, or a provisioned clone from an
// Aurora Serverless v1 cluster. To create a clone that is an Aurora Serverless v1
// cluster, the original cluster must be an Aurora Serverless v1 cluster or an
// encrypted provisioned cluster. To create a full copy that is an Aurora
// Serverless v1 cluster, specify the engine mode serverless .
//
// Valid for: Aurora DB clusters only
EngineMode *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 [Amazon RDS Provisioned IOPS storage] in the Amazon RDS User Guide.
//
// Constraints: Must be a multiple between .5 and 50 of the storage amount for the
// DB instance.
//
// Valid for: Multi-AZ DB clusters only
//
// [Amazon RDS 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 to use when restoring an encrypted
// DB cluster from 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.
//
// You can restore to a new DB cluster and encrypt the new DB cluster with a KMS
// key that is different from the KMS key used to encrypt the source DB cluster.
// The new DB cluster is encrypted with the KMS key identified by the KmsKeyId
// parameter.
//
// If you don't specify a value for the KmsKeyId parameter, then the following
// occurs:
//
// - If the DB cluster is encrypted, then the restored DB cluster is encrypted
// using the KMS key that was used to encrypt the source DB cluster.
//
// - If the DB cluster isn't encrypted, then the restored DB cluster isn't
// encrypted.
//
// If DBClusterIdentifier refers to a DB cluster that isn't encrypted, then the
// restore request is rejected.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
KmsKeyId *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 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 .
//
// If MonitoringInterval is set to a value other than 0 , supply a
// MonitoringRoleArn value.
MonitoringRoleArn *string
// The network type of the DB cluster.
//
// Valid Values:
//
// - IPV4
//
// - DUAL
//
// 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: Aurora DB clusters only
//
// [Working with a DB instance in a VPC]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html
NetworkType *string
// The name of the option group for the new DB cluster.
//
// 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.
PerformanceInsightsKMSKeyId *string
// The number of days to retain Performance Insights data.
//
// 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 new DB cluster accepts connections.
//
// Constraints: A value from 1150-65535 .
//
// Default: The default port for the engine.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
Port *int32
// Specifies whether the DB cluster is publicly accessible.
//
// When the DB cluster is publicly accessible, its Domain Name System (DNS)
// endpoint resolves to the private IP address from within the DB cluster's virtual
// private cloud (VPC). It resolves to the public IP address from outside of the DB
// cluster's VPC. Access to the DB cluster is ultimately controlled by the security
// group it uses. That public access is not 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.
//
// 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.
//
// Valid for: Multi-AZ DB clusters only
PubliclyAccessible *bool
// Reserved for future use.
RdsCustomClusterConfiguration *types.RdsCustomClusterConfiguration
// The date and time to restore the DB cluster to.
//
// Valid Values: Value must be a time in Universal Coordinated Time (UTC) format
//
// Constraints:
//
// - Must be before the latest restorable time for the DB instance
//
// - Must be specified if UseLatestRestorableTime parameter isn't provided
//
// - Can't be specified if the UseLatestRestorableTime parameter is enabled
//
// - Can't be specified if the RestoreType parameter is copy-on-write
//
// Example: 2015-03-07T23:45:00Z
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
RestoreToTime *time.Time
// The type of restore to be performed. You can specify one of the following
// values:
//
// - full-copy - The new DB cluster is restored as a full copy of the source DB
// cluster.
//
// - copy-on-write - The new DB cluster is restored as a clone of the source DB
// cluster.
//
// If you don't specify a RestoreType value, then the new DB cluster is restored
// as a full copy of the source DB cluster.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
RestoreType *string
// For DB clusters in serverless DB engine mode, the scaling properties of the DB
// cluster.
//
// Valid for: 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 identifier of the source DB cluster from which to restore.
//
// Constraints:
//
// - Must match the identifier of an existing DBCluster.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
SourceDBClusterIdentifier *string
// The resource ID of the source DB cluster from which to restore.
SourceDbClusterResourceId *string
// Specifies the storage type to be associated with the DB cluster.
//
// When specified for a Multi-AZ DB cluster, a value for the Iops parameter is
// required.
//
// Valid Values: aurora , aurora-iopt1 (Aurora DB clusters); io1 (Multi-AZ DB
// clusters)
//
// Default: aurora (Aurora DB clusters); io1 (Multi-AZ DB clusters)
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
StorageType *string
// A list of tags.
//
// For more information, see [Tagging Amazon RDS resources] in the Amazon RDS User Guide or [Tagging Amazon Aurora and Amazon RDS resources] in the Amazon
// Aurora User Guide.
//
// [Tagging Amazon RDS resources]: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html
// [Tagging Amazon Aurora and Amazon RDS resources]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html
Tags []types.Tag
// Specifies whether to restore the DB cluster to the latest restorable backup
// time. By default, the DB cluster isn't restored to the latest restorable backup
// time.
//
// Constraints: Can't be specified if RestoreToTime parameter is provided.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
UseLatestRestorableTime *bool
// A list of VPC security groups that the new DB cluster belongs to.
//
// Valid for: Aurora DB clusters and Multi-AZ DB clusters
VpcSecurityGroupIds []string
noSmithyDocumentSerde
}
type RestoreDBClusterToPointInTimeOutput 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) addOperationRestoreDBClusterToPointInTimeMiddlewares(stack *middleware.Stack, options Options) (err error) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
err = stack.Serialize.Add(&awsAwsquery_serializeOpRestoreDBClusterToPointInTime{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsAwsquery_deserializeOpRestoreDBClusterToPointInTime{}, middleware.After)
if err != nil {
return err
}
if err := addProtocolFinalizerMiddlewares(stack, options, "RestoreDBClusterToPointInTime"); 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 = 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 = addOpRestoreDBClusterToPointInTimeValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opRestoreDBClusterToPointInTime(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 newServiceMetadataMiddleware_opRestoreDBClusterToPointInTime(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "RestoreDBClusterToPointInTime",
}
}