私はこれに何時間も夢中になっています。Amazon SQS メッセージキューへの SendMessage API 呼び出しを使用しようとしています。
署名バージョン 2 の方法に従っています ( http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html )
署名が一致しないというエラーが表示されます。私はそれが辞書式のバイト順序に関係していると考えていましたが、それを理解するのに何時間も費やしましたが、運がありませんでした:-/
これを「クエリ文字列コンポーネント」として使用すると、メッセージを正常に送信できます:
読みやすいように、次の名前と値のペアに分類されます。
["AWSAccessKeyId", "Action", "Expires", "MessageBody", "SignatureMethod", "SignatureVersion", "Version"]
["AKIAIEXAMPLE", "SendMessage", "2013-02-22T12%3A19%3A30", "12321", "HmacSHA256", "2", "2012-11-05"]
ただし、次の一連のクエリ文字列コンポーネントは使用できません。
「AWSAccessKeyId=AKIAIEXAMPLE&Action=SendMessage&Expires=2013-02-22T12%3A19%3A30&MessageBody=234&SignatureMethod=HmacSHA256&SignatureVersion=2&Version=2012-11-05」
次のように分類されます。
["AWSAccessKeyId", "Action", "Expires", "MessageBody", "SignatureMethod", "SignatureVersion", "Version"]
["AKIAIEXAMPLE", "SendMessage", "2013-02-22T12%3A19%3A30", "234", "HmacSHA256", "2", "2012-11-05"]
2 つの唯一の違いは MessageBody の値 (12321 は機能しますが、234 は機能しません) であり、文字と整数の両方を使用してさまざまな値を試しましたが、問題を特定できないようです。
どんな提案でも大歓迎です。