我的水桶应该公开用于我的用例吗?我应该如何避免不良做法



我是AWS工具的新手,尽管我试图彻底搜索答案,但我没能找到解决方案。

我的用例是:我有一个水桶,我需要在那里存储图像,通过我的服务器上传,但我需要在我的网站上显示它们。

我的水桶应该公开吗?如果没有,我应该怎么做才能让每个人都能阅读这些图像,但不能从不是我的服务器的来源大规模上传?

如果您希望您的网站可以公开访问这些图像,那么这些对象需要是公共的。

这可以通过创建Bucket策略来实现,该策略使整个Bucket或Bucket的一部分可以公开访问。

或者,在上传图像时,您可以使用ACL='public-read',即使bucket不是公共的,它也会使单个对象成为公共对象。通过这种方式,您可以对bucket中哪些内容是公共的进行更细粒度的控制。

这两个选项都要求您关闭S3块公共访问的部分,以允许Bucket策略或ACL。

当您的服务器上传到S3时,它应该使用Amazon S3 API调用,使用来自IAM用户的一组AWS凭据(访问密钥、密钥(。授予IAM用户将对象放入存储桶的权限。通过这种方式,该软件可以完全独立地上传到bucket中,以确定bucket是否是公共的。(永远不要让一个bucket公开可写/可上传,否则人们可以在没有你控制的情况下存储任何东西。(

通过我的服务器上传它们,但我需要在我的网站上显示它们。

在这种情况下,只有您的服务器才能上传图像。因此,如果您在EC2或ECS上托管web应用程序,那么您可以使用实例角色和任务角色来提供S3写访问。

我的bucket应该是公共的吗?

不必这样。CloudFront通常用于使用OAI托管S3中的图像或文件。这样,你的水桶就可以完全保密。

最新更新