@SdkInternalApi
    final CreateBlueGreenDeploymentResult executeCreateBlueGreenDeployment(CreateBlueGreenDeploymentRequest createBlueGreenDeploymentRequest) {

        ExecutionContext executionContext = createExecutionContext(createBlueGreenDeploymentRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<CreateBlueGreenDeploymentRequest> request = null;
        Response<CreateBlueGreenDeploymentResult> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new CreateBlueGreenDeploymentRequestMarshaller().marshall(super.beforeMarshalling(createBlueGreenDeploymentRequest));
                // 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, "CreateBlueGreenDeployment");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

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

            StaxResponseHandler<CreateBlueGreenDeploymentResult> responseHandler = new StaxResponseHandler<CreateBlueGreenDeploymentResult>(
                    new CreateBlueGreenDeploymentResultStaxUnmarshaller());

            response = invoke(request, responseHandler, executionContext);

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Creates a blue/green deployment.
</p>
<p>
A blue/green deployment creates a staging environment that copies the production environment. In a blue/green
deployment, the blue environment is the current production environment. The green environment is the staging
environment. The staging environment stays in sync with the current production environment using logical
replication.
</p>
<p>
You can make changes to the databases in the green environment without affecting production workloads. For
example, you can upgrade the major or minor DB engine version, change database parameters, or make schema changes
in the staging environment. You can thoroughly test changes in the green environment. When ready, you can switch
over the environments to promote the green environment to be the new production environment. The switchover
typically takes under a minute.
</p>
<p>
For more information, see <a
href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments.html">Using Amazon RDS
Blue/Green Deployments for database updates</a> in the <i>Amazon RDS User Guide</i> and <a
href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html"> Using Amazon RDS
Blue/Green Deployments for database updates</a> in the <i>Amazon Aurora User Guide</i>.
</p>

@param createBlueGreenDeploymentRequest
@return Result of the CreateBlueGreenDeployment operation returned by the service.
@throws DBInstanceNotFoundException
        <code>DBInstanceIdentifier</code> doesn't refer to an existing DB instance.
@throws DBClusterNotFoundException
        <code>DBClusterIdentifier</code> doesn't refer to an existing DB cluster.
@throws SourceDatabaseNotSupportedException
        The source DB instance isn't supported for a blue/green deployment.
@throws SourceClusterNotSupportedException
        The source DB cluster isn't supported for a blue/green deployment.
@throws BlueGreenDeploymentAlreadyExistsException
        A blue/green deployment with the specified name already exists.
@throws DBParameterGroupNotFoundException
        <code>DBParameterGroupName</code> doesn't refer to an existing DB parameter group.
@throws DBClusterParameterGroupNotFoundException
        <code>DBClusterParameterGroupName</code> doesn't refer to an existing DB cluster parameter group.
@throws InstanceQuotaExceededException
        The request would result in the user exceeding the allowed number of DB instances.
@throws DBClusterQuotaExceededException
        The user attempted to create a new DB cluster and the user has already reached the maximum allowed DB
        cluster quota.
@throws InvalidDBInstanceStateException
        The DB instance isn't in a valid state.
@throws InvalidDBClusterStateException
        The requested operation can't be performed while the cluster is in this state.
@sample AmazonRDS.CreateBlueGreenDeployment
@see <a href="http://docs.aws.amazon.com/goto/WebAPI/rds-2014-10-31/CreateBlueGreenDeployment" target="_top">AWS
     API Documentation</a>
aws-java-sdk-rds/src/main/java/com/amazonaws/services/rds/AmazonRDSClient.java