Какая политика требуется для создания правила AWS IoT через SDK - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь настроить устройство IoT для генерации push-уведомлений в приложении для iPhone.Устройство также публикует темы mqtt на AWSIoT, которые прекрасно воспринимаются приложением iPhone.Я создал настройку, необходимую для push-уведомлений «вручную» в AWS, и убедился, что она также работает.Тем не менее, мне нужно сделать это в масштабе кода (у меня есть много устройств с подключением 1: 1 к iPhone).Таким образом, используя AWS SDK (swift), эти шаги работают: * создание темы sns * создание конечной точки платформы * подписка на конечную точку

Но когда дело доходит до создания правила, я получаю AccessDeniedException.Вот соответствующий код:

// Create a specific rule action
let snsAction = AWSIoTSnsAction()
snsAction?.messageFormat = AWSIoTMessageFormat.json
snsAction?.roleArn = self.iot2SNSRoleArn
snsAction?.targetArn = snsTopic.topicArn

// Add action to action 'list'
let action = AWSIoTAction()
action?.sns = snsAction

let payload = AWSIoTTopicRulePayload()
payload?.actions = [action!]
payload?.awsIotSqlVersion = "2016-03-23"
payload?.sql = "SELECT * FROM alerts"

let ruleRequest = AWSIoTCreateTopicRuleRequest()
ruleRequest?.ruleName = "alertRule_" + myID
ruleRequest?.topicRulePayload = payload

iot.createTopicRule(ruleRequest!).continueWith(executor: AWSExecutor.mainThread(), block: {(task: AWSTask!) -> AnyObject? in
   if task.error != nil { print("AWS IoT Rule Error: \(String(describing: task.error))"); return nil }
   if task.result == nil { print( "AWS IoT Rule ok.") }

   return nil
})

Сбой вызова createTopicRule (ruleRequest!) С AccessDeniedException.

Роль имеет присоединенные политики AmazonSNSFullAccess, AWSIoTFullAccess и AWSIoTRuleActions.Документы для IoTCreateTopicRuleRequest () утверждают, что для этого требуется административный доступ, но я не совсем понимаю, какая из этих политик применима - их довольно много и большинство / многие из них имеют слишком большой допуск.

...