我想使上传到 S3 存储桶的对象可读,而无需明确设置其权限。
我发现有关 Digital Ocean S3 的相关讨论是这里。
正如上述和其他讨论中所述,我能够找到设置权限的解决方案仅当您上传文件时。
在我的场景中,一组使用专有软件的网络摄像头每分钟都会上传图像文件,因此我无法管理权限的设置方式。
我如何才能bucket/image.jpg
定期(比如说每 10 分钟)批量更新我的读取权限?
我需要一个云存储来存储非常大的图像数据库,并且让每个图像都可以通过脚本读取,以便显示在网络界面上。
到目前为止,我考虑在 S3 浏览器软件上安排命令行任务,但是似乎只有上传、下载和同步是允许的命令。
有没有我错过的使用 S3 API 的方法,或者您可以建议使用与 S3 云对象存储不同的方法?欢迎提出所有建议。
答案1
最简单的解决方案是创建一个桶策略授予s3:GetObject
您上传文件夹中的所有图像。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*", ## This grants public access - update to your needs
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::your-bucket-name/some-folder/*"
}
]
}
这样,隐式s3:GetObject
策略将应用于您的图像,s3://your-bucket-name/some-folder/*
并且消费者可以访问它们。
但请注意,上述政策使得图像公开可读Condition
这可能不是您想要的。我建议至少通过可以作为上述策略一部分的方法来限制客户端 IP 地址的读取访问。
希望有帮助:)