在我们的网站上,我们希望添加上传个人文件的可能性。这些文件应该是非公开的,并且可以选择与网站上的其他人共享。我曾经为另一个项目构建了类似的功能,我将文件存储在服务器上的MongDB实例中。这使我们能够为每个文件构建细粒度的可访问性规则。但是,对于此项目,我们希望将文件存储在Amazon S3上。现在我想知道如何使用S3构建类似的可访问性规则。
我以前在S3上存储过文件,但那些只是公共文件。由于这些文件仅限于一个特定用户(或与文件共享的用户),我不确定如何使用S3。我搜索了互联网,并找到了一些关于定义用户政策的信息。这些策略基于S3用户,而不是基于我的网站用户。所以我真的找不到这样做的标准方法(或者我可能正在寻找错误的单词)。
有没有办法可以在S3上为文件要求特定的秘密,可能在网址中?或者还有其他标准方法来实现这一目标吗?
欢迎所有提示!
答案 0 :(得分:3)
如果您对内容存储区的S3感到满意,可以查看AWS CloudFront CDN和API以提供访问控制。 Cloud Front将乐意使用S3存储桶作为私有源,并提供签名URL以授予临时访问权限。
您可以从代码中以编程方式生成指向s3中资源的云端URL,它将强制执行您提供的策略。该网址根据if (!isset($_SESSION['language']) || isset($_GET['language'])) {
if (isset($_GET['language']) && !empty($_GET['language']) && $OSCOM_Language->exists($_GET['language'])) {
$OSCOM_Language->set($_GET['language']);
}
$_SESSION['language'] = $OSCOM_Language->get('code'); // default language
}
和IpAddress
等各种条件提供临时访问权限。这些可以用于动态构建限于特定IP(即当前用户IP)的URL,并且仅在特定日期/时间之前有效。
DateLessThan
请参阅AWS文档:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html