在AWS Lambda中无服务器部署通用函数包
问题描述:
我在无服务器中有几个AWS Lambda函数,并且发现我一遍又一遍地编写了相同的sendEmail函数。只需设置客户端,并通过一些小的调整来编写SES响应。我决定最好把它抽象成一个被别人调用的函数。我的文件夹结构类似于:在AWS Lambda中无服务器部署通用函数包
Serverless
-----> Commons
-----------> sendEmail.py
-----> AlarmsManager
---------> Alarm1.py
---------> Alarm2.py
---------> serverless.yml
-----> BackupManager
---------> Backup1.py
---------> Backup2.py
---------> serverless.yml
我的问题是,如何从其他部署调用此电子邮件功能?在调用函数的serverless.yml文件(它已经具有适当的SES IAM权限)中包含一个完全合格的路径,或者需要使用触发器而不是事件调度需要它自己的serverless.yml文件?如果属于自己的部署,我甚至可以使用其他功能吗?显然,我更喜欢前者,但我很困惑它应该如何聚合在一起。
答
的办法是打包所有的功能整合在一起(即具有serverless.yml
文件仅在根目录),并用全路径像
functions:
alarm1:
handler: AlarmsManager/Alarm1.handler
...
alarm2:
handler: AlarmsManager/Alarm2.handler
...
backup1:
handler: BackupManager/Backup1.handler
...
此声明你的功能,将创建一个唯一的归档所有从根开始的目录结构。此时,您可以通过相对路径访问源文件,例如Commons
。