amazon-web-services - 创建 IAM 服务角色以允许 Amazon Cognito 为 MFA 发送 SMS 消息
问题描述
我正在尝试设置 Congito 来管理我的用户池并设置电话验证。不幸的是,AWS 文档似乎已经过时了。
根据这个文档,我应该在我的coginto 页面上看到一个创建IAM 角色按钮,但它不存在: https ://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-mfa .html
我猜他们删除了该选项,但我也看不到手动创建正确角色的方法。Cognito 未列为您可以为其创建角色的服务之一。
上图中有一个 Web 身份选项卡,所以我尝试使用它。果然,有一个选项可以创建一个角色,甚至给它发送短信所需的 SNS 访问权限,但它不是服务角色。生成的 ARN 没有第一个映像所具有的 /service-role/ 路径。我想不出任何方法来更改 arn 以包含它,如果我只是尝试在没有它的情况下运行我的应用程序,我仍然会收到错误消息:
[00:20:30] 注册对象 { [00:20:30] "code": "InvalidSmsRoleTrustRelationshipException", [00:20:30] "message": "角色没有允许 Cognito 承担的信任关系时出错角色”,[00:20:30] “名称”:“InvalidSmsRoleTrustRelationshipException”,[00:20:30] }
Cognito现在坏了吗??我确定我错过了什么...
解决方案
我刚刚尝试过,我得到了“创建角色”按钮,但是查看您的 UI,您已经创建了角色,此时 AWS 将其隐藏并仅显示已创建角色的 arn。
也就是说,如果您出于某种原因需要从头开始重新创建它,您可以这样做;但是您必须离开可视化编辑器。将任何内容分配给信任关系页面的最简单方法,然后在创建角色后,选择它,切换到信任关系选项卡,按编辑信任关系,然后将 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": [
"*"
]
}
]
}
推荐阅读
- javascript - 无法解析axios错误
- c# - 我正在尝试将自定义属性添加到在 ASP.net Core 中序列化的 XML,但它们没有出现在我的响应中
- python - 对唯一列值进行分组以获得熊猫数据框列中每个唯一值的平均值
- c# - 用于 UnityEngine 的 Visual Studio Intellisense 无法正常工作
- c - 为什么 GCC 只能在 int 大小是编译时常量时进行循环交换优化?
- javascript - onBlur 导致 Chrome 中的警报消息无限循环
- python - 颜色特定条(离散或连续),如基于 X 轴值的绘图表达
- javascript - react-simple-jstree 与 nextjs
- powershell - 远程安装软件 - 挂起
- qt - Qt - 如何计算和测量 QTextDocument 中的行数?