【问题标题】:How to fix user pool ******** does not exist in boto3如何修复boto3中不存在用户池********
【发布时间】:2019-10-27 17:04:12
【问题描述】:

我是 AWSboto 3 Python SDK 的新手。我配置了Access Key IDSecret Access Keyregion nameAWS CLI

import boto3

client = boto3.client('cognito-idp')

response = client.admin_get_user(
    UserPoolId='us-east-2_hJpikme9T',
    Username='wasdkiller'
)

这是我的user pool 详细信息,

我提供了正确的UserPoolId,但是当我运行上面的代码示例时,CognitoIdentityProvider 中的每个函数都出现以下错误,例如我使用了admin_get_user(**kwargs)

ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the AdminGetUser operation: User pool us-east-2_hJpikme9T does not exist.

【问题讨论】:

    标签: python amazon-web-services boto3 amazon-cognito


    【解决方案1】:

    我们可以在boto3.client(*args, **kwargs) 中提供除service_name(默认参数)之外的更多参数。正如您在Session Reference 中看到的client(),我们可以在不使用AWS CLI 的情况下提供aws_access_key_idaws_secret_access_keyregion_name

    如果您使用的是默认参数,例如您已经通过AWS CLI 提供的参数,那很好,您在调用boto3.client() 时无需提及aws_access_key_idaws_secret_access_key。但我不知道出于某种原因你必须提及你的region_name,这是你在调用boto3.client() 时已经通过AWS CLI 提供的。

    client = boto3.client('cognito-idp', region_name='us-east-2')
    

    这样我就解决了我上面的问题。但是我仍然不知道为什么我们在调用boto3.client()时必须特别提及region_name参数,如果您对此有所了解,请更新此答案或在下方评论。

    【讨论】:

    • 您需要手动指定区域,因为默认情况下,Boto3 采用 ~./aws/credentials 文件中提到的区域。在您的情况下,它可能不是 us-east-2。
    • 哦,感谢@ArkaMukherjee,我得到了它,在我的~/.aws/credentials 文件中没有region 变量。但我可以看到它在~/.aws/config
    【解决方案2】:

    我有同样的错误。另一种选择是在区域 us-east-1 中创建用户池。我这样做了,并且 cognito 身份验证成功。

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2019-05-28
      • 2021-04-18
      • 2022-07-28
      • 2019-07-02
      • 2018-12-01
      • 2021-02-09
      • 1970-01-01
      • 2021-10-24
      相关资源
      最近更新 更多