Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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 SAM用于;简单的;Lambda函数?_Amazon Web Services_Aws Lambda_Serverless_Aws Serverless - Fatal编程技术网

Amazon web services 我是否应该将AWS SAM用于;简单的;Lambda函数?

Amazon web services 我是否应该将AWS SAM用于;简单的;Lambda函数?,amazon-web-services,aws-lambda,serverless,aws-serverless,Amazon Web Services,Aws Lambda,Serverless,Aws Serverless,我目前正在为我的一些无服务器应用程序使用SAM。我还有“更简单”的lambda函数,它们不需要API网关或更复杂的与AWS服务的集成 其中一些函数包括S3和DynamoDB触发器函数,或者一些只是周期性运行的函数。我将它们描述为简单的,因为它们的大小不是很大,并且不使用很多服务 正因为如此,我不喜欢用山姆来做他们。我希望能够以SAM允许的类似方式在本地测试我的功能。理想情况下,我希望将所有简单的lambda函数组合到一个git存储库中,然后我可以下拉repo、编辑、测试和部署函数的新版本。这对S

我目前正在为我的一些无服务器应用程序使用SAM。我还有“更简单”的lambda函数,它们不需要API网关或更复杂的与AWS服务的集成

其中一些函数包括S3和DynamoDB触发器函数,或者一些只是周期性运行的函数。我将它们描述为简单的,因为它们的大小不是很大,并且不使用很多服务

正因为如此,我不喜欢用山姆来做他们。我希望能够以SAM允许的类似方式在本地测试我的功能。理想情况下,我希望将所有简单的lambda函数组合到一个git存储库中,然后我可以下拉repo、编辑、测试和部署函数的新版本。这对SAM来说似乎很复杂。我想避免每个功能都有很多大型回购,我认为SAM在这些功能上的情况就是这样。我不介意对较大的项目进行单独的回购,正是这些小项目给我带来了困难


有没有一种管理这些小型lambda函数的好方法?或者我需要接受为他们使用SAM吗?

AWS SAM非常适合该用例!如果您将其与CloudFormation进行比较,它允许您以更紧凑的方式编写Lambda函数及其触发器。我不确定你认为什么复杂,只是看看下面的例子。这是一个AWS SAM模板,它定义了两个AWS Lambda函数,一个由S3事件触发,另一个每五分钟执行一次:

AWSTemplateFormatVersion:'2010-09-09'
转换:AWS::Serverless-2016-10-31
全球:
功能:
运行时:python3.8
资源:
桶:
类型:AWS::S3::Bucket
处理器功能:
类型:AWS::Serverless::Function
特性:
处理器:s3_processor.Handler
CodeUri:src/
策略:AmazonS3ReadOnlyAccess
活动:
照片上传:
类型:S3
特性:
桶:!参考铲斗
事件:s3:ObjectCreated:*
ScheduledFunction:
类型:AWS::Serverless::Function
特性:
Handler:scheduled_function.Handler
CodeUri:src/
活动:
计时器:
类型:附表
特性:
时间表:费率(5分钟)
我将不包括纯云形成的相同定义,因为它将超过100行

您可以使用单个CloudFormation堆栈部署这两个函数,在我看来,这就是您想要做的

至于代码,您可以看到我使用了两个不同的处理程序,因此您只需在
src/
-目录中添加一个
s3\u处理器.py
和一个
scheduled\u函数.py
,就可以了。您可以将所有这些轻松地保存在一个git存储库中,并享受AWS SAM的本地测试功能带来的好处


如果您想为每个AWS Lambda函数创建一个单独的CloudFormation堆栈,您只需在git存储库中为每个AWS Lambda函数创建一个子目录。

您必须了解无服务器框架,因为作为您,我不太喜欢SAM模板,对我来说,无服务器框架是处理您所描述的场景的一种更快、更简单的方法


我正在我的一些项目中使用它,它非常简单和实用。

Hey Alex-好问题,我也想看看答案;我有和你一样的问题/想法。我尝试过的一件事(不确定它是否适用于您)是将相似和小型lambda集合捆绑到一个源文件中,并定义不同的lambda处理程序。这样,lambda组指向同一个源文件,但在该文件中使用不同的处理程序(函数)。对于我的一些用例,这使得管理单独的小lambda组比管理每个lambda的单独源文件更容易