创建 IAM 服务角色以允许 Amazon Cognito 为 MFA 发送 SMS 消息

Dav*_*sey 4 amazon-web-services amazon-sns amazon-iam amazon-cognito aws-iam

我正在尝试设置 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] "name": "InvalidSmsRoleTrustRelationshipException", [00:20:30] }

Cognito 现在坏了吗??我确定我错过了一些东西......

tho*_*ace 6

我刚刚尝试并获得了“创建角色”按钮,但是查看您的 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"
        }
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

注意,为了完整性,角色的内联策略也应该是:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:publish"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)