Java 如何在AmazonS3上管理不同的用户文件?

Java 如何在AmazonS3上管理不同的用户文件?,java,amazon-web-services,amazon-s3,Java,Amazon Web Services,Amazon S3,假设我正在构建一个文件上传服务,只希望User1在请求时看到User1文件,User2看到User2文件,等等 我可以上传文件,但我只想允许登录用户访问他/她的文件。我是在网站上创建自定义IAM用户的同时在AWS上创建自定义IAM用户,还是使用预先签名的URL 不太清楚这是怎么回事 我不会让用户直接访问AWS S3 API,因此我不会为您的每个用户创建IAM用户帐户。我建议将每个用户的文件保存在用户ID的前缀下,只是为了便于清理旧用户、确定每个用户使用的空间等 为了让用户能够访问他们的文件,我绝

假设我正在构建一个文件上传服务,只希望User1在请求时看到User1文件,User2看到User2文件,等等

我可以上传文件,但我只想允许登录用户访问他/她的文件。我是在网站上创建自定义IAM用户的同时在AWS上创建自定义IAM用户,还是使用预先签名的URL


不太清楚这是怎么回事

我不会让用户直接访问AWS S3 API,因此我不会为您的每个用户创建IAM用户帐户。我建议将每个用户的文件保存在用户ID的前缀下,只是为了便于清理旧用户、确定每个用户使用的空间等


为了让用户能够访问他们的文件,我绝对建议在用户需要上传或下载文件时,在应用程序中生成预签名URL。

我不会让用户直接访问AWS S3 API,因此我不会为您的每个用户创建IAM用户帐户。我建议将每个用户的文件保存在用户ID的前缀下,只是为了便于清理旧用户、确定每个用户使用的空间等


为了让用户能够访问他们的文件,我绝对建议在用户需要上传或下载文件时,在应用程序中生成预先签名的URL。

通常您管理应用程序中的权限–因此您拥有自己的数据库,其中包含有关哪个S3文件属于哪个用户、元数据等的信息

您需要的唯一IAM用户就是您的应用程序。您不会将AWS/IAM访问密钥提供给任何人


当用户想要下载文件时,您会给他们预先指定的S3URL。或者S3文件可以公开读取,如果您的用例允许的话,您只需给它们URL即可

通常您管理应用程序中的权限–因此您拥有自己的数据库,其中包含有关哪个S3文件属于哪个用户、元数据等的信息

您需要的唯一IAM用户就是您的应用程序。您不会将AWS/IAM访问密钥提供给任何人


当用户想要下载文件时,您会给他们预先指定的S3URL。或者S3文件可以公开读取,如果您的用例允许的话,您只需给它们URL即可

所以当他们登录时,我会为他们上传的每个文件逐个生成一个预签名的URL,这样他们就可以检索这些文件了?@johnlipson不,你只为他们想下载的文件生成预签名的URL–当需要时。所以你给他们的URL不是S3,而是你的应用程序,当他们点击时,你的应用程序生成预签名的url并将它们重定向到此url。实际上,生成预签名的url非常容易。当web应用程序生成web页面时,页面上的链接可以是预先签名的URL。因此,当他们单击它们时,他们直接从AmazonS3访问对象。但是,链接在一段时间后(如15分钟)过期,因此他们需要返回应用程序以获取新链接。因此,当他们登录时,我会为他们上载的每个文件逐个生成一个预先签名的URL,以便他们能够检索这些文件?@johnlipson No,你只为他们想要下载的文件生成预签名的URL–当需要时。因此,你给他们的URL不是S3,而是你的应用程序,当他们单击它时,你的应用程序生成预签名的URL并将其重定向到此URL。实际上,生成预签名的URL非常容易。当web应用程序生成web页面时,页面上的链接可以是预先签名的URL。因此,当他们单击它们时,他们直接从AmazonS3访问对象。然而,链接在一段时间后(如15分钟)过期,因此他们需要返回应用程序以获得新的链接。