У меня есть роль IAM для экземпляра EC2 (так называемый профиль экземпляра) с двумя прикрепленными политиками, предоставляющими полный доступ к SQS и S3. С этой ролью связан запущенный экземпляр EC2. Он запускает несколько приложений, которые используют временные учетные данные, и все работает нормально.
Прямо сейчас одному из моих приложений также нужен доступ к соцсети. Я изменил роль IAM, добавив встроенную политику с генератором политик, разрешающую определенные вызовы API для конкретной темы SNS. Однако после изменения роли IAM при попытке aws sns list-topics
Я получаю следующую ошибку (соответствующий arn заменен тройным X):
User: XXX is not authorized to perform: SNS:ListTopics on resource: XXX:*
Требуется ли для добавления политики перезапуск экземпляра? Или мне нужно дождаться временных учетных данных (/latest/meta-data/iam/security-credentials/iam-role-name
) истекать? Могу ли я как-то принудительно истечь срок действия этих учетных данных?
РЕДАКТИРОВАТЬ: Кажется, на последний вопрос ответил IAM FAQ. Временные учетные данные не могут быть повторно активированы или продлены.
После множества разных подходов выяснилось, что ограничение моей политики одной очередью вызывает все проблемы. Я предполагал, что когда политика применяется к единой очереди и вы выполняете ListTopics, вы получаете только ту тему, к которой у вас есть доступ. Однако в моем соцсети было несколько других тем, и, скорее всего, их присутствие в результатах ListTopics было сочтено нарушением политики. Когда я заменил имя конкретной темы на '*' и сохранил политику, то сразу (нет необходимости в истечении срока действия учетных данных или перезапуске экземпляра EC2) он начал работать.