AWS HTTP API 网关作为私有 S3 存储桶的代理

AWS HTTP API Gateway as a proxy to private S3 bucket

我有一个包含许多小文件的私有 S3 存储桶。我想使用 AWS API 网关作为代理公开存储桶的内容(仅限只读访问)。 S3 存储桶和 AWS API 网关属于同一个 AWS 账户并且在同一个 VPC 和可用区中。

AWS API 网关有两种类型:HTTP API、REST API。 REST API 的配置选项更高级,此外,REST API 比 HTTP API 支持更多的 AWS 服务集成。事实上,我上面描述的用例完全涵盖在 REST API 的 the documentation tabs 之一中。然而,REST API 有一个巨大的缺点——它比 HTTP API 贵了大约 70%,价格带有更多的配置选项,但就目前而言,我只需要一个——与 S3 服务集成这就是为什么我认为这种类型的服务不太适合我的用例。我开始搜索 HTTP API 是否可以与 S3 集成,到目前为止我还没有找到任何实现它的方法。

我尝试了 creating/editing 与 HTTP API 网关实例关联的服务相关角色,但无法编辑这些角色(仅限只读访问)。至于现在,我不知道下一步应该搜索哪里,或者我的目标是否可以使用 HTTP 实现 API.

我是 AWS HTTP API 的粉丝。 我每天都使用一个 API,它的用途非常相似。我这样做的方法是使用与 APIs 路径集成的 AWS Lambda 函数。

对我有用的是:

定义您的 API 路径,并将它们与 AWS Lambda 函数集成。

让您的集成 Lambda 函数 return 为您希望通过 API 调用提供访问权限的任何对象签名 URL。

有几种不同的方法可以将您想要的对象的名称传递给服务于 API 调用的 Lambda 函数。

这是简短的回答。我计划稍后给出更长的答案。但这对我有用。