com.amazonaws.services.glacier.AmazonGlacierClient Maven / Gradle / Ivy
Show all versions of aws-java-sdk-glacier Show documentation
/*
* Copyright 2019-2024 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.glacier;
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.client.builder.AdvancedConfig;
import com.amazonaws.services.glacier.AmazonGlacierClientBuilder;
import com.amazonaws.services.glacier.waiters.AmazonGlacierWaiters;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.glacier.model.*;
import com.amazonaws.services.glacier.model.transform.*;
/**
* Client for accessing Amazon Glacier. All service calls made using this client are blocking, and will not return until
* the service call completes.
*
*
* Amazon S3 Glacier (Glacier) is a storage solution for "cold data."
*
*
* Glacier is an extremely low-cost storage service that provides secure, durable, and easy-to-use storage for data
* backup and archival. With Glacier, customers can store their data cost effectively for months, years, or decades.
* Glacier also enables customers to offload the administrative burdens of operating and scaling storage to AWS, so they
* don't have to worry about capacity planning, hardware provisioning, data replication, hardware failure and recovery,
* or time-consuming hardware migrations.
*
*
* Glacier is a great storage choice when low storage cost is paramount and your data is rarely retrieved. If your
* application requires fast or frequent access to your data, consider using Amazon S3. For more information, see Amazon Simple Storage Service (Amazon S3).
*
*
* You can store any kind of data in any format. There is no maximum limit on the total amount of data you can store in
* Glacier.
*
*
* If you are a first-time user of Glacier, we recommend that you begin by reading the following sections in the
* Amazon S3 Glacier Developer Guide:
*
*
* -
*
* What is Amazon S3 Glacier - This
* section of the Developer Guide describes the underlying data model, the operations it supports, and the AWS SDKs that
* you can use to interact with the service.
*
*
* -
*
* Getting Started
* with Amazon S3 Glacier - The Getting Started section walks you through the process of creating a vault, uploading
* archives, creating jobs to download archives, retrieving the job output, and deleting archives.
*
*
*
*/
@ThreadSafe
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class AmazonGlacierClient extends AmazonWebServiceClient implements AmazonGlacier {
/** Provider for AWS credentials. */
private final AWSCredentialsProvider awsCredentialsProvider;
private static final Log log = LogFactory.getLog(AmazonGlacier.class);
/** Default signing name for the service. */
private static final String DEFAULT_SIGNING_NAME = "glacier";
private volatile AmazonGlacierWaiters waiters;
/** Client configuration factory providing ClientConfigurations tailored to this client */
protected static final ClientConfigurationFactory configFactory = new ClientConfigurationFactory();
private final AdvancedConfig advancedConfig;
private static final com.amazonaws.protocol.json.SdkJsonProtocolFactory protocolFactory = new com.amazonaws.protocol.json.SdkJsonProtocolFactory(
new JsonClientMetadata()
.withProtocolVersion("1.1")
.withSupportsCbor(false)
.withSupportsIon(false)
.withContentTypeOverride("application/json")
.addErrorMetadata(
new JsonErrorShapeMetadata().withErrorCode("RequestTimeoutException").withExceptionUnmarshaller(
com.amazonaws.services.glacier.model.transform.RequestTimeoutExceptionUnmarshaller.getInstance()))
.addErrorMetadata(
new JsonErrorShapeMetadata().withErrorCode("MissingParameterValueException").withExceptionUnmarshaller(
com.amazonaws.services.glacier.model.transform.MissingParameterValueExceptionUnmarshaller.getInstance()))
.addErrorMetadata(
new JsonErrorShapeMetadata().withErrorCode("InvalidParameterValueException").withExceptionUnmarshaller(
com.amazonaws.services.glacier.model.transform.InvalidParameterValueExceptionUnmarshaller.getInstance()))
.addErrorMetadata(
new JsonErrorShapeMetadata().withErrorCode("InsufficientCapacityException").withExceptionUnmarshaller(
com.amazonaws.services.glacier.model.transform.InsufficientCapacityExceptionUnmarshaller.getInstance()))
.addErrorMetadata(
new JsonErrorShapeMetadata().withErrorCode("LimitExceededException").withExceptionUnmarshaller(
com.amazonaws.services.glacier.model.transform.LimitExceededExceptionUnmarshaller.getInstance()))
.addErrorMetadata(
new JsonErrorShapeMetadata().withErrorCode("PolicyEnforcedException").withExceptionUnmarshaller(
com.amazonaws.services.glacier.model.transform.PolicyEnforcedExceptionUnmarshaller.getInstance()))
.addErrorMetadata(
new JsonErrorShapeMetadata().withErrorCode("ResourceNotFoundException").withExceptionUnmarshaller(
com.amazonaws.services.glacier.model.transform.ResourceNotFoundExceptionUnmarshaller.getInstance()))
.addErrorMetadata(
new JsonErrorShapeMetadata().withErrorCode("ServiceUnavailableException").withExceptionUnmarshaller(
com.amazonaws.services.glacier.model.transform.ServiceUnavailableExceptionUnmarshaller.getInstance()))
.withBaseServiceExceptionClass(com.amazonaws.services.glacier.model.AmazonGlacierException.class));
/**
* Constructs a new client to invoke service methods on Amazon Glacier. A credentials provider chain will be used
* that searches for credentials in this order:
*
* - Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
* - Java System Properties - aws.accessKeyId and aws.secretKey
* - Instance profile credentials delivered through the Amazon EC2 metadata service
*
*
*
* 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 AmazonGlacierClientBuilder#defaultClient()}
*/
@Deprecated
public AmazonGlacierClient() {
this(DefaultAWSCredentialsProviderChain.getInstance(), configFactory.getConfig());
}
/**
* Constructs a new client to invoke service methods on Amazon Glacier. A credentials provider chain will be used
* that searches for credentials in this order:
*
* - Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
* - Java System Properties - aws.accessKeyId and aws.secretKey
* - Instance profile credentials delivered through the Amazon EC2 metadata service
*
*
*
* 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 Amazon Glacier (ex: proxy
* settings, retry counts, etc.).
*
* @see DefaultAWSCredentialsProviderChain
* @deprecated use {@link AmazonGlacierClientBuilder#withClientConfiguration(ClientConfiguration)}
*/
@Deprecated
public AmazonGlacierClient(ClientConfiguration clientConfiguration) {
this(DefaultAWSCredentialsProviderChain.getInstance(), clientConfiguration);
}
/**
* Constructs a new client to invoke service methods on Amazon Glacier using the specified AWS account credentials.
*
*
* 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 AmazonGlacierClientBuilder#withCredentials(AWSCredentialsProvider)} for example:
* {@code AmazonGlacierClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();}
*/
@Deprecated
public AmazonGlacierClient(AWSCredentials awsCredentials) {
this(awsCredentials, configFactory.getConfig());
}
/**
* Constructs a new client to invoke service methods on Amazon Glacier using the specified AWS account credentials
* and client configuration options.
*
*
* 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 Amazon Glacier (ex: proxy
* settings, retry counts, etc.).
* @deprecated use {@link AmazonGlacierClientBuilder#withCredentials(AWSCredentialsProvider)} and
* {@link AmazonGlacierClientBuilder#withClientConfiguration(ClientConfiguration)}
*/
@Deprecated
public AmazonGlacierClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) {
super(clientConfiguration);
this.awsCredentialsProvider = new StaticCredentialsProvider(awsCredentials);
this.advancedConfig = AdvancedConfig.EMPTY;
init();
}
/**
* Constructs a new client to invoke service methods on Amazon Glacier using the specified AWS account credentials
* provider.
*
*
* 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 AmazonGlacierClientBuilder#withCredentials(AWSCredentialsProvider)}
*/
@Deprecated
public AmazonGlacierClient(AWSCredentialsProvider awsCredentialsProvider) {
this(awsCredentialsProvider, configFactory.getConfig());
}
/**
* Constructs a new client to invoke service methods on Amazon Glacier using the specified AWS account credentials
* provider and client configuration options.
*
*
* 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 Amazon Glacier (ex: proxy
* settings, retry counts, etc.).
* @deprecated use {@link AmazonGlacierClientBuilder#withCredentials(AWSCredentialsProvider)} and
* {@link AmazonGlacierClientBuilder#withClientConfiguration(ClientConfiguration)}
*/
@Deprecated
public AmazonGlacierClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) {
this(awsCredentialsProvider, clientConfiguration, null);
}
/**
* Constructs a new client to invoke service methods on Amazon Glacier using the specified AWS account credentials
* provider, client configuration options, and request metric collector.
*
*
* 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 Amazon Glacier (ex: proxy
* settings, retry counts, etc.).
* @param requestMetricCollector
* optional request metric collector
* @deprecated use {@link AmazonGlacierClientBuilder#withCredentials(AWSCredentialsProvider)} and
* {@link AmazonGlacierClientBuilder#withClientConfiguration(ClientConfiguration)} and
* {@link AmazonGlacierClientBuilder#withMetricsCollector(RequestMetricCollector)}
*/
@Deprecated
public AmazonGlacierClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration,
RequestMetricCollector requestMetricCollector) {
super(clientConfiguration, requestMetricCollector);
this.awsCredentialsProvider = awsCredentialsProvider;
this.advancedConfig = AdvancedConfig.EMPTY;
init();
}
public static AmazonGlacierClientBuilder builder() {
return AmazonGlacierClientBuilder.standard();
}
/**
* Constructs a new client to invoke service methods on Amazon Glacier using the specified parameters.
*
*
* 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.
*/
AmazonGlacierClient(AwsSyncClientParams clientParams) {
this(clientParams, false);
}
/**
* Constructs a new client to invoke service methods on Amazon Glacier using the specified parameters.
*
*
* 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.
*/
AmazonGlacierClient(AwsSyncClientParams clientParams, boolean endpointDiscoveryEnabled) {
super(clientParams);
this.awsCredentialsProvider = clientParams.getCredentialsProvider();
this.advancedConfig = clientParams.getAdvancedConfig();
init();
}
private void init() {
setServiceNameIntern(DEFAULT_SIGNING_NAME);
setEndpointPrefix(ENDPOINT_PREFIX);
// calling this.setEndPoint(...) will also modify the signer accordingly
setEndpoint("https://glacier.us-east-1.amazonaws.com");
HandlerChainFactory chainFactory = new HandlerChainFactory();
requestHandler2s.addAll(chainFactory.newRequestHandlerChain("/com/amazonaws/services/glacier/request.handlers"));
requestHandler2s.addAll(chainFactory.newRequestHandler2Chain("/com/amazonaws/services/glacier/request.handler2s"));
requestHandler2s.addAll(chainFactory.getGlobalHandlers());
}
/**
*
* This operation aborts a multipart upload identified by the upload ID.
*
*
* After the Abort Multipart Upload request succeeds, you cannot upload any more parts to the multipart upload or
* complete the multipart upload. Aborting a completed upload fails. However, aborting an already-aborted upload
* will succeed, for a short time. For more information about uploading a part and completing a multipart upload,
* see UploadMultipartPart and CompleteMultipartUpload.
*
*
* This operation is idempotent.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Working with Archives in
* Amazon S3 Glacier and Abort Multipart
* Upload in the Amazon Glacier Developer Guide.
*
*
* @param abortMultipartUploadRequest
* Provides options to abort a multipart upload identified by the upload ID.
*
* For information about the underlying REST API, see Abort
* Multipart Upload. For conceptual information, see Working with
* Archives in Amazon S3 Glacier.
* @return Result of the AbortMultipartUpload operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.AbortMultipartUpload
*/
@Override
public AbortMultipartUploadResult abortMultipartUpload(AbortMultipartUploadRequest request) {
request = beforeClientExecution(request);
return executeAbortMultipartUpload(request);
}
@SdkInternalApi
final AbortMultipartUploadResult executeAbortMultipartUpload(AbortMultipartUploadRequest abortMultipartUploadRequest) {
ExecutionContext executionContext = createExecutionContext(abortMultipartUploadRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new AbortMultipartUploadRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(abortMultipartUploadRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "AbortMultipartUpload");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new AbortMultipartUploadResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation aborts the vault locking process if the vault lock is not in the Locked
state. If the
* vault lock is in the Locked
state when this operation is requested, the operation returns an
* AccessDeniedException
error. Aborting the vault locking process removes the vault lock policy from
* the specified vault.
*
*
* A vault lock is put into the InProgress
state by calling InitiateVaultLock. A vault lock is
* put into the Locked
state by calling CompleteVaultLock. You can get the state of a vault lock
* by calling GetVaultLock. For more information about the vault locking process, see Amazon Glacier Vault Lock. For
* more information about vault lock policies, see Amazon Glacier Access Control
* with Vault Lock Policies.
*
*
* This operation is idempotent. You can successfully invoke this operation multiple times, if the vault lock is in
* the InProgress
state or if there is no policy associated with the vault.
*
*
* @param abortVaultLockRequest
* The input values for AbortVaultLock
.
* @return Result of the AbortVaultLock operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.AbortVaultLock
*/
@Override
public AbortVaultLockResult abortVaultLock(AbortVaultLockRequest request) {
request = beforeClientExecution(request);
return executeAbortVaultLock(request);
}
@SdkInternalApi
final AbortVaultLockResult executeAbortVaultLock(AbortVaultLockRequest abortVaultLockRequest) {
ExecutionContext executionContext = createExecutionContext(abortVaultLockRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new AbortVaultLockRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(abortVaultLockRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "AbortVaultLock");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new AbortVaultLockResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation adds the specified tags to a vault. Each tag is composed of a key and a value. Each vault can have
* up to 10 tags. If your request would cause the tag limit for the vault to be exceeded, the operation throws the
* LimitExceededException
error. If a tag already exists on the vault under a specified key, the
* existing key value will be overwritten. For more information about tags, see Tagging Amazon S3 Glacier Resources.
*
*
* @param addTagsToVaultRequest
* The input values for AddTagsToVault
.
* @return Result of the AddTagsToVault operation returned by the service.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws LimitExceededException
* Returned if the request results in a vault or account limit being exceeded.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.AddTagsToVault
*/
@Override
public AddTagsToVaultResult addTagsToVault(AddTagsToVaultRequest request) {
request = beforeClientExecution(request);
return executeAddTagsToVault(request);
}
@SdkInternalApi
final AddTagsToVaultResult executeAddTagsToVault(AddTagsToVaultRequest addTagsToVaultRequest) {
ExecutionContext executionContext = createExecutionContext(addTagsToVaultRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new AddTagsToVaultRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(addTagsToVaultRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "AddTagsToVault");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new AddTagsToVaultResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* You call this operation to inform Amazon S3 Glacier (Glacier) that all the archive parts have been uploaded and
* that Glacier can now assemble the archive from the uploaded parts. After assembling and saving the archive to the
* vault, Glacier returns the URI path of the newly created archive resource. Using the URI path, you can then
* access the archive. After you upload an archive, you should save the archive ID returned to retrieve the archive
* at a later point. You can also get the vault inventory to obtain a list of archive IDs in a vault. For more
* information, see InitiateJob.
*
*
* In the request, you must include the computed SHA256 tree hash of the entire archive you have uploaded. For
* information about computing a SHA256 tree hash, see Computing Checksums.
* On the server side, Glacier also constructs the SHA256 tree hash of the assembled archive. If the values match,
* Glacier saves the archive to the vault; otherwise, it returns an error, and the operation fails. The
* ListParts operation returns a list of parts uploaded for a specific multipart upload. It includes checksum
* information for each uploaded part that can be used to debug a bad checksum issue.
*
*
* Additionally, Glacier also checks for any missing content ranges when assembling the archive, if missing content
* ranges are found, Glacier returns an error and the operation fails.
*
*
* Complete Multipart Upload is an idempotent operation. After your first successful complete multipart upload, if
* you call the operation again within a short period, the operation will succeed and return the same archive ID.
* This is useful in the event you experience a network issue that causes an aborted connection or receive a 500
* server error, in which case you can repeat your Complete Multipart Upload request and get the same archive ID
* without creating duplicate archives. Note, however, that after the multipart upload completes, you cannot call
* the List Parts operation and the multipart upload will not appear in List Multipart Uploads response, even if
* idempotent complete is possible.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Uploading Large Archives
* in Parts (Multipart Upload) and Complete Multipart
* Upload in the Amazon Glacier Developer Guide.
*
*
* @param completeMultipartUploadRequest
* Provides options to complete a multipart upload operation. This informs Amazon Glacier that all the
* archive parts have been uploaded and Amazon S3 Glacier (Glacier) can now assemble the archive from the
* uploaded parts. After assembling and saving the archive to the vault, Glacier returns the URI path of the
* newly created archive resource.
* @return Result of the CompleteMultipartUpload operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.CompleteMultipartUpload
*/
@Override
public CompleteMultipartUploadResult completeMultipartUpload(CompleteMultipartUploadRequest request) {
request = beforeClientExecution(request);
return executeCompleteMultipartUpload(request);
}
@SdkInternalApi
final CompleteMultipartUploadResult executeCompleteMultipartUpload(CompleteMultipartUploadRequest completeMultipartUploadRequest) {
ExecutionContext executionContext = createExecutionContext(completeMultipartUploadRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CompleteMultipartUploadRequestProtocolMarshaller(protocolFactory).marshall(super
.beforeMarshalling(completeMultipartUploadRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "CompleteMultipartUpload");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new CompleteMultipartUploadResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation completes the vault locking process by transitioning the vault lock from the
* InProgress
state to the Locked
state, which causes the vault lock policy to become
* unchangeable. A vault lock is put into the InProgress
state by calling InitiateVaultLock. You
* can obtain the state of the vault lock by calling GetVaultLock. For more information about the vault
* locking process, Amazon Glacier
* Vault Lock.
*
*
* This operation is idempotent. This request is always successful if the vault lock is in the Locked
* state and the provided lock ID matches the lock ID originally used to lock the vault.
*
*
* If an invalid lock ID is passed in the request when the vault lock is in the Locked
state, the
* operation returns an AccessDeniedException
error. If an invalid lock ID is passed in the request
* when the vault lock is in the InProgress
state, the operation throws an
* InvalidParameter
error.
*
*
* @param completeVaultLockRequest
* The input values for CompleteVaultLock
.
* @return Result of the CompleteVaultLock operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.CompleteVaultLock
*/
@Override
public CompleteVaultLockResult completeVaultLock(CompleteVaultLockRequest request) {
request = beforeClientExecution(request);
return executeCompleteVaultLock(request);
}
@SdkInternalApi
final CompleteVaultLockResult executeCompleteVaultLock(CompleteVaultLockRequest completeVaultLockRequest) {
ExecutionContext executionContext = createExecutionContext(completeVaultLockRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CompleteVaultLockRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(completeVaultLockRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "CompleteVaultLock");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new CompleteVaultLockResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation creates a new vault with the specified name. The name of the vault must be unique within a region
* for an AWS account. You can create up to 1,000 vaults per account. If you need to create more vaults, contact
* Amazon S3 Glacier.
*
*
* You must use the following guidelines when naming a vault.
*
*
* -
*
* Names can be between 1 and 255 characters long.
*
*
* -
*
* Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen), and '.' (period).
*
*
*
*
* This operation is idempotent.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Creating a Vault in Amazon
* Glacier and Create Vault
* in the Amazon Glacier Developer Guide.
*
*
* @param createVaultRequest
* Provides options to create a vault.
* @return Result of the CreateVault operation returned by the service.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @throws LimitExceededException
* Returned if the request results in a vault or account limit being exceeded.
* @sample AmazonGlacier.CreateVault
*/
@Override
public CreateVaultResult createVault(CreateVaultRequest request) {
request = beforeClientExecution(request);
return executeCreateVault(request);
}
@SdkInternalApi
final CreateVaultResult executeCreateVault(CreateVaultRequest createVaultRequest) {
ExecutionContext executionContext = createExecutionContext(createVaultRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CreateVaultRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(createVaultRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "CreateVault");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new CreateVaultResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation deletes an archive from a vault. Subsequent requests to initiate a retrieval of this archive will
* fail. Archive retrievals that are in progress for this archive ID may or may not succeed according to the
* following scenarios:
*
*
* -
*
* If the archive retrieval job is actively preparing the data for download when Amazon S3 Glacier receives the
* delete archive request, the archival retrieval operation might fail.
*
*
* -
*
* If the archive retrieval job has successfully prepared the archive for download when Amazon S3 Glacier receives
* the delete archive request, you will be able to download the output.
*
*
*
*
* This operation is idempotent. Attempting to delete an already-deleted archive does not result in an error.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Deleting an Archive in
* Amazon Glacier and Delete Archive in the
* Amazon Glacier Developer Guide.
*
*
* @param deleteArchiveRequest
* Provides options for deleting an archive from an Amazon S3 Glacier vault.
* @return Result of the DeleteArchive operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.DeleteArchive
*/
@Override
public DeleteArchiveResult deleteArchive(DeleteArchiveRequest request) {
request = beforeClientExecution(request);
return executeDeleteArchive(request);
}
@SdkInternalApi
final DeleteArchiveResult executeDeleteArchive(DeleteArchiveRequest deleteArchiveRequest) {
ExecutionContext executionContext = createExecutionContext(deleteArchiveRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeleteArchiveRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteArchiveRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DeleteArchive");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteArchiveResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation deletes a vault. Amazon S3 Glacier will delete a vault only if there are no archives in the vault
* as of the last inventory and there have been no writes to the vault since the last inventory. If either of these
* conditions is not satisfied, the vault deletion fails (that is, the vault is not removed) and Amazon S3 Glacier
* returns an error. You can use DescribeVault to return the number of archives in a vault, and you can use
* Initiate a Job (POST
* jobs) to initiate a new inventory retrieval for a vault. The inventory contains the archive IDs you use to
* delete archives using Delete Archive (DELETE
* archive).
*
*
* This operation is idempotent.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Deleting a Vault in Amazon
* Glacier and Delete Vault
* in the Amazon S3 Glacier Developer Guide.
*
*
* @param deleteVaultRequest
* Provides options for deleting a vault from Amazon S3 Glacier.
* @return Result of the DeleteVault operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.DeleteVault
*/
@Override
public DeleteVaultResult deleteVault(DeleteVaultRequest request) {
request = beforeClientExecution(request);
return executeDeleteVault(request);
}
@SdkInternalApi
final DeleteVaultResult executeDeleteVault(DeleteVaultRequest deleteVaultRequest) {
ExecutionContext executionContext = createExecutionContext(deleteVaultRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeleteVaultRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteVaultRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DeleteVault");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteVaultResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation deletes the access policy associated with the specified vault. The operation is eventually
* consistent; that is, it might take some time for Amazon S3 Glacier to completely remove the access policy, and
* you might still see the effect of the policy for a short time after you send the delete request.
*
*
* This operation is idempotent. You can invoke delete multiple times, even if there is no policy associated with
* the vault. For more information about vault access policies, see Amazon Glacier Access
* Control with Vault Access Policies.
*
*
* @param deleteVaultAccessPolicyRequest
* DeleteVaultAccessPolicy input.
* @return Result of the DeleteVaultAccessPolicy operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.DeleteVaultAccessPolicy
*/
@Override
public DeleteVaultAccessPolicyResult deleteVaultAccessPolicy(DeleteVaultAccessPolicyRequest request) {
request = beforeClientExecution(request);
return executeDeleteVaultAccessPolicy(request);
}
@SdkInternalApi
final DeleteVaultAccessPolicyResult executeDeleteVaultAccessPolicy(DeleteVaultAccessPolicyRequest deleteVaultAccessPolicyRequest) {
ExecutionContext executionContext = createExecutionContext(deleteVaultAccessPolicyRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeleteVaultAccessPolicyRequestProtocolMarshaller(protocolFactory).marshall(super
.beforeMarshalling(deleteVaultAccessPolicyRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DeleteVaultAccessPolicy");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new DeleteVaultAccessPolicyResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation deletes the notification configuration set for a vault. The operation is eventually consistent;
* that is, it might take some time for Amazon S3 Glacier to completely disable the notifications and you might
* still receive some notifications for a short time after you send the delete request.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Configuring Vault
* Notifications in Amazon S3 Glacier and Delete Vault
* Notification Configuration in the Amazon S3 Glacier Developer Guide.
*
*
* @param deleteVaultNotificationsRequest
* Provides options for deleting a vault notification configuration from an Amazon Glacier vault.
* @return Result of the DeleteVaultNotifications operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.DeleteVaultNotifications
*/
@Override
public DeleteVaultNotificationsResult deleteVaultNotifications(DeleteVaultNotificationsRequest request) {
request = beforeClientExecution(request);
return executeDeleteVaultNotifications(request);
}
@SdkInternalApi
final DeleteVaultNotificationsResult executeDeleteVaultNotifications(DeleteVaultNotificationsRequest deleteVaultNotificationsRequest) {
ExecutionContext executionContext = createExecutionContext(deleteVaultNotificationsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeleteVaultNotificationsRequestProtocolMarshaller(protocolFactory).marshall(super
.beforeMarshalling(deleteVaultNotificationsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DeleteVaultNotifications");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new DeleteVaultNotificationsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation returns information about a job you previously initiated, including the job initiation date, the
* user who initiated the job, the job status code/message and the Amazon SNS topic to notify after Amazon S3
* Glacier (Glacier) completes the job. For more information about initiating a job, see InitiateJob.
*
*
*
* This operation enables you to check the status of your job. However, it is strongly recommended that you set up
* an Amazon SNS topic and specify it in your initiate job request so that Glacier can notify the topic after it
* completes the job.
*
*
*
* A job ID will not expire for at least 24 hours after Glacier completes the job.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For more information about using this operation, see the documentation for the underlying REST API Describe Job in the
* Amazon Glacier Developer Guide.
*
*
* @param describeJobRequest
* Provides options for retrieving a job description.
* @return Result of the DescribeJob operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.DescribeJob
*/
@Override
public DescribeJobResult describeJob(DescribeJobRequest request) {
request = beforeClientExecution(request);
return executeDescribeJob(request);
}
@SdkInternalApi
final DescribeJobResult executeDescribeJob(DescribeJobRequest describeJobRequest) {
ExecutionContext executionContext = createExecutionContext(describeJobRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeJobRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeJobRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DescribeJob");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeJobResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation returns information about a vault, including the vault's Amazon Resource Name (ARN), the date the
* vault was created, the number of archives it contains, and the total size of all the archives in the vault. The
* number of archives and their total size are as of the last inventory generation. This means that if you add or
* remove an archive from a vault, and then immediately use Describe Vault, the change in contents will not be
* immediately reflected. If you want to retrieve the latest inventory of the vault, use InitiateJob. Amazon
* S3 Glacier generates vault inventories approximately daily. For more information, see Downloading a Vault Inventory in
* Amazon S3 Glacier.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Retrieving Vault Metadata
* in Amazon S3 Glacier and Describe Vault in the
* Amazon Glacier Developer Guide.
*
*
* @param describeVaultRequest
* Provides options for retrieving metadata for a specific vault in Amazon Glacier.
* @return Result of the DescribeVault operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.DescribeVault
*/
@Override
public DescribeVaultResult describeVault(DescribeVaultRequest request) {
request = beforeClientExecution(request);
return executeDescribeVault(request);
}
@SdkInternalApi
final DescribeVaultResult executeDescribeVault(DescribeVaultRequest describeVaultRequest) {
ExecutionContext executionContext = createExecutionContext(describeVaultRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeVaultRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeVaultRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DescribeVault");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeVaultResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation returns the current data retrieval policy for the account and region specified in the GET request.
* For more information about data retrieval policies, see Amazon Glacier Data
* Retrieval Policies.
*
*
* @param getDataRetrievalPolicyRequest
* Input for GetDataRetrievalPolicy.
* @return Result of the GetDataRetrievalPolicy operation returned by the service.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.GetDataRetrievalPolicy
*/
@Override
public GetDataRetrievalPolicyResult getDataRetrievalPolicy(GetDataRetrievalPolicyRequest request) {
request = beforeClientExecution(request);
return executeGetDataRetrievalPolicy(request);
}
@SdkInternalApi
final GetDataRetrievalPolicyResult executeGetDataRetrievalPolicy(GetDataRetrievalPolicyRequest getDataRetrievalPolicyRequest) {
ExecutionContext executionContext = createExecutionContext(getDataRetrievalPolicyRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new GetDataRetrievalPolicyRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getDataRetrievalPolicyRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "GetDataRetrievalPolicy");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new GetDataRetrievalPolicyResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation downloads the output of the job you initiated using InitiateJob. Depending on the job type
* you specified when you initiated the job, the output will be either the content of an archive or a vault
* inventory.
*
*
* You can download all the job output or download a portion of the output by specifying a byte range. In the case
* of an archive retrieval job, depending on the byte range you specify, Amazon S3 Glacier (Glacier) returns the
* checksum for the portion of the data. You can compute the checksum on the client and verify that the values match
* to ensure the portion you downloaded is the correct data.
*
*
* A job ID will not expire for at least 24 hours after Glacier completes the job. That a byte range. For both
* archive and inventory retrieval jobs, you should verify the downloaded size against the size returned in the
* headers from the Get Job Output response.
*
*
* For archive retrieval jobs, you should also verify that the size is what you expected. If you download a portion
* of the output, the expected size is based on the range of bytes you specified. For example, if you specify a
* range of bytes=0-1048575
, you should verify your download size is 1,048,576 bytes. If you download
* an entire archive, the expected size is the size of the archive when you uploaded it to Amazon S3 Glacier The
* expected size is also returned in the headers from the Get Job Output response.
*
*
* In the case of an archive retrieval job, depending on the byte range you specify, Glacier returns the checksum
* for the portion of the data. To ensure the portion you downloaded is the correct data, compute the checksum on
* the client, verify that the values match, and verify that the size is what you expected.
*
*
* A job ID does not expire for at least 24 hours after Glacier completes the job. That is, you can download the job
* output within the 24 hours period after Amazon Glacier completes the job.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and the underlying REST API, see Downloading a Vault
* Inventory, Downloading an
* Archive, and Get Job
* Output
*
*
* @param getJobOutputRequest
* Provides options for downloading output of an Amazon S3 Glacier job.
* @return Result of the GetJobOutput operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.GetJobOutput
*/
@Override
public GetJobOutputResult getJobOutput(GetJobOutputRequest request) {
request = beforeClientExecution(request);
return executeGetJobOutput(request);
}
@SdkInternalApi
final GetJobOutputResult executeGetJobOutput(GetJobOutputRequest getJobOutputRequest) {
ExecutionContext executionContext = createExecutionContext(getJobOutputRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new GetJobOutputRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getJobOutputRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "GetJobOutput");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(false).withHasStreamingSuccessResponse(true), new GetJobOutputResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
request.addHandlerContext(HandlerContextKey.HAS_STREAMING_OUTPUT, Boolean.TRUE);
GetJobOutputResult result = response.getAwsResponse();
// wrapping the response with the LengthCheckInputStream.
result.setBody(new LengthCheckInputStream(result.getBody(), Long.parseLong(response.getHttpResponse().getHeaders().get("Content-Length")),
com.amazonaws.util.LengthCheckInputStream.INCLUDE_SKIPPED_BYTES));
// wrapping the response with the service client holder input stream to avoid client being GC'ed.
result.setBody(new ServiceClientHolderInputStream(result.getBody(), this));
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation retrieves the access-policy
subresource set on the vault; for more information on
* setting this subresource, see Set Vault Access Policy
* (PUT access-policy). If there is no access policy set on the vault, the operation returns a
* 404 Not found
error. For more information about vault access policies, see Amazon Glacier Access
* Control with Vault Access Policies.
*
*
* @param getVaultAccessPolicyRequest
* Input for GetVaultAccessPolicy.
* @return Result of the GetVaultAccessPolicy operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.GetVaultAccessPolicy
*/
@Override
public GetVaultAccessPolicyResult getVaultAccessPolicy(GetVaultAccessPolicyRequest request) {
request = beforeClientExecution(request);
return executeGetVaultAccessPolicy(request);
}
@SdkInternalApi
final GetVaultAccessPolicyResult executeGetVaultAccessPolicy(GetVaultAccessPolicyRequest getVaultAccessPolicyRequest) {
ExecutionContext executionContext = createExecutionContext(getVaultAccessPolicyRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new GetVaultAccessPolicyRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getVaultAccessPolicyRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "GetVaultAccessPolicy");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetVaultAccessPolicyResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation retrieves the following attributes from the lock-policy
subresource set on the
* specified vault:
*
*
* -
*
* The vault lock policy set on the vault.
*
*
* -
*
* The state of the vault lock, which is either InProgess
or Locked
.
*
*
* -
*
* When the lock ID expires. The lock ID is used to complete the vault locking process.
*
*
* -
*
* When the vault lock was initiated and put into the InProgress
state.
*
*
*
*
* A vault lock is put into the InProgress
state by calling InitiateVaultLock. A vault lock is
* put into the Locked
state by calling CompleteVaultLock. You can abort the vault locking
* process by calling AbortVaultLock. For more information about the vault locking process, Amazon Glacier Vault Lock.
*
*
* If there is no vault lock policy set on the vault, the operation returns a 404 Not found
error. For
* more information about vault lock policies, Amazon Glacier Access Control
* with Vault Lock Policies.
*
*
* @param getVaultLockRequest
* The input values for GetVaultLock
.
* @return Result of the GetVaultLock operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.GetVaultLock
*/
@Override
public GetVaultLockResult getVaultLock(GetVaultLockRequest request) {
request = beforeClientExecution(request);
return executeGetVaultLock(request);
}
@SdkInternalApi
final GetVaultLockResult executeGetVaultLock(GetVaultLockRequest getVaultLockRequest) {
ExecutionContext executionContext = createExecutionContext(getVaultLockRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new GetVaultLockRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getVaultLockRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "GetVaultLock");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetVaultLockResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation retrieves the notification-configuration
subresource of the specified vault.
*
*
* For information about setting a notification configuration on a vault, see SetVaultNotifications. If a
* notification configuration for a vault is not set, the operation returns a 404 Not Found
error. For
* more information about vault notifications, see Configuring Vault
* Notifications in Amazon S3 Glacier.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Configuring Vault
* Notifications in Amazon S3 Glacier and Get Vault
* Notification Configuration in the Amazon Glacier Developer Guide.
*
*
* @param getVaultNotificationsRequest
* Provides options for retrieving the notification configuration set on an Amazon Glacier vault.
* @return Result of the GetVaultNotifications operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.GetVaultNotifications
*/
@Override
public GetVaultNotificationsResult getVaultNotifications(GetVaultNotificationsRequest request) {
request = beforeClientExecution(request);
return executeGetVaultNotifications(request);
}
@SdkInternalApi
final GetVaultNotificationsResult executeGetVaultNotifications(GetVaultNotificationsRequest getVaultNotificationsRequest) {
ExecutionContext executionContext = createExecutionContext(getVaultNotificationsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new GetVaultNotificationsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getVaultNotificationsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "GetVaultNotifications");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new GetVaultNotificationsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation initiates a job of the specified type, which can be a select, an archival retrieval, or a vault
* retrieval. For more information about using this operation, see the documentation for the underlying REST API Initiate a Job.
*
*
* @param initiateJobRequest
* Provides options for initiating an Amazon S3 Glacier job.
* @return Result of the InitiateJob operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws PolicyEnforcedException
* Returned if a retrieval job would exceed the current data policy's retrieval rate limit. For more
* information about data retrieval policies,
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws InsufficientCapacityException
* Returned if there is insufficient capacity to process this expedited request. This error only applies to
* expedited retrievals and not to standard or bulk retrievals.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.InitiateJob
*/
@Override
public InitiateJobResult initiateJob(InitiateJobRequest request) {
request = beforeClientExecution(request);
return executeInitiateJob(request);
}
@SdkInternalApi
final InitiateJobResult executeInitiateJob(InitiateJobRequest initiateJobRequest) {
ExecutionContext executionContext = createExecutionContext(initiateJobRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new InitiateJobRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(initiateJobRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "InitiateJob");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new InitiateJobResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation initiates a multipart upload. Amazon S3 Glacier creates a multipart upload resource and returns
* its ID in the response. The multipart upload ID is used in subsequent requests to upload parts of an archive (see
* UploadMultipartPart).
*
*
* When you initiate a multipart upload, you specify the part size in number of bytes. The part size must be a
* megabyte (1024 KB) multiplied by a power of 2-for example, 1048576 (1 MB), 2097152 (2 MB), 4194304 (4 MB),
* 8388608 (8 MB), and so on. The minimum allowable part size is 1 MB, and the maximum is 4 GB.
*
*
* Every part you upload to this resource (see UploadMultipartPart), except the last one, must have the same
* size. The last one can be the same size or smaller. For example, suppose you want to upload a 16.2 MB file. If
* you initiate the multipart upload with a part size of 4 MB, you will upload four parts of 4 MB each and one part
* of 0.2 MB.
*
*
*
* You don't need to know the size of the archive when you start a multipart upload because Amazon S3 Glacier does
* not require you to specify the overall archive size.
*
*
*
* After you complete the multipart upload, Amazon S3 Glacier (Glacier) removes the multipart upload resource
* referenced by the ID. Glacier also removes the multipart upload resource if you cancel the multipart upload or it
* may be removed if there is no activity for a period of 24 hours.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Uploading Large Archives
* in Parts (Multipart Upload) and Initiate Multipart
* Upload in the Amazon Glacier Developer Guide.
*
*
* @param initiateMultipartUploadRequest
* Provides options for initiating a multipart upload to an Amazon S3 Glacier vault.
* @return Result of the InitiateMultipartUpload operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.InitiateMultipartUpload
*/
@Override
public InitiateMultipartUploadResult initiateMultipartUpload(InitiateMultipartUploadRequest request) {
request = beforeClientExecution(request);
return executeInitiateMultipartUpload(request);
}
@SdkInternalApi
final InitiateMultipartUploadResult executeInitiateMultipartUpload(InitiateMultipartUploadRequest initiateMultipartUploadRequest) {
ExecutionContext executionContext = createExecutionContext(initiateMultipartUploadRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new InitiateMultipartUploadRequestProtocolMarshaller(protocolFactory).marshall(super
.beforeMarshalling(initiateMultipartUploadRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "InitiateMultipartUpload");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new InitiateMultipartUploadResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation initiates the vault locking process by doing the following:
*
*
* -
*
* Installing a vault lock policy on the specified vault.
*
*
* -
*
* Setting the lock state of vault lock to InProgress
.
*
*
* -
*
* Returning a lock ID, which is used to complete the vault locking process.
*
*
*
*
* You can set one vault lock policy for each vault and this policy can be up to 20 KB in size. For more information
* about vault lock policies, see Amazon Glacier Access Control
* with Vault Lock Policies.
*
*
* You must complete the vault locking process within 24 hours after the vault lock enters the
* InProgress
state. After the 24 hour window ends, the lock ID expires, the vault automatically exits
* the InProgress
state, and the vault lock policy is removed from the vault. You call
* CompleteVaultLock to complete the vault locking process by setting the state of the vault lock to
* Locked
.
*
*
* After a vault lock is in the Locked
state, you cannot initiate a new vault lock for the vault.
*
*
* You can abort the vault locking process by calling AbortVaultLock. You can get the state of the vault lock
* by calling GetVaultLock. For more information about the vault locking process, Amazon Glacier Vault Lock.
*
*
* If this operation is called when the vault lock is in the InProgress
state, the operation returns an
* AccessDeniedException
error. When the vault lock is in the InProgress
state you must
* call AbortVaultLock before you can initiate a new vault lock policy.
*
*
* @param initiateVaultLockRequest
* The input values for InitiateVaultLock
.
* @return Result of the InitiateVaultLock operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.InitiateVaultLock
*/
@Override
public InitiateVaultLockResult initiateVaultLock(InitiateVaultLockRequest request) {
request = beforeClientExecution(request);
return executeInitiateVaultLock(request);
}
@SdkInternalApi
final InitiateVaultLockResult executeInitiateVaultLock(InitiateVaultLockRequest initiateVaultLockRequest) {
ExecutionContext executionContext = createExecutionContext(initiateVaultLockRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new InitiateVaultLockRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(initiateVaultLockRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "InitiateVaultLock");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new InitiateVaultLockResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation lists jobs for a vault, including jobs that are in-progress and jobs that have recently finished.
* The List Job operation returns a list of these jobs sorted by job initiation time.
*
*
*
* Amazon Glacier retains recently completed jobs for a period before deleting them; however, it eventually removes
* completed jobs. The output of completed jobs can be retrieved. Retaining completed jobs for a period of time
* after they have completed enables you to get a job output in the event you miss the job completion notification
* or your first attempt to download it fails. For example, suppose you start an archive retrieval job to download
* an archive. After the job completes, you start to download the archive but encounter a network error. In this
* scenario, you can retry and download the archive while the job exists.
*
*
*
* The List Jobs operation supports pagination. You should always check the response Marker
field. If
* there are no more jobs to list, the Marker
field is set to null
. If there are more jobs
* to list, the Marker
field is set to a non-null value, which you can use to continue the pagination
* of the list. To return a list of jobs that begins at a specific job, set the marker request parameter to the
* Marker
value for that job that you obtained from a previous List Jobs request.
*
*
* You can set a maximum limit for the number of jobs returned in the response by specifying the limit
* parameter in the request. The default limit is 50. The number of jobs returned might be fewer than the limit, but
* the number of returned jobs never exceeds the limit.
*
*
* Additionally, you can filter the jobs list returned by specifying the optional statuscode
parameter
* or completed
parameter, or both. Using the statuscode
parameter, you can specify to
* return only jobs that match either the InProgress
, Succeeded
, or Failed
* status. Using the completed
parameter, you can specify to return only jobs that were completed (
* true
) or jobs that were not completed (false
).
*
*
* For more information about using this operation, see the documentation for the underlying REST API List Jobs.
*
*
* @param listJobsRequest
* Provides options for retrieving a job list for an Amazon S3 Glacier vault.
* @return Result of the ListJobs operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.ListJobs
*/
@Override
public ListJobsResult listJobs(ListJobsRequest request) {
request = beforeClientExecution(request);
return executeListJobs(request);
}
@SdkInternalApi
final ListJobsResult executeListJobs(ListJobsRequest listJobsRequest) {
ExecutionContext executionContext = createExecutionContext(listJobsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListJobsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listJobsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "ListJobs");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListJobsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation lists in-progress multipart uploads for the specified vault. An in-progress multipart upload is a
* multipart upload that has been initiated by an InitiateMultipartUpload request, but has not yet been
* completed or aborted. The list returned in the List Multipart Upload response has no guaranteed order.
*
*
* The List Multipart Uploads operation supports pagination. By default, this operation returns up to 50 multipart
* uploads in the response. You should always check the response for a marker
at which to continue the
* list; if there are no more items the marker
is null
. To return a list of multipart
* uploads that begins at a specific upload, set the marker
request parameter to the value you obtained
* from a previous List Multipart Upload request. You can also limit the number of uploads returned in the response
* by specifying the limit
parameter in the request.
*
*
* Note the difference between this operation and listing parts (ListParts). The List Multipart Uploads
* operation lists all multipart uploads for a vault and does not require a multipart upload ID. The List Parts
* operation requires a multipart upload ID since parts are associated with a single upload.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and the underlying REST API, see Working with Archives in
* Amazon S3 Glacier and List Multipart
* Uploads in the Amazon Glacier Developer Guide.
*
*
* @param listMultipartUploadsRequest
* Provides options for retrieving list of in-progress multipart uploads for an Amazon Glacier vault.
* @return Result of the ListMultipartUploads operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.ListMultipartUploads
*/
@Override
public ListMultipartUploadsResult listMultipartUploads(ListMultipartUploadsRequest request) {
request = beforeClientExecution(request);
return executeListMultipartUploads(request);
}
@SdkInternalApi
final ListMultipartUploadsResult executeListMultipartUploads(ListMultipartUploadsRequest listMultipartUploadsRequest) {
ExecutionContext executionContext = createExecutionContext(listMultipartUploadsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListMultipartUploadsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listMultipartUploadsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "ListMultipartUploads");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListMultipartUploadsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation lists the parts of an archive that have been uploaded in a specific multipart upload. You can make
* this request at any time during an in-progress multipart upload before you complete the upload (see
* CompleteMultipartUpload. List Parts returns an error for completed uploads. The list returned in the List
* Parts response is sorted by part range.
*
*
* The List Parts operation supports pagination. By default, this operation returns up to 50 uploaded parts in the
* response. You should always check the response for a marker
at which to continue the list; if there
* are no more items the marker
is null
. To return a list of parts that begins at a
* specific part, set the marker
request parameter to the value you obtained from a previous List Parts
* request. You can also limit the number of parts returned in the response by specifying the limit
* parameter in the request.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and the underlying REST API, see Working with Archives in
* Amazon S3 Glacier and List Parts in the
* Amazon Glacier Developer Guide.
*
*
* @param listPartsRequest
* Provides options for retrieving a list of parts of an archive that have been uploaded in a specific
* multipart upload.
* @return Result of the ListParts operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.ListParts
*/
@Override
public ListPartsResult listParts(ListPartsRequest request) {
request = beforeClientExecution(request);
return executeListParts(request);
}
@SdkInternalApi
final ListPartsResult executeListParts(ListPartsRequest listPartsRequest) {
ExecutionContext executionContext = createExecutionContext(listPartsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListPartsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listPartsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "ListParts");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListPartsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation lists the provisioned capacity units for the specified AWS account.
*
*
* @param listProvisionedCapacityRequest
* @return Result of the ListProvisionedCapacity operation returned by the service.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.ListProvisionedCapacity
*/
@Override
public ListProvisionedCapacityResult listProvisionedCapacity(ListProvisionedCapacityRequest request) {
request = beforeClientExecution(request);
return executeListProvisionedCapacity(request);
}
@SdkInternalApi
final ListProvisionedCapacityResult executeListProvisionedCapacity(ListProvisionedCapacityRequest listProvisionedCapacityRequest) {
ExecutionContext executionContext = createExecutionContext(listProvisionedCapacityRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListProvisionedCapacityRequestProtocolMarshaller(protocolFactory).marshall(super
.beforeMarshalling(listProvisionedCapacityRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "ListProvisionedCapacity");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new ListProvisionedCapacityResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation lists all the tags attached to a vault. The operation returns an empty map if there are no tags.
* For more information about tags, see Tagging Amazon S3 Glacier Resources.
*
*
* @param listTagsForVaultRequest
* The input value for ListTagsForVaultInput
.
* @return Result of the ListTagsForVault operation returned by the service.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.ListTagsForVault
*/
@Override
public ListTagsForVaultResult listTagsForVault(ListTagsForVaultRequest request) {
request = beforeClientExecution(request);
return executeListTagsForVault(request);
}
@SdkInternalApi
final ListTagsForVaultResult executeListTagsForVault(ListTagsForVaultRequest listTagsForVaultRequest) {
ExecutionContext executionContext = createExecutionContext(listTagsForVaultRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListTagsForVaultRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listTagsForVaultRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "ListTagsForVault");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListTagsForVaultResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation lists all vaults owned by the calling user's account. The list returned in the response is
* ASCII-sorted by vault name.
*
*
* By default, this operation returns up to 10 items. If there are more vaults to list, the response
* marker
field contains the vault Amazon Resource Name (ARN) at which to continue the list with a new
* List Vaults request; otherwise, the marker
field is null
. To return a list of vaults
* that begins at a specific vault, set the marker
request parameter to the vault ARN you obtained from
* a previous List Vaults request. You can also limit the number of vaults returned in the response by specifying
* the limit
parameter in the request.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Retrieving Vault Metadata
* in Amazon S3 Glacier and List Vaults in the Amazon
* Glacier Developer Guide.
*
*
* @param listVaultsRequest
* Provides options to retrieve the vault list owned by the calling user's account. The list provides
* metadata information for each vault.
* @return Result of the ListVaults operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.ListVaults
*/
@Override
public ListVaultsResult listVaults(ListVaultsRequest request) {
request = beforeClientExecution(request);
return executeListVaults(request);
}
@SdkInternalApi
final ListVaultsResult executeListVaults(ListVaultsRequest listVaultsRequest) {
ExecutionContext executionContext = createExecutionContext(listVaultsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListVaultsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listVaultsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "ListVaults");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListVaultsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation purchases a provisioned capacity unit for an AWS account.
*
*
* @param purchaseProvisionedCapacityRequest
* @return Result of the PurchaseProvisionedCapacity operation returned by the service.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws LimitExceededException
* Returned if the request results in a vault or account limit being exceeded.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.PurchaseProvisionedCapacity
*/
@Override
public PurchaseProvisionedCapacityResult purchaseProvisionedCapacity(PurchaseProvisionedCapacityRequest request) {
request = beforeClientExecution(request);
return executePurchaseProvisionedCapacity(request);
}
@SdkInternalApi
final PurchaseProvisionedCapacityResult executePurchaseProvisionedCapacity(PurchaseProvisionedCapacityRequest purchaseProvisionedCapacityRequest) {
ExecutionContext executionContext = createExecutionContext(purchaseProvisionedCapacityRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new PurchaseProvisionedCapacityRequestProtocolMarshaller(protocolFactory).marshall(super
.beforeMarshalling(purchaseProvisionedCapacityRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "PurchaseProvisionedCapacity");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new PurchaseProvisionedCapacityResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation removes one or more tags from the set of tags attached to a vault. For more information about
* tags, see Tagging Amazon S3 Glacier
* Resources. This operation is idempotent. The operation will be successful, even if there are no tags attached
* to the vault.
*
*
* @param removeTagsFromVaultRequest
* The input value for RemoveTagsFromVaultInput
.
* @return Result of the RemoveTagsFromVault operation returned by the service.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.RemoveTagsFromVault
*/
@Override
public RemoveTagsFromVaultResult removeTagsFromVault(RemoveTagsFromVaultRequest request) {
request = beforeClientExecution(request);
return executeRemoveTagsFromVault(request);
}
@SdkInternalApi
final RemoveTagsFromVaultResult executeRemoveTagsFromVault(RemoveTagsFromVaultRequest removeTagsFromVaultRequest) {
ExecutionContext executionContext = createExecutionContext(removeTagsFromVaultRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RemoveTagsFromVaultRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(removeTagsFromVaultRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "RemoveTagsFromVault");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new RemoveTagsFromVaultResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation sets and then enacts a data retrieval policy in the region specified in the PUT request. You can
* set one policy per region for an AWS account. The policy is enacted within a few minutes of a successful PUT
* operation.
*
*
* The set policy operation does not affect retrieval jobs that were in progress before the policy was enacted. For
* more information about data retrieval policies, see Amazon Glacier Data
* Retrieval Policies.
*
*
* @param setDataRetrievalPolicyRequest
* SetDataRetrievalPolicy input.
* @return Result of the SetDataRetrievalPolicy operation returned by the service.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.SetDataRetrievalPolicy
*/
@Override
public SetDataRetrievalPolicyResult setDataRetrievalPolicy(SetDataRetrievalPolicyRequest request) {
request = beforeClientExecution(request);
return executeSetDataRetrievalPolicy(request);
}
@SdkInternalApi
final SetDataRetrievalPolicyResult executeSetDataRetrievalPolicy(SetDataRetrievalPolicyRequest setDataRetrievalPolicyRequest) {
ExecutionContext executionContext = createExecutionContext(setDataRetrievalPolicyRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new SetDataRetrievalPolicyRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(setDataRetrievalPolicyRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "SetDataRetrievalPolicy");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new SetDataRetrievalPolicyResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation configures an access policy for a vault and will overwrite an existing policy. To configure a
* vault access policy, send a PUT request to the access-policy
subresource of the vault. An access
* policy is specific to a vault and is also called a vault subresource. You can set one access policy per vault and
* the policy can be up to 20 KB in size. For more information about vault access policies, see Amazon Glacier Access
* Control with Vault Access Policies.
*
*
* @param setVaultAccessPolicyRequest
* SetVaultAccessPolicy input.
* @return Result of the SetVaultAccessPolicy operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.SetVaultAccessPolicy
*/
@Override
public SetVaultAccessPolicyResult setVaultAccessPolicy(SetVaultAccessPolicyRequest request) {
request = beforeClientExecution(request);
return executeSetVaultAccessPolicy(request);
}
@SdkInternalApi
final SetVaultAccessPolicyResult executeSetVaultAccessPolicy(SetVaultAccessPolicyRequest setVaultAccessPolicyRequest) {
ExecutionContext executionContext = createExecutionContext(setVaultAccessPolicyRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new SetVaultAccessPolicyRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(setVaultAccessPolicyRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "SetVaultAccessPolicy");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new SetVaultAccessPolicyResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation configures notifications that will be sent when specific events happen to a vault. By default, you
* don't get any notifications.
*
*
* To configure vault notifications, send a PUT request to the notification-configuration
subresource
* of the vault. The request should include a JSON document that provides an Amazon SNS topic and specific events
* for which you want Amazon S3 Glacier to send notifications to the topic.
*
*
* Amazon SNS topics must grant permission to the vault to be allowed to publish notifications to the topic. You can
* configure a vault to publish a notification for the following vault events:
*
*
* -
*
* ArchiveRetrievalCompleted This event occurs when a job that was initiated for an archive retrieval is
* completed (InitiateJob). The status of the completed job can be "Succeeded" or "Failed". The notification
* sent to the SNS topic is the same output as returned from DescribeJob.
*
*
* -
*
* InventoryRetrievalCompleted This event occurs when a job that was initiated for an inventory retrieval is
* completed (InitiateJob). The status of the completed job can be "Succeeded" or "Failed". The notification
* sent to the SNS topic is the same output as returned from DescribeJob.
*
*
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Configuring Vault
* Notifications in Amazon S3 Glacier and Set Vault
* Notification Configuration in the Amazon Glacier Developer Guide.
*
*
* @param setVaultNotificationsRequest
* Provides options to configure notifications that will be sent when specific events happen to a vault.
* @return Result of the SetVaultNotifications operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.SetVaultNotifications
*/
@Override
public SetVaultNotificationsResult setVaultNotifications(SetVaultNotificationsRequest request) {
request = beforeClientExecution(request);
return executeSetVaultNotifications(request);
}
@SdkInternalApi
final SetVaultNotificationsResult executeSetVaultNotifications(SetVaultNotificationsRequest setVaultNotificationsRequest) {
ExecutionContext executionContext = createExecutionContext(setVaultNotificationsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new SetVaultNotificationsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(setVaultNotificationsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "SetVaultNotifications");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
new SetVaultNotificationsResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation adds an archive to a vault. This is a synchronous operation, and for a successful upload, your
* data is durably persisted. Amazon S3 Glacier returns the archive ID in the x-amz-archive-id
header
* of the response.
*
*
* You must use the archive ID to access your data in Amazon S3 Glacier. After you upload an archive, you should
* save the archive ID returned so that you can retrieve or delete the archive later. Besides saving the archive ID,
* you can also index it and give it a friendly name to allow for better searching. You can also use the optional
* archive description field to specify how the archive is referred to in an external index of archives, such as you
* might create in Amazon DynamoDB. You can also get the vault inventory to obtain a list of archive IDs in a vault.
* For more information, see InitiateJob.
*
*
* You must provide a SHA256 tree hash of the data you are uploading. For information about computing a SHA256 tree
* hash, see Computing
* Checksums.
*
*
* You can optionally specify an archive description of up to 1,024 printable ASCII characters. You can get the
* archive description when you either retrieve the archive or get the vault inventory. For more information, see
* InitiateJob. Amazon Glacier does not interpret the description in any way. An archive description does not
* need to be unique. You cannot use the description to retrieve or sort the archive list.
*
*
* Archives are immutable. After you upload an archive, you cannot edit the archive or its description.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Uploading an Archive in
* Amazon Glacier and Upload Archive in the
* Amazon Glacier Developer Guide.
*
*
* @param uploadArchiveRequest
* Provides options to add an archive to a vault.
* @return Result of the UploadArchive operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws RequestTimeoutException
* Returned if, when uploading an archive, Amazon S3 Glacier times out while receiving the upload.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.UploadArchive
*/
@Override
public UploadArchiveResult uploadArchive(UploadArchiveRequest request) {
request = beforeClientExecution(request);
return executeUploadArchive(request);
}
@SdkInternalApi
final UploadArchiveResult executeUploadArchive(UploadArchiveRequest uploadArchiveRequest) {
ExecutionContext executionContext = createExecutionContext(uploadArchiveRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new UploadArchiveRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(uploadArchiveRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "UploadArchive");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
request.addHandlerContext(HandlerContextKey.HAS_STREAMING_INPUT, Boolean.TRUE);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new UploadArchiveResultJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* This operation uploads a part of an archive. You can upload archive parts in any order. You can also upload them
* in parallel. You can upload up to 10,000 parts for a multipart upload.
*
*
* Amazon Glacier rejects your upload part request if any of the following conditions is true:
*
*
* -
*
* SHA256 tree hash does not matchTo ensure that part data is not corrupted in transmission, you compute a
* SHA256 tree hash of the part and include it in your request. Upon receiving the part data, Amazon S3 Glacier also
* computes a SHA256 tree hash. If these hash values don't match, the operation fails. For information about
* computing a SHA256 tree hash, see Computing Checksums.
*
*
* -
*
* Part size does not matchThe size of each part except the last must match the size specified in the
* corresponding InitiateMultipartUpload request. The size of the last part must be the same size as, or
* smaller than, the specified size.
*
*
*
* If you upload a part whose size is smaller than the part size you specified in your initiate multipart upload
* request and that part is not the last part, then the upload part request will succeed. However, the subsequent
* Complete Multipart Upload request will fail.
*
*
* -
*
* Range does not alignThe byte range value in the request does not align with the part size specified in the
* corresponding initiate request. For example, if you specify a part size of 4194304 bytes (4 MB), then 0 to
* 4194303 bytes (4 MB - 1) and 4194304 (4 MB) to 8388607 (8 MB - 1) are valid part ranges. However, if you set a
* range value of 2 MB to 6 MB, the range does not align with the part size and the upload will fail.
*
*
*
*
* This operation is idempotent. If you upload the same part multiple times, the data included in the most recent
* request overwrites the previously uploaded data.
*
*
* An AWS account has full permission to perform all operations (actions). However, AWS Identity and Access
* Management (IAM) users don't have any permissions by default. You must grant them explicit permission to perform
* specific actions. For more information, see Access Control
* Using AWS Identity and Access Management (IAM).
*
*
* For conceptual information and underlying REST API, see Uploading Large Archives
* in Parts (Multipart Upload) and Upload Part in the
* Amazon Glacier Developer Guide.
*
*
* @param uploadMultipartPartRequest
* Provides options to upload a part of an archive in a multipart upload operation.
* @return Result of the UploadMultipartPart operation returned by the service.
* @throws ResourceNotFoundException
* Returned if the specified resource (such as a vault, upload ID, or job ID) doesn't exist.
* @throws InvalidParameterValueException
* Returned if a parameter of the request is incorrectly specified.
* @throws MissingParameterValueException
* Returned if a required header or parameter is missing from the request.
* @throws RequestTimeoutException
* Returned if, when uploading an archive, Amazon S3 Glacier times out while receiving the upload.
* @throws ServiceUnavailableException
* Returned if the service cannot complete the request.
* @sample AmazonGlacier.UploadMultipartPart
*/
@Override
public UploadMultipartPartResult uploadMultipartPart(UploadMultipartPartRequest request) {
request = beforeClientExecution(request);
return executeUploadMultipartPart(request);
}
@SdkInternalApi
final UploadMultipartPartResult executeUploadMultipartPart(UploadMultipartPartRequest uploadMultipartPartRequest) {
ExecutionContext executionContext = createExecutionContext(uploadMultipartPartRequest);
AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new UploadMultipartPartRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(uploadMultipartPartRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Glacier");
request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "UploadMultipartPart");
request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);
request.addHandlerContext(HandlerContextKey.HAS_STREAMING_INPUT, Boolean.TRUE);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler(
new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new UploadMultipartPartResultJsonUnmarshaller());
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.
*
* 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 Response invoke(Request request, HttpResponseHandler> responseHandler,
ExecutionContext executionContext) {
return invoke(request, responseHandler, executionContext, null, null);
}
/**
* Normal invoke with authentication. Credentials are required and may be overriden at the request level.
**/
private Response invoke(Request request, HttpResponseHandler> responseHandler,
ExecutionContext executionContext, URI cachedEndpoint, URI uriFromEndpointTrait) {
executionContext.setCredentialsProvider(CredentialUtils.getCredentialsProvider(request.getOriginalRequest(), awsCredentialsProvider));
return doInvoke(request, responseHandler, executionContext, cachedEndpoint, uriFromEndpointTrait);
}
/**
* Invoke with no authentication. Credentials are not required and any credentials set on the client or request will
* be ignored for this operation.
**/
private Response anonymousInvoke(Request request,
HttpResponseHandler> responseHandler, ExecutionContext executionContext) {
return doInvoke(request, responseHandler, executionContext, null, null);
}
/**
* Invoke the request using the http client. Assumes credentials (or lack thereof) have been configured in the
* ExecutionContext beforehand.
**/
private Response doInvoke(Request request, HttpResponseHandler> responseHandler,
ExecutionContext executionContext, URI discoveredEndpoint, URI uriFromEndpointTrait) {
if (discoveredEndpoint != null) {
request.setEndpoint(discoveredEndpoint);
request.getOriginalRequest().getRequestClientOptions().appendUserAgent("endpoint-discovery");
} else if (uriFromEndpointTrait != null) {
request.setEndpoint(uriFromEndpointTrait);
} else {
request.setEndpoint(endpoint);
}
request.setTimeOffset(timeOffset);
HttpResponseHandler errorResponseHandler = protocolFactory.createErrorResponseHandler(new JsonErrorResponseMetadata()
.withCustomErrorCodeFieldName("code"));
return client.execute(request, responseHandler, errorResponseHandler, executionContext);
}
@com.amazonaws.annotation.SdkInternalApi
static com.amazonaws.protocol.json.SdkJsonProtocolFactory getProtocolFactory() {
return protocolFactory;
}
@Override
public AmazonGlacierWaiters waiters() {
if (waiters == null) {
synchronized (this) {
if (waiters == null) {
waiters = new AmazonGlacierWaiters(this);
}
}
}
return waiters;
}
@Override
public void shutdown() {
super.shutdown();
if (waiters != null) {
waiters.shutdown();
}
}
}