The AWS CLI now supports the --query
parameter which takes a JMESPath expressions.
This means you can sum the size values given by list-objects
using sum(Contents[].Size)
and count like length(Contents[])
.
This can be be run using the official AWS CLI as below and was introduced in Feb 2014
aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
It seems the difference has to do with the Content-Length
header and how it is treated by both commands.
But before going into that, curl -X HEAD
does not give any output because, by default, curl
does not print headers if switch -i
is not provided (not needed on -I
though).
In any case, curl -I
is the proper way to fetch the headers. It just ask for the header and close the connection.
On the other hand curl -X HEAD -i
will wait for the transmission of the number of bytes stated by Content-Length
. In the case no Content-Length
is not specified, I guess it will wait for some data or for that particular header.
Some examples that shows this behaviour:
$ curl -X HEAD -i http://www.elpais.es
HTTP/1.1 301 Moved Permanently
Server: AkamaiGHost
Content-Length: 0
Location: http://www.elpais.com/
Date: Wed, 12 May 2010 06:35:57 GMT
Connection: keep-alive
Because Content-Length
is 0, in this case both commands behave the same. And the connection is closed afterwards.
$ curl -X HEAD -i http://slashdot.org
HTTP/1.1 200 OK
Server: Apache/1.3.41 (Unix) mod_perl/1.31-rc4
SLASH_LOG_DATA: shtml
X-Powered-By: Slash 2.005001296
X-Bender: Since I love you all so much, I'd like to give everyone hugs.
X-XRDS-Location: http://slashdot.org/slashdot.xrds
Cache-Control: no-cache
Pragma: no-cache
Content-Type: text/html; charset=iso-8859-1
Content-Length: 115224
Date: Wed, 12 May 2010 06:37:20 GMT
X-Varnish: 1649060825 1649060810
Age: 1
Connection: keep-alive
curl: (18) transfer closed with 115224 bytes remaining to read
In this case, there seems to be a timeout (probably by Varnish), so curl
protests that the connection was closed before having received the Content-Length
number of bytes.
By the way, look at the funny X-Bender (shown in the example) and X-Fry (try it for yourself) headers :).
Best Answer
[SOLVED]
What I did to solve this issue was to launch a different machine.
I has: SuSE Linux Enterprise Server 11 sp3 (HVM), SSD Volume Type
I now have: SuSE Linux Enterprise Server 11 sp3 (PV), SSD Volume Type
On the new machine I did as the following:
That's it. I hope this will help somebody in the future :)