@SdkInternalApi
    final CreateLaunchResult executeCreateLaunch(CreateLaunchRequest createLaunchRequest) {

        ExecutionContext executionContext = createExecutionContext(createLaunchRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<CreateLaunchRequest> request = null;
        Response<CreateLaunchResult> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new CreateLaunchRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(createLaunchRequest));
                // 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, "Evidently");
                request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "CreateLaunch");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

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

            HttpResponseHandler<AmazonWebServiceResponse<CreateLaunchResult>> responseHandler = protocolFactory.createResponseHandler(
                    new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new CreateLaunchResultJsonUnmarshaller());
            response = invoke(request, responseHandler, executionContext);

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Creates a <i>launch</i> of a given feature. Before you create a launch, you must create the feature to use for
the launch.
</p>
<p>
You can use a launch to safely validate new features by serving them to a specified percentage of your users
while you roll out the feature. You can monitor the performance of the new feature to help you decide when to
ramp up traffic to more users. This helps you reduce risk and identify unintended consequences before you fully
launch the feature.
</p>
<p>
Don't use this operation to update an existing launch. Instead, use <a
href="https://docs.aws.amazon.com/cloudwatchevidently/latest/APIReference/API_UpdateLaunch.html"
>UpdateLaunch</a>.
</p>

@param createLaunchRequest
@return Result of the CreateLaunch operation returned by the service.
@throws ValidationException
        The value of a parameter in the request caused an error.
@throws ConflictException
        A resource was in an inconsistent state during an update or a deletion.
@throws ServiceQuotaExceededException
        The request would cause a service quota to be exceeded.
@throws ResourceNotFoundException
        The request references a resource that does not exist.
@throws AccessDeniedException
        You do not have sufficient permissions to perform this action.
@sample AmazonCloudWatchEvidently.CreateLaunch
@see <a href="http://docs.aws.amazon.com/goto/WebAPI/evidently-2021-02-01/CreateLaunch" target="_top">AWS API
     Documentation</a>
aws-java-sdk-cloudwatchevidently/src/main/java/com/amazonaws/services/cloudwatchevidently/AmazonCloudWatchEvidentlyClient.java