2016-02-08 2 views
1

Im сталкивается с каким-то вопросом при попытке подключиться к моему dynamoDB на aws. Локально все работает отлично, и я могу подключиться с помощью ENV переменные для AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY и AWS_DEFAULT_REGION, а затемInvalidSignatureException при использовании boto3 для dynamoDB на aws

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

При изменении жить кредитки в переменных ENV и установки endpoint_url в dynamoDB на AWS это терпит неудачу с:

"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. Ive также попытался не использовать переменные env, а скорее непосредственно в методе, но ошибка сохранилась. Кроме того, чтобы избежать проблем с конечными пробелами, я даже использовал учетные данные непосредственно в коде. Im использует Python v3.4.4.

Может быть, заголовок, который также должен быть установлен, о котором я не знаю? Любые намеки были бы оценены.

EDIT

Ive теперь также создали новые учетные данные (чтобы убедиться, что есть только буквенно-цифровые знаки), но до сих пор не кости.

ответ

1

Вы не должны использовать endpoint_url при подключении к реальному сервису DynamoDB. Это действительно только для подключения к локальным службам или нестандартным конечным точкам. Вместо этого просто укажите регион, который вы хотите:

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

Подпись, что ваш часовой пояс отличается. Возможно, вы можете проверить: 1. Часовой пояс 2. Настройки времени.

Если есть некоторые автоматические настройки, вы должны исправить свои настройки времени.