Vídeo: Como Lidar com Pessoas Invejosas | Ivan Maia 2024
Seria bom se tudo funcionasse exatamente como planejado ao fazer sua chamada REST para a AWS. No entanto, uma série de problemas podem ocorrer que resultam em uma mensagem de erro semelhante à que você vê aqui. Observe que a imagem não está completa. Os valores-chave são bloqueados para manter a usabilidade das chaves de acesso.
As mensagens de erro podem assumir várias formas.O problema pode vir de várias fontes. A primeira correção é codificar URL a assinatura para garantir que caracteres especiais na seqüência de URL não confundam AWS. Uma ferramenta que você pode usar para superar esse problema é o URL Decoder / Encoder. Para usar essa ferramenta, basta cole a assinatura (não o URL inteiro) no campo e clique em Codificar. A assinatura resultante não contém caracteres especiais, mas sim usa codificação de URL para evitar problemas.
Mesmo se você usar os fragmentos de código fornecidos pela Amazon, o processo de cálculo da assinatura também pode dar errado. Olhe novamente para a primeira imagem, nos elementos
StringToSign
e
StringToSignBytes
. Esses elementos indicam o que a AWS esperava quando verificou a assinatura. Claro, ainda não lhe dá uma pista sobre o valor que você deveria ter fornecido para uma assinatura. Felizmente, o testador de assinatura da Amazon pode fornecer essa informação.
Você baixa o Amazon Signature Tester para o seu disco rígido. O que você obtém é um arquivo README e uma página HTML que você carrega no seu navegador. A imagem abaixo mostra como a parte inferior desta página aparece. Você quer trabalhar na parte inferior da página porque contém dois campos que você precisa fornecer: o valor do elemento
StringToSignBytes
e sua chave secreta.
Quando você clica em Obter assinatura, você vê o valor do elemento
StringToSign
como o AWS vê, a assinatura real e a assinatura codificada por URL. Você usa a assinatura codificada em URL com sua chamada para AWS. Para validar esta assinatura, basta substituir o valor atual na seqüência de URL com este novo valor. Se o problema estiver no seu código de assinatura, a chamada deve funcionar como esperado.
A razão pela qual você deseja verificar novamente o valor do elemento
StringToSign
é que o AWS pode vê-lo de forma diferente do que você. Por exemplo, observe que neste caso, existem três caracteres novos entre
GET
e o valor
Expira
de 1490652000. Se o seu código de cálculo de assinatura não leva em consideração esse requisito, o a assinatura estará errada.Você pode encontrar ajudas de solução de problemas adicionais aqui.