我是AWS S3存储桶的新手,我试图设置所有文件的权限以直接下载。我不希望我的视频或图像在浏览器中打开。我只希望它直接下载。
这是设置我的文件权限的方式。
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
是否可以为所有文件设置 Content-Type : application/octet-stream
。
谢谢!
答案 0 :(得分:1)
响应标头与权限无关。
如果要为文件指定特定的Content-Type
或Content-Disposition
标头,则可以在对象元数据中指定它们,如下所示:
在此处查看来自AWS的完整教程:https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-object-metadata.html
例如使用AWS CLI上传文件时,可以同时指定Content-Type
:
aws s3api放置对象[--acl] [--body] --bucket [--cache-control] [--content-disposition] [--content-encoding] [--content-language] [--content-length] [--content-md5] [--content-type ] ...
SDK提供类似的功能。
答案 1 :(得分:0)
据我所知,要么您无法控制即将进入的文件,要么无法修改将内容推送到s3的代码或服务。无论如何,我的选择是实现一个由s3:object触发的lambda,该s3:object使用源和目标相同的AWS.S3:copyobject,但元数据作为响应内容类型的application / octect-stream和response-content处置附件。放置好lambda后,应使用AWS CLI在现有文件上使用新的元数据递归复制现有文件。
更好地参考AWS文档中的lambda和相应的SDK参考。在git上查看AWS存储库,您可能会发现某些东西在同一轨道上。