9

我们正在使用 cognito 用户池进行身份验证,并且我在MFA 和验证下启用了电子邮件验证,所以一段时间后我尝试通过取消选中电子邮件复选框来删除该验证,我总是收到错误您的角色仍在创建中。请稍候再试。我等了一周,问题仍然存在。我只需要取消选中电子邮件验证。先感谢您。

4

4 回答 4

7

我遇到了 SMS 角色被意外删除的问题。它也可能从未被创建。在 MFA 部分的底部,您将看到一个能够命名角色的输入框,然后单击“创建角色”按钮。

如果您已经有一个灰色的角色名称。在 IAM 中寻找它。如果它不存在,您将需要重新创建它。不幸的是,没有办法在 IAM 中执行此操作并使其适用于 Cognito,因为它需要服务角色的路径前缀 (of service-role)。我尝试通过 CLI 重新创建,虽然它起到了匹配的作用,但它仍然不起作用。

所以最好的办法是创建一个新的(虚拟)池并在那里创建与您看到该错误消息的另一个池使用的名称相匹配的 SMS 角色。

然后你需要更新角色以确保ExternalId匹配(它是一个 UUID)。找到此 UUID 的唯一方法是通过 CLI,因此您需要使用以下命令找到它:aws cognito-idp get-user-pool-mfa-config --user-pool-id=xxxx

它应该返回当前角色名称,ExternalId这样您就可以返回 IAM 并找到新 AWS 创建的 SMS 角色并更新其策略 JSON 以包含正确的 UUID。

最后,摆脱您创建的虚拟池,因为它现在也会受到“您的角色仍在创建中”的影响。漏洞。

本质上,它只是卡住了,需要将它的配置指向正确的角色(使用它的 ExternalId),不幸的是没有足够的仪表板控件来解决这个问题。您必须稍微修改一下,直到他们可以修复它。

于 2019-03-21T19:14:25.503 回答
3

我知道这已经晚了,但也许其他人可能会从中受益。

以下可能是一个解决方案,具体取决于场景。

我以某种方式删除了用户池使用的 SNS-Role。当创建一个新的时,它与运行时显示的不匹配:

$ aws cognito-idp get-user-pool-mfa-config --user-pool-id=us-west-2_xxxxxxxxx
{
    "SmsMfaConfiguration": {
        "SmsConfiguration": {
            "SnsCallerArn": "arn:aws:iam::123456789098:role/sns12345-dev",
            "ExternalId": "myproj02605eb4_role_external_id"
        }
    },
    "MfaConfiguration": "OFF"
}

新角色有一个像这样的arn:

arn:aws:iam:123456789098:role/sns23456-dev

以下命令允许我更新 snsRole 并且用户池停止显示该血液Your roles are still being created. Please wait and try again错误。

aws cognito-idp update-user-pool \
--user-pool-id us-west-2_xxxxxxxxx \ 
--sms-configuration \
SnsCallerArn=arn:aws:iam::123456789098:role/sns23456-dev,ExternalId=myproj02605eb4_role_external_id
于 2020-04-21T15:36:44.540 回答
3

我只是有同样的问题。我试图向我的用户池添加一些触发器,但它一直说正在创建角色。我看了看AIM,这个角色似乎不存在。对我有用的是不同答案的混合。

  1. 获取用户池的外部 ID。
aws cognito-idp get-user-pool-mfa-config --user-pool-id=XXXXX
{
    "SmsMfaConfiguration": {
        "SmsConfiguration": {
            "SnsCallerArn": "arn:aws:iam::XXXX",
            "ExternalId": "XXXX"
        }
    },
    "MfaConfiguration": "OFF"
}

  1. 在 AIM for SNS 中创建一个新角色。

  2. 创建后,单击“信任关系”,然后单击“编辑信任关系”并添加以下 json(不要忘记替换您的外部 id)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "cognito-idp.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "YOUR_EXTERNAL_ID_HERE"
        }
      }
    }
  ]
}
  1. 使用 CLI,使用新角色的 ARN 更新池的角色:
aws cognito-idp update-user-pool --user-pool-id YOUR_USER_POOL_ID --sms-configuration SnsCallerArn=ROLE_ARN_HERE,ExternalId=YOUR_EXTERNAL_ROLE_HERE

在此之后,我能够将更改保存到用户池。

于 2020-08-04T11:29:53.387 回答
0

万一其他人面临同样的问题,我是这样解决的:我去了 IAM 并删除了角色,然后回到 Cognito 并再次为 SMS MFA 创建了角色(刷新页面后)并且它起作用了。

于 2021-01-21T01:22:21.707 回答