【问题标题】:Best way to enable protected access to AWS S3 bucket with lambda authorizer or Cognito使用 lambda 授权方或 Cognito 启用对 AWS S3 存储桶的受保护访问的最佳方式
【发布时间】:2021-07-01 09:28:14
【问题描述】:

设计简单,我把Json保存到S3(不公开访问),客户端发请求给lambda,lambda抓取,发回去。

我想知道我是否可以删除这个 lambda 层,让客户端直接访问 S3 存储桶,使用 cognito 用户池或 lambda 授权器授权请求,

例如,客户端发送请求请求访问带有Authorization标头的存储桶A,触发lambda授权,如果通过,访问,如果失败,401错误。

有可能吗?或者什么是最壁橱方式来做到这一点?搜索了很多,没有任何运气。

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda


    【解决方案1】:

    最简单的方法是使用 S3 预签名 URL。您可以使用预签名 URL 生成可用于访问 S3 存储桶的 URL。创建预签名 URL 时,会将其与特定操作相关联。您可以共享 URL,任何有权访问它的人都可以执行嵌入在 URL 中的操作,就像他们是原始签名用户一样。该 URL 将过期,并在其到期时不再有效。

    然后您可以创建一个 Lambda 函数,该函数会为您的用户生成预签名 URL,然后让他们访问您的 S3 数据。相同的 lambda 可用于执行身份验证,例如,通过使用 Cognito。

    最好, 斯蒂芬

    【讨论】:

    • 非常感谢,但这是否意味着如果授权用户与未授权用户共享 URL,则预签名 URL 仍然适用于未授权用户?
    • 是的,任何人都可以使用预签名的 URL,只要它没有过期。
    • 理论上是可以的,但是你可以控制 URL 有效的时长。 URL 过期后,任何人都无法使用它来访问 S3 对象。
    猜你喜欢
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2021-03-19
    • 2021-09-13
    • 1970-01-01
    • 2021-08-15
    • 2020-08-22
    相关资源
    最近更新 更多