Menu
Amazon Simple Storage Service
API Reference (API Version 2006-03-01)

GET Bucket (List Objects) Version 2

Description

This implementation of the GET operation returns some or all (up to 1,000) of the objects in a bucket. You can use the request parameters as selection criteria to return a subset of the objects in a bucket. A 200 OK response can contain valid or invalid XML. Make sure to design your application to parse the contents of the response and handle it appropriately.

To use this implementation of the operation, you must have READ access to the bucket.

Important

This section describe the latest revision of the API. We recommend that you use this revised API, GET Bucket (List Objects) version 2, for application development. For backward compatibility, Amazon S3 continues to support the prior version of this API, GET Bucket (List Objects) version 1. For more information about the previous version, see GET Bucket (List Objects) Version 1.

Note

To get a list of your buckets, see GET Service.

Requests

Syntax

Copy
GET /?list-type=2 HTTP/1.1 Host: BucketName.s3.amazonaws.com Date: date Authorization: authorization string (see Authenticating Requests (AWS Signature Version 4))

Request Parameters

This implementation of GET uses the parameters in the following table.

Parameter Description Required
delimiter

A delimiter is a character you use to group keys.

If you specify a prefix, all keys that contain the same string between the prefix and the first occurrence of the delimiter after the prefix are grouped under a single result element called CommonPrefixes. If you don't specify the prefix parameter, the substring starts at the beginning of the key. The keys that are grouped under the CommonPrefixes result element are not returned elsewhere in the response.

Type: String

Default: None

No
encoding-type

Requests Amazon S3 to encode the response and specifies the encoding method to use.

An object key can contain any Unicode character. However, XML 1.0 parsers cannot parse some characters, such as characters with an ASCII value from 0 to 10. For characters that are not supported in XML 1.0, you can add this parameter to request that Amazon S3 encode the keys in the response.

Type: String

Default: None

Valid value: url

No
max-keys

Sets the maximum number of keys returned in the response body. If you want to retrieve fewer than the default 1,000 keys, you can add this to your request.

The response might contain fewer keys, but it will never contain more. If there are additional keys that satisfy the search criteria, but these keys were not returned because max-keys was exceeded, the response contains <IsTruncated>true</IsTruncated>. To return the additional keys, see NextContinuationToken.

Type: String

Default: 1000

No
prefix

Limits the response to keys that begin with the specified prefix. You can use prefixes to separate a bucket into different groupings of keys. (You can think of using prefix to make groups in the same way you'd use a folder in a file system.)

Type: String

Default: None

No
list-type

Version 2 of the API requires this parameter and you must set its value to 2.

Type: String

Default: The value is always 2.

Yes
continuation-token

When the Amazon S3 response to this API call is truncated (that is, IsTruncated response element value is true), the response also includes the NextContinuationToken element, the value of which you can use in the next request as the continuation-token to list the next set of objects.

  • The continuation token is an opaque value that Amazon S3 understands.

Type: String

Default: None

No
fetch-owner

By default, the API does not return the Owner information in the response. If you want the owner information in the response, you can specify this parameter with the value set to true.

Type: String

Default: false

No
start-after

If you want the API to return key names after a specific object key in your key space, you can add this parameter. Amazon S3 lists objects in UTF-8 character encoding in lexicographical order.

This parameter is valid only in your first request. In case the response is truncated, you can specify this parameter along with the continuation-token parameter, and then Amazon S3 will ignore this parameter.

Type: String

Default: None

No

Request Elements

This implementation of the operation does not use request elements.

Request Headers

This implementation of the operation uses only request headers that are common to all operations. For more information, see Common Request Headers.

Responses

Response Headers

This implementation of the operation uses only response headers that are common to most responses. For more information, see Common Response Headers.

Response Elements

Name Description
Contents

Metadata about each object returned.

Type: XML metadata

Ancestor: ListBucketResult

CommonPrefixes

All of the keys rolled up into a common prefix count as a single return when calculating the number of returns. See MaxKeys.

  • A response can contain CommonPrefixes only if you specify a delimiter.

  • CommonPrefixes contains all (if there are any) keys between Prefix and the next occurrence of the string specified by a delimiter.

  • CommonPrefixes lists keys that act like subdirectories in the directory specified by Prefix.

For example, if the prefix is notes/ and the delimiter is a slash (/) as in notes/summer/july, the common prefix is notes/summer/. All of the keys that roll up into a common prefix count as a single return when calculating the number of returns. See MaxKeys.

Type: String

Ancestor: ListBucketResult

Delimiter

Causes keys that contain the same string between the prefix and the first occurrence of the delimiter to be rolled up into a single result element in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere in the response. Each rolled-up result counts as only one return against the MaxKeys value.

Type: String

Ancestor: ListBucketResult

DisplayName

Object owner's name.

Note

This value is not included in the response in the US East (Ohio), Canada (Central), Asia Pacific (Mumbai), Asia Pacific (Seoul), EU (Frankfurt), EU (London), China (Beijing), or AWS GovCloud (US) regions.

Type: String

Ancestor: ListBucketResult.Contents.Owner

Encoding-Type

Encoding type used by Amazon S3 to encode object key names in the XML response.

If you specify encoding-type request parameter, Amazon S3 includes this element in the response, and returns encoded key name values in the following response elements:

Delimiter, Prefix, ContinuationToken, Key, and StartAfter.

Type: String

Ancestor: ListBucketResult

ETag

The entity tag is an MD5 hash of the object. The ETag only reflects changes to the contents of an object, not its metadata.

Type: String

Ancestor: ListBucketResult.Contents

ID

Object owner's ID.

Type: String

Ancestor: ListBucketResult.Contents.Owner

IsTruncated

Specifies whether (true) or not (false) all of the results were returned. If the number of results exceeds that specified by MaxKeys, all of the results might not be returned.

Type: Boolean

Ancestor: ListBucketResult

Key

The object's key.

Type: String

Ancestor: ListBucketResult.Contents

LastModified

Date and time the object was last modified.

Type: Date

Ancestor: ListBucketResult.Contents

MaxKeys

The maximum number of keys returned in the response body.

Type: String

Ancestor: ListBucketResult

Name

Name of the bucket.

Type: String

Ancestor: ListBucketResult

Owner

Bucket owner.

Type: String

Children: DisplayName, ID

Ancestor: ListBucketResult.Contents | CommonPrefixes

Prefix

Keys that begin with the indicated prefix.

Type: String

Ancestor: ListBucketResult

Size

Size in bytes of the object.

Type: String

Ancestor: ListBucketResult.Contents

StorageClass

STANDARD | STANDARD_IA | REDUCED_REDUNDANCY | GLACIER

Type: String

Ancestor: ListBucketResult.Contents

ContinuationToken

ContinuationToken is included in the response if it was sent with the request.

Type: String

Ancestor: ListBucketResult

KeyCount

Returns the number of keys included in the response. The value is always less than or equal to the MaxKeys value.

Type: String

Ancestor: ListBucketResult

NextContinuationToken

If the response is truncated, Amazon S3 returns this parameter with a continuation token that you can specify as the continuation-token in your next request to retrieve the next set of keys.

Type: String

Ancestor: ListBucketResult

StartAfter

StartAfter is included in the response if it was sent with the request.

Type: String

Ancestor: ListBucketResult

Special Errors

This implementation of the operation does not return special errors. For general information about Amazon S3 errors and a list of error codes, see Error Responses.

Examples

Example 1: Listing Keys

This request returns the objects in BucketName. The request specifies the list-type parameter, which indicates version 2 of the API.

Sample Request

Copy
GET /?list-type=2 HTTP/1.1 Host: bucket.s3.amazonaws.com x-amz-date: 20160430T233541Z Authorization: authorization string Content-Type: text/plain

Sample Response

Copy
<?xml version="1.0" encoding="UTF-8"?> <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>bucket</Name> <Prefix/> <KeyCount>205</KeyCount> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>my-image.jpg</Key> <LastModified>2009-10-12T17:50:30.000Z</LastModified> <ETag>&quot;fba9dede5f27731c9771645a39863328&quot;</ETag> <Size>434234</Size> <StorageClass>STANDARD</StorageClass> </Contents> <Contents> ... </Contents> ... </ListBucketResult>

Example 2: Listing Keys Using the max-keys, prefix, and start-after Parameters

In addition to the list-type parameter indicating the version 2 of the API, the request also specifies additional parameters to retrieve up to 3 keys in the quotes bucket that start with E and occur lexicographically after ExampleGuide.pdf.

Sample Request

Copy
GET /?list-type=2&max-keys=3&prefix=E&start-after=ExampleGuide.pdf HTTP/1.1 Host: quotes.s3.amazonaws.com x-amz-date: 20160430T232933Z Authorization: authorization string

Sample Response

Copy
HTTP/1.1 200 OK x-amz-id-2: gyB+3jRPnrkN98ZajxHXr3u7EFM67bNgSAxexeEHndCX/7GRnfTXxReKUQF28IfP x-amz-request-id: 3B3C7C725673C630 Date: Sat, 30 Apr 2016 23:29:37 GMT Content-Type: application/xml Content-Length: length Connection: close Server: AmazonS3 <?xml version="1.0" encoding="UTF-8"?> <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>quotes</Name> <Prefix>E</Prefix> <StartAfter>ExampleGuide.pdf</StartAfter> <KeyCount>1</KeyCount> <MaxKeys>3</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>ExampleObject.txt</Key> <LastModified>2013-09-17T18:07:53.000Z</LastModified> <ETag>&quot;599bab3ed2c697f1d26842727561fd94&quot;</ETag> <Size>857</Size> <StorageClass>REDUCED_REDUNDANCY</StorageClass> </Contents> </ListBucketResult>

Example 3: Listing Keys Using the prefix and delimiter Parameters

This example illustrates the use of the prefix and the delimiter parameters in the request. For this example, we assume that you have the following keys in your bucket:

sample.jpg

photos/2006/January/sample.jpg

photos/2006/February/sample2.jpg

photos/2006/February/sample3.jpg

photos/2006/February/sample4.jpg

The following GET request specifies the delimiter parameter with value /.

Copy
GET /?list-type=2&delimiter=/ HTTP/1.1 Host: example-bucket.s3.amazonaws.com x-amz-date: 20160430T235931Z Authorization: authorization string

The key sample.jpg does not contain the delimiter character, and Amazon S3 returns it in the Contents element in the response. However, all other keys contain the delimiter character. Amazon S3 groups these keys and returns a single CommonPrefixes element with prefix value photos/ that is a substring from the beginning of these keys to the first occurrence of the specified delimiter.

Copy
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>example-bucket</Name> <Prefix></Prefix> <KeyCount>2</KeyCount> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>sample.jpg</Key> <LastModified>2011-02-26T01:56:20.000Z</LastModified> <ETag>&quot;bf1d737a4d46a19f3bced6905cc8b902&quot;</ETag> <Size>142863</Size> <StorageClass>STANDARD</StorageClass> </Contents> <CommonPrefixes> <Prefix>photos/</Prefix> </CommonPrefixes> </ListBucketResult>

The following GET request specifies the delimiter parameter with value /, and the prefix parameter with value photos/2006/.

Copy
GET /?list-type=2&prefix=photos/2006/&delimiter=/ HTTP/1.1 Host: example-bucket.s3.amazonaws.com x-amz-date: 20160501T000433Z Authorization: authorization string

In response, Amazon S3 returns only the keys that start with the specified prefix. Further, it uses the delimiter character to group keys that contain the same substring until the first occurrence of the delimiter character after the specified prefix. For each such key group Amazon S3 returns one CommonPrefixes element in the response. The keys grouped under this CommonPrefixes element are not returned elsewhere in the response. The value returned in the CommonPrefixes element is a substring from the beginning of the key to the first occurrence of the specified delimiter after the prefix.

Copy
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>example-bucket</Name> <Prefix>photos/2006/</Prefix> <KeyCount>3</KeyCount> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>photos/2006/</Key> <LastModified>2016-04-30T23:51:29.000Z</LastModified> <ETag>&quot;d41d8cd98f00b204e9800998ecf8427e&quot;</ETag> <Size>0</Size> <StorageClass>STANDARD</StorageClass> </Contents> <CommonPrefixes> <Prefix>photos/2006/February/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>photos/2006/January/</Prefix> </CommonPrefixes> </ListBucketResult>

Example 4: Using a Continuation Token

In this example, the initial request returns more than 1,000 keys. In response to this request, Amazon S3 returns the IsTruncated element with the value set to true and with a NextContinuationToken element.

Copy
GET /?list-type=2 HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Mon, 02 May 2016 23:17:07 GMT Authorization: authorization string

The following is sample response:

Copy
HTTP/1.1 200 OK x-amz-id-2: gyB+3jRPnrkN98ZajxHXr3u7EFM67bNgSAxexeEHndCX/7GRnfTXxReKUQF28IfP x-amz-request-id: 3B3C7C725673C630 Date: Sat, 30 Apr 2016 23:29:37 GMT Content-Type: application/xml Content-Length: length Connection: close Server: AmazonS3 <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>bucket</Name> <Prefix></Prefix> <NextContinuationToken>1ueGcxLPRx1Tr/XYExHnhbYLgveDs2J/wm36Hy4vbOwM=</NextContinuationToken> <KeyCount>1000</KeyCount> <MaxKeys>1000</MaxKeys> <IsTruncated>true</IsTruncated> <Contents> <Key>happyface.jpg</Key> <LastModified>2014-11-21T19:40:05.000Z</LastModified> <ETag>&quot;70ee1738b6b21e2c8a43f3a5ab0eee71&quot;</ETag> <Size>11</Size> <StorageClass>STANDARD</StorageClass> </Contents> ... </ListBucketResult>

In the following subsequent request, we include a continuation-token query parameter in the request with value of the <NextContinuationToken> from the preceding response.

Copy
GET /?list-type=2 HTTP/1.1 GET /?list-type=2&continuation-token=1ueGcxLPRx1Tr/XYExHnhbYLgveDs2J/wm36Hy4vbOwM= HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Mon, 02 May 2016 23:17:07 GMT Authorization: authorization string

Amazon S3 returns a list of the next set of keys starting where the previous request ended.

Copy
HTTP/1.1 200 OK x-amz-id-2: gyB+3jRPnrkN98ZajxHXr3u7EFM67bNgSAxexeEHndCX/7GRnfTXxReKUQF28IfP x-amz-request-id: 3B3C7C725673C630 Date: Sat, 30 Apr 2016 23:29:37 GMT Content-Type: application/xml Content-Length: length Connection: close Server: AmazonS3 <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>bucket</Name> <Prefix></Prefix> <ContinuationToken>1ueGcxLPRx1Tr/XYExHnhbYLgveDs2J/wm36Hy4vbOwM=</ContinuationToken> <KeyCount>112</KeyCount> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>happyfacex.jpg</Key> <LastModified>2014-11-21T19:40:05.000Z</LastModified> <ETag>&quot;70ee1738b6b21e2c8a43f3a5ab0eee71&quot;</ETag> <Size>1111</Size> <StorageClass>STANDARD</StorageClass> </Contents> ... </ListBucketResult>