AWSへのREST呼び出しを行うときに計画どおりにすべてが正しく動作すれば、キー値がブロックされてアクセスの利便性が維持されます。ただし、ここに表示されているようなエラーメッセージが表示されることがあります。画像が完全ではないことに注意してください。キー値は、アクセスキーの使用可能性を維持するためにブロックされます。
エラーメッセージにはさまざまな形があります。問題はさまざまな情報源から来る可能性があります。最初の修正点は、URL文字列の特殊文字がAWSを混同しないように、署名をURLエンコードすることです。この問題を克服するために使用できるツールはURLデコーダ/エンコーダです。このツールを使用するには、(URL全体ではなく)署名をフィールドに貼り付け、[エンコード]をクリックします。結果のシグネチャには特殊文字は含まれませんが、問題を防ぐためにURLエンコードが使用されます。
<! - 1 - > 問題を防ぐために署名をURLエンコードします。Amazonが提供するコードスニペットを使用しても、署名の計算プロセスが間違ってしまう可能性があります。
StringToSign
および
StringToSignBytes
要素の最初のイメージをもう一度見てください。これらの要素は、AWSが署名をチェックしたときに期待していたことを示します。もちろん、署名のために提供していたはずの価値についての手掛かりはまだありません。幸いにも、Amazon Signature Testerはこの情報を提供することができます。
Amazon Signature Testerをハードディスクにダウンロードします。 READMEファイルと、ブラウザに読み込むHTMLページがあります。下の画像は、このページの下部がどのように表示されるかを示しています。
StringToSignBytes
要素の値と秘密鍵の2つのフィールドが必要なため、ページの下部で作業したいと考えています。
「シグネチャの取得」をクリックすると、
StringToSign
要素の値と、実際のシグネチャと、URLでエンコードされたシグネチャが表示されます。 URLエンコードされた署名をAWSの呼び出しで使用します。このシグネチャを検証するには、URL文字列の現在の値をこの新しい値に置き換えます。署名コードに問題がある場合、呼び出しは期待通りに機能するはずです。
StringToSign
要素の値を再確認する理由は、AWSがあなたとは違った見方をするためです。たとえば、この場合、
GET
と
Expires
の値が1490652000の間に3つの改行文字があることに注意してください。署名計算コードでこの要件を考慮しない場合、署名は間違っています。ここで追加のトラブルシューティングの助けを見つけることができます。