S3 Bucket签名URL以授予对图片的访问权限

时间:2017-07-29 17:50:33

标签: java amazon-web-services amazon-s3

关于如何仅由用户的朋友查看用户上传的图片,我遇到了头脑风暴问题。

所以我到目前为止提出的是:

  1. 为每个用户创建一个DynamoDB表,其中添加了动态友好/新朋友列表。

  2. 为每个用户上传的图片生成签名网址。

  3. 允许访问DynamoDB表中列出的每个朋友的签名URL,以查看设置图片。

  4. 这听起来不错吗?另外,我在技术上只有一个桶用于所有用户上传的图片吗?关于我的设计的一些声音听起来......

    有人能给我一个关于如何通过Java实现这个目标的快速教程吗?

1 个答案:

答案 0 :(得分:1)

有两种基本方法:

  • Amazon S3中的权限,或
  • Amazon S3中对象的应用程序控制访问

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。

无需存储预先签名的网址。它们是即时生成的。

这种方法的好处是您的应用程序可以完全控制他们可以访问的对象。朋友可以与其他用户共享图片,并且应用程序将授予访问权限,而第一种方法仅授予对用户特定路径内的对象的访问权。