【发布时间】:2017-12-19 09:27:17
【问题描述】:
我有一个需要能够写入 S3 的嵌入式设备。我想避免给嵌入式设备一个实际的 AWS IAMUser。我正在考虑使用 Cognito 来获得对 S3 的写访问权限。
我有一个用户池,其中包含一个组和一个用户(目前)。该组有一个附加策略,允许访问写入某个 S3 存储桶。设置池以便只有管理员可以创建新用户。我已经设法对 cognito 用户进行身份验证,并且可以访问刷新令牌和 idTokens。我希望使用这些令牌写入我的 s3 存储桶。
我正在尝试遵循文档,但我感到困惑。我认为我需要一个联合身份池,但我不需要公共提供者。我只想让我的 cognito 用户组写入 s3。
是否有一个简单的解决方案允许 cognito 用户在没有联合身份的情况下写入 S3,或者如果没有,我是否需要后端来为联合身份提供令牌?
我一直在使用授权https://github.com/capless/warrant 进行身份验证:
from warrant.aws_srp import AWSSRP
import boto3
client = boto3.client('cognito-idp')
aws = AWSSRP(username='<username>', password='<password>', pool_id='<pool>',
client_id='<clientid>', client=client)
tokens = aws.authenticate_user()
任何提示将不胜感激!
【问题讨论】:
-
您需要调用 STS AssumeRoleWithWebIdentity 以使用 Cognito 令牌来检索您随后用于 S3 的临时 AWS 凭证。顺便说一句,介绍用户池(作为现在称为联合身份池的自我管理替代方案)的原始博客文章很有帮助:aws.amazon.com/blogs/aws/new-user-pools-for-amazon-cognito。不需要 Facebook 等。
标签: amazon-web-services amazon-s3 boto3 amazon-cognito