机器人 s3:制作文件 public

Boto S3: make file public

我正在使用 Boto3 库获取 S3 中文件的下载 link。即使在将文件的 acl 添加到 public-read 之后,我在点击从 generate_presigned_post 响应返回的文件 url 时得到了 "access denied" 响应。

我的boto代码:

client = boto3.client('s3')
response = client.generate_presigned_post(
    Bucket='bucketname',
    Key='filename.csv',
    Fields={
        'acl': 'public-read'
    },
    ExpiresIn=3600)

如何使这个 s3 文件可供下载?

当您生成 presigned-post 时,您会创建一个唯一的 url,可用于 POST(上传)文件到一个 s3 桶。

如果您想获取文件,您应该发出 GET 请求。

如果存储桶是"public read",则不需要生成任何预签名请求

我还没有测试过这个,但我想这可以用来下载文件:

key = bucket.get_key('filename.csv')
key.get_contents_to_filename('local_filename.csv')

如果您想创建一个下载 link 供其他人使用,请生成 presigned GET 请求.