Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 AWS Lambda-使用.NET核心构建无服务器API_Amazon Web Services_Asp.net Web Api_Aws Lambda_Serverless - Fatal编程技术网

Amazon web services AWS Lambda-使用.NET核心构建无服务器API

Amazon web services AWS Lambda-使用.NET核心构建无服务器API,amazon-web-services,asp.net-web-api,aws-lambda,serverless,Amazon Web Services,Asp.net Web Api,Aws Lambda,Serverless,最近,我一直在研究AWS Lambdas以及如何使用.Net内核构建无服务器API。据我所知,你可以用两种不同的方式 1) 在C#中编写多个单独的lambda,并将它们部署到AWS。请求通过API网关进入,每个lambda充当端点 2) 使用.Net核心构建无服务器Web API。创建无服务器Web API项目时,将自动创建一个Lambda,它将成为Web API的入口点 1对2是否有任何限制,或者一种方法可能比另一种方法更有益的用例?或者,这只是实现同一目标的两种不同方式?我认为你的选择不正确

最近,我一直在研究AWS Lambdas以及如何使用.Net内核构建无服务器API。据我所知,你可以用两种不同的方式

1) 在C#中编写多个单独的lambda,并将它们部署到AWS。请求通过API网关进入,每个lambda充当端点

2) 使用.Net核心构建无服务器Web API。创建无服务器Web API项目时,将自动创建一个Lambda,它将成为Web API的入口点


1对2是否有任何限制,或者一种方法可能比另一种方法更有益的用例?或者,这只是实现同一目标的两种不同方式?

我认为你的选择不正确。构建Lambda支持的API的两个选项是:

1-在一个或多个项目中构建lambda并将其独立部署到AWS。然后手动创建指向一个或多个lambda的API网关端点

2-使用无服务器项目将lambda合并到一个项目中。在该项目中定义端点,让Cloudformation创建API网关端点,并在部署时将它们连接到lambda

就正反两方面而言,

选项1:

优点:具有独立部署lambda的灵活性,您也可以按照自己的方式配置API网关端点,而无需理解Cloudformation定义语法,根据我的经验,这需要一些启动时间

缺点:如果你有很多lambda,这将成为管理层的噩梦。此外,源代码中没有端点定义,因此不会跟踪对端点配置的更改

选项2:

优点:如果您了解了Cloudformation,或者如果您想使用默认配置部署lambda并将其挂接到API网关端点,这将非常简单。AWS将为您创建端点,并将创建开发和生产阶段、策略、IAM角色等。直接从Visual Studio通过Cloudformation进行部署会导致整个部署和所有相关对象位于AWS Cloudformation中相同的“堆栈”下,可以很容易地进行更改、重新定位或删除。此外,您的基础架构现在是代码,对它的更改可以在git repo中审核

缺点:我认为最大的缺点是堆栈不跨VS解决方案,而只跨项目,因此所有lambda必须生活在同一个项目中,这意味着如果您有很多lambda,那么它们最终将成为一个整体lambda二进制文件。生成的大型项目二进制文件将消耗AWS上的内存运行时间和效率问题。另一个缺点是,如果您想要使用特定的或非普通的API网关,则需要了解Cloudformation语法以更改serverless.template文件

结论:我的首选解决方案是根据API对象将我的真实应用程序划分为较小的相关lambda块,并将这些lambda放在几个无服务器应用程序项目中。例如,我有一个订单项目,其中包含与订单API相关的所有lambda,还有一个产品项目,其中包含与产品API相关的lambda等。这两个项目将位于同一个解决方案中,并将分别部署。我目前正在研究一种立即部署整个解决方案的方法