在我们的网站上,我们希望添加上传个人文件的可能性。这些文件应该是非公开的,并且可以选择与网站上的其他人共享。我曾经为另一个项目构建了类似的功能,在该项目中我将文件存储在服务器上的 MongoDB 实例中。这使我们能够为每个文件构建细粒度的可访问性规则。然而,对于这个项目,我们希望将文件存储在 Amazon S3 上。现在我想知道如何使用 S3 构建类似的可访问性规则。
我之前在S3上存储过文件,但那些只是公共文件。由于这些文件仅限于一个特定用户(或与这些文件共享的用户),我不确定如何使用 S3 来做到这一点。我在互联网上搜索,找到了一些有关定义用户策略的信息。然而,这些政策基于 S3 用户,而不是我的网站用户。所以我真的找不到执行此操作的标准方法(或者也许我正在寻找错误的单词)。
有没有一种方法可以要求 S3 上的文件提供特定的秘密(可能在 url 中)?或者还有其他标准方法可以实现这一目标吗?
如果您对 S3 用于内容存储感到满意,您可以查看 AWS CloudFront CDN 和 API 来提供访问控制。 Cloud Front 很乐意使用 S3 存储桶作为私有源,并提供签名 URL 来授予临时访问权限。
您可以通过编程方式从指向 s3 中资源的代码生成一个 Cloudfront URL,它将强制执行您提供的策略。该 URL 根据各种标准(如
IpAddress
和 DateLessThan
)提供临时访问。这些可用于动态构造仅限于特定 IP(即当前用户 IP)的 url,并且仅在特定日期/时间之前有效。
A signed URL includes additional information, for example, an expiration date and time, that gives you more control over access to your content. This additional information appears in a policy statement, which is based on either a canned policy or a custom policy.
请参阅 AWS 文档:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html