mirror of
https://github.com/ForeverPyrite/r2client.git
synced 2025-12-10 01:38:07 +00:00
231 lines
7.4 KiB
Markdown
231 lines
7.4 KiB
Markdown
Example: GET Object
|
|
The following example gets the first 10 bytes of an object (test.txt) from examplebucket. For more information about the API action, see GetObject.
|
|
|
|
|
|
```
|
|
```
|
|
GET /test.txt HTTP/1.1
|
|
Host: examplebucket.s3.amazonaws.com
|
|
Authorization: SignatureToBeCalculated
|
|
Range: bytes=0-9
|
|
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
x-amz-date: 20130524T000000Z
|
|
Because this GET request does not provide any body content, the x-amz-content-sha256 value can either be the hash of the empty request body or the literal string "UNSIGNED-PAYLOAD". The following steps show signature calculations and construction of the Authorization header using the hash of an empty string.
|
|
```
|
|
```
|
|
1. StringToSign
|
|
|
|
a. CanonicalRequest
|
|
|
|
```
|
|
GET
|
|
/test.txt
|
|
|
|
host:examplebucket.s3.amazonaws.com
|
|
range:bytes=0-9
|
|
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
x-amz-date:20130524T000000Z
|
|
|
|
host;range;x-amz-content-sha256;x-amz-date
|
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
```
|
|
In the canonical request string, the last line is the hash of the empty request body. The third line is empty because there are no query parameters in the request.
|
|
```
|
|
```
|
|
|
|
b. StringToSign
|
|
|
|
```
|
|
AWS4-HMAC-SHA256
|
|
20130524T000000Z
|
|
20130524/us-east-1/s3/aws4_request
|
|
7344ae5b7ee6c3e7e6b0fe0640412a37625d1fbfff95c48bbb2dc43964946972
|
|
```
|
|
|
|
2. SigningKey
|
|
|
|
|
|
```
|
|
signing key = HMAC-SHA256(HMAC-SHA256(HMAC-SHA256(HMAC-SHA256("AWS4" + "<YourSecretAccessKey>","20130524"),"us-east-1"),"s3"),"aws4_request")
|
|
```
|
|
|
|
3. Signature
|
|
|
|
|
|
```
|
|
f0e8bdb87c964420e857bd35b5d6ed310bd44f0170aba48dd91039c6036bdb41
|
|
```
|
|
|
|
4. Authorization header
|
|
The resulting Authorization header is as follows:
|
|
|
|
```
|
|
AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request,SignedHeaders=host;range;x-amz-content-sha256;x-amz-date,Signature=f0e8bdb87c964420e857bd35b5d6ed310bd44f0170aba48dd91039c6036bdb41
|
|
```
|
|
|
|
Example: PUT Object
|
|
This example PUT request creates an object (test$file.text) in examplebucket . The example assumes the following:
|
|
|
|
|
|
You are requesting REDUCED_REDUNDANCY as the storage class by adding the x-amz-storage-class request header. For information about storage classes, see Storage Classes in the Amazon Simple Storage Service User Guide.
|
|
|
|
The content of the uploaded file is a string, "Welcome to Amazon S3." The value of x-amz-content-sha256 in the request is based on this string.
|
|
|
|
For information about the API action, see PutObject.
|
|
|
|
|
|
PUT test$file.text HTTP/1.1
|
|
Host: examplebucket.s3.amazonaws.com
|
|
Date: Fri, 24 May 2013 00:00:00 GMT
|
|
Authorization: SignatureToBeCalculated
|
|
x-amz-date: 20130524T000000Z
|
|
x-amz-storage-class: REDUCED_REDUNDANCY
|
|
x-amz-content-sha256: 44ce7dd67c959e0d3524ffac1771dfbba87d2b6b4b4e99e42034a8b803f8b072
|
|
|
|
<Payload>
|
|
The following steps show signature calculations.
|
|
|
|
StringToSign
|
|
CanonicalRequest
|
|
|
|
|
|
PUT
|
|
/test%24file.text
|
|
|
|
date:Fri, 24 May 2013 00:00:00 GMT
|
|
host:examplebucket.s3.amazonaws.com
|
|
x-amz-content-sha256:44ce7dd67c959e0d3524ffac1771dfbba87d2b6b4b4e99e42034a8b803f8b072
|
|
x-amz-date:20130524T000000Z
|
|
x-amz-storage-class:REDUCED_REDUNDANCY
|
|
|
|
date;host;x-amz-content-sha256;x-amz-date;x-amz-storage-class
|
|
44ce7dd67c959e0d3524ffac1771dfbba87d2b6b4b4e99e42034a8b803f8b072
|
|
In the canonical request, the third line is empty because there are no query parameters in the request. The x-amz-content-sha256 canonical header may optionally be signed since its payload hash is already provided at the bottom of the request. The last line is the hash of the body, which should be the same as the x-amz-content-sha256 header value sent to S3 in the HTTP request.
|
|
|
|
StringToSign
|
|
|
|
|
|
AWS4-HMAC-SHA256
|
|
20130524T000000Z
|
|
20130524/us-east-1/s3/aws4_request
|
|
9e0e90d9c76de8fa5b200d8c849cd5b8dc7a3be3951ddb7f6a76b4158342019d
|
|
|
|
SigningKey
|
|
|
|
|
|
signing key = HMAC-SHA256(HMAC-SHA256(HMAC-SHA256(HMAC-SHA256("AWS4" + "<YourSecretAccessKey>","20130524"),"us-east-1"),"s3"),"aws4_request")
|
|
|
|
Signature
|
|
|
|
|
|
98ad721746da40c64f1a55b78f14c238d841ea1380cd77a1b5971af0ece108bd
|
|
|
|
Authorization header
|
|
The resulting Authorization header is as follows:
|
|
|
|
|
|
|
|
AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request,SignedHeaders=date;host;x-amz-content-sha256;x-amz-date;x-amz-storage-class,Signature=98ad721746da40c64f1a55b78f14c238d841ea1380cd77a1b5971af0ece108bd
|
|
|
|
Example: GET Bucket Lifecycle
|
|
The following GET request retrieves the lifecycle configuration of examplebucket. For information about the API action, see GetBucketLifecycleConfiguration.
|
|
|
|
|
|
GET ?lifecycle HTTP/1.1
|
|
Host: examplebucket.s3.amazonaws.com
|
|
Authorization: SignatureToBeCalculated
|
|
x-amz-date: 20130524T000000Z
|
|
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
Because the request does not provide any body content, the x-amz-content-sha256 header value is the hash of the empty request body. The following steps show signature calculations.
|
|
|
|
StringToSign
|
|
CanonicalRequest
|
|
|
|
|
|
GET
|
|
/
|
|
lifecycle=
|
|
host:examplebucket.s3.amazonaws.com
|
|
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
x-amz-date:20130524T000000Z
|
|
|
|
host;x-amz-content-sha256;x-amz-date
|
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
In the canonical request, the last line is the hash of the empty request body.
|
|
|
|
StringToSign
|
|
|
|
|
|
AWS4-HMAC-SHA256
|
|
20130524T000000Z
|
|
20130524/us-east-1/s3/aws4_request
|
|
9766c798316ff2757b517bc739a67f6213b4ab36dd5da2f94eaebf79c77395ca
|
|
|
|
SigningKey
|
|
|
|
|
|
signing key = HMAC-SHA256(HMAC-SHA256(HMAC-SHA256(HMAC-SHA256("AWS4" + "<YourSecretAccessKey>","20130524"),"us-east-1"),"s3"),"aws4_request")
|
|
|
|
Signature
|
|
|
|
|
|
fea454ca298b7da1c68078a5d1bdbfbbe0d65c699e0f91ac7a200a0136783543
|
|
|
|
Authorization header
|
|
The resulting Authorization header is as follows:
|
|
|
|
|
|
|
|
AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=fea454ca298b7da1c68078a5d1bdbfbbe0d65c699e0f91ac7a200a0136783543
|
|
|
|
Example: Get Bucket (List Objects)
|
|
The following example retrieves a list of objects from examplebucket bucket. For information about the API action, see ListObjects.
|
|
|
|
|
|
GET ?max-keys=2&prefix=J HTTP/1.1
|
|
Host: examplebucket.s3.amazonaws.com
|
|
Authorization: SignatureToBeCalculated
|
|
x-amz-date: 20130524T000000Z
|
|
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
Because the request does not provide a body, the value of x-amz-content-sha256 is the hash of the empty request body. The following steps show signature calculations.
|
|
|
|
StringToSign
|
|
CanonicalRequest
|
|
|
|
|
|
GET
|
|
/
|
|
max-keys=2&prefix=J
|
|
host:examplebucket.s3.amazonaws.com
|
|
x-amz-content-sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
x-amz-date:20130524T000000Z
|
|
|
|
host;x-amz-content-sha256;x-amz-date
|
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|
In the canonical string, the last line is the hash of the empty request body.
|
|
|
|
StringToSign
|
|
|
|
|
|
AWS4-HMAC-SHA256
|
|
20130524T000000Z
|
|
20130524/us-east-1/s3/aws4_request
|
|
df57d21db20da04d7fa30298dd4488ba3a2b47ca3a489c74750e0f1e7df1b9b7
|
|
|
|
SigningKey
|
|
|
|
|
|
signing key = HMAC-SHA256(HMAC-SHA256(HMAC-SHA256(HMAC-SHA256("AWS4" + "<YourSecretAccessKey>","20130524"),"us-east-1"),"s3"),"aws4_request")
|
|
|
|
Signature
|
|
|
|
|
|
34b48302e7b5fa45bde8084f4b7868a86f0a534bc59db6670ed5711ef69dc6f7
|
|
|
|
Authorization header
|
|
The resulting Authorization header is as follows:
|
|
|
|
|
|
|
|
AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=34b48302e7b5fa45bde8084f4b7868a86f0a534bc59db6670ed5711ef69dc6f7
|