尝试理解S3...如何限制对上传到S3的文件的访问权限?例如,从Web应用程序中,每个用户都可以上传文件,但如何限制访问权限,以便只有该用户可以访问该文件?似乎查询字符串身份验证需要一个过期日期,这对我来说行不通,是否有其他方法可以实现这一点?
尝试理解S3...如何限制对上传到S3的文件的访问权限?例如,从Web应用程序中,每个用户都可以上传文件,但如何限制访问权限,以便只有该用户可以访问该文件?似乎查询字符串身份验证需要一个过期日期,这对我来说行不通,是否有其他方法可以实现这一点?
有多种方法可以控制对S3对象的访问:
使用查询字符串auth - 但正如您所指出的,这确实需要一个过期日期。您可以将其设置为遥远的未来,对于我所做的大多数事情而言,这已经足够好了。
使用S3 ACLS - 但这要求用户拥有AWS账户并使用AWS进行身份验证才能访问S3对象。这可能不是您要寻找的。
通过您的应用程序代理访问S3对象,从而实现您的访问控制逻辑。这将使所有带宽通过您的服务器。
您可以使用您的代理逻辑设置一个EC2实例 - 这将使带宽更接近S3,并且在某些情况下可以减少延迟。与#3之间的差异可能很小,但这取决于您的具体情况。
您需要在应用程序中构建整个访问S3的逻辑
我也一直在处理这个问题。编写我正在使用的S3 PHP类的Don指出,您可以在存储桶内部使用目录。因此,您可以将文件放在带有随机字符串的目录中,然后重定向到该目录。mybucket.amazon.net/wef49kfe4j409jf4f4f9jdfd/myfile.zip虽然不安全,但您可以通过更改权限或根据需要创建和删除它(在不同的存储桶中安全地保留原始文件)来控制对其的访问。