Question:
I have been looking at the usage reports from Amazons S3 service and noticed that there is a DataTransfer-out-bytes charge for GetObject operations (ok i understand this one) and also a DataTransfer-out-bytes charge for HeadBucket operations.
What is HeadBucket, when is this request made?
cheers
Answer:
That’s a HEAD request to a bucket:
1 2 |
HEAD /my-s3-bucket |
Which will basically just tell you that a bucket exists (200 OK), or not (404 Not Found).
For Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# curl -v -X HEAD http://s3.amazonaws.com/fooXXXX * About to connect() to s3.amazonaws.com port 80 (#0) * Trying 72.21.211.144... connected * Connected to s3.amazonaws.com (72.21.211.144) port 80 (#0) > HEAD /fooXXXX HTTP/1.1 > User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10 > Host: s3.amazonaws.com > Accept: */* > < HTTP/1.1 404 Not Found < x-amz-request-id: A21BF750F080A267 < x-amz-id-2: SPQ7yX6Ln0Zgp0YULT/64ag9077nNnN25jH8PMLGMm/SbXPZ+FF3qFuiOyBfiktP < Content-Type: application/xml < Transfer-Encoding: chunked < Date: Thu, 23 Apr 2009 13:39:50 GMT < Server: AmazonS3 |
Vs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# curl -v -X HEAD http://s3.amazonaws.com/s3hub * About to connect() to s3.amazonaws.com port 80 (#0) * Trying 72.21.207.135... connected * Connected to s3.amazonaws.com (72.21.207.135) port 80 (#0) > HEAD /s3hub HTTP/1.1 > User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10 > Host: s3.amazonaws.com > Accept: */* > < HTTP/1.1 200 OK < x-amz-id-2: E6OvrEMD35HpJjlBg0kB90H/uaQDX8qk0oXb+baOtDKIoMXmNwgIRSX2rDE5Urlb < x-amz-request-id: DAAAA11524A4A557 < Date: Thu, 23 Apr 2009 13:43:01 GMT < Content-Type: application/xml < Transfer-Encoding: chunked < Server: AmazonS3 < |