/* * Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.cloudfront; import org.w3c.dom.*; import java.net.*; import java.util.*; import javax.annotation.Generated; import org.apache.commons.logging.*; import com.amazonaws.*; import com.amazonaws.annotation.SdkInternalApi; import com.amazonaws.auth.*; import com.amazonaws.handlers.*; import com.amazonaws.http.*; import com.amazonaws.internal.*; import com.amazonaws.internal.auth.*; import com.amazonaws.metrics.*; import com.amazonaws.regions.*; import com.amazonaws.transform.*; import com.amazonaws.util.*; import com.amazonaws.protocol.json.*; import com.amazonaws.util.AWSRequestMetrics.Field; import com.amazonaws.annotation.ThreadSafe; import com.amazonaws.client.AwsSyncClientParams; import com.amazonaws.services.cloudfront.AmazonCloudFrontClientBuilder; import com.amazonaws.services.cloudfront.waiters.AmazonCloudFrontWaiters; import com.amazonaws.AmazonServiceException; import com.amazonaws.services.cloudfront.model.*; import com.amazonaws.services.cloudfront.model.transform.*; /** * Client for accessing CloudFront. All service calls made using this client are blocking, and will not return until the * service call completes. * <p> * <fullname>Amazon CloudFront</fullname> * <p> * This is the <i>Amazon CloudFront API Reference</i>. This guide is for developers who need detailed information about * the CloudFront API actions, data types, and errors. For detailed information about CloudFront features and their * associated API calls, see the <i>Amazon CloudFront Developer Guide</i>. * </p> */ @ThreadSafe @Generated("com.amazonaws:aws-java-sdk-code-generator") public class AmazonCloudFrontClient extends AmazonWebServiceClient implements AmazonCloudFront { /** Provider for AWS credentials. */ private final AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory.getLog(AmazonCloudFront.class); /** Default signing name for the service. */ private static final String DEFAULT_SIGNING_NAME = "cloudfront"; private volatile AmazonCloudFrontWaiters waiters; /** Client configuration factory providing ClientConfigurations tailored to this client */ protected static final ClientConfigurationFactory configFactory = new ClientConfigurationFactory(); /** * List of exception unmarshallers for all modeled exceptions */ protected final List<Unmarshaller<AmazonServiceException, Node>> exceptionUnmarshallers = new ArrayList<Unmarshaller<AmazonServiceException, Node>>(); /** * Constructs a new client to invoke service methods on CloudFront. A credentials provider chain will be used that * searches for credentials in this order: * <ul> * <li>Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY</li> * <li>Java System Properties - aws.accessKeyId and aws.secretKey</li> * <li>Instance profile credentials delivered through the Amazon EC2 metadata service</li> * </ul> * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @see DefaultAWSCredentialsProviderChain * @deprecated use {@link AmazonCloudFrontClientBuilder#defaultClient()} */ @Deprecated public AmazonCloudFrontClient() { this(DefaultAWSCredentialsProviderChain.getInstance(), configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on CloudFront. A credentials provider chain will be used that * searches for credentials in this order: * <ul> * <li>Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY</li> * <li>Java System Properties - aws.accessKeyId and aws.secretKey</li> * <li>Instance profile credentials delivered through the Amazon EC2 metadata service</li> * </ul> * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientConfiguration * The client configuration options controlling how this client connects to CloudFront (ex: proxy settings, * retry counts, etc.). * * @see DefaultAWSCredentialsProviderChain * @deprecated use {@link AmazonCloudFrontClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AmazonCloudFrontClient(ClientConfiguration clientConfiguration) { this(DefaultAWSCredentialsProviderChain.getInstance(), clientConfiguration); } /** * Constructs a new client to invoke service methods on CloudFront using the specified AWS account credentials. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when authenticating with AWS services. * @deprecated use {@link AmazonCloudFrontClientBuilder#withCredentials(AWSCredentialsProvider)} for example: * {@code AmazonCloudFrontClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();} */ @Deprecated public AmazonCloudFrontClient(AWSCredentials awsCredentials) { this(awsCredentials, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on CloudFront using the specified AWS account credentials and * client configuration options. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when authenticating with AWS services. * @param clientConfiguration * The client configuration options controlling how this client connects to CloudFront (ex: proxy settings, * retry counts, etc.). * @deprecated use {@link AmazonCloudFrontClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AmazonCloudFrontClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AmazonCloudFrontClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { super(clientConfiguration); this.awsCredentialsProvider = new StaticCredentialsProvider(awsCredentials); init(); } /** * Constructs a new client to invoke service methods on CloudFront using the specified AWS account credentials * provider. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to authenticate requests with AWS services. * @deprecated use {@link AmazonCloudFrontClientBuilder#withCredentials(AWSCredentialsProvider)} */ @Deprecated public AmazonCloudFrontClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on CloudFront using the specified AWS account credentials * provider and client configuration options. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client connects to CloudFront (ex: proxy settings, * retry counts, etc.). * @deprecated use {@link AmazonCloudFrontClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AmazonCloudFrontClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AmazonCloudFrontClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on CloudFront using the specified AWS account credentials * provider, client configuration options, and request metric collector. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client connects to CloudFront (ex: proxy settings, * retry counts, etc.). * @param requestMetricCollector * optional request metric collector * @deprecated use {@link AmazonCloudFrontClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AmazonCloudFrontClientBuilder#withClientConfiguration(ClientConfiguration)} and * {@link AmazonCloudFrontClientBuilder#withMetricsCollector(RequestMetricCollector)} */ @Deprecated public AmazonCloudFrontClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(clientConfiguration, requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } public static AmazonCloudFrontClientBuilder builder() { return AmazonCloudFrontClientBuilder.standard(); } /** * Constructs a new client to invoke service methods on CloudFront using the specified parameters. * * <p> * All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientParams * Object providing client parameters. */ AmazonCloudFrontClient(AwsSyncClientParams clientParams) { super(clientParams); this.awsCredentialsProvider = clientParams.getCredentialsProvider(); init(); } private void init() { exceptionUnmarshallers.add(new StreamingDistributionAlreadyExistsExceptionUnmarshaller()); exceptionUnmarshallers.add(new TrustedSignerDoesNotExistExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidProtocolSettingsExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyOriginCustomHeadersExceptionUnmarshaller()); exceptionUnmarshallers.add(new NoSuchInvalidationExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidLocationCodeExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidForwardCookiesExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidWebACLIdExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyCertificatesExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidOriginAccessIdentityExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidQueryStringParametersExceptionUnmarshaller()); exceptionUnmarshallers.add(new CNAMEAlreadyExistsExceptionUnmarshaller()); exceptionUnmarshallers.add(new IllegalUpdateExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyCookieNamesInWhiteListExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyHeadersInForwardedValuesExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidOriginReadTimeoutExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidMinimumProtocolVersionExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyDistributionCNAMEsExceptionUnmarshaller()); exceptionUnmarshallers.add(new NoSuchDistributionExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyInvalidationsInProgressExceptionUnmarshaller()); exceptionUnmarshallers.add(new NoSuchResourceExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidErrorCodeExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyCacheBehaviorsExceptionUnmarshaller()); exceptionUnmarshallers.add(new InconsistentQuantitiesExceptionUnmarshaller()); exceptionUnmarshallers.add(new CloudFrontOriginAccessIdentityInUseExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidLambdaFunctionAssociationExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyLambdaFunctionAssociationsExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidViewerCertificateExceptionUnmarshaller()); exceptionUnmarshallers.add(new DistributionNotDisabledExceptionUnmarshaller()); exceptionUnmarshallers.add(new MissingBodyExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidDefaultRootObjectExceptionUnmarshaller()); exceptionUnmarshallers.add(new AccessDeniedExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyOriginsExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidTTLOrderExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidRequiredProtocolExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidArgumentExceptionUnmarshaller()); exceptionUnmarshallers.add(new NoSuchOriginExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyTrustedSignersExceptionUnmarshaller()); exceptionUnmarshallers.add(new NoSuchStreamingDistributionExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyCloudFrontOriginAccessIdentitiesExceptionUnmarshaller()); exceptionUnmarshallers.add(new BatchTooLargeExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidResponseCodeExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidRelativePathExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidOriginKeepaliveTimeoutExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyDistributionsWithLambdaAssociationsExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyStreamingDistributionsExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidHeadersForS3OriginExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyDistributionsExceptionUnmarshaller()); exceptionUnmarshallers.add(new StreamingDistributionNotDisabledExceptionUnmarshaller()); exceptionUnmarshallers.add(new PreconditionFailedExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyQueryStringParametersExceptionUnmarshaller()); exceptionUnmarshallers.add(new DistributionAlreadyExistsExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyStreamingDistributionCNAMEsExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidIfMatchVersionExceptionUnmarshaller()); exceptionUnmarshallers.add(new CloudFrontOriginAccessIdentityAlreadyExistsExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidTaggingExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidOriginExceptionUnmarshaller()); exceptionUnmarshallers.add(new NoSuchCloudFrontOriginAccessIdentityExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidGeoRestrictionParameterExceptionUnmarshaller()); exceptionUnmarshallers.add(new StandardErrorUnmarshaller(com.amazonaws.services.cloudfront.model.AmazonCloudFrontException.class)); setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(ENDPOINT_PREFIX); // calling this.setEndPoint(...) will also modify the signer accordingly this.setEndpoint("https://cloudfront.amazonaws.com/"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain("/com/amazonaws/services/cloudfront/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain("/com/amazonaws/services/cloudfront/request.handler2s")); requestHandler2s.addAll(chainFactory.getGlobalHandlers()); } /** * <p> * Creates a new origin access identity. If you're using Amazon S3 for your origin, you can use an origin access * identity to require users to access your content using a CloudFront URL instead of the Amazon S3 URL. For more * information about how to use origin access identities, see <a * href="http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html">Serving Private * Content through CloudFront</a> in the <i>Amazon CloudFront Developer Guide</i>. * </p> * * @param createCloudFrontOriginAccessIdentityRequest * The request to create a new origin access identity. * @return Result of the CreateCloudFrontOriginAccessIdentity operation returned by the service. * @throws CloudFrontOriginAccessIdentityAlreadyExistsException * If the <code>CallerReference</code> is a value you already sent in a previous request to create an * identity but the content of the <code>CloudFrontOriginAccessIdentityConfig</code> is different from the * original request, CloudFront returns a <code>CloudFrontOriginAccessIdentityAlreadyExists</code> error. * @throws MissingBodyException * This operation requires a body. Ensure that the body is present and the Content-Type header is set. * @throws TooManyCloudFrontOriginAccessIdentitiesException * Processing your request would cause you to exceed the maximum number of origin access identities allowed. * @throws InvalidArgumentException * The argument is invalid. * @throws InconsistentQuantitiesException * The value of <code>Quantity</code> and the size of <code>Items</code> do not match. * @sample AmazonCloudFront.CreateCloudFrontOriginAccessIdentity * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/CreateCloudFrontOriginAccessIdentity" * target="_top">AWS API Documentation</a> */ @Override public CreateCloudFrontOriginAccessIdentityResult createCloudFrontOriginAccessIdentity(CreateCloudFrontOriginAccessIdentityRequest request) { request = beforeClientExecution(request); return executeCreateCloudFrontOriginAccessIdentity(request); } @SdkInternalApi final CreateCloudFrontOriginAccessIdentityResult executeCreateCloudFrontOriginAccessIdentity( CreateCloudFrontOriginAccessIdentityRequest createCloudFrontOriginAccessIdentityRequest) { ExecutionContext executionContext = createExecutionContext(createCloudFrontOriginAccessIdentityRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateCloudFrontOriginAccessIdentityRequest> request = null; Response<CreateCloudFrontOriginAccessIdentityResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateCloudFrontOriginAccessIdentityRequestMarshaller().marshall(super .beforeMarshalling(createCloudFrontOriginAccessIdentityRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<CreateCloudFrontOriginAccessIdentityResult> responseHandler = new StaxResponseHandler<CreateCloudFrontOriginAccessIdentityResult>( new CreateCloudFrontOriginAccessIdentityResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates a new web distribution. Send a <code>POST</code> request to the * <code>/<i>CloudFront API version</i>/distribution</code>/<code>distribution ID</code> resource. * </p> * * @param createDistributionRequest * The request to create a new distribution. * @return Result of the CreateDistribution operation returned by the service. * @throws CNAMEAlreadyExistsException * @throws DistributionAlreadyExistsException * The caller reference you attempted to create the distribution with is associated with another * distribution. * @throws InvalidOriginException * The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket. * @throws InvalidOriginAccessIdentityException * The origin access identity is not valid or doesn't exist. * @throws AccessDeniedException * Access denied. * @throws TooManyTrustedSignersException * Your request contains more trusted signers than are allowed per distribution. * @throws TrustedSignerDoesNotExistException * One or more of your trusted signers do not exist. * @throws InvalidViewerCertificateException * @throws InvalidMinimumProtocolVersionException * @throws MissingBodyException * This operation requires a body. Ensure that the body is present and the Content-Type header is set. * @throws TooManyDistributionCNAMEsException * Your request contains more CNAMEs than are allowed per distribution. * @throws TooManyDistributionsException * Processing your request would cause you to exceed the maximum number of distributions allowed. * @throws InvalidDefaultRootObjectException * The default root object file name is too big or contains an invalid character. * @throws InvalidRelativePathException * The relative path is too big, is not URL-encoded, or does not begin with a slash (/). * @throws InvalidErrorCodeException * @throws InvalidResponseCodeException * @throws InvalidArgumentException * The argument is invalid. * @throws InvalidRequiredProtocolException * This operation requires the HTTPS protocol. Ensure that you specify the HTTPS protocol in your request, * or omit the <code>RequiredProtocols</code> element from your distribution configuration. * @throws NoSuchOriginException * No origin exists with the specified <code>Origin Id</code>. * @throws TooManyOriginsException * You cannot create more origins for the distribution. * @throws TooManyCacheBehaviorsException * You cannot create more cache behaviors for the distribution. * @throws TooManyCookieNamesInWhiteListException * Your request contains more cookie names in the whitelist than are allowed per cache behavior. * @throws InvalidForwardCookiesException * Your request contains forward cookies option which doesn't match with the expectation for the * <code>whitelisted</code> list of cookie names. Either list of cookie names has been specified when not * allowed or list of cookie names is missing when expected. * @throws TooManyHeadersInForwardedValuesException * @throws InvalidHeadersForS3OriginException * @throws InconsistentQuantitiesException * The value of <code>Quantity</code> and the size of <code>Items</code> do not match. * @throws TooManyCertificatesException * You cannot create anymore custom SSL/TLS certificates. * @throws InvalidLocationCodeException * @throws InvalidGeoRestrictionParameterException * @throws InvalidProtocolSettingsException * You cannot specify SSLv3 as the minimum protocol version if you only want to support only clients that * support Server Name Indication (SNI). * @throws InvalidTTLOrderException * @throws InvalidWebACLIdException * @throws TooManyOriginCustomHeadersException * @throws TooManyQueryStringParametersException * @throws InvalidQueryStringParametersException * @throws TooManyDistributionsWithLambdaAssociationsException * Processing your request would cause the maximum number of distributions with Lambda function associations * per owner to be exceeded. * @throws TooManyLambdaFunctionAssociationsException * Your request contains more Lambda function associations than are allowed per distribution. * @throws InvalidLambdaFunctionAssociationException * The specified Lambda function association is invalid. * @throws InvalidOriginReadTimeoutException * @throws InvalidOriginKeepaliveTimeoutException * @sample AmazonCloudFront.CreateDistribution * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/CreateDistribution" target="_top">AWS * API Documentation</a> */ @Override public CreateDistributionResult createDistribution(CreateDistributionRequest request) { request = beforeClientExecution(request); return executeCreateDistribution(request); } @SdkInternalApi final CreateDistributionResult executeCreateDistribution(CreateDistributionRequest createDistributionRequest) { ExecutionContext executionContext = createExecutionContext(createDistributionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateDistributionRequest> request = null; Response<CreateDistributionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateDistributionRequestMarshaller().marshall(super.beforeMarshalling(createDistributionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<CreateDistributionResult> responseHandler = new StaxResponseHandler<CreateDistributionResult>( new CreateDistributionResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Create a new distribution with tags. * </p> * * @param createDistributionWithTagsRequest * The request to create a new distribution with tags. * @return Result of the CreateDistributionWithTags operation returned by the service. * @throws CNAMEAlreadyExistsException * @throws DistributionAlreadyExistsException * The caller reference you attempted to create the distribution with is associated with another * distribution. * @throws InvalidOriginException * The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket. * @throws InvalidOriginAccessIdentityException * The origin access identity is not valid or doesn't exist. * @throws AccessDeniedException * Access denied. * @throws TooManyTrustedSignersException * Your request contains more trusted signers than are allowed per distribution. * @throws TrustedSignerDoesNotExistException * One or more of your trusted signers do not exist. * @throws InvalidViewerCertificateException * @throws InvalidMinimumProtocolVersionException * @throws MissingBodyException * This operation requires a body. Ensure that the body is present and the Content-Type header is set. * @throws TooManyDistributionCNAMEsException * Your request contains more CNAMEs than are allowed per distribution. * @throws TooManyDistributionsException * Processing your request would cause you to exceed the maximum number of distributions allowed. * @throws InvalidDefaultRootObjectException * The default root object file name is too big or contains an invalid character. * @throws InvalidRelativePathException * The relative path is too big, is not URL-encoded, or does not begin with a slash (/). * @throws InvalidErrorCodeException * @throws InvalidResponseCodeException * @throws InvalidArgumentException * The argument is invalid. * @throws InvalidRequiredProtocolException * This operation requires the HTTPS protocol. Ensure that you specify the HTTPS protocol in your request, * or omit the <code>RequiredProtocols</code> element from your distribution configuration. * @throws NoSuchOriginException * No origin exists with the specified <code>Origin Id</code>. * @throws TooManyOriginsException * You cannot create more origins for the distribution. * @throws TooManyCacheBehaviorsException * You cannot create more cache behaviors for the distribution. * @throws TooManyCookieNamesInWhiteListException * Your request contains more cookie names in the whitelist than are allowed per cache behavior. * @throws InvalidForwardCookiesException * Your request contains forward cookies option which doesn't match with the expectation for the * <code>whitelisted</code> list of cookie names. Either list of cookie names has been specified when not * allowed or list of cookie names is missing when expected. * @throws TooManyHeadersInForwardedValuesException * @throws InvalidHeadersForS3OriginException * @throws InconsistentQuantitiesException * The value of <code>Quantity</code> and the size of <code>Items</code> do not match. * @throws TooManyCertificatesException * You cannot create anymore custom SSL/TLS certificates. * @throws InvalidLocationCodeException * @throws InvalidGeoRestrictionParameterException * @throws InvalidProtocolSettingsException * You cannot specify SSLv3 as the minimum protocol version if you only want to support only clients that * support Server Name Indication (SNI). * @throws InvalidTTLOrderException * @throws InvalidWebACLIdException * @throws TooManyOriginCustomHeadersException * @throws InvalidTaggingException * @throws TooManyQueryStringParametersException * @throws InvalidQueryStringParametersException * @throws TooManyDistributionsWithLambdaAssociationsException * Processing your request would cause the maximum number of distributions with Lambda function associations * per owner to be exceeded. * @throws TooManyLambdaFunctionAssociationsException * Your request contains more Lambda function associations than are allowed per distribution. * @throws InvalidLambdaFunctionAssociationException * The specified Lambda function association is invalid. * @throws InvalidOriginReadTimeoutException * @throws InvalidOriginKeepaliveTimeoutException * @sample AmazonCloudFront.CreateDistributionWithTags * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/CreateDistributionWithTags" * target="_top">AWS API Documentation</a> */ @Override public CreateDistributionWithTagsResult createDistributionWithTags(CreateDistributionWithTagsRequest request) { request = beforeClientExecution(request); return executeCreateDistributionWithTags(request); } @SdkInternalApi final CreateDistributionWithTagsResult executeCreateDistributionWithTags(CreateDistributionWithTagsRequest createDistributionWithTagsRequest) { ExecutionContext executionContext = createExecutionContext(createDistributionWithTagsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateDistributionWithTagsRequest> request = null; Response<CreateDistributionWithTagsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateDistributionWithTagsRequestMarshaller().marshall(super.beforeMarshalling(createDistributionWithTagsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<CreateDistributionWithTagsResult> responseHandler = new StaxResponseHandler<CreateDistributionWithTagsResult>( new CreateDistributionWithTagsResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Create a new invalidation. * </p> * * @param createInvalidationRequest * The request to create an invalidation. * @return Result of the CreateInvalidation operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws MissingBodyException * This operation requires a body. Ensure that the body is present and the Content-Type header is set. * @throws InvalidArgumentException * The argument is invalid. * @throws NoSuchDistributionException * The specified distribution does not exist. * @throws BatchTooLargeException * @throws TooManyInvalidationsInProgressException * You have exceeded the maximum number of allowable InProgress invalidation batch requests, or invalidation * objects. * @throws InconsistentQuantitiesException * The value of <code>Quantity</code> and the size of <code>Items</code> do not match. * @sample AmazonCloudFront.CreateInvalidation * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/CreateInvalidation" target="_top">AWS * API Documentation</a> */ @Override public CreateInvalidationResult createInvalidation(CreateInvalidationRequest request) { request = beforeClientExecution(request); return executeCreateInvalidation(request); } @SdkInternalApi final CreateInvalidationResult executeCreateInvalidation(CreateInvalidationRequest createInvalidationRequest) { ExecutionContext executionContext = createExecutionContext(createInvalidationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateInvalidationRequest> request = null; Response<CreateInvalidationResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateInvalidationRequestMarshaller().marshall(super.beforeMarshalling(createInvalidationRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<CreateInvalidationResult> responseHandler = new StaxResponseHandler<CreateInvalidationResult>( new CreateInvalidationResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Creates a new RMTP distribution. An RTMP distribution is similar to a web distribution, but an RTMP distribution * streams media files using the Adobe Real-Time Messaging Protocol (RTMP) instead of serving files using HTTP. * </p> * <p> * To create a new web distribution, submit a <code>POST</code> request to the <i>CloudFront API * version</i>/distribution resource. The request body must include a document with a * <i>StreamingDistributionConfig</i> element. The response echoes the <code>StreamingDistributionConfig</code> * element and returns other information about the RTMP distribution. * </p> * <p> * To get the status of your request, use the <i>GET StreamingDistribution</i> API action. When the value of * <code>Enabled</code> is <code>true</code> and the value of <code>Status</code> is <code>Deployed</code>, your * distribution is ready. A distribution usually deploys in less than 15 minutes. * </p> * <p> * For more information about web distributions, see <a * href="http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp.html">Working with RTMP * Distributions</a> in the <i>Amazon CloudFront Developer Guide</i>. * </p> * <important> * <p> * Beginning with the 2012-05-05 version of the CloudFront API, we made substantial changes to the format of the XML * document that you include in the request body when you create or update a web distribution or an RTMP * distribution, and when you invalidate objects. With previous versions of the API, we discovered that it was too * easy to accidentally delete one or more values for an element that accepts multiple values, for example, CNAMEs * and trusted signers. Our changes for the 2012-05-05 release are intended to prevent these accidental deletions * and to notify you when there's a mismatch between the number of values you say you're specifying in the * <code>Quantity</code> element and the number of values specified. * </p> * </important> * * @param createStreamingDistributionRequest * The request to create a new streaming distribution. * @return Result of the CreateStreamingDistribution operation returned by the service. * @throws CNAMEAlreadyExistsException * @throws StreamingDistributionAlreadyExistsException * @throws InvalidOriginException * The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket. * @throws InvalidOriginAccessIdentityException * The origin access identity is not valid or doesn't exist. * @throws AccessDeniedException * Access denied. * @throws TooManyTrustedSignersException * Your request contains more trusted signers than are allowed per distribution. * @throws TrustedSignerDoesNotExistException * One or more of your trusted signers do not exist. * @throws MissingBodyException * This operation requires a body. Ensure that the body is present and the Content-Type header is set. * @throws TooManyStreamingDistributionCNAMEsException * @throws TooManyStreamingDistributionsException * Processing your request would cause you to exceed the maximum number of streaming distributions allowed. * @throws InvalidArgumentException * The argument is invalid. * @throws InconsistentQuantitiesException * The value of <code>Quantity</code> and the size of <code>Items</code> do not match. * @sample AmazonCloudFront.CreateStreamingDistribution * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/CreateStreamingDistribution" * target="_top">AWS API Documentation</a> */ @Override public CreateStreamingDistributionResult createStreamingDistribution(CreateStreamingDistributionRequest request) { request = beforeClientExecution(request); return executeCreateStreamingDistribution(request); } @SdkInternalApi final CreateStreamingDistributionResult executeCreateStreamingDistribution(CreateStreamingDistributionRequest createStreamingDistributionRequest) { ExecutionContext executionContext = createExecutionContext(createStreamingDistributionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateStreamingDistributionRequest> request = null; Response<CreateStreamingDistributionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateStreamingDistributionRequestMarshaller().marshall(super.beforeMarshalling(createStreamingDistributionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<CreateStreamingDistributionResult> responseHandler = new StaxResponseHandler<CreateStreamingDistributionResult>( new CreateStreamingDistributionResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Create a new streaming distribution with tags. * </p> * * @param createStreamingDistributionWithTagsRequest * The request to create a new streaming distribution with tags. * @return Result of the CreateStreamingDistributionWithTags operation returned by the service. * @throws CNAMEAlreadyExistsException * @throws StreamingDistributionAlreadyExistsException * @throws InvalidOriginException * The Amazon S3 origin server specified does not refer to a valid Amazon S3 bucket. * @throws InvalidOriginAccessIdentityException * The origin access identity is not valid or doesn't exist. * @throws AccessDeniedException * Access denied. * @throws TooManyTrustedSignersException * Your request contains more trusted signers than are allowed per distribution. * @throws TrustedSignerDoesNotExistException * One or more of your trusted signers do not exist. * @throws MissingBodyException * This operation requires a body. Ensure that the body is present and the Content-Type header is set. * @throws TooManyStreamingDistributionCNAMEsException * @throws TooManyStreamingDistributionsException * Processing your request would cause you to exceed the maximum number of streaming distributions allowed. * @throws InvalidArgumentException * The argument is invalid. * @throws InconsistentQuantitiesException * The value of <code>Quantity</code> and the size of <code>Items</code> do not match. * @throws InvalidTaggingException * @sample AmazonCloudFront.CreateStreamingDistributionWithTags * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/CreateStreamingDistributionWithTags" * target="_top">AWS API Documentation</a> */ @Override public CreateStreamingDistributionWithTagsResult createStreamingDistributionWithTags(CreateStreamingDistributionWithTagsRequest request) { request = beforeClientExecution(request); return executeCreateStreamingDistributionWithTags(request); } @SdkInternalApi final CreateStreamingDistributionWithTagsResult executeCreateStreamingDistributionWithTags( CreateStreamingDistributionWithTagsRequest createStreamingDistributionWithTagsRequest) { ExecutionContext executionContext = createExecutionContext(createStreamingDistributionWithTagsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<CreateStreamingDistributionWithTagsRequest> request = null; Response<CreateStreamingDistributionWithTagsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateStreamingDistributionWithTagsRequestMarshaller().marshall(super .beforeMarshalling(createStreamingDistributionWithTagsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<CreateStreamingDistributionWithTagsResult> responseHandler = new StaxResponseHandler<CreateStreamingDistributionWithTagsResult>( new CreateStreamingDistributionWithTagsResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Delete an origin access identity. * </p> * * @param deleteCloudFrontOriginAccessIdentityRequest * Deletes a origin access identity. * @return Result of the DeleteCloudFrontOriginAccessIdentity operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws InvalidIfMatchVersionException * The <code>If-Match</code> version is missing or not valid for the distribution. * @throws NoSuchCloudFrontOriginAccessIdentityException * The specified origin access identity does not exist. * @throws PreconditionFailedException * The precondition given in one or more of the request-header fields evaluated to <code>false</code>. * @throws CloudFrontOriginAccessIdentityInUseException * @sample AmazonCloudFront.DeleteCloudFrontOriginAccessIdentity * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/DeleteCloudFrontOriginAccessIdentity" * target="_top">AWS API Documentation</a> */ @Override public DeleteCloudFrontOriginAccessIdentityResult deleteCloudFrontOriginAccessIdentity(DeleteCloudFrontOriginAccessIdentityRequest request) { request = beforeClientExecution(request); return executeDeleteCloudFrontOriginAccessIdentity(request); } @SdkInternalApi final DeleteCloudFrontOriginAccessIdentityResult executeDeleteCloudFrontOriginAccessIdentity( DeleteCloudFrontOriginAccessIdentityRequest deleteCloudFrontOriginAccessIdentityRequest) { ExecutionContext executionContext = createExecutionContext(deleteCloudFrontOriginAccessIdentityRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteCloudFrontOriginAccessIdentityRequest> request = null; Response<DeleteCloudFrontOriginAccessIdentityResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteCloudFrontOriginAccessIdentityRequestMarshaller().marshall(super .beforeMarshalling(deleteCloudFrontOriginAccessIdentityRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<DeleteCloudFrontOriginAccessIdentityResult> responseHandler = new StaxResponseHandler<DeleteCloudFrontOriginAccessIdentityResult>( new DeleteCloudFrontOriginAccessIdentityResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Delete a distribution. * </p> * * @param deleteDistributionRequest * This action deletes a web distribution. To delete a web distribution using the CloudFront API, perform the * following steps.</p> * <p> * <b>To delete a web distribution using the CloudFront API:</b> * </p> * <ol> * <li> * <p> * Disable the web distribution * </p> * </li> * <li> * <p> * Submit a <code>GET Distribution Config</code> request to get the current configuration and the * <code>Etag</code> header for the distribution. * </p> * </li> * <li> * <p> * Update the XML document that was returned in the response to your <code>GET Distribution Config</code> * request to change the value of <code>Enabled</code> to <code>false</code>. * </p> * </li> * <li> * <p> * Submit a <code>PUT Distribution Config</code> request to update the configuration for your distribution. * In the request body, include the XML document that you updated in Step 3. Set the value of the HTTP * <code>If-Match</code> header to the value of the <code>ETag</code> header that CloudFront returned when * you submitted the <code>GET Distribution Config</code> request in Step 2. * </p> * </li> * <li> * <p> * Review the response to the <code>PUT Distribution Config</code> request to confirm that the distribution * was successfully disabled. * </p> * </li> * <li> * <p> * Submit a <code>GET Distribution</code> request to confirm that your changes have propagated. When * propagation is complete, the value of <code>Status</code> is <code>Deployed</code>. * </p> * </li> * <li> * <p> * Submit a <code>DELETE Distribution</code> request. Set the value of the HTTP <code>If-Match</code> header * to the value of the <code>ETag</code> header that CloudFront returned when you submitted the * <code>GET Distribution Config</code> request in Step 6. * </p> * </li> * <li> * <p> * Review the response to your <code>DELETE Distribution</code> request to confirm that the distribution was * successfully deleted. * </p> * </li> * </ol> * <p> * For information about deleting a distribution using the CloudFront console, see <a * href="http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/HowToDeleteDistribution.html" * >Deleting a Distribution</a> in the <i>Amazon CloudFront Developer Guide</i>. * @return Result of the DeleteDistribution operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws DistributionNotDisabledException * @throws InvalidIfMatchVersionException * The <code>If-Match</code> version is missing or not valid for the distribution. * @throws NoSuchDistributionException * The specified distribution does not exist. * @throws PreconditionFailedException * The precondition given in one or more of the request-header fields evaluated to <code>false</code>. * @sample AmazonCloudFront.DeleteDistribution * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/DeleteDistribution" target="_top">AWS * API Documentation</a> */ @Override public DeleteDistributionResult deleteDistribution(DeleteDistributionRequest request) { request = beforeClientExecution(request); return executeDeleteDistribution(request); } @SdkInternalApi final DeleteDistributionResult executeDeleteDistribution(DeleteDistributionRequest deleteDistributionRequest) { ExecutionContext executionContext = createExecutionContext(deleteDistributionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteDistributionRequest> request = null; Response<DeleteDistributionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteDistributionRequestMarshaller().marshall(super.beforeMarshalling(deleteDistributionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<DeleteDistributionResult> responseHandler = new StaxResponseHandler<DeleteDistributionResult>( new DeleteDistributionResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Delete a streaming distribution. To delete an RTMP distribution using the CloudFront API, perform the following * steps. * </p> * <p> * <b>To delete an RTMP distribution using the CloudFront API</b>: * </p> * <ol> * <li> * <p> * Disable the RTMP distribution. * </p> * </li> * <li> * <p> * Submit a <code>GET Streaming Distribution Config</code> request to get the current configuration and the * <code>Etag</code> header for the distribution. * </p> * </li> * <li> * <p> * Update the XML document that was returned in the response to your <code>GET Streaming Distribution Config</code> * request to change the value of <code>Enabled</code> to <code>false</code>. * </p> * </li> * <li> * <p> * Submit a <code>PUT Streaming Distribution Config</code> request to update the configuration for your * distribution. In the request body, include the XML document that you updated in Step 3. Then set the value of the * HTTP <code>If-Match</code> header to the value of the <code>ETag</code> header that CloudFront returned when you * submitted the <code>GET Streaming Distribution Config</code> request in Step 2. * </p> * </li> * <li> * <p> * Review the response to the <code>PUT Streaming Distribution Config</code> request to confirm that the * distribution was successfully disabled. * </p> * </li> * <li> * <p> * Submit a <code>GET Streaming Distribution Config</code> request to confirm that your changes have propagated. * When propagation is complete, the value of <code>Status</code> is <code>Deployed</code>. * </p> * </li> * <li> * <p> * Submit a <code>DELETE Streaming Distribution</code> request. Set the value of the HTTP <code>If-Match</code> * header to the value of the <code>ETag</code> header that CloudFront returned when you submitted the * <code>GET Streaming Distribution Config</code> request in Step 2. * </p> * </li> * <li> * <p> * Review the response to your <code>DELETE Streaming Distribution</code> request to confirm that the distribution * was successfully deleted. * </p> * </li> * </ol> * <p> * For information about deleting a distribution using the CloudFront console, see <a * href="http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/HowToDeleteDistribution.html">Deleting a * Distribution</a> in the <i>Amazon CloudFront Developer Guide</i>. * </p> * * @param deleteStreamingDistributionRequest * The request to delete a streaming distribution. * @return Result of the DeleteStreamingDistribution operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws StreamingDistributionNotDisabledException * @throws InvalidIfMatchVersionException * The <code>If-Match</code> version is missing or not valid for the distribution. * @throws NoSuchStreamingDistributionException * The specified streaming distribution does not exist. * @throws PreconditionFailedException * The precondition given in one or more of the request-header fields evaluated to <code>false</code>. * @sample AmazonCloudFront.DeleteStreamingDistribution * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/DeleteStreamingDistribution" * target="_top">AWS API Documentation</a> */ @Override public DeleteStreamingDistributionResult deleteStreamingDistribution(DeleteStreamingDistributionRequest request) { request = beforeClientExecution(request); return executeDeleteStreamingDistribution(request); } @SdkInternalApi final DeleteStreamingDistributionResult executeDeleteStreamingDistribution(DeleteStreamingDistributionRequest deleteStreamingDistributionRequest) { ExecutionContext executionContext = createExecutionContext(deleteStreamingDistributionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<DeleteStreamingDistributionRequest> request = null; Response<DeleteStreamingDistributionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteStreamingDistributionRequestMarshaller().marshall(super.beforeMarshalling(deleteStreamingDistributionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<DeleteStreamingDistributionResult> responseHandler = new StaxResponseHandler<DeleteStreamingDistributionResult>( new DeleteStreamingDistributionResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Get the information about an origin access identity. * </p> * * @param getCloudFrontOriginAccessIdentityRequest * The request to get an origin access identity's information. * @return Result of the GetCloudFrontOriginAccessIdentity operation returned by the service. * @throws NoSuchCloudFrontOriginAccessIdentityException * The specified origin access identity does not exist. * @throws AccessDeniedException * Access denied. * @sample AmazonCloudFront.GetCloudFrontOriginAccessIdentity * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/GetCloudFrontOriginAccessIdentity" * target="_top">AWS API Documentation</a> */ @Override public GetCloudFrontOriginAccessIdentityResult getCloudFrontOriginAccessIdentity(GetCloudFrontOriginAccessIdentityRequest request) { request = beforeClientExecution(request); return executeGetCloudFrontOriginAccessIdentity(request); } @SdkInternalApi final GetCloudFrontOriginAccessIdentityResult executeGetCloudFrontOriginAccessIdentity( GetCloudFrontOriginAccessIdentityRequest getCloudFrontOriginAccessIdentityRequest) { ExecutionContext executionContext = createExecutionContext(getCloudFrontOriginAccessIdentityRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetCloudFrontOriginAccessIdentityRequest> request = null; Response<GetCloudFrontOriginAccessIdentityResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetCloudFrontOriginAccessIdentityRequestMarshaller().marshall(super.beforeMarshalling(getCloudFrontOriginAccessIdentityRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<GetCloudFrontOriginAccessIdentityResult> responseHandler = new StaxResponseHandler<GetCloudFrontOriginAccessIdentityResult>( new GetCloudFrontOriginAccessIdentityResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Get the configuration information about an origin access identity. * </p> * * @param getCloudFrontOriginAccessIdentityConfigRequest * The origin access identity's configuration information. For more information, see * <a>CloudFrontOriginAccessIdentityConfigComplexType</a>. * @return Result of the GetCloudFrontOriginAccessIdentityConfig operation returned by the service. * @throws NoSuchCloudFrontOriginAccessIdentityException * The specified origin access identity does not exist. * @throws AccessDeniedException * Access denied. * @sample AmazonCloudFront.GetCloudFrontOriginAccessIdentityConfig * @see <a * href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/GetCloudFrontOriginAccessIdentityConfig" * target="_top">AWS API Documentation</a> */ @Override public GetCloudFrontOriginAccessIdentityConfigResult getCloudFrontOriginAccessIdentityConfig(GetCloudFrontOriginAccessIdentityConfigRequest request) { request = beforeClientExecution(request); return executeGetCloudFrontOriginAccessIdentityConfig(request); } @SdkInternalApi final GetCloudFrontOriginAccessIdentityConfigResult executeGetCloudFrontOriginAccessIdentityConfig( GetCloudFrontOriginAccessIdentityConfigRequest getCloudFrontOriginAccessIdentityConfigRequest) { ExecutionContext executionContext = createExecutionContext(getCloudFrontOriginAccessIdentityConfigRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetCloudFrontOriginAccessIdentityConfigRequest> request = null; Response<GetCloudFrontOriginAccessIdentityConfigResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetCloudFrontOriginAccessIdentityConfigRequestMarshaller().marshall(super .beforeMarshalling(getCloudFrontOriginAccessIdentityConfigRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<GetCloudFrontOriginAccessIdentityConfigResult> responseHandler = new StaxResponseHandler<GetCloudFrontOriginAccessIdentityConfigResult>( new GetCloudFrontOriginAccessIdentityConfigResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Get the information about a distribution. * </p> * * @param getDistributionRequest * The request to get a distribution's information. * @return Result of the GetDistribution operation returned by the service. * @throws NoSuchDistributionException * The specified distribution does not exist. * @throws AccessDeniedException * Access denied. * @sample AmazonCloudFront.GetDistribution * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/GetDistribution" target="_top">AWS API * Documentation</a> */ @Override public GetDistributionResult getDistribution(GetDistributionRequest request) { request = beforeClientExecution(request); return executeGetDistribution(request); } @SdkInternalApi final GetDistributionResult executeGetDistribution(GetDistributionRequest getDistributionRequest) { ExecutionContext executionContext = createExecutionContext(getDistributionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetDistributionRequest> request = null; Response<GetDistributionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetDistributionRequestMarshaller().marshall(super.beforeMarshalling(getDistributionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<GetDistributionResult> responseHandler = new StaxResponseHandler<GetDistributionResult>( new GetDistributionResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Get the configuration information about a distribution. * </p> * * @param getDistributionConfigRequest * The request to get a distribution configuration. * @return Result of the GetDistributionConfig operation returned by the service. * @throws NoSuchDistributionException * The specified distribution does not exist. * @throws AccessDeniedException * Access denied. * @sample AmazonCloudFront.GetDistributionConfig * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/GetDistributionConfig" * target="_top">AWS API Documentation</a> */ @Override public GetDistributionConfigResult getDistributionConfig(GetDistributionConfigRequest request) { request = beforeClientExecution(request); return executeGetDistributionConfig(request); } @SdkInternalApi final GetDistributionConfigResult executeGetDistributionConfig(GetDistributionConfigRequest getDistributionConfigRequest) { ExecutionContext executionContext = createExecutionContext(getDistributionConfigRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetDistributionConfigRequest> request = null; Response<GetDistributionConfigResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetDistributionConfigRequestMarshaller().marshall(super.beforeMarshalling(getDistributionConfigRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<GetDistributionConfigResult> responseHandler = new StaxResponseHandler<GetDistributionConfigResult>( new GetDistributionConfigResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Get the information about an invalidation. * </p> * * @param getInvalidationRequest * The request to get an invalidation's information. * @return Result of the GetInvalidation operation returned by the service. * @throws NoSuchInvalidationException * The specified invalidation does not exist. * @throws NoSuchDistributionException * The specified distribution does not exist. * @throws AccessDeniedException * Access denied. * @sample AmazonCloudFront.GetInvalidation * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/GetInvalidation" target="_top">AWS API * Documentation</a> */ @Override public GetInvalidationResult getInvalidation(GetInvalidationRequest request) { request = beforeClientExecution(request); return executeGetInvalidation(request); } @SdkInternalApi final GetInvalidationResult executeGetInvalidation(GetInvalidationRequest getInvalidationRequest) { ExecutionContext executionContext = createExecutionContext(getInvalidationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetInvalidationRequest> request = null; Response<GetInvalidationResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetInvalidationRequestMarshaller().marshall(super.beforeMarshalling(getInvalidationRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<GetInvalidationResult> responseHandler = new StaxResponseHandler<GetInvalidationResult>( new GetInvalidationResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Gets information about a specified RTMP distribution, including the distribution configuration. * </p> * * @param getStreamingDistributionRequest * The request to get a streaming distribution's information. * @return Result of the GetStreamingDistribution operation returned by the service. * @throws NoSuchStreamingDistributionException * The specified streaming distribution does not exist. * @throws AccessDeniedException * Access denied. * @sample AmazonCloudFront.GetStreamingDistribution * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/GetStreamingDistribution" * target="_top">AWS API Documentation</a> */ @Override public GetStreamingDistributionResult getStreamingDistribution(GetStreamingDistributionRequest request) { request = beforeClientExecution(request); return executeGetStreamingDistribution(request); } @SdkInternalApi final GetStreamingDistributionResult executeGetStreamingDistribution(GetStreamingDistributionRequest getStreamingDistributionRequest) { ExecutionContext executionContext = createExecutionContext(getStreamingDistributionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetStreamingDistributionRequest> request = null; Response<GetStreamingDistributionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetStreamingDistributionRequestMarshaller().marshall(super.beforeMarshalling(getStreamingDistributionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<GetStreamingDistributionResult> responseHandler = new StaxResponseHandler<GetStreamingDistributionResult>( new GetStreamingDistributionResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Get the configuration information about a streaming distribution. * </p> * * @param getStreamingDistributionConfigRequest * To request to get a streaming distribution configuration. * @return Result of the GetStreamingDistributionConfig operation returned by the service. * @throws NoSuchStreamingDistributionException * The specified streaming distribution does not exist. * @throws AccessDeniedException * Access denied. * @sample AmazonCloudFront.GetStreamingDistributionConfig * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/GetStreamingDistributionConfig" * target="_top">AWS API Documentation</a> */ @Override public GetStreamingDistributionConfigResult getStreamingDistributionConfig(GetStreamingDistributionConfigRequest request) { request = beforeClientExecution(request); return executeGetStreamingDistributionConfig(request); } @SdkInternalApi final GetStreamingDistributionConfigResult executeGetStreamingDistributionConfig(GetStreamingDistributionConfigRequest getStreamingDistributionConfigRequest) { ExecutionContext executionContext = createExecutionContext(getStreamingDistributionConfigRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<GetStreamingDistributionConfigRequest> request = null; Response<GetStreamingDistributionConfigResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetStreamingDistributionConfigRequestMarshaller().marshall(super.beforeMarshalling(getStreamingDistributionConfigRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<GetStreamingDistributionConfigResult> responseHandler = new StaxResponseHandler<GetStreamingDistributionConfigResult>( new GetStreamingDistributionConfigResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Lists origin access identities. * </p> * * @param listCloudFrontOriginAccessIdentitiesRequest * The request to list origin access identities. * @return Result of the ListCloudFrontOriginAccessIdentities operation returned by the service. * @throws InvalidArgumentException * The argument is invalid. * @sample AmazonCloudFront.ListCloudFrontOriginAccessIdentities * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/ListCloudFrontOriginAccessIdentities" * target="_top">AWS API Documentation</a> */ @Override public ListCloudFrontOriginAccessIdentitiesResult listCloudFrontOriginAccessIdentities(ListCloudFrontOriginAccessIdentitiesRequest request) { request = beforeClientExecution(request); return executeListCloudFrontOriginAccessIdentities(request); } @SdkInternalApi final ListCloudFrontOriginAccessIdentitiesResult executeListCloudFrontOriginAccessIdentities( ListCloudFrontOriginAccessIdentitiesRequest listCloudFrontOriginAccessIdentitiesRequest) { ExecutionContext executionContext = createExecutionContext(listCloudFrontOriginAccessIdentitiesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListCloudFrontOriginAccessIdentitiesRequest> request = null; Response<ListCloudFrontOriginAccessIdentitiesResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListCloudFrontOriginAccessIdentitiesRequestMarshaller().marshall(super .beforeMarshalling(listCloudFrontOriginAccessIdentitiesRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<ListCloudFrontOriginAccessIdentitiesResult> responseHandler = new StaxResponseHandler<ListCloudFrontOriginAccessIdentitiesResult>( new ListCloudFrontOriginAccessIdentitiesResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * List distributions. * </p> * * @param listDistributionsRequest * The request to list your distributions. * @return Result of the ListDistributions operation returned by the service. * @throws InvalidArgumentException * The argument is invalid. * @sample AmazonCloudFront.ListDistributions * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/ListDistributions" target="_top">AWS * API Documentation</a> */ @Override public ListDistributionsResult listDistributions(ListDistributionsRequest request) { request = beforeClientExecution(request); return executeListDistributions(request); } @SdkInternalApi final ListDistributionsResult executeListDistributions(ListDistributionsRequest listDistributionsRequest) { ExecutionContext executionContext = createExecutionContext(listDistributionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListDistributionsRequest> request = null; Response<ListDistributionsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListDistributionsRequestMarshaller().marshall(super.beforeMarshalling(listDistributionsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<ListDistributionsResult> responseHandler = new StaxResponseHandler<ListDistributionsResult>( new ListDistributionsResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * List the distributions that are associated with a specified AWS WAF web ACL. * </p> * * @param listDistributionsByWebACLIdRequest * The request to list distributions that are associated with a specified AWS WAF web ACL. * @return Result of the ListDistributionsByWebACLId operation returned by the service. * @throws InvalidArgumentException * The argument is invalid. * @throws InvalidWebACLIdException * @sample AmazonCloudFront.ListDistributionsByWebACLId * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/ListDistributionsByWebACLId" * target="_top">AWS API Documentation</a> */ @Override public ListDistributionsByWebACLIdResult listDistributionsByWebACLId(ListDistributionsByWebACLIdRequest request) { request = beforeClientExecution(request); return executeListDistributionsByWebACLId(request); } @SdkInternalApi final ListDistributionsByWebACLIdResult executeListDistributionsByWebACLId(ListDistributionsByWebACLIdRequest listDistributionsByWebACLIdRequest) { ExecutionContext executionContext = createExecutionContext(listDistributionsByWebACLIdRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListDistributionsByWebACLIdRequest> request = null; Response<ListDistributionsByWebACLIdResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListDistributionsByWebACLIdRequestMarshaller().marshall(super.beforeMarshalling(listDistributionsByWebACLIdRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<ListDistributionsByWebACLIdResult> responseHandler = new StaxResponseHandler<ListDistributionsByWebACLIdResult>( new ListDistributionsByWebACLIdResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Lists invalidation batches. * </p> * * @param listInvalidationsRequest * The request to list invalidations. * @return Result of the ListInvalidations operation returned by the service. * @throws InvalidArgumentException * The argument is invalid. * @throws NoSuchDistributionException * The specified distribution does not exist. * @throws AccessDeniedException * Access denied. * @sample AmazonCloudFront.ListInvalidations * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/ListInvalidations" target="_top">AWS * API Documentation</a> */ @Override public ListInvalidationsResult listInvalidations(ListInvalidationsRequest request) { request = beforeClientExecution(request); return executeListInvalidations(request); } @SdkInternalApi final ListInvalidationsResult executeListInvalidations(ListInvalidationsRequest listInvalidationsRequest) { ExecutionContext executionContext = createExecutionContext(listInvalidationsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListInvalidationsRequest> request = null; Response<ListInvalidationsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListInvalidationsRequestMarshaller().marshall(super.beforeMarshalling(listInvalidationsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<ListInvalidationsResult> responseHandler = new StaxResponseHandler<ListInvalidationsResult>( new ListInvalidationsResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * List streaming distributions. * </p> * * @param listStreamingDistributionsRequest * The request to list your streaming distributions. * @return Result of the ListStreamingDistributions operation returned by the service. * @throws InvalidArgumentException * The argument is invalid. * @sample AmazonCloudFront.ListStreamingDistributions * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/ListStreamingDistributions" * target="_top">AWS API Documentation</a> */ @Override public ListStreamingDistributionsResult listStreamingDistributions(ListStreamingDistributionsRequest request) { request = beforeClientExecution(request); return executeListStreamingDistributions(request); } @SdkInternalApi final ListStreamingDistributionsResult executeListStreamingDistributions(ListStreamingDistributionsRequest listStreamingDistributionsRequest) { ExecutionContext executionContext = createExecutionContext(listStreamingDistributionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListStreamingDistributionsRequest> request = null; Response<ListStreamingDistributionsResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListStreamingDistributionsRequestMarshaller().marshall(super.beforeMarshalling(listStreamingDistributionsRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<ListStreamingDistributionsResult> responseHandler = new StaxResponseHandler<ListStreamingDistributionsResult>( new ListStreamingDistributionsResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * List tags for a CloudFront resource. * </p> * * @param listTagsForResourceRequest * The request to list tags for a CloudFront resource. * @return Result of the ListTagsForResource operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws InvalidArgumentException * The argument is invalid. * @throws InvalidTaggingException * @throws NoSuchResourceException * @sample AmazonCloudFront.ListTagsForResource * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/ListTagsForResource" target="_top">AWS * API Documentation</a> */ @Override public ListTagsForResourceResult listTagsForResource(ListTagsForResourceRequest request) { request = beforeClientExecution(request); return executeListTagsForResource(request); } @SdkInternalApi final ListTagsForResourceResult executeListTagsForResource(ListTagsForResourceRequest listTagsForResourceRequest) { ExecutionContext executionContext = createExecutionContext(listTagsForResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<ListTagsForResourceRequest> request = null; Response<ListTagsForResourceResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListTagsForResourceRequestMarshaller().marshall(super.beforeMarshalling(listTagsForResourceRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<ListTagsForResourceResult> responseHandler = new StaxResponseHandler<ListTagsForResourceResult>( new ListTagsForResourceResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Add tags to a CloudFront resource. * </p> * * @param tagResourceRequest * The request to add tags to a CloudFront resource. * @return Result of the TagResource operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws InvalidArgumentException * The argument is invalid. * @throws InvalidTaggingException * @throws NoSuchResourceException * @sample AmazonCloudFront.TagResource * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/TagResource" target="_top">AWS API * Documentation</a> */ @Override public TagResourceResult tagResource(TagResourceRequest request) { request = beforeClientExecution(request); return executeTagResource(request); } @SdkInternalApi final TagResourceResult executeTagResource(TagResourceRequest tagResourceRequest) { ExecutionContext executionContext = createExecutionContext(tagResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<TagResourceRequest> request = null; Response<TagResourceResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new TagResourceRequestMarshaller().marshall(super.beforeMarshalling(tagResourceRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<TagResourceResult> responseHandler = new StaxResponseHandler<TagResourceResult>(new TagResourceResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Remove tags from a CloudFront resource. * </p> * * @param untagResourceRequest * The request to remove tags from a CloudFront resource. * @return Result of the UntagResource operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws InvalidArgumentException * The argument is invalid. * @throws InvalidTaggingException * @throws NoSuchResourceException * @sample AmazonCloudFront.UntagResource * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/UntagResource" target="_top">AWS API * Documentation</a> */ @Override public UntagResourceResult untagResource(UntagResourceRequest request) { request = beforeClientExecution(request); return executeUntagResource(request); } @SdkInternalApi final UntagResourceResult executeUntagResource(UntagResourceRequest untagResourceRequest) { ExecutionContext executionContext = createExecutionContext(untagResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<UntagResourceRequest> request = null; Response<UntagResourceResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UntagResourceRequestMarshaller().marshall(super.beforeMarshalling(untagResourceRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<UntagResourceResult> responseHandler = new StaxResponseHandler<UntagResourceResult>(new UntagResourceResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Update an origin access identity. * </p> * * @param updateCloudFrontOriginAccessIdentityRequest * The request to update an origin access identity. * @return Result of the UpdateCloudFrontOriginAccessIdentity operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws IllegalUpdateException * Origin and <code>CallerReference</code> cannot be updated. * @throws InvalidIfMatchVersionException * The <code>If-Match</code> version is missing or not valid for the distribution. * @throws MissingBodyException * This operation requires a body. Ensure that the body is present and the Content-Type header is set. * @throws NoSuchCloudFrontOriginAccessIdentityException * The specified origin access identity does not exist. * @throws PreconditionFailedException * The precondition given in one or more of the request-header fields evaluated to <code>false</code>. * @throws InvalidArgumentException * The argument is invalid. * @throws InconsistentQuantitiesException * The value of <code>Quantity</code> and the size of <code>Items</code> do not match. * @sample AmazonCloudFront.UpdateCloudFrontOriginAccessIdentity * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/UpdateCloudFrontOriginAccessIdentity" * target="_top">AWS API Documentation</a> */ @Override public UpdateCloudFrontOriginAccessIdentityResult updateCloudFrontOriginAccessIdentity(UpdateCloudFrontOriginAccessIdentityRequest request) { request = beforeClientExecution(request); return executeUpdateCloudFrontOriginAccessIdentity(request); } @SdkInternalApi final UpdateCloudFrontOriginAccessIdentityResult executeUpdateCloudFrontOriginAccessIdentity( UpdateCloudFrontOriginAccessIdentityRequest updateCloudFrontOriginAccessIdentityRequest) { ExecutionContext executionContext = createExecutionContext(updateCloudFrontOriginAccessIdentityRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<UpdateCloudFrontOriginAccessIdentityRequest> request = null; Response<UpdateCloudFrontOriginAccessIdentityResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateCloudFrontOriginAccessIdentityRequestMarshaller().marshall(super .beforeMarshalling(updateCloudFrontOriginAccessIdentityRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<UpdateCloudFrontOriginAccessIdentityResult> responseHandler = new StaxResponseHandler<UpdateCloudFrontOriginAccessIdentityResult>( new UpdateCloudFrontOriginAccessIdentityResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Update a distribution. * </p> * * @param updateDistributionRequest * The request to update a distribution. * @return Result of the UpdateDistribution operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws CNAMEAlreadyExistsException * @throws IllegalUpdateException * Origin and <code>CallerReference</code> cannot be updated. * @throws InvalidIfMatchVersionException * The <code>If-Match</code> version is missing or not valid for the distribution. * @throws MissingBodyException * This operation requires a body. Ensure that the body is present and the Content-Type header is set. * @throws NoSuchDistributionException * The specified distribution does not exist. * @throws PreconditionFailedException * The precondition given in one or more of the request-header fields evaluated to <code>false</code>. * @throws TooManyDistributionCNAMEsException * Your request contains more CNAMEs than are allowed per distribution. * @throws InvalidDefaultRootObjectException * The default root object file name is too big or contains an invalid character. * @throws InvalidRelativePathException * The relative path is too big, is not URL-encoded, or does not begin with a slash (/). * @throws InvalidErrorCodeException * @throws InvalidResponseCodeException * @throws InvalidArgumentException * The argument is invalid. * @throws InvalidOriginAccessIdentityException * The origin access identity is not valid or doesn't exist. * @throws TooManyTrustedSignersException * Your request contains more trusted signers than are allowed per distribution. * @throws TrustedSignerDoesNotExistException * One or more of your trusted signers do not exist. * @throws InvalidViewerCertificateException * @throws InvalidMinimumProtocolVersionException * @throws InvalidRequiredProtocolException * This operation requires the HTTPS protocol. Ensure that you specify the HTTPS protocol in your request, * or omit the <code>RequiredProtocols</code> element from your distribution configuration. * @throws NoSuchOriginException * No origin exists with the specified <code>Origin Id</code>. * @throws TooManyOriginsException * You cannot create more origins for the distribution. * @throws TooManyCacheBehaviorsException * You cannot create more cache behaviors for the distribution. * @throws TooManyCookieNamesInWhiteListException * Your request contains more cookie names in the whitelist than are allowed per cache behavior. * @throws InvalidForwardCookiesException * Your request contains forward cookies option which doesn't match with the expectation for the * <code>whitelisted</code> list of cookie names. Either list of cookie names has been specified when not * allowed or list of cookie names is missing when expected. * @throws TooManyHeadersInForwardedValuesException * @throws InvalidHeadersForS3OriginException * @throws InconsistentQuantitiesException * The value of <code>Quantity</code> and the size of <code>Items</code> do not match. * @throws TooManyCertificatesException * You cannot create anymore custom SSL/TLS certificates. * @throws InvalidLocationCodeException * @throws InvalidGeoRestrictionParameterException * @throws InvalidTTLOrderException * @throws InvalidWebACLIdException * @throws TooManyOriginCustomHeadersException * @throws TooManyQueryStringParametersException * @throws InvalidQueryStringParametersException * @throws TooManyDistributionsWithLambdaAssociationsException * Processing your request would cause the maximum number of distributions with Lambda function associations * per owner to be exceeded. * @throws TooManyLambdaFunctionAssociationsException * Your request contains more Lambda function associations than are allowed per distribution. * @throws InvalidLambdaFunctionAssociationException * The specified Lambda function association is invalid. * @throws InvalidOriginReadTimeoutException * @throws InvalidOriginKeepaliveTimeoutException * @sample AmazonCloudFront.UpdateDistribution * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/UpdateDistribution" target="_top">AWS * API Documentation</a> */ @Override public UpdateDistributionResult updateDistribution(UpdateDistributionRequest request) { request = beforeClientExecution(request); return executeUpdateDistribution(request); } @SdkInternalApi final UpdateDistributionResult executeUpdateDistribution(UpdateDistributionRequest updateDistributionRequest) { ExecutionContext executionContext = createExecutionContext(updateDistributionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<UpdateDistributionRequest> request = null; Response<UpdateDistributionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateDistributionRequestMarshaller().marshall(super.beforeMarshalling(updateDistributionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<UpdateDistributionResult> responseHandler = new StaxResponseHandler<UpdateDistributionResult>( new UpdateDistributionResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * <p> * Update a streaming distribution. * </p> * * @param updateStreamingDistributionRequest * The request to update a streaming distribution. * @return Result of the UpdateStreamingDistribution operation returned by the service. * @throws AccessDeniedException * Access denied. * @throws CNAMEAlreadyExistsException * @throws IllegalUpdateException * Origin and <code>CallerReference</code> cannot be updated. * @throws InvalidIfMatchVersionException * The <code>If-Match</code> version is missing or not valid for the distribution. * @throws MissingBodyException * This operation requires a body. Ensure that the body is present and the Content-Type header is set. * @throws NoSuchStreamingDistributionException * The specified streaming distribution does not exist. * @throws PreconditionFailedException * The precondition given in one or more of the request-header fields evaluated to <code>false</code>. * @throws TooManyStreamingDistributionCNAMEsException * @throws InvalidArgumentException * The argument is invalid. * @throws InvalidOriginAccessIdentityException * The origin access identity is not valid or doesn't exist. * @throws TooManyTrustedSignersException * Your request contains more trusted signers than are allowed per distribution. * @throws TrustedSignerDoesNotExistException * One or more of your trusted signers do not exist. * @throws InconsistentQuantitiesException * The value of <code>Quantity</code> and the size of <code>Items</code> do not match. * @sample AmazonCloudFront.UpdateStreamingDistribution * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2017-03-25/UpdateStreamingDistribution" * target="_top">AWS API Documentation</a> */ @Override public UpdateStreamingDistributionResult updateStreamingDistribution(UpdateStreamingDistributionRequest request) { request = beforeClientExecution(request); return executeUpdateStreamingDistribution(request); } @SdkInternalApi final UpdateStreamingDistributionResult executeUpdateStreamingDistribution(UpdateStreamingDistributionRequest updateStreamingDistributionRequest) { ExecutionContext executionContext = createExecutionContext(updateStreamingDistributionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request<UpdateStreamingDistributionRequest> request = null; Response<UpdateStreamingDistributionResult> response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateStreamingDistributionRequestMarshaller().marshall(super.beforeMarshalling(updateStreamingDistributionRequest)); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } StaxResponseHandler<UpdateStreamingDistributionResult> responseHandler = new StaxResponseHandler<UpdateStreamingDistributionResult>( new UpdateStreamingDistributionResultStaxUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * Returns additional metadata for a previously executed successful, request, typically used for debugging issues * where a service isn't acting as expected. This data isn't considered part of the result data returned by an * operation, so it's available through this separate, diagnostic interface. * <p> * Response metadata is only cached for a limited period of time, so if you need to access this extra diagnostic * information for an executed request, you should use this method to retrieve it as soon as possible after * executing the request. * * @param request * The originally executed request * * @return The response metadata for the specified request, or null if none is available. */ public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } /** * Normal invoke with authentication. Credentials are required and may be overriden at the request level. **/ private <X, Y extends AmazonWebServiceRequest> Response<X> invoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler, ExecutionContext executionContext) { executionContext.setCredentialsProvider(CredentialUtils.getCredentialsProvider(request.getOriginalRequest(), awsCredentialsProvider)); return doInvoke(request, responseHandler, executionContext); } /** * Invoke with no authentication. Credentials are not required and any credentials set on the client or request will * be ignored for this operation. **/ private <X, Y extends AmazonWebServiceRequest> Response<X> anonymousInvoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler, ExecutionContext executionContext) { return doInvoke(request, responseHandler, executionContext); } /** * Invoke the request using the http client. Assumes credentials (or lack thereof) have been configured in the * ExecutionContext beforehand. **/ private <X, Y extends AmazonWebServiceRequest> Response<X> doInvoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler, ExecutionContext executionContext) { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); DefaultErrorResponseHandler errorResponseHandler = new DefaultErrorResponseHandler(exceptionUnmarshallers); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } @Override public AmazonCloudFrontWaiters waiters() { if (waiters == null) { synchronized (this) { if (waiters == null) { waiters = new AmazonCloudFrontWaiters(this); } } } return waiters; } @Override public void shutdown() { super.shutdown(); if (waiters != null) { waiters.shutdown(); } } }