Cos*_*dis 9 amazon-cloudfront amazon-web-services amazon-api-gateway
我将我网站的静态资产放在 S3 上,并设置 CloudFront 来分发它们。这些本质上包含用户在我的站点上的任何 GET 请求所需的内容,即现有路径,即包含错误的包罗万象。
我还有一些 POST 请求需要处理。表单提交、发送电子邮件、通知、与数据库交互。
我如何为同一域与 CloudFront 并排设置 Lambda(或 API 网关),以便 CloudFront 处理 GET 请求,而 API Gateway 处理带有正文或 POST 请求的请求。或者我可以以某种方式通过单个 URL 来完成吗?
您可以创建一个 lambda 函数,设置 API 网关,然后配置 CloudFront 以将某些路径(例如 /rest/*)转发到 API 网关,并提供来自 S3 存储桶的所有其他内容。
这是一个完整的演练,展示了如何执行此操作:https : //www.codeengine.com/articles/process-form-aws-api-gateway-lambda/
小智 2
我完全按照您提出的设计运行了多个 Web 应用程序,并提取了gofaas(一个 Go 和 Lambda 教育应用程序)来分享这些技术。
您需要两个单独的域,例如www.gofaas.net用于 S3 + CloudFront 和api.gofaas.netAPI Gateway + Lambda。
然后,您可以让您的静态站点通过 API Gateway CORS 配置和一些 JavaScript 与 API 进行交互:
fetch(`https://api.gofaas.net/work`, {
method: "POST",
mode: "cors",
headers: {
"Accept": "application/json",
...
},
body: JSON.stringify(...)
})
.then(function(response) {
return response.json();
})
.then(function (json) {
// use response
})
.catch(function (err) {
console.log("fetch error", err);
});
Run Code Online (Sandbox Code Playgroud)
以下是一些设置指南:
使用 Lambda、API 网关、CORS 和 JWT 实现 API 安全
| 归档时间: |
|
| 查看次数: |
14917 次 |
| 最近记录: |