如何在Python中使用临时令牌从s3存储桶下载文件

最高

我有一个django网络应用程序,我想允许它从我的s3存储桶下载文件。这些文件不是公开的。我有一个IAM策略可以访问它们。问题是,我希望下载Django应用程序服务器上的文件,然后将其用于下载客户端。就像下载两次一样。我希望能够直接在django应用程序的客户端上下载。另外,我认为在http请求中传递IAM凭据并不安全,因此我认为我需要使用临时令牌。我读过:http : //docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html

但我只是不明白如何动态生成临时令牌。python解决方案(也许使用boto)将不胜感激。

安蒂·哈帕拉(Antti Haapala)

使用Boto(2),如果您的IAM策略具有适当的权限,生成具有时间限制的下载URL应该非常容易。我正在使用这种方法从专用S3存储桶向登录用户提供视频。

from boto.s3.connection import S3Connection
conn = S3Connection('<aws access key>', '<aws secret key>')
bucket = conn.get_bucket('mybucket')
key = bucket.get_key('mykey', validate=False)
url = key.generate_url(86400)

这将为foo给定存储桶中的密钥生成一个下载URL ,该URL有效期为24小时(86400秒)。如果没有validate=FalseBoto 2,则将首先检查该密钥实际上是否在存储桶中,如果不存在,则将引发异常。使用这些服务器控制的文件,通常是不必要的额外步骤,因此validate=False在示例中


在Boto3中,API完全不同

s3 = boto3.client('s3')

# Generate the URL to get 'key-name' from 'bucket-name'
url = s3.generate_presigned_url(
    ClientMethod='get_object',
    Params={
        'Bucket': 'mybucket',
        'Key': 'mykey'
    },
    expires=86400
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:如何从 S3 存储桶下载文件

如何在不使用AWS CLI的情况下使用S3专用存储桶下载文件

使用Python在未经身份验证的公共S3存储桶上下载文件

Javascript从亚马逊S3存储桶下载文件?

无法从S3存储桶下载文件

如何根据文件修改日期从s3存储桶下载文件?

如何使用Boto3创建预签名URL以从S3存储桶下载文件?

如何在python中使用boto3从给定文件路径的s3下载文件

使用boto3从S3存储桶下载文件时出现ValueError吗?

如何使用python不管文件密钥如何从S3存储桶下载所有文件

如何使用未经身份验证的用户从Swift中的AWS S3存储桶下载文件

如何生成 URL 以从 S3 存储桶下载文件

使用 .net SDK 从 Amazon S3 存储桶下载文件夹

下载文件名与存储桶密钥不同的S3文件

从S3存储桶+文件夹下载文件

通过 AWS SDK 从 AWS S3 存储桶下载文件会损坏文件

如何在Django中从S3存储桶下载媒体文件

设置权限后,为什么不能从s3存储桶下载文件?

使用 python boto 仅下载 S3 存储桶中的特定文件夹

使用python从S3存储桶下载后加载的pickle文件出现问题

使用 python pysftp 从 sftp 下载文件并直接存储在 AWS S3

如何在 Lambda 函数中使用存储桶标签对 s3 存储桶 ACL 采取行动

使用Python从AWS S3下载文件

如何生成安全的临时URL以从Amazon S3下载文件?

如何在S3存储桶中使用Akamai infront?

如何在动态Amazon S3存储桶中使用Django FileField?

在Python中使用ARN iam将文件上传到Amazon s3存储桶

从带有boto3的AWS S3存储桶下载文件导致ClientError:发生错误(403):禁止

如何在python中使用Selenium下载文件?