Lightsail与Lambda + S3

mas*_*565 1 amazon-s3 amazon-web-services cors aws-lambda amazon-lightsail

可能听起来像一个奇怪的问题,但在这里忍受我.

我需要建立一个小型的Web项目.为了使其免费,我将在S3上作为静态站点托管前端部分,并通过对lambda函数中托管的REST API进行AJAX调用来调用服务器端函数.我之前已经为自己做了一个webapp,但是我记得它在发生交叉原始请求时引起了复杂化,最后我决定使用JSONP.这个设置有问题吗?我听说JSONP可能是一个安全问题,这个新网站是供公众使用的.

我的替代设置是在承载站点和后端的lightail上构建服务器.显然,这可能是更正确的做事方式,但稍微多一些钱.

哪种方法可能是更好的选择?

附加问题:是否可以设置CORS,因此我不必使用JSONP进行跨源请求?我对CORS有点不熟悉.

Mic*_*bot 6

哪种方法可能是更好的选择?

我打算假装你没有问过,因为没有"正确"的答案 - 这是主观的,而且有很多因素,其中一些是基于意见的.

但这两种方案都是可行的.

API网关,您将其用作将Lambda函数公开到Internet的前端,具有CORS支持,因此不需要关注您.

另一个选择是使用S3和Lambda(使用API​​网关),但将两个资源配置为CloudFront分配背后的原点.将默认缓存行为指向存储区,然后使用路径模式/api/*将API请求路由到API网关.这会将所有请求代理到适当的来源,但您的站点在DNS中的主机名指向CloudFront,其中访问所有资源,这意味着所有请求都不是跨域的 - 所有内容都在一个主机名上访问.获取静态内容时,CloudFront的CDN /缓存功能可以获得最佳性能,并且可以针对API禁用.