我已经在这个问题上花费了一个多星期,而Amazon没有提供任何资源可以为我解决这个问题。我建立了一个自定义CMS,允许成千上万的用户上传自己的文件。这些文件需要迁移到CDN,因为它们开始使文件系统的容量接近50GB。我已经集成了Amazon的S3 PHP SDK。我的应用程序必须能够执行以下操作:
据我所知,CDN的意义在于可以通过网络交付内容。我需要了解如何在不使用控制台的情况下使这些文件在Web应用程序中可见,因为这些存储桶将由用户动态创建,并且要求管理员手动更新它们是一个破坏者。
如果有人帮助我解决这个问题,我将不胜感激。
public(意味着世界上每个人都可以访问),则有两种方法:
[上传对象时,将它们标记为ACL=public-read
。此访问控制列表将使对象本身成为公共的。 {
"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()
以编程方式完成。