关于如何仅由用户的朋友查看用户上传的图片,我遇到了头脑风暴问题。
所以我到目前为止提出的是:
为每个用户创建一个DynamoDB表,其中添加了动态友好/新朋友列表。
为每个用户上传的图片生成签名网址。
允许访问DynamoDB表中列出的每个朋友的签名URL,以查看设置图片。
这听起来不错吗?另外,我在技术上只有一个桶用于所有用户上传的图片吗?关于我的设计的一些声音听起来......
有人能给我一个关于如何通过Java实现这个目标的快速教程吗?
答案 0 :(得分:1)
有两种基本方法:
Amazon S3中的权限
您可以提供凭据(通过IAM或Amazon Cognito),允许用户访问Amazon S3存储桶中的特定路径。例如,每个用户都可以在存储桶中拥有自己的路径。
您的应用程序将生成包含签名的URL,这些签名将其标识为特定用户,而Amazon S3将授予对对象的访问权。
此方法的一个好处是您可以向用户提供AWS凭据,他们可以直接与AWS 进行交互,例如使用AWS Command-Line Interface (CLI)上传/下载文件而无需总是通过你的申请。
Amazon S3中对象的应用程序控制访问
在此方案中,用户在Amazon S3中没有权限。相反,每次您的应用程序希望生成S3中对象的URL(例如,在<img>
标记中)时,您创建了预签名URL 。这将在有限的时间内授予对象的访问权限。它只需要几行代码即可在应用程序中完成,无需与AWS通信即可生成URL。
无需存储预先签名的网址。它们是即时生成的。
这种方法的好处是您的应用程序可以完全控制他们可以访问的对象。朋友可以与其他用户共享图片,并且应用程序将授予访问权限,而第一种方法仅授予对用户特定路径内的对象的访问权。