AWS API网关:提供S3内容和Lambda服务

10

我已经使用 ACM 创建了 SSL 证书。我想要使用此证书来为我的 S3 存储桶中的静态内容和 Lambda 函数提供服务。目前,我希望避免使用 CloudFront,并通过 API Gateway 代理 S3 和 Lambda,以便从单个 SSL 域中提供所有内容(没有 CORS 问题)。

理想情况下,我将调用:

https://my.customdomain.com/ (lambda redirects to /web/index.html)
https://my.customdomain.com/api/* (lambdas)
https://my.customdomain.com/web/* (static content - s3)

上述架构是否合理/可行?


7
请注意,使用单个CloudFront分配来作为您的API和存储桶的前端可以实现完全相同的目标,而且性能更佳,成本显著降低。(API Gateway向S3每百万请求数收取$3.50,而CloudFront仅收取$1.00/MM请求数。) - Michael - sqlbot
这是一个很好的提示,@Michael-sqlbot。这肯定有助于我的决定。谢谢! - KevinB
1
未来的开发人员也要注意,单个AWS账户有200个CloudFront分布和100个S3存储桶的软限制!虽然CloudFront肯定是处理少量站点的答案,但所请求的策略更适合运行许多不同的站点和子域。 - ohsully
1个回答

11

是的,这种架构是可行的。

API网关旨在作为后端服务的“门户”,使其不直接暴露给客户端。与API网关集成的选项之一是Amazon S3。

基本上,您将向S3转发对象键,并使用S3 API调用请求该对象(由API Gateway执行)。 您只需要向API Gateway授予正确的权限并使用适当的凭据进行调用。

您可以在此处找到使其工作所需的信息here


你知道这可以如何在CloudFormation / Serverless中编写吗? - Michal Tsadok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接