2017-10-27 25 views
1

私は、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> 
+2

両方のシステムにboto3とbotocoreの最新バージョンがありますか? – jarmod

+0

'requests.post(url)' ...実際のサービスのAPIリファレンスは、 'POST'がリクエスト本体を持つことを示します。 http://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html –

+0

@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

答えて

0

あなたのコードは、私には正常に見えます。

両方のシステムにboto3とbotocoreの最新バージョンがありますか?

+0

それはそれでした。 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