2016-02-08 65 views
1

當我試圖連接到aws上的dynamoDB時,遇到了某種憑證問題。本地這一切工作正常,我可以使用ENV變量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION然後在aws上爲dynamoDB使用boto3時出現InvalidSignatureException

dynamoConnection = boto3.resource('dynamodb', endpoint_url='http://localhost:8000') 

當改變生活creds在ENV變量和AWS失敗與endpoint_url設置爲dynamoDB連接:

"botocore.exceptions.ClientError: An error occurred (InvalidSignatureException) when calling the Query operation: 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."

這些信用是有效的,因爲它們用於與同一個dynamoDB交談的其他應用程序中。我也嘗試不使用env變量,而是直接在方法中,但錯誤仍然存​​在。此外,爲了避免任何尾隨空格的問題,我甚至直接在代碼中使用憑證。我使用Python v3.4.4。

是否有一個標題,也應該設置,我不知道?任何提示都會升值。

編輯

香港專業教育學院現在也創造了新的證書(以確保只有字母數字符號),但仍然沒有骰子。

回答

1

當您連接到真正的DynamoDB服務時,不應使用endpoint_url。這隻適用於連接本地服務或非標準端點。相反,只需指定您想要的區域:

dynamoConnection = boto3.resource('dynamodb', region_name='us-west-2') 
1

它表示您的時區不同。也許你可以檢查你的: 1.時區 2.時間設置。

如果有一些自動設置,您應該修復您的時間設置。