#ruby-on-rails #ruby #amazon-web-services #httparty
#ruby-on-rails #ruby #amazon-веб-сервисы #httparty
Вопрос:
У меня есть пользовательский API, который должен передавать ключ доступа AWS, секретный ключ и регион. Я могу генерировать результаты из post-запросов в Postman, когда я помещаю эти учетные данные в заголовки авторизации под типом подписи AWS. Но я не уверен, что правильный синтаксис для передачи HTTParty в ruby.
Это мое текущее выражение запроса:
response = HTTParty.post(BASE_URL, :body => data.to_json, :headers => {'Content-Type' => 'application/json'})
Все примеры, которые я вижу, — это передача авторизации в токене. Но в postman я передаю ключ доступа, секретный ключ и регион. Нужно ли мне генерировать токен перед этим? Если да, то как?
Комментарии:
1. У Postman есть функция для представления вашего запроса в коде Ruby с помощью Net::HTTP. Я рекомендую опубликовать приведенный в нем пример. (с отредактированной конфиденциальной информацией) Таким образом, этот вопрос становится более узким. (затем задача состоит в том, чтобы преобразовать вызов Net :: HTTP в вызов HTTParty, который должен быть простым для большинства Rubyists и не требовать специальных знаний AWS)
2. Я нашел фрагмент кода, но подпись уже сгенерирована. Я ищу шаг для создания подписи.
3. Можете ли вы поделиться дополнительной информацией о том, как это делается в Postman? Шаги для воспроизведения, скриншот (при необходимости) и т. Д. Рад взглянуть на это, но начинать с нуля мне было бы сложно.
4. Я не уверен, как это делается в Postman. Кажется, есть средний шаг между отправкой учетных данных AWS и подписью. Похоже, это происходит автоматически. Но я пытаюсь выяснить средний шаг создания этой подписи.
5. Извините, я должен был быть более ясным. Я имел в виду объяснение того, как вы настраиваете запрос в postman, а не того, как postman фактически генерирует подпись. Таким образом, я могу воспроизвести вашу настройку и структуру запроса.
Ответ №1:
Для этого у AWS есть ruby gem, aws-sigv4 (предполагая, что это версия, которая вам нужна в вашем случае, перепроверьте), которая позволяет вам передавать свои учетные данные, регион и запрос на создание подписи. Он возвращает хэш заголовков, которые действуют как его подпись, которую вы можете передать в HTTParty с остальными деталями запроса.
https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Sigv4/Signer.html