A assinatura, como você percebe, inclui o método http (por exemplo, GET
, HEAD
) que a solicitação estará usando ... mas o processo de assinatura é um processo unidirecional (usando um resumo HMAC), assim, o destinatário da assinatura (S3) não tem como saber quais parâmetros você usou ao assinar a solicitação - só sabe que, com base na solicitação que você está fazendo, a assinatura que você forneceu não corresponde a ela.
O problema aqui é que você está criando uma assinatura para uma solicitação HEAD
, mas a curva ainda está fazendo uma solicitação GET
. Você mesmo pode ver isso usando curl -v
.
A solução é informar ao curl para realmente fazer uma solicitação HEAD
, e isso é feito com curl -I
.