DAX кластер не может подключиться к DynamodB? Ошибка: NoRouteException: не удалось разрешить адрес

Я использую клиент Amazon nodejs/javascript для dax, и каждый раз, когда я отправляю запрос, я получаю этот ответ (который мне приходилось выкапывать из кода, вставляя операторы регистрации):

{ "time": 1517618635321, "code": null, "retryable": false, "requestId": null, "statusCode": -1, "_tubeInvalid": true, "waitForRecoveryBeforeRetrying": false, "codeSeq": [ 4, 23, 31, 34 ] }

Возвращенная последовательность кода, по-видимому, даже не та, которую модуль узла, похоже, понимает, поэтому я полностью потерян.

Я подозревал, что проблема с конфигурацией сети VPC или IAM, но я выбрал оба варианта с гребнем с мелкими зубьями, достаточно хорошими для очистки, и до сих пор не вижу этого.

Как мне декодировать это сообщение об ошибке, найти журналы на серверах кластера dax или каким-то другим способом выяснить, как узнать, какая ошибка вызывает это?

1 ответ

Решение

[4, 23, 31, 34] является PermissionDeniedИтак, ваша догадка о том, что это проблема с разрешением, является правильной (я сделаю заметку, чтобы исправить отображение, чтобы оно было более понятным).

Полномочия могут быть предоставлены как AWS.Credentials объект, но рекомендуемый способ - получить их из метаданных экземпляра EC2, что будет делать клиент AWS SDK и DAX автоматически. Это требует, чтобы ваши экземпляры EC2 имели служебную роль, дающую им разрешение на доступ к DAX. Самый простой способ - создать новую роль в консоли для использования из EC2 и присоединить к ней политику AmazonDynamoDBFullAccess. Затем все экземпляры EC2, запущенные с этой ролью, смогут получить доступ к вашему кластеру DAX.

(Что касается того, почему ошибка NoRouteExceptionвыпущенная версия имеет слишком широкий обработчик исключений, который необходимо очистить.)

Другие вопросы по тегам