【发布时间】:2020-11-12 08:53:53
【问题描述】:
我想要完成的是允许 lambda 函数由来自指定 S3 存储桶的请求执行。 API Gateway 用于与 lambda 函数进行通信。我只需要允许使用基于 S3 存储桶的端点。
我可以设置 CORS,但这不是我打算做的。我需要的不仅仅是浏览器安全性。 我所有允许的请求必须仅来自 S3 存储桶。如何在 API Gateway 中创建这样的策略或验证?或者有没有其他方法可以完成这项任务?
我现在解释更多。所以认为我有一个具有静态网站的 S3 存储桶。我也有一个 lambda 函数。现在我的网站想要加载一些数据,所以我正在使用我的 API 网关调用 lambda 函数。 API 现已开放。没有身份验证或 CORS。如果请求仅来自特定的 S3 存储桶,我需要我的 API 网关来允许请求。我们不希望 API 只是开放的。现在 CORS 只是浏览器安全性,所以我们想要的不止这些。我为这个特定的用例搜索了很多,但找不到任何东西。
【问题讨论】:
-
如何让 S3 代表您发出请求?不只是静态内容托管。
-
就目前而言,您要做什么还不是很清楚。是否允许 S3 在将对象上传到该存储桶时触发特定的 Lambda 函数?是否将特定 Lambda 的调用限制为来自给定 S3 存储桶的 S3 事件,并且仅限于该存储桶? API 网关与此有什么关系?
-
@jarmod 我明确表示我正在使用 API 网关来触发我的 lambda 函数,这里不会触发 S3 事件。 S3 没有代表我发出任何请求,它是向 API 网关发送的 http 请求,我们需要 API 网关了解请求的来源。
-
好的,“允许 lambda 函数被来自指定 S3 存储桶的请求执行”是什么意思?您是指从 S3 存储桶中的静态托管内容提供的网页吗?
-
这就是我们使用 API 网关的原因。
标签: amazon-web-services amazon-s3 aws-lambda aws-api-gateway