【问题标题】:Download file redirecting from Amazon S3 to Client下载从 Amazon S3 重定向到客户端的文件
【发布时间】:2016-11-21 18:01:46
【问题描述】:

我是 Amazon S3 的新手,我想构建一个可能不存在的解决方案。

我必须构建一个用户登录和下载文件的 Web 应用程序(Java 或 PHP 后端)。 Web 服务器(Tomcat 或 Apache)验证用户并允许从 Amazon S3 下载。 当我使用 CMS 时,文件很小,请求也很少。所以,流程是:

Client (User) > Server (user validation) > CMS (get file) > Server > Client (User)

现在,文件更大了,我想获得下一个流程:

Client (User) > Server (user validation) > Amazon S3 > Client (User)

我的目标是提高我的服务器的性能并避免在用户获取文件时产生过多的文件流量。 可能吗?

我的第一个方法(尚未实现!)是从我的服务器发送重定向到 Amazon S3:

用户请求/file1 => 服务器将/file1“翻译”为/company.s3.amazon/mybucket/file1.pdf,并将发送重定向到 Amazon S3 链接。

使用这种方法,我认为我无法验证 IAM 用户(我不使用任何 API),但我也认为我可以使用按服务器 IP 地址过滤的存储桶策略来保护内容。

谢谢。

【问题讨论】:

    标签: amazon-web-services amazon-s3 http-headers aws-sdk


    【解决方案1】:

    我建议使用Pre-Signed URL,这是一种提供对存储在 Amazon S3 中的私有对象的临时访问的方法。

    预签名 URL 包括:

    • 文件网址
    • 与有权获取文件的用户关联的访问密钥
    • 过期时间戳
    • 基于授权用户的密钥(与其访问密钥匹配)的散列签名

    预签名 URL 可以通过几行代码生成,并且仅在将 GET 请求发送到 Amazon S3 时才评估

    当您的应用程序(在服务器上)确定用户有权访问文件时,它可以生成预签名的 URL 并将其作为网页的一部分返回(例如,在超链接)。当用户单击该链接时,该文件将直接在 S3 之外提供。到期后,该 URL 将不再提供对文件的访问权限。

    【讨论】:

    • 感谢您的回答。我想我必须在我的 webapp 中使用这两种解决方案。
    猜你喜欢
    • 1970-01-01
    • 2019-03-04
    • 2016-02-02
    • 2017-07-23
    • 2018-07-05
    • 2023-03-13
    • 2018-08-25
    • 1970-01-01
    相关资源
    最近更新 更多