繁体   English   中英

将 boto3 与临时凭据一起使用

[英]Using boto3 with temporary credentials

我想使用 boto3 将文件上传到 AWS S3。 但我只能临时访问 S3,由不受我控制的网络服务提供。 我获得了以下凭据信息:

    {
        "key": <string>,
        "x-amz-algorithm": <string>,
        "x-amz-credential": <string>,
        "x-amz-date": <string>,
        "policy": <string>,
        "x-amz-signature": <string>
    }

据我所知,这些信息可用于例如 POST 请求。 但我无法找出如何将此信息与 boto3 命令结合使用

s3 = boto3.client('s3')

通常需要aws_access_key_idaws_secret_access_key 此处的这篇文章表明,这应该是可能的:

您应该通过 AWS 安全令牌服务 (STS) 生成临时凭证,而不是签署 URL(通常在通过 web 浏览器进行调用时使用)

[...]

然后,您的 Python 应用程序将在调用 boto 时使用这些凭据

但我无法找到如何为 boto 客户端提供临时凭据。

看起来您已经获得了Amazon S3 预签名 URLs 这是一种授予对特定 Amazon S3 命令的临时访问权限的方法,带有授权请求的散列签名。

虽然访问密钥和密钥用于生成请求,但您无法从请求中提取密钥 (相反,它用于创建签名。)因此,您不能使用 boto3 使用提供的信息发出请求。 这完全是故意的。

使用安全令牌服务生成临时凭证不同于生成预签名的 URL。 STS 将提供可供 boto3 使用的凭据。 但是,在向您提供访问信息时,他们并没有这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM