Ich habe ein Python-Skript, um eine vordefinierte URL zu generieren und zu validieren. Dieses Skript funktioniert auf meinem Laptop, aber nicht auf dem Laptop meines Kollegen. Die Fehlermeldung besagt, dass der geheime AWS-Zugriffsschlüssel und die Signaturmethode überprüft werden sollen. Der AWS-Zugriff/die geheimen Schlüssel sind gültig und können für den Zugriff auf andere AWS-APIs verwendet werden. Wie behebe ich weitere Fehler?aws präsignierte URL - Überprüfung präsignierte URL gibt SignatureDoesNotMatch-Fehler
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
Fehler Reaktion: -
<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>
Haben beide Systeme aktuelle Versionen von Boto3 und Botocore? – jarmod
'requests.post (url)' ... Die API-Referenz für den tatsächlichen Dienst zeigt an, dass der POST einen Anfragetext hätte. http://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html –
@jarmod - Das war es. Es sieht so aus, als ob der Fehler auftritt, wenn boto3 bei 1.4.7 steht (boto3 == 1.4.7, botocore == 1.7.36). Es funktioniert gut, wenn boto3 bei 1.4.1 ist (boto3 == 1.4.1, botocore == 1.4.69). Bitte fügen Sie es als Antwort hinzu, damit ich es annehmen kann. – user1573133