Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Lightsail对Lambda+;S3_Amazon Web Services_Amazon S3_Cors_Aws Lambda_Amazon Lightsail - Fatal编程技术网

Amazon web services Lightsail对Lambda+;S3

Amazon web services Lightsail对Lambda+;S3,amazon-web-services,amazon-s3,cors,aws-lambda,amazon-lightsail,Amazon Web Services,Amazon S3,Cors,Aws Lambda,Amazon Lightsail,听起来可能是个奇怪的问题,但请耐心听我说 我需要建立一个小的网络项目。为了使其免费,我打算将前端部分作为静态站点托管在S3上,并让它通过对托管在lambda函数中的RESTAPI进行AJAX调用来调用服务器端函数。我以前在一个webapp中为自己做过这件事,但我记得当跨源请求被提出时,它会导致复杂性,最后我求助于使用JSONP。这个设置有问题吗?我听说JSONP可能是一个安全问题,而这个新网站是供公众使用的 我的另一种设置是在lightsail上构建一个服务器,托管站点和后端。显然,这可能是做事

听起来可能是个奇怪的问题,但请耐心听我说

我需要建立一个小的网络项目。为了使其免费,我打算将前端部分作为静态站点托管在S3上,并让它通过对托管在lambda函数中的RESTAPI进行AJAX调用来调用服务器端函数。我以前在一个webapp中为自己做过这件事,但我记得当跨源请求被提出时,它会导致复杂性,最后我求助于使用JSONP。这个设置有问题吗?我听说JSONP可能是一个安全问题,而这个新网站是供公众使用的

我的另一种设置是在lightsail上构建一个服务器,托管站点和后端。显然,这可能是做事情的更正确的方式,但要稍微多一些钱

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

附加问题:是否可以设置CORS,这样我就不必使用JSONP处理跨源请求?我对CORS有点不熟悉

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

我要假装你没有问这个问题,因为没有一个“正确”的答案——这是主观的,有很多因素,其中一些是基于观点的

但这两种解决方案都是可行的

API网关是将Lambda函数公开到Internet的前端,它具有CORS支持,因此您不必担心这一点


另一种选择是使用S3和Lambda(带API网关),但将这两种资源配置为CloudFront发行版背后的源。将默认缓存行为指向bucket,然后使用类似
/api/*
的路径模式将api请求路由到api网关。这会将所有请求代理到相应的源,但DNS中的站点主机名指向CloudFront,在CloudFront中访问所有资源,这意味着没有任何请求是跨源的——所有内容都是通过单个主机名访问的。CloudFront的CDN/缓存功能是获取静态内容时获得最佳性能的一个额外功能,可以对API禁用。

听起来成本是您关心的问题。。因此,请记住:如果应用程序的任何服务器端代码需要与Internet对话,您还必须为Lambda提供一个NAT网关以用于与Internet对话。Lambda本身没有出站互联网接入。除了数据传输和处理费用外,NAT网关目前每小时的成本为0.045美元。使用Lambda,您只需支付函数运行的时间,但您的NAT网关将一直运行。除此之外,如果你的流量通过API网关到达你的lambda函数,那就要考虑…由于它是一个小应用程序,我将假设您永远不会达到支付API网关费用的极限,但是,如果您打开CloudTrail,您将获得(1)Lambda、(2)NAT网关、(3)S3和(4)API网关的CloudTrail日志。。这可能会让您承担可能的CloudTrail费用

现在将其与最便宜的Lightsail实例进行比较,Lightsail实例的成本为每小时0.047美元,并且已经可以访问互联网。虽然可用的RAM非常小,但是如果您运行的是一个小应用程序。。希望它不是用Java编写的,那么这不应该是个问题。此外,堆栈更小,更易于管理

因此,在每小时0.002美分的基线差异下(将NAT网关成本与Lightsails成本进行比较)。。同时考虑到Lightsail的简单性。。Lightsail可能是一个更好的选择

如果您担心Lambda会自动伸缩,请记住,您可以通过编程触发更多和更大的Lightsail实例,并基本上完成相同的伸缩范例。但是请注意,您不能简单地关闭您不使用的Lightsail实例,您必须在月底之前将其删除,以避免每月的全部费用


也就是说,对于EC2实例,您不必删除它以避免额外的费用,您可以简单地关闭它。。所以实际上,我推荐EC2而不是Lightsail,因为你可以让事情变得更简单。

更准确地说,我不是问哪一个更好,而是问哪一个有明显的问题。我以前从未使用过cors,但它的设置看起来相当简单。cloudfront的想法也很好,我可以试一试。谢谢