需要从API公开Amazon S3存储桶

问题描述 投票:0回答:1

我已经在这个问题上花费了一个多星期,而Amazon没有提供任何资源可以为我解决这个问题。我建立了一个自定义CMS,允许成千上万的用户上传自己的文件。这些文件需要迁移到CDN,因为它们开始使文件系统的容量接近50GB。我已经集成了Amazon的S3 PHP SDK。我的应用程序必须能够执行以下操作:

  1. 通过API,而不是通过控制台创建和删除存储桶。可以了
  2. 再次通过控制台显式对上传到存储桶的文件执行所有CRUD操作。正在创建和删除文件。
  3. 作为CRUD的一部分,这些文件必须是HTTP / HTTPS可读的,因为它们是Web应用程序中的必需资产。由于默认情况下存储桶未公开,所有这些都注册为“访问被拒绝”。

据我所知,CDN的意义在于可以通过网络交付内容。我需要了解如何在不使用控制台的情况下使这些文件在Web应用程序中可见,因为这些存储桶将由用户动态创建,并且要求管理员手动更新它们是一个破坏者。

如果有人帮助我解决这个问题,我将不胜感激。

amazon-web-services amazon-s3 public bucket
1个回答
0
投票
默认为私有。如果要使对象

public(意味着世界上每个人都可以访问),则有两种方法:

[上传对象时,将它们标记为ACL=public-read。此访问控制列表将使对象本身成为公共的。
    OR
  • 向存储桶添加存储桶策略
,这将使
  • 整个存储桶(或,如果需要,存储桶的一部分)公开。
  • 来自Bucket Policy Examples - Amazon Simple Storage Service{ "Version":"2012-10-17", "Statement":[ { "Sid":"PublicRead", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::examplebucket/*"] } ] }

    这样的策略可以在使用putBucketPolicy()创建存储桶之后添加。

    此外,请注意,

    Amazon S3 Block Public Access

    默认在存储桶上处于打开状态,以防止公开私人内容。上面的方法将要求关闭此块。可以通过putBucketPolicy()putPublicAccessBlock()以编程方式完成。
    © www.soinside.com 2019 - 2024. All rights reserved.