首页 > 解决方案 > 授予 s3 中对象的下载权限

问题描述

我编写了一个 lambda 函数,每次运行时都会创建一个名为“report.csv”的文件。与每次运行一样,文件名相同,相同的文件会被更新。(这是想要的)

现在我想通过单击下载按钮下载该文件。

这是下载按钮:

<a href="https://vipauditresult.s3-us-west-2.amazonaws.com/report.csv" download="report.csv">
    <button><Download</button>
</a>

但我无法从 UI 访问该文件。我想我需要在 s3 存储桶中设置一些权限,但我不知道是什么。有人可以帮忙吗??

这是将 report.csv 放入存储桶的 lambda 函数代码:

s3_bucket = 'vipauditresult'
csv_buffer = StringIO()
grid_sizes.to_csv(csv_buffer, sep=",", index=False) //grid_sizes contains the csv data
s3.Object(s3_bucket, 'report.csv').put(Body=csv_buffer.getvalue())  

标签: javascripthtmlamazon-web-servicesamazon-s3

解决方案


我认为最简单的方法是设置一个允许公开读取您的一个文件的存储桶策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicRead",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::vipauditresult/report.csv"
        }
    ]
}

如何添加策略如下所示:

您还必须禁用存储桶的公共访问设置


推荐阅读