我在Amazon S3中创建了一个存储桶,上传了2个文件并将它们设为公开。 我有链接可以从互联网上的任何地方访问它们。 现在我想对可以下载文件的人进行一些限制。 有人可以帮我吗?我尝试过文档,但被搞糊涂了。
我希望在使用公共链接下载时,它会要求某些凭据或其他方式来验证用户。这可能吗?
我在Amazon S3中创建了一个存储桶,上传了2个文件并将它们设为公开。 我有链接可以从互联网上的任何地方访问它们。 现在我想对可以下载文件的人进行一些限制。 有人可以帮我吗?我尝试过文档,但被搞糊涂了。
我希望在使用公共链接下载时,它会要求某些凭据或其他方式来验证用户。这可能吗?
默认情况下,Amazon S3中的所有对象都是私有的。您可以添加权限以使人们可以访问您的对象。这可以通过以下方式完成:
只要这些方法中至少有一种授予权限,您的用户就可以从Amazon S3访问对象。
1. 单个对象上的访问控制列表
在Amazon S3管理控制台中的“公开”选项会向所有Internet用户授予打开/下载
权限。这可以用于授予特定对象的公共访问权限。
2. 存储桶策略
可以使用存储桶策略来授予整个存储桶或存储桶的一部分的访问权限。还可以用它来指定访问限制。例如,策略可以将存储桶中特定目录对特定IP地址范围、特定时间的用户公开,并且仅在通过SSL访问存储桶时才公开。
存储桶策略是一种良好的方式,用于在不必为每个单独对象指定权限的情况下授予许多对象(例如特定目录)的公共访问权限。这通常用于从S3存储桶提供的静态网站。
3. IAM用户和组
这类似于定义存储桶策略,但是将权限分配给特定用户或用户组。因此,只有这些用户有权访问对象。当访问对象时,用户必须进行身份验证,因此最常用于通过AWS API访问对象,例如使用AWS命令行界面(CLI)中的aws s3
命令。
用户在调用API时,不需要弹出验证窗口,而是必须提供身份验证信息。一种简单的方法是将用户凭据存储在本地配置文件中,当CLI调用S3 API时,自动使用。
4. 预签名URL
预签名URL可用于授予对S3对象的访问权限,作为“覆盖”访问控制的一种方式。通过追加到URL中的到期时间和签名,可以访问通常私有的对象。这是一种非常好的方法,可以在不需要Web服务器的情况下提供私有内容。
通常,应用程序在希望授予对象访问权限时构造预签名URL。例如,假设您有一个照片共享网站,用户已经通过您的网站进行了身份验证。现在,您希望在Web页面中显示他们的照片。这些照片通常是私有的,但您的应用程序可以生成预签名URL,授予它们访问照片的临时权限。预签名URL将在特定日期/时间后过期。