Отказано в доступе к AWS SQS через NodeJS SDK (aws-sdk-js) (ВНЕЗАПНО !!) - PullRequest
0 голосов
/ 26 октября 2018

Прежде всего, я знаю, что в SO есть подобные вопросы.Также я хочу сообщить, что я уже выяснил, в чем проблема.Просто хочу поделиться решением с другими, кто потенциально ищет решение той же проблемы ... И нет, это не повторяющаяся тема.

Несколько дней назад, мой скрипт NodeJSвнезапно перестал работать с AWS SQS!

Access to the resource https://sqs.us-west-2.amazonaws.com/ is denied.

Но что было интересно, , когда я тестировал SQS через aws-cli с соответствующим профилем, это сработало!

Я потратил много часов на поиск и поиск решения ... Типичная проблема других программистов здесь, в StackOverflow (например, здесь ), довольно очевидна: неправильная политика IAM или неправильные учетные данные.Но у меня все работало несколько дней назад, а не сейчас ?!Это сводило меня с ума.

Оповещение о спойлере! Ну, в конце концов, проблема заключалась в неправильных учетных данных.Но как это возможно, когда с нашей стороны ничего не изменилось, верно?

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


Хорошо, так что случилось? Смотрите мой ответ ниже

1 Ответ

0 голосов
/ 26 октября 2018

Ладно, что случилось?

Примерно 17 октября 2018 года вы можете найти "Feature / load shared config" в aws-sdk-js истории коммитов.Это версия v2.337.0 +.Я не читал код, но похоже, что с того времени (и версии) приоритет получения учетных данных AWS изменился.До этого, похоже, переменные окружения имели больший приоритет, чем конфигурационный файл.Но не больше!Что это значит?

Ну, в моем случае, у меня есть несколько профилей в .aws/credentials, и мой профиль по умолчанию НЕ тот, который имеет полные права доступа.Если в вашем профиле по умолчанию есть политика AdministratorAccess, эта проблема для вас не актуальна!

Я использую профили в файле конфигурации для aws-cli, а не для скрипта.В своем сценарии я использую переменные среды AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Вы видите проблему сейчас? До смены SDK это работало, потому что SDK сначала выбирал переменные среды.Но так как некоторая логика изменилась в SDK, он выбрал профиль по умолчанию из файла конфигурации.И, как я писал ранее, мой профиль по умолчанию не может получить доступ к SQS!

Итак, мое решение состояло в том, чтобы удалить (переименовать) профиль по умолчанию из файла конфигурации.И поскольку больше не было профиля по умолчанию, SDK снова начал использовать мои переменные окружения.

Слава SDK!

...