Создание роли службы IAM, позволяющей Amazon Cognito отправлять SMS-сообщения для MFA
Я пытаюсь настроить Congito для управления моим пулом пользователей и настройки проверки телефона. К сожалению, документы AWS кажутся устаревшими.
Согласно этому документу, я должен увидеть кнопку создания роли IAM на моей странице coginto, но ее там нет: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-mfa.html
Я предполагаю, что они убрали эту опцию, но я также не вижу способа вручную создать правильную роль. Cognito не указан в качестве одной из служб, для которых вы можете создать роль.
На изображении выше есть вкладка "Веб-идентификация", поэтому я попытался ее использовать. Конечно, есть возможность создать роль и даже предоставить ей доступ SNS, необходимый для отправки SMS, но это не роль службы. Сгенерированный ARN не имеет /service-role/ path, который имеет первое изображение. Я не могу придумать, как изменить arn, чтобы включить его, и если я просто попытаюсь запустить свое приложение без него, я все равно получу сообщение об ошибке:
[00:20:30] ошибка регистрации объекта { [00:20:30] "code": "InvalidSmsRoleTrustRelationshipException", [00:20:30] "message": "Роль не имеет доверительных отношений, позволяющих Cognito предполагать роль ", [00:20:30]" имя ": "InvalidSmsRoleTrustRelationshipException", [00:20:30] }
Cognito сломан прямо сейчас?? Я уверен, что что-то упустил...
1 ответ
Я только что попробовал, и я получил кнопку "Создать роль", но, глядя на ваш пользовательский интерфейс, вы уже создали роль, и в этот момент AWS скрывает ее и просто показывает арсенал созданной роли.
Тем не менее, если вам нужно воссоздать его с нуля по любой причине, вы можете сделать это; однако вам придется покинуть визуальный редактор. Самый простой способ назначить что-либо на страницу доверительных отношений, а затем после того, как роль была создана, выберите ее, переключитесь на вкладку Доверительные отношения, нажмите Редактировать доверительные отношения и затем замените json следующим:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "cognito-idp.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "generate-your-own-uuid-here"
}
}
}
]
}
Для полноты, встроенная политика для роли также должна быть:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:publish"
],
"Resource": [
"*"
]
}
]
}
Для повторного заполнения роли Cognito, которую вы удалили, вы должны использовать aws cli, это невозможно в веб-интерфейсе.
aws iam create-role --path / service-role / --role-name words --assume-role-policy-document file: // morewords
Как ответили здесь, вы должны использовать CLI для создания роли службы с --path
флаг, чтобы получить этот префикс. Однако даже после его создания он все равно не будет работать для Cognito. Да, есть ExternalId
значение, которое может быть установлено на то, что было раньше, если вы должны были позвонить cognito-idp get-user-pool-mfa-config --user-pool-id=...
Тем не менее, даже если вы обновите его, чтобы отобразить тот же идентификатор, он все равно может не сработать (не для меня). Итак, вот фокус. Попросите веб-консоль AWS заново создать роль для вас. Просто используйте новый пул пользователей, чтобы сделать это.
Убедитесь, что у вас удалена старая роль. Настройте новый пул пользователей, включите MFA, и в нижней части этой страницы настроек вы увидите поле ввода с кнопкой "Создать роль", чтобы убедиться, что имя соответствует нашему предыдущему имени (даже не думайте, что здесь разрешены слэши). тем не мение).
Это создаст роль IAM. Затем вы должны отредактировать его и вернуть обратно ExternalId
значение. Опять же, вы можете найти это с помощью get-user-pool-mfa-config
команда.
Обратите внимание, что новый созданный пул теперь будет иметь ту же проблему. Это не позволит изменить настройки, потому что все равно будет думать, что роль находится в процессе создания. Тем не менее, ваш старый бассейн будет в порядке. Вы можете выполнить другую команду CLI, чтобы полностью отключить MFA для этого нового пула, если вам нужно / нужно с aws cognito-idp set-user-pool-mfa-config --user-pool-id=xxx --region=xxx--mfa-configuration OFF
и / или просто удалите этот временный пул пользователей, который вы создали исключительно для повторного создания удаленной роли.