【发布时间】:2019-09-13 06:03:29
【问题描述】:
我想使用 boto3 获取访问 AWS 服务的临时凭证。用例如下:我的 Cognito 用户池中的用户登录到我的服务器,我希望服务器代码为该用户提供访问其他 AWS 服务的临时凭证。
我有一个 Cognito 用户池,用于存储我的用户。我有一个 Cognito 身份池,它不允许未经授权的访问,只允许来自 Cognito 用户池的用户访问。
所以这是我开始的代码:
import boto3
client = boto3.client('cognito-identity','us-west-2')
resp = client.get_id(AccountId='<ACCNTID>',
IdentityPoolId='<IDPOOLID>')
但是,仅仅运行这三行代码就会抛出异常:
botocore.errorfactory.NotAuthorizedException: An error
occurred (NotAuthorizedException) when calling
the GetId operation: Unauthenticated access is not
supported for this identity pool.
由于我的 Cognito 身份池没有设置为未经身份验证的访问,我似乎无法调用 get_id,直到我以某种方式在某处进行身份验证。
我该如何解决这个问题?我究竟需要做什么来进行身份验证才能调用 get_id?
更新:看起来我需要将登录字段和数据传递给 get_id 函数调用,但为此我需要登录 JWT 令牌。如果我在使用 AWS Cognito 预打包登录屏幕的 web 应用程序(例如 Django 后端)中运行它,那么是的,我可以在从成功登录重定向后从主页 URL 获取它。但是现在我正在编写一些与网站无关的测试脚本。有没有办法使用 boto 或 boto3 或其他 python 包使用用户名和密码登录并获取 JWT 令牌?
【问题讨论】:
标签: python boto3 amazon-cognito