/*
* 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();
}
}
}