私は、presigned urlを生成して検証するためのpythonスクリプトを用意しました。このスクリプトは私のラップトップでは動作しますが、私の同僚のラップトップでは動作しません。エラーメッセージには、AWSシークレットアクセスキーと署名方法を確認するメッセージが表示されます。 AWSアクセス/秘密鍵は有効で、他のAWS APIへのアクセスに使用できます。どのようにトラブルシューティングを行うのですか?aws presigned url - presigned urlを検証するとSignatureDoesNotMatchエラーが発生する
import requests
import boto3
url = boto3.client('sts').generate_presigned_url(
'get_caller_identity',
Params={},
ExpiresIn=300)
r = requests.post(url)
print r.status_code
print r.text
エラー応答: -
<ErrorResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<Error>
<Type>Sender</Type>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message>
</Error>
</ErrorResponse>
両方のシステムにboto3とbotocoreの最新バージョンがありますか? – jarmod
'requests.post(url)' ...実際のサービスのAPIリファレンスは、 'POST'がリクエスト本体を持つことを示します。 http://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html –
@jarmod - それはそれでした。 boto3が1.4.7(boto3 == 1.4.7、botocore == 1.7.36)のときにエラーが発生したようです。 boto3が1.4.1(boto3 == 1.4.1、botocore == 1.4.69)のときはうまく動作します。私はそれを受け入れるために答えとして追加してください。 – user1573133