@SdkInternalApi
    final DBCluster executeRestoreDBClusterFromSnapshot(RestoreDBClusterFromSnapshotRequest restoreDBClusterFromSnapshotRequest) {

        ExecutionContext executionContext = createExecutionContext(restoreDBClusterFromSnapshotRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<RestoreDBClusterFromSnapshotRequest> request = null;
        Response<DBCluster> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new RestoreDBClusterFromSnapshotRequestMarshaller().marshall(super.beforeMarshalling(restoreDBClusterFromSnapshotRequest));
                // Binds the request metrics to the current request.
                request.setAWSRequestMetrics(awsRequestMetrics);
                request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
                request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
                request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
                request.addHandlerContext(HandlerContextKey.SERVICE_ID, "RDS");
                request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "RestoreDBClusterFromSnapshot");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

            } finally {
                awsRequestMetrics.endEvent(Field.RequestMarshallTime);
            }

            StaxResponseHandler<DBCluster> responseHandler = new StaxResponseHandler<DBCluster>(new DBClusterStaxUnmarshaller());

            response = invoke(request, responseHandler, executionContext);

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Creates a new DB cluster from a DB snapshot or DB cluster snapshot.
</p>
<p>
The target DB cluster is created from the source snapshot with a default configuration. If you don't specify a
security group, the new DB cluster is associated with the default security group.
</p>
<note>
<p>
This operation only restores the DB cluster, not the DB instances for that DB cluster. You must invoke the
<code>CreateDBInstance</code> operation to create DB instances for the restored DB cluster, specifying the
identifier of the restored DB cluster in <code>DBClusterIdentifier</code>. You can create DB instances only after
the <code>RestoreDBClusterFromSnapshot</code> operation has completed and the DB cluster is available.
</p>
</note>
<p>
For more information on Amazon Aurora DB clusters, see <a
href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html"> What is Amazon
Aurora?</a> in the <i>Amazon Aurora User Guide</i>.
</p>
<p>
For more information on Multi-AZ DB clusters, see <a
href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html"> Multi-AZ DB
cluster deployments</a> in the <i>Amazon RDS User Guide.</i>
</p>

@param restoreDBClusterFromSnapshotRequest
@return Result of the RestoreDBClusterFromSnapshot operation returned by the service.
@throws DBClusterAlreadyExistsException
        The user already has a DB cluster with the given identifier.
@throws DBClusterQuotaExceededException
        The user attempted to create a new DB cluster and the user has already reached the maximum allowed DB
        cluster quota.
@throws StorageQuotaExceededException
        The request would result in the user exceeding the allowed amount of storage available across all DB
        instances.
@throws DBSubnetGroupNotFoundException
        <code>DBSubnetGroupName</code> doesn't refer to an existing DB subnet group.
@throws DBSnapshotNotFoundException
        <code>DBSnapshotIdentifier</code> doesn't refer to an existing DB snapshot.
@throws DBClusterSnapshotNotFoundException
        <code>DBClusterSnapshotIdentifier</code> doesn't refer to an existing DB cluster snapshot.
@throws InsufficientDBClusterCapacityException
        The DB cluster doesn't have enough capacity for the current operation.
@throws InsufficientStorageClusterCapacityException
        There is insufficient storage available for the current action. You might be able to resolve this error
        by updating your subnet group to use different Availability Zones that have more storage available.
@throws InvalidDBSnapshotStateException
        The state of the DB snapshot doesn't allow deletion.
@throws InvalidDBClusterSnapshotStateException
        The supplied value isn't a valid DB cluster snapshot state.
@throws StorageQuotaExceededException
        The request would result in the user exceeding the allowed amount of storage available across all DB
        instances.
@throws InvalidVPCNetworkStateException
        The DB subnet group doesn't cover all Availability Zones after it's created because of users' change.
@throws DBSubnetGroupDoesNotCoverEnoughAZsException
        Subnets in the DB subnet group should cover at least two Availability Zones unless there is only one
        Availability Zone.
@throws InvalidRestoreException
        Cannot restore from VPC backup to non-VPC DB instance.
@throws DBSubnetGroupNotFoundException
        <code>DBSubnetGroupName</code> doesn't refer to an existing DB subnet group.
@throws InvalidSubnetException
        The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.
@throws OptionGroupNotFoundException
        The specified option group could not be found.
@throws KMSKeyNotAccessibleException
        An error occurred accessing an Amazon Web Services KMS key.
@throws DomainNotFoundException
        <code>Domain</code> doesn't refer to an existing Active Directory domain.
@throws DBClusterParameterGroupNotFoundException
        <code>DBClusterParameterGroupName</code> doesn't refer to an existing DB cluster parameter group.
@throws InvalidDBInstanceStateException
        The DB instance isn't in a valid state.
@throws InsufficientDBInstanceCapacityException
        The specified DB instance class isn't available in the specified Availability Zone.
@sample AmazonRDS.RestoreDBClusterFromSnapshot
@see <a href="http://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/RestoreDBClusterFromSnapshot"
     target="_top">AWS API Documentation</a>
aws-java-sdk-rds/src/main/java/com/amazonaws/services/rds/AmazonRDSClient.java