AWS Cognito - 用户池xxxx不存在。

5

var client = new AmazonCognitoIdentityProviderClient("MYKEY", "MYSECRET", RegionEndpoint.USEast1);

var request = new AdminGetUserRequest();
request.Username = "USERNAME";
request.UserPoolId = "POOLID";

var user = client.AdminGetUserAsync(request).Result;                      

关键/秘密是以管理员访问权限身份进行身份验证。为了保险起见,我还将其授予了AmazonCognitoPowerUser策略。

区域终端节点是正确的,并且与我的用户池相同。用户池ID是正确的。用户池ID的第一部分与区域匹配。

我对其他可能出错的地方束手无策。有任何想法吗?

更新8/2/19

手动CLI命令:

PM> aws cognito-idp list-user-pools --region us-east-1 --max-results 10
{
    "UserPools": []
}

区域是正确的,因此必须存在某些权限问题。我可以尝试在池中进行调整,或者需要添加其他策略给用户吗?


1
假设您的CLI已配置与应用程序相同的凭据,您可以键入aws cognito-idp list-user-pools --region us-east-1 --max-results 10并检查结果吗? - Sébastien Stormacq
顺便提一下,在代码中硬编码访问密钥和秘密密钥被认为是一种不良的安全实践。我们强烈建议您使用IAM角色代替。 - Sébastien Stormacq
@SébastienStormacq在主贴中进行了更新。此外,这不是生产代码,凭证将被移动,我只需要在最简单的形式下使其正常工作。 - AndyK
感谢您的更新。假设您的CLI和代码使用相同的凭据,那么您看到的错误消息是正确的:在该区域中没有与该帐户关联的Cognito用户池。如果您从AWS控制台看到Cognito用户池,请问自己“我在哪个区域?”和“与此帐户关联的访问密钥/秘密密钥是什么?” - Sébastien Stormacq
有一个问题。我已经为该IAM用户添加了控制台访问权限,加载了位于us-east-1的Cognito,并且可以查看和编辑用户池。使用相同的IAM用户,为什么我可以通过控制台凭据登录并在控制台中看到它,但无法通过CLI或使用访问密钥/秘密进行编程访问? - AndyK
4个回答

7

看起来这是与现有IAM用户存在的AWS故障。

创建一个具有完全相同权限的新用户后,从CLI和最初问题中的代码都可以正常访问。


1
检查 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 是否与账户匹配。花了我几个小时才发现我使用的是不同的账户。 - Pithikos

2

实际上,您的配置可能是错误的,您下载了 awsconfiguration.json,看起来像我知道的一样...但是这个配置可能是错误的。当您检查 json 时,将看到一个字段.. "CognitoUserPool": {PoolId,appclient id ..}

您需要打开用户池并创建新的客户端或控制现有的客户端信息。使用此网页的池 id、appclient id 等再次检查您的 awsconfiguration.json。更新您的 json...它将解决问题。

enter image description here


0

我在使用AWS CLI时遇到了这个问题,它也让我感到困惑,但我学到了需要在参数列表中提供配置文件名称才能使其正常工作。所以它看起来像这样:

aws cognito-idp admin-get-user --profile dev-account ....

我的配置文件存储在我的 Mac 上,路径为 cat ~/.aws/config| grep profile

该配置文件是由内部自定义脚本创建的。以下是该文件的内容。

[profile dev-account]
sso_start_url = https://yourcompanyname.awsapps.com/start#/
sso_region = us-east-1
sso_account_id = 1234567890
sso_role_name = PowerUserAccess
region = us-east-1
output = json

此外,在这个文件夹中还有一个“凭证”文件,其中包含一些JSON变量:配置文件名称、aws_access_key_idaws_secret_access_keyaws_session_tokenaws_expiration

0
首先,我清除了现有的放大认证代码,然后执行了以下操作: amplify init amplify add auth 我不得不手动编辑(尽管有严重警告说它是自动生成的)aws-exports.js文件,将我的更新后的池ID、Web客户端ID等信息添加进去。由于某种原因,重新创建后新的Cognito信息没有替换掉旧的信息。然后它就正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接