HTTP POST для AWS IoT - PullRequest
       31

HTTP POST для AWS IoT

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

Я хочу подключить устройство HTTP к ядру IoT.

Я попытался this с помощью команды curl, все идет хорошо.

Теперь я хочу попробоватьиспользовать POST с подпись версии 4

Я использую postmand для отправки запроса POST, но я получил такой вывод:

"message": "The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.",

В полях авторизации я выбрал«AWS Signature», и я выполнил все из них: доступ и секретный ключ, область aws и имя службы = iotdata

Я хочу получить те же результаты, что и при использовании команды curl:

curl --tlsv1.2 --cacert YY.pem --cert XX.pem.crt --key ZZ.pem.key -X POST -d "{ \"Trama\": \"message\"}" "https://PPPPPP.iot.eu-west-1.amazonaws.com:8443/topics/topicname?qos=1"

1 Ответ

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

Проблема здесь в том, что обе ваши команды немного отличаются из-за различных способов отправки данных в AWS IoT.

В команде curl вы фактически используете x.509Подход на основе сертификата (дополнительную информацию см. здесь: https://docs.aws.amazon.com/iot/latest/developerguide/managing-device-certs.html) Для этого не требуется подписывать полезную нагрузку, он уже является доверенным, поскольку сертификат имеет значение.

Этот подход в основном уникален для IoT AWS.потому что цель состоит в том, чтобы данные поступали с большого количества устройств, и вам не нужно предоставлять им все роли IAM. На самом деле сертификат - это рекомендуемый способ отправки данных с устройства.

Вы может использовать эти сертификаты с почтальоном, если хотите, добавив их в запрос на вкладке сертификатов (вам нужны только файлы .crt и .key). Для получения более подробной информации см. https://www.getpostman.com/docs/v6/postman/sending_api_requests/certificatesинструкции.

Вы по-прежнему можете использовать подписи AWS v4 (https://docs.aws.amazon.com/iot/latest/developerguide/iam-users-groups-roles.html), поэтому предполагается, что вы не формируете запрос должным образом.

Просмотр этого документа(https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html) вы должны использовать:

Метод : POST

Uri : <AWS IoT Endpoint>/<url_encoded_topic_name>?qos=1 (например, https://a1pn10j0v8htvw.iot.us-east-1.amazonaws.com:8443/topics/iotbutton/virtualButton?qos=1)

Тип авторизации : Подпись AWS

AccessKey / SecretKey : согласно вашим учетным данным

Регион AWS : Регион, в котором находятся экземпляры IoT AWS, в

Имя службы : iotdata

Маркер сеанса : Оставьте пустым

...