如何使上传到 S3 存储桶的对象可读而无需明确设置其权限

如何使上传到 S3 存储桶的对象可读而无需明确设置其权限

我想使上传到 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 地址的读取访问。

希望有帮助:)

相关内容