我的目的是在 Amazon API Gateway 上创建一个 HTTP API,通过 S3 API 使用 PutObject 操作将文件写入 S3(中间不调用 Lambda)。这是 PutObject 请求语法:https ://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject_RequestSyntax
我不确定这在技术上是否可行,并且我在 Postman 中收到 403 Forbidden: ForbiddenException 响应。
到目前为止,我有:
- 创建了 S3 存储桶(配置了 CORS)
- 在 API Gateway 中创建了 HTTP API(配置了 CORS),并带有“putObject”POST 操作
- 将 HTTP API 上的集成配置为 https://[s3-bucket-name].s3.us-east-1.amazonaws.com
- 创建对 HTTP API 'invoke URL' 的 Postman 请求,并在标头上设置 'Host' 和 'x-apigw-api-id'
ForbiddenException 显然表明存在权限问题,无论是在 HTTP API 上还是在其背后的 S3 API 上。我确实在 HTTP API 上配置了一个 Cloudwatch 日志组,它没有显示任何条目,所以这似乎是一个 HTTP API 访问问题。
我还怀疑我需要将参数映射添加到 HTTP API 以将所有必要的标头传递给 S3 putObject 操作。
我的问题是:
- 这种类型的 HTTP API 是否可以直接与 S3 集成?
- 服务的 403 Forbidden 响应的可能原因是什么?
- 我会在 HTTP API 集成配置中使用“附加”参数映射来添加标准 S3 API 参数(并避免将它们暴露给客户端)吗?