【问题标题】:Using boto3 with temporary credentials将 boto3 与临时凭据一起使用
【发布时间】:2019-10-20 07:03:36
【问题描述】:

我想使用 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。 这篇帖子here 建议,这应该是可能的:

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

[...]

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

但我不知道如何为 boto 客户端提供临时凭据。

【问题讨论】:

    标签: python amazon-web-services boto3


    【解决方案1】:

    您似乎获得了Amazon S3 pre-signed URLs。这是一种授予对特定 Amazon S3 命令的临时访问权限的方法,带有授权请求的散列签名。

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

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

    【讨论】:

    • 感谢您提供此信息。我曾想过类似的事情,但我想知道,是否仍然可以将 boto3 与这个预签名的 URL 一起使用。
    • 不,不能和boto3一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 2012-08-20
    • 2019-01-19
    • 2017-06-27
    • 2022-01-22
    相关资源
    最近更新 更多