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
выпущенная версия имеет слишком широкий обработчик исключений, который необходимо очистить.)