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.
To use this operation in an AWS Identity and Access Management (IAM) policy, you must
have permissions to
perform the s3:ListBucket action. The bucket owner has this permission by
default and can grant this permission to others. For more information about permissions,
see Permissions Related to Bucket Operations and Managing Access Permissions to Your Amazon S3
Resources in the Amazon Simple Storage Service Developer Guide.
Important
This section describes 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
GET /?list-type=2 HTTP/1.1 Host:BucketName.s3.amazonaws.com Date:dateAuthorization: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 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: |
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 never contains more. If there are
additional keys that satisfy the search criteria, but these keys
were not returned because 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 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 response to this API call is truncated (that is, the
Type: String Default: None |
No |
fetch-owner |
By default, the API does not return the 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. If the response is truncated,
you
can specify this parameter along with the
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
For example, if the prefix is 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 Type: String Ancestor: ListBucketResult |
DisplayName
|
Object owner's name. Important This value is only included in the response in the US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), EU (Ireland), and South America (São Paulo) regions. For a list of all the Amazon S3 supported regions and endpoints, see Regions and Endpoints in the AWS General Reference. 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
Type: String Ancestor: ListBucketResult |
ETag
|
The entity tag is an MD5 hash of the object. Type: String Ancestor: ListBucketResult.Contents |
ID
|
Object owner's ID. Type: String Ancestor: ListBucketResult.Contents.Owner |
IsTruncated
|
Set to 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
|
The storage class used to store the object. Type: String Ancestor: ListBucketResult.Contents Valid values: |
ContinuationToken
|
If Type: String Ancestor: ListBucketResult |
KeyCount
|
Returns the number of keys included in the response. The value is always less than
or
equal to the Type: String Ancestor: ListBucketResult |
NextContinuationToken
|
If the response is truncated, Amazon S3 returns this parameter with a continuation
token.
You can specify the token as the Type: String Ancestor: ListBucketResult |
StartAfter
|
If 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
GET /?list-type=2 HTTP/1.1 Host: bucket.s3.amazonaws.com x-amz-date: 20160430T233541Z Authorization:authorization stringContent-Type: text/plain
Sample Response
<?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>"fba9dede5f27731c9771645a39863328"</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 that indicates version 2 of the API, the
request also specifies additional parameters to retrieve up to three keys in the
quotes bucket that start with E and occur
lexicographically after ExampleGuide.pdf.
Sample Request
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
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:lengthConnection: 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>"599bab3ed2c697f1d26842727561fd94"</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 /.
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 the prefix value photos/.
The element is a substring that starts at the beginning of these keys and ends
at
the first occurrence of the specified delimiter.
<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>"bf1d737a4d46a19f3bced6905cc8b902"</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/.
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 that
starts at the beginning of the key and ends at the first occurrence of the specified
delimiter after the prefix.
<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>"d41d8cd98f00b204e9800998ecf8427e"</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.
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 a sample response:
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:lengthConnection: 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>"70ee1738b6b21e2c8a43f3a5ab0eee71"</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.
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.
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:lengthConnection: 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>"70ee1738b6b21e2c8a43f3a5ab0eee71"</ETag> <Size>1111</Size> <StorageClass>STANDARD</StorageClass> </Contents> ... </ListBucketResult>


