Basi c поток: Несколько клиентов отправляют данные в один AWS IOT topi c, который затем отправляет те же данные в SQS после аутентификации, и есть серверная служба, которая прослушивает SQS.
Для аутентификации я создал специальный авторизатор. Ниже приведен фиктивный ответ настраиваемого авторизатора.
{
"isAuthenticated": true,
"refreshAfterInSeconds": 600,
"policyDocuments": [
"{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":\"iot:Publish\",\"Effect\":\"Allow\",\"Resource\":\"arn:aws:iot:ap-south-1:test:topic/customauthtesting\"}]}"
],
"disconnectAfterInSeconds": 3600,
"principalId": "123",
"context" ": {
"userId" : "User1"
}
}
И я могу передать тело (включая временную метку) в SQS с помощью такого оператора запроса правила IOT SELECT *, timestamp() as timestamp FROM 'topic/test'
Теперь я хочу передать sh context.userId либо в качестве атрибута, либо в теле для SQS, когда срабатывает то же правило IOT, но я не могу этого сделать. В https://docs.aws.amazon.com/iot/latest/developerguide/custom-authorizer.html упоминается, что Информация, полученная после проверки токена, который становится доступным в AWS механизм правил IoT SQL операторы , поэтому я думаю, что это возможно. .
Кто-нибудь, пожалуйста, предоставьте мне пример или правильный синтаксис для передачи userId в запросе правила SQL, если это возможно. Дайте мне знать, если потребуется дополнительная информация.