// Code generated by smithy-go-codegen DO NOT EDIT. package docdbelastic import ( "context" "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/aws-sdk-go-v2/service/docdbelastic/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // Creates a new Elastic DocumentDB cluster and returns its Cluster structure. func (c *Client) CreateCluster(ctx context.Context, params *CreateClusterInput, optFns ...func(*Options)) (*CreateClusterOutput, error) { if params == nil { params = &CreateClusterInput{} } result, metadata, err := c.invokeOperation(ctx, "CreateCluster", params, optFns, c.addOperationCreateClusterMiddlewares) if err != nil { return nil, err } out := result.(*CreateClusterOutput) out.ResultMetadata = metadata return out, nil } type CreateClusterInput struct { // The name of the Elastic DocumentDB cluster administrator. Constraints: // - Must be from 1 to 63 letters or numbers. // - The first character must be a letter. // - Cannot be a reserved word. // // This member is required. AdminUserName *string // The password for the Elastic DocumentDB cluster administrator and can contain // any printable ASCII characters. Constraints: // - Must contain from 8 to 100 characters. // - Cannot contain a forward slash (/), double quote ("), or the "at" symbol // (@). // // This member is required. AdminUserPassword *string // The authentication type for the Elastic DocumentDB cluster. // // This member is required. AuthType types.Auth // The name of the new Elastic DocumentDB cluster. This parameter is stored as a // lowercase string. Constraints: // - Must contain from 1 to 63 letters, numbers, or hyphens. // - The first character must be a letter. // - Cannot end with a hyphen or contain two consecutive hyphens. // Example: my-cluster // // This member is required. ClusterName *string // The capacity of each shard in the new Elastic DocumentDB cluster. // // This member is required. ShardCapacity *int32 // The number of shards to create in the new Elastic DocumentDB cluster. // // This member is required. ShardCount *int32 // The client token for the Elastic DocumentDB cluster. ClientToken *string // The KMS key identifier to use to encrypt the new Elastic DocumentDB cluster. // The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption // key. If you are creating a cluster using the same Amazon account that owns this // KMS encryption key, you can use the KMS key alias instead of the ARN as the KMS // encryption key. If an encryption key is not specified, Elastic DocumentDB uses // the default encryption key that KMS creates for your account. Your account has a // different default encryption key for each Amazon Region. KmsKeyId *string // The weekly time range during which system maintenance can occur, in Universal // Coordinated Time (UTC). Format: ddd:hh24:mi-ddd:hh24:mi Default: 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. Valid days: Mon, Tue, // Wed, Thu, Fri, Sat, Sun Constraints: Minimum 30-minute window. PreferredMaintenanceWindow *string // The Amazon EC2 subnet IDs for the new Elastic DocumentDB cluster. SubnetIds []string // The tags to be assigned to the new Elastic DocumentDB cluster. Tags map[string]string // A list of EC2 VPC security groups to associate with the new Elastic DocumentDB // cluster. VpcSecurityGroupIds []string noSmithyDocumentSerde } type CreateClusterOutput struct { // The new Elastic DocumentDB cluster that has been created. // // This member is required. Cluster *types.Cluster // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationCreateClusterMiddlewares(stack *middleware.Stack, options Options) (err error) { err = stack.Serialize.Add(&awsRestjson1_serializeOpCreateCluster{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsRestjson1_deserializeOpCreateCluster{}, middleware.After) if err != nil { return err } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { return err } if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { return err } if err = addRetryMiddlewares(stack, options); err != nil { return err } if err = addHTTPSignerV4Middleware(stack, options); err != nil { return err } if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { return err } if err = awsmiddleware.AddRecordResponseTiming(stack); 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 = addIdempotencyToken_opCreateClusterMiddleware(stack, options); err != nil { return err } if err = addOpCreateClusterValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateCluster(options.Region), middleware.Before); err != nil { return err } if err = awsmiddleware.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 } return nil } type idempotencyToken_initializeOpCreateCluster struct { tokenProvider IdempotencyTokenProvider } func (*idempotencyToken_initializeOpCreateCluster) ID() string { return "OperationIdempotencyTokenAutoFill" } func (m *idempotencyToken_initializeOpCreateCluster) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( out middleware.InitializeOutput, metadata middleware.Metadata, err error, ) { if m.tokenProvider == nil { return next.HandleInitialize(ctx, in) } input, ok := in.Parameters.(*CreateClusterInput) if !ok { return out, metadata, fmt.Errorf("expected middleware input to be of type *CreateClusterInput ") } if input.ClientToken == nil { t, err := m.tokenProvider.GetIdempotencyToken() if err != nil { return out, metadata, err } input.ClientToken = &t } return next.HandleInitialize(ctx, in) } func addIdempotencyToken_opCreateClusterMiddleware(stack *middleware.Stack, cfg Options) error { return stack.Initialize.Add(&idempotencyToken_initializeOpCreateCluster{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) } func newServiceMetadataMiddleware_opCreateCluster(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, SigningName: "docdb-elastic", OperationName: "CreateCluster", } }