2016-08-10 5 views
8

Официальная документация aws на how to send a Textmessage с SDS SDS в java довольно проста.Авторизация при отправке текстового сообщения с использованием AmazonSNSClient

Однако, при отправке сообщения, как показано в примере на дне, я получаю ошибку User: arn:aws:iam::xxx:user/sms-testing is not authorized to perform: SNS:Publish on resource: +999999999

Обратите внимание, что +999999999 является телефонный номер передается .withPhoneNumber() вызова, поэтому AWS апи жалуется на мой Пользователь IAM не имеет необходимого разрешения на SNS:Publish сообщение с ресурсом с этим номером телефона.

Мой вопрос: Как создать пользователя IAM, который может отправлять SMS-уведомления через java SDK? В настоящее время, похоже, мне нужно было бы создать разрешение для каждого числа, на которое я отправляю сообщения, что кажется странным и сложным в обслуживании.

ответ

17

Ошибка говорит вам, что ваш пользователь IAM «sms-testing» не имеет права публиковать в SNS (SNS: Publish) на этот ресурс. У вашего пользователя IAM, вероятно, нет SNS: публиковать разрешение вообще, а это значит, что вы ничего не можете публиковать. Если это так, вам просто нужно добавить следующую политику IAM к своему пользователю или добавить политику в группу IAM, из которой принадлежит ваш пользователь IAM.

Приведенная ниже ссылка приведет вас прямо к консоли IAM для редактирования разрешений для пользователя sms-testing. Также ниже приведен пример политики, позволяющей пользователю IAM публиковать что-либо в SNS (SMS, темы, конечные точки и т. Д.).

Если вы хотите немного ограничить права доступа, вы должны изменить «Ресурс» и указать конкретный ресурс SNS, такой как Тема или приложение arn. Если вы не можете редактировать политику пользователя IAM, вам нужно, чтобы ваш администратор добавил эту политику для вас.

Измените IAM пользователя: https://console.aws.amazon.com/iam/home?region=us-east-1#users/sms-testing

политики образца для предоставления SNS Публикация ВСЕХ ресурсов:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "sns:Publish" 
      ], 
      "Resource": "*" 
     } 
    ] 
} 

Поскольку SNS не имеет SMS-ресурс, вы можете сделать немного рубить и «Запретить» публикацию SNS в приложениях «Темы» и «Платформенные приложения», а затем разрешить публикацию для остальных, которая оставляет только SMS (пока).

Вот политика образца позволяет публиковать только SMS и отрицающей публикацию на темы и приложения (нажать уведомления):

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Deny", 
      "Action": [ 
       "sns:Publish" 
      ], 
      "Resource": "arn:aws:sns:*:*:*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "sns:Publish" 
      ], 
      "Resource": "*" 
     } 
    ] 
} 

Надежда, что помогает.

-Dennis

+1

спасибо, авторизация работает с подстановочной политикой. Хотя он немного открыт, хотя, если я правильно понимаю, пользователь iam теперь может опубликовать любую тему в учетной записи. Проблема с указанием темы, по-видимому, заключается в том, что мне нужно добавить подписку на тему типа «SMS», где мне нужно жестко указать номер целевого телефона. Есть ли способ заблокировать разрешение таким образом, что пользователь может отправлять только sms (любому номеру), а не публиковать в какой-либо другой теме? – pulse00

+0

У меня также есть тот же вопрос. @ pulse00, вы могли выяснить, как ограничить доступ к SMS? – kennyjwilli

+0

pules00 - Я обновил исходный ответ с помощью политики, позволяющей публиковать только SMS. kennyjwilli - Разрешить публикацию на любой ресурс, кроме СМС, в настоящее время не представляется возможным. –