#amazon-web-services #post #http-headers #postman #aws-iot
#amazon-веб-сервисы #Публикация #http-заголовки #почтальон #aws-iot
Вопрос:
У меня есть проект IOTs, связанный с AWS. В моем проекте мое устройство будет передавать необработанные данные в облако, а затем облако отправит информацию, расшифрованную в формате JSON, в AWS IoT. Облако поддерживает протокол HTTP с использованием REST API как для восходящего, так и для нисходящего канала, поэтому я думаю, что он будет работать с AWS IoT как [ссылка]: https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html#http
Я хочу отправить HTTP-запрос с использованием AWS Sig v4 с аутентификацией в форме ниже:
Учетные данные AWS4-HMAC-SHA256={1}/{2}/{3}/{4}/ aws4_request, подписанные заголовки=тип содержимого;хост;x-amz-дата, Подпись={5}
Однако я не знаю, как сгенерировать подпись {5}. Я не могу использовать скрипты для генерации, потому что мое облако не поддерживает запуск скриптов. В нем есть только несколько полей заголовков и значений, в которых я могу оставить Авторизацию и т. Д. (См. Скриншот Здесь https://imgur.com/RI815EZ ) Есть какой-нибудь совет? Заранее спасибо,
Ответ №1:
Доступ к AWS IoT message broker через HTTP не использует AWS Sig v4 для аутентификации. Вместо этого он использует взаимную аутентификацию TLS, которая требует настройки сертификатов и ключей для аутентификации в посреднике сообщений.
Предполагая, что ваш облачный провайдер, не являющийся AWS, не поддерживает взаимную аутентификацию TLS (или альтернативу MQTT через websockets), вам остается добавить уровень косвенности, который отправляет JSON в AWS IoT.
Один из способов сделать это — реализовать в AWS лямбда-выражение, которое принимает ваш JSON и отправляет его брокеру AWS IoT. Лямбда-выражение позаботится об аутентификации с помощью AWS IoT. AWS SDK обычно обрабатывает эту аутентификацию за вас.
В Lambda потребуется реализовать аутентификацию, поддерживаемую вашим облачным провайдером, отличным от AWS (например, он может использовать базовую аутентификацию).