#aws-iot
#aws-iot
Вопрос:
Как я могу разрешить все задания, а не конкретное название задания, для «iot: Публикация» со своего устройства?
Я понятия не имею, разрешать ли подстановочный знак
или *
темы обновления заданий для «iot: публикация».
Но я могу использовать его для «iot: подписка» и «iot: получение».
Политика AWS IoT:
для «iot: Публикация»
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:Publish",
"Resource": [
"arn:aws:iot:xxx:xxx:topic/$aws/things/${iot:ClientId}/jobs/start-next",
"arn:aws:iot:xxx:xxx:topic/$aws/things/${iot:ClientId}/jobs/ota-20190401/update" <- (A)allow publishing
"arn:aws:iot:xxx:xxx:topic/$aws/things/${iot:ClientId}/jobs/ /update" <- (B)not allow publishing
]
}
]
}
для «iot: подписка»
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": [
"arn:aws:iot:xxx:xxx:topicfilter/$aws/things/${iot:ClientId}/jobs/notify-next",
"arn:aws:iot:xxx:xxx:topicfilter/$aws/things/${iot:ClientId}/jobs/start-next/accepted",
"arn:aws:iot:xxx:xxx:topicfilter/$aws/things/${iot:ClientId}/jobs/start-next/rejected",
"arn:aws:iot:xxx:xxx:topicfilter/$aws/things/${iot:ClientId}/jobs/ /update/accepted", <- allow subscribing
"arn:aws:iot:xxx:xxx:topicfilter/$aws/things/${iot:ClientId}/jobs/ /update/rejected" <- allow subscribing
]
}
]
}
Я получил AWSIoTPythonSDK.исключение.AWSIoTExceptions.Исключение publishTimeoutException на моем устройстве в случае (B) политики.
Ответ №1:
Согласно https://docs.aws.amazon.com/iot/latest/developerguide/pub-sub-policy.html ‘ ‘ или ‘#’ обрабатываются как буквенный символ. Вы можете использовать ‘*’ в качестве подстановочного знака, но имейте в виду, что ‘*’ будет соответствовать любым символам в теме (буквам, цифрам, косой черте и т.д.)
Комментарии:
1. Спасибо! Я нашел
MQTT wildcard characters " " and "#" are treated as literal characters. Their use might result in unexpected behavior.
иYou can use * as a wildcard in the resource attribute of the policy. For example, if each device in your account must publish on a unique topic reserved for it alone, use the following policy
в приведенном выше URL.