Я пытаюсь сделать HTTP-запросы от экземпляра EC2, работающего Node.js внутри elasti c beanstalk, к AWS Elasti c Search (для вставок / удаления индекса / запросов и т. Д. c.). Моя проблема связана с тем, как AWS обрабатывает аутентификацию.
Нет SDK для запроса / обновления et c. документы внутри elasti c поисковые индексы. (Есть один для управления доменом). Их рекомендуемый способ подписания запросов указан здесь . Короче говоря, они используют класс AWS .Signers.V4 для добавления учетных данных в заголовки HTTP, и им требуется ключ доступа, секретный ключ и токен сеанса.
Экземпляр EC2, с которым я работаю не хранит учетные данные в среде (решение не в моих руках) или в файле, как я получал учетные данные на своей машине. У него уже есть правильная роль для доступа к узлу поиска elasti c, Мне нужен лучший способ извлечь три учетных данных (ключ доступа, секретный ключ и токен сеанса) , поскольку они передаются в качестве аргумента в метод addAuthorization. Я попытался зарегистрировать CredentialProviderChain , но ни у одного из провайдеров не было сохраненных учетных данных. При локальном ведении журнала отображаются как переменная среды, так и файл общих учетных данных с правильными учетными данными, как и ожидалось. Мне сказали, что я не должен использовать API предполагаемой роли (который действительно возвращает учетные данные), и для меня это тоже не имело смысла, поскольку я принимал роль, которую EC2 уже имел lol
Я наткнулся на этот метод для получения метаданных экземпляра, включая учетные данные безопасности. Это мой лучший вариант? Или есть альтернатива, которую я не рассматривал? Я не слишком в восторге от этого, так как мне пришлось бы добавить несколько logi c, чтобы проверить, работает ли процесс в экземпляре EC2 (чтобы я мог тестировать локально, когда это не так), поэтому это не такое чистое решение, как я ожидал, и я хочу убедиться, что изучил все возможности.
PS Как AWS SDK обрабатывают аутентификацию? Я думаю, что у меня будет больше шансов получить одобрение моих изменений, если я буду использовать тот же подход, который использует AWS, поскольку elasti c search - единственная услуга, для которой мы должны вручную подписывать запросы. Все остальные обрабатываются SDK.