【问题标题】:How to programmatically control cogonito user access S3 object如何以编程方式控制 cogonito 用户访问 S3 对象
【发布时间】:2020-05-18 07:53:39
【问题描述】:

背景

我使用 S3 存储付费内容。我的应用程序还使用 Cognito 对用户进行身份验证,并跟踪谁购买了哪些内容。但是如何让 S3 对象只对付费用户开放?

例如:“mybucket/private-content/obj1.pdf”中的对象需要用户 A 可以访问,但用户 B 不能访问,具体取决于购买记录。

我现在可以想到两种解决方案,但都不是理想的。

解决方案 1

将存储桶设为私有。然后在用户购买内容后为对象生成签名 URL。 问题:用户 A 可以购买内容并将签名的 URL 分享给用户 B。用户 B 无需付费即可访问该对象。

解决方案 2 每次用户购买一些内容时,将对象复制到 S3 中的用户文件夹。并使用存储桶策略来限制用户只能访问自己的文件夹。 问题:需要一遍又一遍地复制内容。这会增加我的存储成本。

【问题讨论】:

  • 用户A想分享内容时,可以下载后私信发送。你不能限制它。但是你可以有一个生成URL和限制过期时间的功能

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


【解决方案1】:

使用 CloudFront 签名 URL 和自定义策略找到了一个足够好的解决方案。在自定义策略中,您可以指定可以访问受保护内容的 IP 范围/地址。 这意味着如果一个用户将链接分享给另一个用户,该链接很可能对其他用户无效。

See here

【讨论】:

    猜你喜欢
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    相关资源
    最近更新 更多