|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.jets3t.service.S3Service
A service that handles communication with S3, offering all the operations that can be performed on S3 accounts.
This class must be extended by implementation classes that perform the communication with S3 via
a particular interface, such as REST or SOAP. Implementations provided with the JetS3t suite
include RestS3Service and
SoapS3Service.
Implementations of S3Service must be thread-safe as they will probably be used by
the multi-threaded service class S3ServiceMulti.
This class uses properties obtained through Jets3tProperties. For more information on
these properties please refer to
JetS3t Configuration
| Field Summary | |
static int |
BUCKET_STATUS__ALREADY_CLAIMED
|
static int |
BUCKET_STATUS__DOES_NOT_EXIST
|
static int |
BUCKET_STATUS__MY_BUCKET
|
protected Jets3tProperties |
jets3tProperties
|
protected long |
timeOffset
The approximate difference in the current time between your computer and Amazon's S3 server, measured in milliseconds. |
static java.lang.String |
VERSION_NO__JETS3T_TOOLKIT
The JetS3t suite version number implemented by this service: 0.6.1 |
| Constructor Summary | |
protected |
S3Service(AWSCredentials awsCredentials)
Construct an S3Service identified by the given user credentials. |
protected |
S3Service(AWSCredentials awsCredentials,
java.lang.String invokingApplicationDescription)
Construct an S3Service identified by the given user credentials. |
protected |
S3Service(AWSCredentials awsCredentials,
java.lang.String invokingApplicationDescription,
Jets3tProperties jets3tProperties)
Construct an S3Service identified by the given user credentials. |
| Method Summary | |
long |
adjustTime()
Sets a time offset value to reflect the time difference between your computer's clock and the current time according to an S3 server. |
protected void |
assertAuthenticatedConnection(java.lang.String action)
Throws an exception if this service is anonymous (that is, it was created without an AWSCredentials object representing an S3 user account. |
protected void |
assertValidBucket(S3Bucket bucket,
java.lang.String action)
Throws an exception if a bucket is null or contains a null/empty name. |
protected void |
assertValidObject(S3Object object,
java.lang.String action)
Throws an exception if an object is null or contains a null/empty key. |
protected void |
assertValidObject(java.lang.String key,
java.lang.String action)
Throws an exception if an object's key name is null or empty. |
static java.lang.String |
buildPostForm(java.lang.String bucketName,
java.lang.String key)
Generates an unauthenticated HTML POST form that can be used to upload files or data to S3 from a standard web browser. |
static java.lang.String |
buildPostForm(java.lang.String bucketName,
java.lang.String key,
AWSCredentials awsCredentials,
java.util.Date expiration,
java.lang.String[] conditions,
java.lang.String[] inputFields,
java.lang.String textInput,
boolean isSecureHttp)
Generates an HTML POST form that can be used to upload files or data to S3 from a standard web browser. |
abstract int |
checkBucketStatus(java.lang.String bucketName)
Find out the status of an S3 bucket with the given name. |
java.util.Map |
copyObject(java.lang.String sourceBucketName,
java.lang.String sourceObjectKey,
java.lang.String destinationBucketName,
S3Object destinationObject,
boolean replaceMetadata)
Copy an object from your S3 account. |
java.util.Map |
copyObject(java.lang.String sourceBucketName,
java.lang.String sourceObjectKey,
java.lang.String destinationBucketName,
S3Object destinationObject,
boolean replaceMetadata,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
Copy an object from your S3 account. |
protected abstract java.util.Map |
copyObjectImpl(java.lang.String sourceBucketName,
java.lang.String sourceObjectKey,
java.lang.String destinationBucketName,
java.lang.String destinationObjectKey,
AccessControlList acl,
java.util.Map destinationMetadata,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
Copy an object within your S3 account. |
S3Bucket |
createBucket(S3Bucket bucket)
Creates a bucket in S3 based on the provided bucket object. |
S3Bucket |
createBucket(java.lang.String bucketName)
Creates a bucket. |
S3Bucket |
createBucket(java.lang.String bucketName,
java.lang.String location)
Creates a bucket in a specific location. |
protected abstract S3Bucket |
createBucketImpl(java.lang.String bucketName,
java.lang.String location,
AccessControlList acl)
Creates a bucket. |
static java.lang.String |
createSignedDeleteUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime)
Generates a signed DELETE URL. |
static java.lang.String |
createSignedDeleteUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime,
boolean isVirtualHost)
Generates a signed DELETE URL. |
static java.lang.String |
createSignedGetUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime)
Generates a signed GET URL. |
static java.lang.String |
createSignedGetUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime,
boolean isVirtualHost)
Generates a signed GET URL. |
static java.lang.String |
createSignedHeadUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime)
Generates a signed HEAD URL. |
static java.lang.String |
createSignedHeadUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime,
boolean isVirtualHost)
Generates a signed HEAD URL. |
static java.lang.String |
createSignedPutUrl(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Map headersMap,
AWSCredentials awsCredentials,
java.util.Date expiryTime)
Generates a signed PUT URL. |
static java.lang.String |
createSignedPutUrl(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Map headersMap,
AWSCredentials awsCredentials,
java.util.Date expiryTime,
boolean isVirtualHost)
Generates a signed PUT URL. |
static java.lang.String |
createSignedUrl(java.lang.String method,
java.lang.String bucketName,
java.lang.String objectKey,
java.lang.String specialParamName,
java.util.Map headersMap,
AWSCredentials awsCredentials,
long secondsSinceEpoch)
Generates a signed URL string that will grant access to an S3 resource (bucket or object) to whoever uses the URL up until the time specified. |
static java.lang.String |
createSignedUrl(java.lang.String method,
java.lang.String bucketName,
java.lang.String objectKey,
java.lang.String specialParamName,
java.util.Map headersMap,
AWSCredentials awsCredentials,
long secondsSinceEpoch,
boolean isVirtualHost)
Generates a signed URL string that will grant access to an S3 resource (bucket or object) to whoever uses the URL up until the time specified. |
static java.lang.String |
createSignedUrl(java.lang.String method,
java.lang.String bucketName,
java.lang.String objectKey,
java.lang.String specialParamName,
java.util.Map headersMap,
AWSCredentials awsCredentials,
long secondsSinceEpoch,
boolean isVirtualHost,
boolean isHttps)
Generates a signed URL string that will grant access to an S3 resource (bucket or object) to whoever uses the URL up until the time specified. |
static java.lang.String |
createTorrentUrl(java.lang.String bucketName,
java.lang.String objectKey)
Generates a URL string that will return a Torrent file for an object in S3, which file can be downloaded and run in a BitTorrent client. |
void |
deleteBucket(S3Bucket bucket)
Deletes an S3 bucket. |
void |
deleteBucket(java.lang.String bucketName)
Deletes an S3 bucket. |
protected abstract void |
deleteBucketImpl(java.lang.String bucketName)
|
void |
deleteObject(S3Bucket bucket,
java.lang.String objectKey)
Deletes an object from a bucket in S3. |
void |
deleteObject(java.lang.String bucketName,
java.lang.String objectKey)
Deletes an object from a bucket in S3. |
protected abstract void |
deleteObjectImpl(java.lang.String bucketName,
java.lang.String objectKey)
|
static java.lang.String |
generatePostPolicyCondition_AllowAnyValue(java.lang.String name)
Generates a policy document condition statement that will allow the named data item in a POST request to take on any value. |
static java.lang.String |
generatePostPolicyCondition_Equality(java.lang.String name,
java.util.List values)
Generates a policy document condition statement to represent an equality test. |
static java.lang.String |
generatePostPolicyCondition_Equality(java.lang.String name,
java.lang.String value)
Generates a policy document condition statement to represent an equality test. |
static java.lang.String |
generatePostPolicyCondition_Equality(java.lang.String name,
java.lang.String[] values)
Generates a policy document condition statement to represent an equality test. |
static java.lang.String |
generatePostPolicyCondition_Range(int min,
int max)
Generates a policy document condition statement to represent a test that imposes a limit on the minimum and maximum amount of data the user can upload via a POST form. |
static java.lang.String |
generatePostPolicyCondition(java.lang.String operation,
java.lang.String name,
java.lang.String value)
Generates a policy document condition statement to represent an operation. |
static java.lang.String |
generateS3HostnameForBucket(java.lang.String bucketName)
|
AWSCredentials |
getAWSCredentials()
|
S3Bucket |
getBucket(java.lang.String bucketName)
Returns a bucket in your S3 account by listing all your buckets (using listAllBuckets()), and looking for the named bucket in
this list. |
AccessControlList |
getBucketAcl(S3Bucket bucket)
Retrieves the access control settings of a bucket. |
AccessControlList |
getBucketAcl(java.lang.String bucketName)
Retrieves the access control settings of a bucket. |
protected abstract AccessControlList |
getBucketAclImpl(java.lang.String bucketName)
|
java.lang.String |
getBucketLocation(java.lang.String bucketName)
Retrieves the location of a bucket. |
protected abstract java.lang.String |
getBucketLocationImpl(java.lang.String bucketName)
|
S3BucketLoggingStatus |
getBucketLoggingStatus(java.lang.String bucketName)
Retrieves the logging status settings of a bucket. |
protected abstract S3BucketLoggingStatus |
getBucketLoggingStatusImpl(java.lang.String bucketName)
|
java.util.Date |
getCurrentTimeWithOffset()
Returns the current date and time, adjusted according to the time offset between your computer and an AWS server (as set by the adjustTime() method). |
java.lang.String |
getDevPayProductToken()
|
java.lang.String |
getDevPayUserToken()
|
int |
getInternalErrorRetryMax()
|
java.lang.String |
getInvokingApplicationDescription()
|
Jets3tProperties |
getJetS3tProperties()
|
S3Object |
getObject(S3Bucket bucket,
java.lang.String objectKey)
Returns an object representing the details and data of an item in S3, without applying any preconditions. |
S3Object |
getObject(S3Bucket bucket,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags,
java.lang.Long byteRangeStart,
java.lang.Long byteRangeEnd)
Returns an object representing the details and data of an item in S3 that meets any given preconditions. |
S3Object |
getObject(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags,
java.lang.Long byteRangeStart,
java.lang.Long byteRangeEnd)
Returns an object representing the details and data of an item in S3 that meets any given preconditions. |
AccessControlList |
getObjectAcl(S3Bucket bucket,
java.lang.String objectKey)
Retrieves the access control settings of an object. |
AccessControlList |
getObjectAcl(java.lang.String bucketName,
java.lang.String objectKey)
Retrieves the access control settings of an object. |
protected abstract AccessControlList |
getObjectAclImpl(java.lang.String bucketName,
java.lang.String objectKey)
|
S3Object |
getObjectDetails(S3Bucket bucket,
java.lang.String objectKey)
Returns an object representing the details of an item in S3 without the object's data, and without applying any preconditions. |
S3Object |
getObjectDetails(S3Bucket bucket,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
Returns an object representing the details of an item in S3 that meets any given preconditions. |
S3Object |
getObjectDetails(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
Returns an object representing the details of an item in S3 that meets any given preconditions. |
protected abstract S3Object |
getObjectDetailsImpl(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
|
protected abstract S3Object |
getObjectImpl(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags,
java.lang.Long byteRangeStart,
java.lang.Long byteRangeEnd)
|
boolean |
isAuthenticatedConnection()
|
abstract boolean |
isBucketAccessible(java.lang.String bucketName)
Indicates whether a bucket exists and is accessible to a service user. |
static boolean |
isBucketNameValidDNSName(java.lang.String bucketName)
Returns true if the given bucket name can be used as a component of a valid DNS name. |
boolean |
isHttpsOnly()
Whether to use secure HTTPS or insecure HTTP for communicating with S3, as set by the JetS3t property: s3service.https-only |
S3Bucket[] |
listAllBuckets()
Lists the buckets belonging to the service user. |
protected abstract S3Bucket[] |
listAllBucketsImpl()
|
S3Object[] |
listObjects(S3Bucket bucket)
Lists the objects in a bucket. |
S3Object[] |
listObjects(S3Bucket bucket,
java.lang.String prefix,
java.lang.String delimiter)
Lists the objects in a bucket matching a prefix. |
S3Object[] |
listObjects(S3Bucket bucket,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength)
Lists the objects in a bucket matching a prefix, chunking the results into batches of a given size. |
S3Object[] |
listObjects(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength)
Lists the objects in a bucket matching a prefix, chunking the results into batches of a given size. |
S3ObjectsChunk |
listObjectsChunked(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength,
java.lang.String priorLastKey)
Lists the objects in a bucket matching a prefix, chunking the results into batches of a given size, and returning each chunk separately. |
S3ObjectsChunk |
listObjectsChunked(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength,
java.lang.String priorLastKey,
boolean completeListing)
Lists the objects in a bucket matching a prefix and also returns the common prefixes returned by S3. |
protected abstract S3ObjectsChunk |
listObjectsChunkedImpl(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength,
java.lang.String priorLastKey,
boolean completeListing)
Lists objects in a bucket up to the maximum listing length specified. |
protected abstract S3Object[] |
listObjectsImpl(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength)
Lists objects in a bucket. |
java.util.Map |
moveObject(java.lang.String sourceBucketName,
java.lang.String sourceObjectKey,
java.lang.String destinationBucketName,
S3Object destinationObject,
boolean replaceMetadata)
Move an object from your S3 account. |
void |
putBucketAcl(S3Bucket bucket)
Applies access control settings to a bucket. |
void |
putBucketAcl(java.lang.String bucketName,
AccessControlList acl)
Applies access control settings to a bucket. |
protected abstract void |
putBucketAclImpl(java.lang.String bucketName,
AccessControlList acl)
|
S3Object |
putObject(S3Bucket bucket,
S3Object object)
Puts an object inside an existing bucket in S3, creating a new object or overwriting an existing one with the same key. |
S3Object |
putObject(java.lang.String bucketName,
S3Object object)
Puts an object inside an existing bucket in S3, creating a new object or overwriting an existing one with the same key. |
void |
putObjectAcl(S3Bucket bucket,
S3Object object)
Applies access control settings to an object. |
void |
putObjectAcl(java.lang.String bucketName,
java.lang.String objectKey,
AccessControlList acl)
Applies access control settings to an object. |
protected abstract void |
putObjectAclImpl(java.lang.String bucketName,
java.lang.String objectKey,
AccessControlList acl)
|
protected abstract S3Object |
putObjectImpl(java.lang.String bucketName,
S3Object object)
|
java.util.Map |
renameObject(java.lang.String bucketName,
java.lang.String sourceObjectKey,
S3Object destinationObject)
Rename an object in your S3 account. |
void |
setBucketLoggingStatus(java.lang.String bucketName,
S3BucketLoggingStatus status,
boolean updateTargetACLifRequired)
Applies logging settings to a bucket, optionally modifying the ACL permissions for the logging target bucket to ensure log files can be written to it. |
protected abstract void |
setBucketLoggingStatusImpl(java.lang.String bucketName,
S3BucketLoggingStatus status)
|
void |
setDevPayProductToken(java.lang.String productToken)
Set the Product Token value to use for requests to a DevPay S3 account. |
void |
setDevPayUserToken(java.lang.String userToken)
Set the User Token value to use for requests to a DevPay S3 account. |
protected void |
sleepOnInternalError(int internalErrorCount)
Sleeps for a period of time based on the number of S3 Internal Server errors a request has encountered, provided the number of errors does not exceed the value set with the property s3service.internal-error-retry-max. |
java.util.Map |
updateObjectMetadata(java.lang.String bucketName,
S3Object object)
Update an object's metadata. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public static final java.lang.String VERSION_NO__JETS3T_TOOLKIT
public static final int BUCKET_STATUS__MY_BUCKET
public static final int BUCKET_STATUS__DOES_NOT_EXIST
public static final int BUCKET_STATUS__ALREADY_CLAIMED
protected Jets3tProperties jets3tProperties
protected long timeOffset
getCurrentTimeWithOffset()
to obtain the current time with this offset factor included, and the
adjustTime() method to calculate an offset value for your
computer based on a response from an AWS server.
| Constructor Detail |
protected S3Service(AWSCredentials awsCredentials,
java.lang.String invokingApplicationDescription,
Jets3tProperties jets3tProperties)
throws S3ServiceException
S3Service identified by the given user credentials.
awsCredentials - the S3 user credentials to use when communicating with S3, may be null in which case the
communication is done as an anonymous user.invokingApplicationDescription - a short description of the application using the service, suitable for inclusion in a
user agent string for REST/HTTP requests. Ideally this would include the application's
version number, for example: Cockpit/0.6.1 or My App Name/1.0jets3tProperties - JetS3t properties that will be applied within this service.
S3ServiceException
protected S3Service(AWSCredentials awsCredentials,
java.lang.String invokingApplicationDescription)
throws S3ServiceException
S3Service identified by the given user credentials.
awsCredentials - the S3 user credentials to use when communicating with S3, may be null in which case the
communication is done as an anonymous user.invokingApplicationDescription - a short description of the application using the service, suitable for inclusion in a
user agent string for REST/HTTP requests. Ideally this would include the application's
version number, for example: Cockpit/0.6.1 or My App Name/1.0
S3ServiceException
protected S3Service(AWSCredentials awsCredentials)
throws S3ServiceException
S3Service identified by the given user credentials.
awsCredentials - the S3 user credentials to use when communicating with S3, may be null in which case the
communication is done as an anonymous user.
S3ServiceException| Method Detail |
public void setDevPayUserToken(java.lang.String userToken)
userToken - the user token value provided by the AWS DevPay activation service.public java.lang.String getDevPayUserToken()
public void setDevPayProductToken(java.lang.String productToken)
productToken - the token that identifies your DevPay product.public java.lang.String getDevPayProductToken()
public boolean isAuthenticatedConnection()
AWSCredentials identifying an S3 user, false
if the service is acting as an anonymous user.public boolean isHttpsOnly()
public int getInternalErrorRetryMax()
public Jets3tProperties getJetS3tProperties()
public static boolean isBucketNameValidDNSName(java.lang.String bucketName)
If the JetS3tProperties property s3service.disable-dns-buckets is
set to true in the default configuration file, this method will always
return false.
bucketName - the name of the bucket to test for DNS compatibility.public static java.lang.String generateS3HostnameForBucket(java.lang.String bucketName)
protected void sleepOnInternalError(int internalErrorCount)
throws S3ServiceException,
java.lang.InterruptedException
s3service.internal-error-retry-max. If the maximum error count is
exceeded, this method will throw an S3ServiceException.
The millisecond delay grows rapidly according to the formula
50 * (internalErrorCount ^ 2).
| Error count | Delay in milliseconds |
|---|---|
| 1 | 50 |
| 2 | 200 |
| 3 | 450 |
| 4 | 800 |
| 5 | 1250 |
internalErrorCount - the number of S3 Internal Server errors encountered by a request.
S3ServiceException - thrown if the number of internal errors exceeds the value of internalErrorCount.
java.lang.InterruptedException - thrown if the thread sleep is interrupted.public AWSCredentials getAWSCredentials()
public java.lang.String getInvokingApplicationDescription()
public static java.lang.String createSignedUrl(java.lang.String method,
java.lang.String bucketName,
java.lang.String objectKey,
java.lang.String specialParamName,
java.util.Map headersMap,
AWSCredentials awsCredentials,
long secondsSinceEpoch,
boolean isVirtualHost,
boolean isHttps)
throws S3ServiceException
method - the HTTP method to sign, such as GET or PUT (note that S3 does not support POST requests).bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.specialParamName - the name of a request parameter to add to the URL generated by this method. 'Special'
parameters may include parameters that specify the kind of S3 resource that the URL
will refer to, such as 'acl', 'torrent', 'logging' or 'location'.headersMap - headers to add to the signed URL, may be null.
Headers that must match between the signed URL and the actual request include:
content-md5, content-type, and any header starting with 'x-amz-'.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectsecondsSinceEpoch - the time after which URL's signature will no longer be valid. This time cannot be null.
Note: This time is specified in seconds since the epoch, not milliseconds.isVirtualHost - if this parameter is true, the bucket name is treated as a virtual host name. To use
this option, the bucket name must be a valid DNS name that is an alias to an S3 bucket.isHttps - if true, the signed URL will use the HTTPS protocol. If false, the signed URL will
use the HTTP protocol.
S3ServiceException
public static java.lang.String createSignedUrl(java.lang.String method,
java.lang.String bucketName,
java.lang.String objectKey,
java.lang.String specialParamName,
java.util.Map headersMap,
AWSCredentials awsCredentials,
long secondsSinceEpoch,
boolean isVirtualHost)
throws S3ServiceException
s3service.https-only property
in the default jets3t.properties file.
method - the HTTP method to sign, such as GET or PUT (note that S3 does not support POST requests).bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.specialParamName - the name of a request parameter to add to the URL generated by this method. 'Special'
parameters may include parameters that specify the kind of S3 resource that the URL
will refer to, such as 'acl', 'torrent', 'logging' or 'location'.headersMap - headers to add to the signed URL, may be null.
Headers that must match between the signed URL and the actual request include:
content-md5, content-type, and any header starting with 'x-amz-'.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectsecondsSinceEpoch - the time after which URL's signature will no longer be valid. This time cannot be null.
Note: This time is specified in seconds since the epoch, not milliseconds.isVirtualHost - if this parameter is true, the bucket name is treated as a virtual host name. To use
this option, the bucket name must be a valid DNS name that is an alias to an S3 bucket.
S3ServiceException
public static java.lang.String createSignedUrl(java.lang.String method,
java.lang.String bucketName,
java.lang.String objectKey,
java.lang.String specialParamName,
java.util.Map headersMap,
AWSCredentials awsCredentials,
long secondsSinceEpoch)
throws S3ServiceException
method - the HTTP method to sign, such as GET or PUT (note that S3 does not support POST requests).bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.specialParamName - the name of a request parameter to add to the URL generated by this method. 'Special'
parameters may include parameters that specify the kind of S3 resource that the URL
will refer to, such as 'acl', 'torrent', 'logging' or 'location'.headersMap - headers to add to the signed URL, may be null.
Headers that must match between the signed URL and the actual request include:
content-md5, content-type, and any header starting with 'x-amz-'.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectsecondsSinceEpoch - the time after which URL's signature will no longer be valid. This time cannot be null.
Note: This time is specified in seconds since the epoch, not milliseconds.
S3ServiceException
public static java.lang.String createSignedGetUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime,
boolean isVirtualHost)
throws S3ServiceException
bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectexpiryTime - the time after which URL's signature will no longer be valid. This time cannot be null.isVirtualHost - if this parameter is true, the bucket name is treated as a virtual host name. To use
this option, the bucket name must be a valid DNS name that is an alias to an S3 bucket.
S3ServiceException
public static java.lang.String createSignedGetUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime)
throws S3ServiceException
bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectexpiryTime - the time after which URL's signature will no longer be valid. This time cannot be null.
S3ServiceException
public static java.lang.String createSignedPutUrl(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Map headersMap,
AWSCredentials awsCredentials,
java.util.Date expiryTime,
boolean isVirtualHost)
throws S3ServiceException
bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.headersMap - headers to add to the signed URL, may be null.
Headers that must match between the signed URL and the actual request include:
content-md5, content-type, and any header starting with 'x-amz-'.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectexpiryTime - the time after which URL's signature will no longer be valid. This time cannot be null.isVirtualHost - if this parameter is true, the bucket name is treated as a virtual host name. To use
this option, the bucket name must be a valid DNS name that is an alias to an S3 bucket.
S3ServiceException
public static java.lang.String createSignedPutUrl(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Map headersMap,
AWSCredentials awsCredentials,
java.util.Date expiryTime)
throws S3ServiceException
bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.headersMap - headers to add to the signed URL, may be null.
Headers that must match between the signed URL and the actual request include:
content-md5, content-type, and any header starting with 'x-amz-'.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectexpiryTime - the time after which URL's signature will no longer be valid. This time cannot be null.
S3ServiceException
public static java.lang.String createSignedDeleteUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime,
boolean isVirtualHost)
throws S3ServiceException
bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectexpiryTime - the time after which URL's signature will no longer be valid. This time cannot be null.isVirtualHost - if this parameter is true, the bucket name is treated as a virtual host name. To use
this option, the bucket name must be a valid DNS name that is an alias to an S3 bucket.
S3ServiceException
public static java.lang.String createSignedDeleteUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime)
throws S3ServiceException
bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectexpiryTime - the time after which URL's signature will no longer be valid. This time cannot be null.
S3ServiceException
public static java.lang.String createSignedHeadUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime,
boolean isVirtualHost)
throws S3ServiceException
bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectexpiryTime - the time after which URL's signature will no longer be valid. This time cannot be null.isVirtualHost - if this parameter is true, the bucket name is treated as a virtual host name. To use
this option, the bucket name must be a valid DNS name that is an alias to an S3 bucket.
S3ServiceException
public static java.lang.String createSignedHeadUrl(java.lang.String bucketName,
java.lang.String objectKey,
AWSCredentials awsCredentials,
java.util.Date expiryTime)
throws S3ServiceException
bucketName - the name of the bucket to include in the URL, must be a valid bucket name.objectKey - the name of the object to include in the URL, if null only the bucket name is used.awsCredentials - the credentials of someone with sufficient privileges to grant access to the bucket/objectexpiryTime - the time after which URL's signature will no longer be valid. This time cannot be null.
S3ServiceException
public static java.lang.String createTorrentUrl(java.lang.String bucketName,
java.lang.String objectKey)
bucketName - the name of the bucket containing the object.objectKey - the name of the object.
S3ServiceException
public static java.lang.String generatePostPolicyCondition(java.lang.String operation,
java.lang.String name,
java.lang.String value)
operation - the name of the test operation this condition statement will apply.name - the name of the data item the condition applies to.value - the test value that will be used by the condition operation.
public static java.lang.String generatePostPolicyCondition_AllowAnyValue(java.lang.String name)
name - the name of the data item that will be allowed to take on any value.
public static java.lang.String generatePostPolicyCondition_Equality(java.lang.String name,
java.lang.String value)
name - the name of the data item that will be tested.value - the value that the named data item must match.
public static java.lang.String generatePostPolicyCondition_Equality(java.lang.String name,
java.lang.String[] values)
name - the name of the data item that will be tested.values - a list of values, one of which must match the named data item.
public static java.lang.String generatePostPolicyCondition_Equality(java.lang.String name,
java.util.List values)
name - the name of the data item that will be tested.values - a list of values, one of which must match the named data item.
public static java.lang.String generatePostPolicyCondition_Range(int min,
int max)
min - the minimum number of bytes the user must upload. This value should be
greater than or equal to zero.max - the maximum number of bytes the user can upload. This value must be
greater than or equal to the min value.
public static java.lang.String buildPostForm(java.lang.String bucketName,
java.lang.String key)
throws S3ServiceException,
java.io.UnsupportedEncodingException
Because the generated form is unauthenticated, it will not contain a policy document and will only allow uploads to be sent to S3 buckets that are publicly writable.
bucketName - the name of the target bucket to which the data will be uploaded.key - the key name for the object that will store the data. The key name can
include the special variable ${filename} which expands to the
name of the file the user uploaded in the form.
S3ServiceException
java.io.UnsupportedEncodingException
public static java.lang.String buildPostForm(java.lang.String bucketName,
java.lang.String key,
AWSCredentials awsCredentials,
java.util.Date expiration,
java.lang.String[] conditions,
java.lang.String[] inputFields,
java.lang.String textInput,
boolean isSecureHttp)
throws S3ServiceException,
java.io.UnsupportedEncodingException
Depending on the parameter values provided, this method will generate an authenticated or unauthenticated form. If the form is unauthenticated, it will not include a policy document and will therefore not have an expiry date or any usage conditions. Unauthenticated forms may only be used to upload data to a publicly writable bucket.
If both the expiration and conditions parameters are non-null, the form will include a policy document and will be authenticated. In this case, you must provide your AWS credentials to sign the authenticated form.
bucketName - the name of the target bucket to which the data will be uploaded.key - the key name for the object that will store the data. The key name can
include the special variable ${filename} which expands to the
name of the file the user uploaded in the form.awsCredentials - your AWS credentials. Credentials are only required if the form includes
policy document conditions, otherwise this can be null.expiration - the expiration date beyond which the form will cease to work. If this
parameter is null, the generated form will not include a policy document
and will not have an expiry date.conditions - the policy conditions applied to the form, specified as policy document
condition statements. These statements can be generated with the
convenience method generatePostPolicyCondition(String, String, String)
and its siblings. If this parameter is null, the generated form will not
include a policy document and will not apply any usage conditions.inputFields - optional input field strings that will be added to the form. Each string
must be a valid HTML form input field definition, such as
<input type="hidden" name="acl" value="public-read">textInput - an optional input field definition that is used instead of the default
file input field <input name=\"file\" type=\"file\">. If this
parameter is null, the default file input field will be used to allow
file uploads. If this parameter is non-null, the provided string must
define an input field named "file" that allows the user to provide input,
such as <textarea name="file" cols="60" rows="3"></textarea>isSecureHttp - if this parameter is true the form will upload data to S3 using HTTPS,
otherwise it will use HTTP.
S3ServiceException
java.io.UnsupportedEncodingException
protected void assertAuthenticatedConnection(java.lang.String action)
throws S3ServiceException
AWSCredentials object representing an S3 user account.
action - the action being attempted which this assertion is applied, for debugging purposes.
S3ServiceException
protected void assertValidBucket(S3Bucket bucket,
java.lang.String action)
throws S3ServiceException
bucket - action - the action being attempted which this assertion is applied, for debugging purposes.
S3ServiceException
protected void assertValidObject(S3Object object,
java.lang.String action)
throws S3ServiceException
object - action - the action being attempted which this assertion is applied, for debugging purposes.
S3ServiceException
protected void assertValidObject(java.lang.String key,
java.lang.String action)
throws S3ServiceException
key - An object's key name.action - the action being attempted which this assertion is applied, for debugging purposes.
S3ServiceException
public S3Object[] listObjects(S3Bucket bucket)
throws S3ServiceException
The objects returned by this method contain only minimal information
such as the object's size, ETag, and LastModified timestamp. To retrieve
the objects' metadata you must perform follow-up getObject
or getObjectDetails operations.
This method can be performed by anonymous services. Anonymous services can only list the objects in a publicly-readable bucket.
bucket - the bucket whose contents will be listed.
This must be a valid S3Bucket object that is non-null and contains a name.
S3ServiceException
public S3Object[] listObjects(S3Bucket bucket,
java.lang.String prefix,
java.lang.String delimiter)
throws S3ServiceException
The objects returned by this method contain only minimal information
such as the object's size, ETag, and LastModified timestamp. To retrieve
the objects' metadata you must perform follow-up getObject
or getObjectDetails operations.
This method can be performed by anonymous services. Anonymous services can only list the objects in a publicly-readable bucket.
bucket - the bucket whose contents will be listed.
This must be a valid S3Bucket object that is non-null and contains a name.prefix - only objects with a key that starts with this prefix will be listeddelimiter - only list objects with key names up to this delimiter, may be null.
Note: If a non-null delimiter is specified, the prefix must include enough text to
reach the first occurrence of the delimiter in the bucket's keys, or no results will be returned.
S3ServiceException
public S3Bucket createBucket(java.lang.String bucketName,
java.lang.String location)
throws S3ServiceException
This method cannot be performed by anonymous services.
bucketName - the name of the bucket to create.location - the location of the S3 data centre in which the bucket will be created. Valid values
are S3Bucket.LOCATION_EUROPE or S3Bucket.LOCATION_US.
S3ServiceException
public S3Bucket createBucket(java.lang.String bucketName)
throws S3ServiceException
This method cannot be performed by anonymous services.
bucketName - the name of the bucket to create.
S3ServiceException
public S3Object getObject(S3Bucket bucket,
java.lang.String objectKey)
throws S3ServiceException
This method can be performed by anonymous services. Anonymous services can get a publicly-readable object.
Important: It is the caller's responsibility to close the object's data input stream. The data stream should be consumed and closed as soon as is practical as network connections may be held open until the streams are closed. Excessive unclosed streams can lead to connection starvation.
bucket - the bucket containing the object.
This must be a valid S3Bucket object that is non-null and contains a name.objectKey - the key identifying the object.
S3ServiceException
public S3Object getObjectDetails(S3Bucket bucket,
java.lang.String objectKey)
throws S3ServiceException
This method can be performed by anonymous services. Anonymous services can get a publicly-readable object's details.
bucket - the bucket containing the object.
This must be a valid S3Bucket object that is non-null and contains a name.objectKey - the key identifying the object.
S3ServiceException
public S3Bucket[] listAllBuckets()
throws S3ServiceException
This method cannot be performed by anonymous services, and will fail with an exception if the service is not authenticated.
S3ServiceException
public S3Object[] listObjects(S3Bucket bucket,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength)
throws S3ServiceException
The objects returned by this method contain only minimal information
such as the object's size, ETag, and LastModified timestamp. To retrieve
the objects' metadata you must perform follow-up getObject
or getObjectDetails operations.
This method can be performed by anonymous services. Anonymous services can list the contents of a publicly-readable bucket.
bucket - the bucket whose contents will be listed.
This must be a valid S3Bucket object that is non-null and contains a name.prefix - only objects with a key that starts with this prefix will be listedmaxListingLength - the maximum number of objects to include in each result chunk
S3ServiceException
public S3Object[] listObjects(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength)
throws S3ServiceException
The objects returned by this method contain only minimal information
such as the object's size, ETag, and LastModified timestamp. To retrieve
the objects' metadata you must perform follow-up getObject
or getObjectDetails operations.
This method can be performed by anonymous services. Anonymous services can list the contents of a publicly-readable bucket.
bucketName - the name of the the bucket whose contents will be listed.prefix - only objects with a key that starts with this prefix will be listedmaxListingLength - the maximum number of objects to include in each result chunk
S3ServiceException
public S3ObjectsChunk listObjectsChunked(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength,
java.lang.String priorLastKey)
throws S3ServiceException
The objects returned by this method contain only minimal information
such as the object's size, ETag, and LastModified timestamp. To retrieve
the objects' metadata you must perform follow-up getObject
or getObjectDetails operations.
This method can be performed by anonymous services. Anonymous services can list the contents of a publicly-readable bucket.
bucketName - the name of the the bucket whose contents will be listed.prefix - only objects with a key that starts with this prefix will be listedmaxListingLength - the maximum number of objects to include in each result chunkpriorLastKey - the last object key received in a prior call to this method. The next chunk of objects
listed will start with the next object in the bucket after this key name.
This parameter may be null, in which case the listing will start at the beginning of the
bucket's object contents.
S3ServiceException
public S3ObjectsChunk listObjectsChunked(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength,
java.lang.String priorLastKey,
boolean completeListing)
throws S3ServiceException
The objects returned by this method contain only minimal information
such as the object's size, ETag, and LastModified timestamp. To retrieve
the objects' metadata you must perform follow-up getObject
or getObjectDetails operations.
This method can be performed by anonymous services. Anonymous services can list the contents of a publicly-readable bucket.
bucketName - the name of the the bucket whose contents will be listed.prefix - only objects with a key that starts with this prefix will be listedmaxListingLength - the maximum number of objects to include in each result chunkpriorLastKey - the last object key received in a prior call to this method. The next chunk of objects
listed will start with the next object in the bucket after this key name.
This parameter may be null, in which case the listing will start at the beginning of the
bucket's object contents.completeListing - if true, the service class will automatically perform follow-up requests to
build a complete bucket object listing.
S3ServiceException
public S3Bucket createBucket(S3Bucket bucket)
throws S3ServiceException
This method cannot be performed by anonymous services.
bucket - an object representing the bucket to create which must be valid, and may contain ACL settings.
S3ServiceException
public S3Bucket getBucket(java.lang.String bucketName)
throws S3ServiceException
listAllBuckets()), and looking for the named bucket in
this list.
This method cannot be performed by anonymous services.
bucketName -
S3ServiceException
public void deleteBucket(S3Bucket bucket)
throws S3ServiceException
This method cannot be performed by anonymous services.
bucket - the bucket to delete.
S3ServiceException
public void deleteBucket(java.lang.String bucketName)
throws S3ServiceException
This method cannot be performed by anonymous services.
bucketName - the name of the bucket to delete.
S3ServiceException
public S3Object putObject(java.lang.String bucketName,
S3Object object)
throws S3ServiceException
This method can be performed by anonymous services. Anonymous services can put objects into a publicly-writable bucket.
bucketName - the name of the bucket inside which the object will be put.object - the object containing all information that will be written to S3. At very least this object must
be valid. Beyond that it may contain: an input stream with the object's data content, metadata,
and access control settings.Note: It is very important to set the object's Content-Length to match the size of the data input stream when possible, as this can remove the need to read data into memory to determine its size.
S3ServiceException
public java.util.Map copyObject(java.lang.String sourceBucketName,
java.lang.String sourceObjectKey,
java.lang.String destinationBucketName,
S3Object destinationObject,
boolean replaceMetadata,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
throws S3ServiceException
This method cannot be performed by anonymous services. You must have read access to the source object and write access to the destination bucket.
An object can be copied over itself, in which case you can update its metadata without making any other changes.
sourceBucketName - the name of the bucket that contains the original object.sourceObjectKey - the key name of the original object.destinationBucketName - the name of the destination bucket to which the object will be copied.destinationObject - the object that will be created by the copy operation. If this item
includes an AccessControlList setting the copied object will be assigned
that ACL, otherwise the copied object will be assigned the default private
ACL setting.replaceMetadata - If this parameter is true, the copied object will be assigned the metadata
values present in the destinationObject. Otherwise, the copied object will
have the same metadata as the original object.ifModifiedSince - a precondition specifying a date after which the object must have been
modified, ignored if null.ifUnmodifiedSince - a precondition specifying a date after which the object must not have
been modified, ignored if null.ifMatchTags - a precondition specifying an MD5 hash the object must match, ignored if
null.ifNoneMatchTags - a precondition specifying an MD5 hash the object must not match, ignored
if null.
S3ServiceException
public java.util.Map copyObject(java.lang.String sourceBucketName,
java.lang.String sourceObjectKey,
java.lang.String destinationBucketName,
S3Object destinationObject,
boolean replaceMetadata)
throws S3ServiceException
This method cannot be performed by anonymous services. You must have read access to the source object and write access to the destination bucket.
An object can be copied over itself, in which case you can update its metadata without making any other changes.
sourceBucketName - the name of the bucket that contains the original object.sourceObjectKey - the key name of the original object.destinationBucketName - the name of the destination bucket to which the object will be copied.destinationObject - the object that will be created by the copy operation. If this item
includes an AccessControlList setting the copied object will be assigned
that ACL, otherwise the copied object will be assigned the default private
ACL setting.replaceMetadata - If this parameter is true, the copied object will be assigned the metadata
values present in the destinationObject. Otherwise, the copied object will
have the same metadata as the original object.
S3ServiceException
public java.util.Map moveObject(java.lang.String sourceBucketName,
java.lang.String sourceObjectKey,
java.lang.String destinationBucketName,
S3Object destinationObject,
boolean replaceMetadata)
throws S3ServiceException
copyObject(String, String, String, S3Object, boolean) method to
copy the original object, then deletes the original object once the
copy has succeeded.
This method cannot be performed by anonymous services. You must have read access to the source object, write access to the destination bucket, and write access to the source bucket.
If the copy operation succeeds but the delete operation fails, this method will not throw an exception but the result map object will contain an item named "DeleteException" with the exception thrown by the delete operation.
sourceBucketName - the name of the bucket that contains the original object.sourceObjectKey - the key name of the original object.destinationBucketName - the name of the destination bucket to which the object will be copied.destinationObject - the object that will be created by the move operation. If this item
includes an AccessControlList setting the copied object will be assigned
that ACL, otherwise the copied object will be assigned the default private
ACL setting.replaceMetadata - If this parameter is true, the copied object will be assigned the metadata
values present in the destinationObject. Otherwise, the copied object will
have the same metadata as the original object.
S3ServiceException
public java.util.Map renameObject(java.lang.String bucketName,
java.lang.String sourceObjectKey,
S3Object destinationObject)
throws S3ServiceException
moveObject(String, String, String, S3Object, boolean) method to
move the original object to a new key name.
The original object's metadata is retained, but to apply an access control setting other than private you must specify an ACL in the destination object.
This method cannot be performed by anonymous services. You must have write access to the source object and write access to the bucket.
bucketName - the name of the bucket containing the original object that will be copied.sourceObjectKey - the key name of the original object.destinationObject - the object that will be created by the rename operation. If this item
includes an AccessControlList setting the copied object will be assigned
that ACL, otherwise the copied object will be assigned the default private
ACL setting.
S3ServiceException
public java.util.Map updateObjectMetadata(java.lang.String bucketName,
S3Object object)
throws S3ServiceException
copyObject(String, String, String, S3Object, boolean) method to
copy the original object over itself, applying the new metadata in the
process.
bucketName - the name of the bucket containing the object that will be updated.object - the object that will be updated. If this item includes an
AccessControlList setting the copied object will be assigned
that ACL, otherwise the copied object will be assigned the default private
ACL setting.
S3ServiceException
public S3Object putObject(S3Bucket bucket,
S3Object object)
throws S3ServiceException
This method can be performed by anonymous services. Anonymous services can put objects into a publicly-writable bucket.
bucket - the bucket inside which the object will be put, which must be valid.object - the object containing all information that will be written to S3. At very least this object must
be valid. Beyond that it may contain: an input stream with the object's data content, metadata,
and access control settings.Note: It is very important to set the object's Content-Length to match the size of the data input stream when possible, as this can remove the need to read data into memory to determine its size.
S3ServiceException
public void deleteObject(S3Bucket bucket,
java.lang.String objectKey)
throws S3ServiceException
This method can be performed by anonymous services. Anonymous services can delete objects from publicly-writable buckets.
bucket - the bucket containing the object to be deleted.objectKey - the key representing the object in S3.
S3ServiceException
public void deleteObject(java.lang.String bucketName,
java.lang.String objectKey)
throws S3ServiceException
This method can be performed by anonymous services. Anonymous services can delete objects from publicly-writable buckets.
bucketName - the name of the bucket containing the object to be deleted.objectKey - the key representing the object in S3.
S3ServiceException
public S3Object getObjectDetails(S3Bucket bucket,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
throws S3ServiceException
An exception is thrown if any of the preconditions fail. Preconditions are only applied if they are non-null.
This method can be performed by anonymous services. Anonymous services can get details of publicly-readable objects.
bucket - the bucket containing the object.
This must be a valid S3Bucket object that is non-null and contains a name.objectKey - the key identifying the object.ifModifiedSince - a precondition specifying a date after which the object must have been modified, ignored if null.ifUnmodifiedSince - a precondition specifying a date after which the object must not have been modified, ignored if null.ifMatchTags - a precondition specifying an MD5 hash the object must match, ignored if null.ifNoneMatchTags - a precondition specifying an MD5 hash the object must not match, ignored if null.
S3ServiceException
public S3Object getObjectDetails(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
throws S3ServiceException
An exception is thrown if any of the preconditions fail. Preconditions are only applied if they are non-null.
This method can be performed by anonymous services. Anonymous services can get details of publicly-readable objects.
bucketName - the name of the bucket containing the object.objectKey - the key identifying the object.ifModifiedSince - a precondition specifying a date after which the object must have been modified, ignored if null.ifUnmodifiedSince - a precondition specifying a date after which the object must not have been modified, ignored if null.ifMatchTags - a precondition specifying an MD5 hash the object must match, ignored if null.ifNoneMatchTags - a precondition specifying an MD5 hash the object must not match, ignored if null.
S3ServiceException
public S3Object getObject(S3Bucket bucket,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags,
java.lang.Long byteRangeStart,
java.lang.Long byteRangeEnd)
throws S3ServiceException
Important: It is the caller's responsibility to close the object's data input stream. The data stream should be consumed and closed as soon as is practical as network connections may be held open until the streams are closed. Excessive unclosed streams can lead to connection starvation.
An exception is thrown if any of the preconditions fail. Preconditions are only applied if they are non-null.
This method can be performed by anonymous services. Anonymous services can get publicly-readable objects.
Implementation notes
Implementations should use assertValidBucket(org.jets3t.service.model.S3Bucket, java.lang.String) assertion.
bucket - the bucket containing the object.
This must be a valid S3Bucket object that is non-null and contains a name.objectKey - the key identifying the object.ifModifiedSince - a precondition specifying a date after which the object must have been modified, ignored if null.ifUnmodifiedSince - a precondition specifying a date after which the object must not have been modified, ignored if null.ifMatchTags - a precondition specifying an MD5 hash the object must match, ignored if null.ifNoneMatchTags - a precondition specifying an MD5 hash the object must not match, ignored if null.byteRangeStart - include only a portion of the object's data - starting at this point, ignored if null.byteRangeEnd - include only a portion of the object's data - ending at this point, ignored if null.
S3ServiceException
public S3Object getObject(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags,
java.lang.Long byteRangeStart,
java.lang.Long byteRangeEnd)
throws S3ServiceException
Important: It is the caller's responsibility to close the object's data input stream. The data stream should be consumed and closed as soon as is practical as network connections may be held open until the streams are closed. Excessive unclosed streams can lead to connection starvation.
An exception is thrown if any of the preconditions fail. Preconditions are only applied if they are non-null.
This method can be performed by anonymous services. Anonymous services can get a publicly-readable object.
Implementation notes
Implementations should use assertValidBucket(org.jets3t.service.model.S3Bucket, java.lang.String) assertion.
bucketName - the name of the bucket containing the object.objectKey - the key identifying the object.ifModifiedSince - a precondition specifying a date after which the object must have been modified, ignored if null.ifUnmodifiedSince - a precondition specifying a date after which the object must not have been modified, ignored if null.ifMatchTags - a precondition specifying an MD5 hash the object must match, ignored if null.ifNoneMatchTags - a precondition specifying an MD5 hash the object must not match, ignored if null.byteRangeStart - include only a portion of the object's data - starting at this point, ignored if null.byteRangeEnd - include only a portion of the object's data - ending at this point, ignored if null.
S3ServiceException
public void putObjectAcl(S3Bucket bucket,
S3Object object)
throws S3ServiceException
bucket - the bucket containing the object to modify.object - the object with ACL settings that will be applied.
S3ServiceException
public void putObjectAcl(java.lang.String bucketName,
java.lang.String objectKey,
AccessControlList acl)
throws S3ServiceException
bucketName - the name of the bucket containing the object to modify.objectKey - the key name of the object with ACL settings that will be applied.
S3ServiceException
public void putBucketAcl(S3Bucket bucket)
throws S3ServiceException
bucket - a bucket with ACL settings to apply.
S3ServiceException
public void putBucketAcl(java.lang.String bucketName,
AccessControlList acl)
throws S3ServiceException
bucketName - a name of the bucket with ACL settings to apply.
S3ServiceException
public AccessControlList getObjectAcl(S3Bucket bucket,
java.lang.String objectKey)
throws S3ServiceException
bucket - the bucket whose ACL settings will be retrieved (if objectKey is null) or the bucket containing the
object whose ACL settings will be retrieved (if objectKey is non-null).objectKey - if non-null, the key of the object whose ACL settings will be retrieved. Ignored if null.
S3ServiceException
public AccessControlList getObjectAcl(java.lang.String bucketName,
java.lang.String objectKey)
throws S3ServiceException
bucketName - the name of the bucket whose ACL settings will be retrieved (if objectKey is null) or the
name of the bucket containing the object whose ACL settings will be retrieved (if objectKey is non-null).objectKey - if non-null, the key of the object whose ACL settings will be retrieved. Ignored if null.
S3ServiceException
public AccessControlList getBucketAcl(S3Bucket bucket)
throws S3ServiceException
bucket - the bucket whose access control settings will be returned.
This must be a valid S3Bucket object that is non-null and contains a name.
S3ServiceException
public AccessControlList getBucketAcl(java.lang.String bucketName)
throws S3ServiceException
bucketName - the name of the bucket whose access control settings will be returned.
S3ServiceException
public java.lang.String getBucketLocation(java.lang.String bucketName)
throws S3ServiceException
bucketName - the name of the bucket whose location will be returned.
S3ServiceException
public S3BucketLoggingStatus getBucketLoggingStatus(java.lang.String bucketName)
throws S3ServiceException
bucketName - the name of the bucket whose logging status settings will be returned.
S3ServiceException
public void setBucketLoggingStatus(java.lang.String bucketName,
S3BucketLoggingStatus status,
boolean updateTargetACLifRequired)
throws S3ServiceException
bucketName - the name of the bucket the logging settings will apply to.status - the logging status settings to apply to the bucket.updateTargetACLifRequired - if true, when logging is enabled the method will check the target bucket to ensure it has the
necessary ACL permissions set to allow logging (that is, WRITE and READ_ACP for the group
http://acs.amazonaws.com/groups/s3/LogDelivery). If the target bucket does not
have the correct permissions the bucket's ACL will be updated to have the correct
permissions. If this parameter is false, no ACL checks or updates will occur.
S3ServiceException
public long adjustTime()
throws java.lang.Exception
java.lang.Exceptionpublic java.util.Date getCurrentTimeWithOffset()
adjustTime() method).
adjustTime() method has been invoked.
public abstract boolean isBucketAccessible(java.lang.String bucketName)
throws S3ServiceException
This method can be performed by anonymous services.
Implementation notes
This method can be implemented by attempting to list the objects in a bucket. If the listing is successful return true, if the listing failed for any reason return false.
S3ServiceException
public abstract int checkBucketStatus(java.lang.String bucketName)
throws S3ServiceException
RestS3Service client.
Warning! S3 can act strangely when you use this method in some circumstances. If you check the status of a bucket and find that it does not exist, then create the bucket, S3 will continue to tell you the bucket does not exists for up to 30 seconds. This problem has something to do with connection caching (I think).
This S3 quirk makes it a bad idea to use this method to check for a bucket's
existence before creating that bucket. Use the getBucket(String) method
for this purpose instead.
bucketName -
BUCKET_STATUS__MY_BUCKET if you already own the bucket,
BUCKET_STATUS__DOES_NOT_EXIST if the bucket does not yet exist
in S3, or BUCKET_STATUS__ALREADY_CLAIMED if someone else has
already created a bucket with the given name.
S3ServiceException
protected abstract java.lang.String getBucketLocationImpl(java.lang.String bucketName)
throws S3ServiceException
S3ServiceException
protected abstract S3BucketLoggingStatus getBucketLoggingStatusImpl(java.lang.String bucketName)
throws S3ServiceException
S3ServiceException
protected abstract void setBucketLoggingStatusImpl(java.lang.String bucketName,
S3BucketLoggingStatus status)
throws S3ServiceException
S3ServiceException
protected abstract S3Bucket[] listAllBucketsImpl()
throws S3ServiceException
S3ServiceException
protected abstract S3Object[] listObjectsImpl(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength)
throws S3ServiceException
The implementation of this method is expected to return all the objects
in a bucket, not a subset. This may require repeating the S3 list operation if the
first one doesn't include all the available objects, such as when the number of objects
is greater than maxListingLength.
bucketName - prefix - delimiter - maxListingLength -
S3ServiceException
protected abstract S3ObjectsChunk listObjectsChunkedImpl(java.lang.String bucketName,
java.lang.String prefix,
java.lang.String delimiter,
long maxListingLength,
java.lang.String priorLastKey,
boolean completeListing)
throws S3ServiceException
Implementation notes The implementation of this method returns only as many objects as requested in the chunk size. It is the responsibility of the caller to build a complete object listing from multiple chunks, should this be necessary.
bucketName - prefix - delimiter - maxListingLength - priorLastKey - completeListing -
S3ServiceException
protected abstract S3Bucket createBucketImpl(java.lang.String bucketName,
java.lang.String location,
AccessControlList acl)
throws S3ServiceException
The implementing method must populate the bucket object's metadata with the results of the
operation before returning the object. It must also apply any AccessControlList
settings included with the bucket.
bucketName - the name of the bucket to create.location - the geographical location where the bucket will be stored (see S3Bucket.getLocation().
A null string value will cause the bucket to be stored in the default S3 location: US.acl - an access control object representing the initial acl values for the bucket.
May be null, in which case the default permissions are applied.
S3ServiceException
protected abstract void deleteBucketImpl(java.lang.String bucketName)
throws S3ServiceException
S3ServiceException
protected abstract S3Object putObjectImpl(java.lang.String bucketName,
S3Object object)
throws S3ServiceException
S3ServiceException
protected abstract java.util.Map copyObjectImpl(java.lang.String sourceBucketName,
java.lang.String sourceObjectKey,
java.lang.String destinationBucketName,
java.lang.String destinationObjectKey,
AccessControlList acl,
java.util.Map destinationMetadata,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
throws S3ServiceException
sourceBucketName - the name of the bucket that contains the original object.sourceObjectKey - the key name of the original object.destinationBucketName - the name of the destination bucket to which the object will be copied.destinationObjectKey - the key name for the copied object.acl - the access control settings that will be applied to the copied object.
If this parameter is null, the default (private) ACL setting will be
applied to the copied object.destinationMetadata - metadata items to apply to the copied object. If this parameter is null,
the metadata will be copied unchanged from the original object. If this
parameter is not null, the copied object will have only the supplied
metadata.
S3ServiceException
protected abstract void deleteObjectImpl(java.lang.String bucketName,
java.lang.String objectKey)
throws S3ServiceException
S3ServiceException
protected abstract S3Object getObjectDetailsImpl(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags)
throws S3ServiceException
S3ServiceException
protected abstract S3Object getObjectImpl(java.lang.String bucketName,
java.lang.String objectKey,
java.util.Calendar ifModifiedSince,
java.util.Calendar ifUnmodifiedSince,
java.lang.String[] ifMatchTags,
java.lang.String[] ifNoneMatchTags,
java.lang.Long byteRangeStart,
java.lang.Long byteRangeEnd)
throws S3ServiceException
S3ServiceException
protected abstract void putBucketAclImpl(java.lang.String bucketName,
AccessControlList acl)
throws S3ServiceException
S3ServiceException
protected abstract void putObjectAclImpl(java.lang.String bucketName,
java.lang.String objectKey,
AccessControlList acl)
throws S3ServiceException
S3ServiceException
protected abstract AccessControlList getObjectAclImpl(java.lang.String bucketName,
java.lang.String objectKey)
throws S3ServiceException
S3ServiceException
protected abstract AccessControlList getBucketAclImpl(java.lang.String bucketName)
throws S3ServiceException
S3ServiceException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||