如何修复 boto3 中不存在用户池 ********

Kus*_*era 2 python amazon-web-services amazon-cognito boto3

我是AWSboto 3 Python SDK的新手。我通过AWS CLIAccess Key ID配置了、Secret Access Key和。region name

import boto3

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

response = client.admin_get_user(
    UserPoolId='us-east-2_hJpikme9T',
    Username='wasdkiller'
)
Run Code Online (Sandbox Code Playgroud)

这是我的用户池详细信息,

连接池详细信息

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

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

Kus*_*era 5

我们可以在boto3.client(*args, **kwargs)中提供除service_name(默认参数)之外的更多参数。正如您在会话参考中看到的client(),我们可以提供, , , 和 ,而不使用AWS CLIaws_access_key_idaws_secret_access_keyregion_name

如果您使用的是默认参数(例如已通过AWS CLI提供的参数),则无需在调用boto3.client()aws_access_key_id时提及或。但我不知道出于某种原因,您必须提及您在调用boto3.client()时已经通过AWS CLI给出的信息。aws_secret_access_keyregion_name

client = boto3.client('cognito-idp', region_name='us-east-2')
Run Code Online (Sandbox Code Playgroud)

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

  • 您需要手动指定区域,因为默认情况下,Boto3 采用 ~./aws/credentials 文件中提到的区域。在您的情况下,它将不是 us-east-2 。 (4认同)