首页 > 解决方案 > S3 存储桶对象可以用作 HTTP API 端点吗?

问题描述

我不想要有关存储桶的信息,我希望能够使用查询字符串搜索存储桶对象 (CSV/JSON) 并返回结果。例如,发送请求到:

https://s3.amazonaws.com/my_bucket/my_folder/my_csv.csv/querys3?index=432

我目前正在尝试使用 AWS API Gateway 进行此操作。我知道可以创建一个使用 AWS Lambda 和 get_object_content 查询的 API 网关,但我认为如果可以简单地将存储桶用作可搜索的 HTTP 端点,这将是一个不必要的步骤。这个评价正确吗?如果是这样,这是我的问题 -

我设置了一种在 AWS API Gateway 上使用 HTTP 集成的测试方法,并使用该方法和一个搜索参数得到以下响应:

Status: 200 
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message> 
<RequestId>#requestid</RequestId><HostId>#hostid=</HostId>
</Error>

不确定我是否收到拒绝访问消息,因为我正在查询无法查询的内容,或者我只是不正确地执行此操作。

是否可以使用 S3 存储桶对象作为可以将查询字符串传递到的端点?

标签: restamazon-web-servicesamazon-s3aws-api-gateway

解决方案


是否可以使用 S3 存储桶对象作为可以将查询字符串传递到的端点?

不是真的,至少不是直接的。

AWS S3 实际上是一个简单的键/值存储,其中文件名是键,内容是值(好的,还附加了一些元数据)。因此 AWS S3 可能只返回存储的二进制内容或其子集(从..到的字节),不提供任何自定义(REST 服务)逻辑。

您可能仍然可以查看 AWS Athena https://aws.amazon.com/athena/以使数据可搜索事实上您可以创建一个 lambda 或其他服务来读取数据并评估读取内容的查询,但这就是AWS Athena 可以


推荐阅读