目前我的 Lambda 函数已经能够成功处理一个定时任务事件。以下是来自我的 template.yaml 文件的相关摘录:
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: HelloWorldFunction
Handler: helloworld.App::handleRequest
Runtime: java11
MemorySize: 512
Environment:
Variables:
PARAM1: VALUE
Events:
CronHourlyEvent: # This already works
Type: Schedule
Properties:
Description: Send John Doe
Enabled: True
Schedule: "cron(0 0/1 * * ? *)"
Input: !Sub '{"name": "John Doe"}'
Lambda每小时被触发一次,运行良好。
现在我想添加另一个计划事件,每天中午12点触发同一个lambda。一种方法是创建一个单独的lambda并将每日计划事件附加到其中,但我不想为此创建一个新的lambda。我希望能够将两个计划事件附加到同一个lambda上。
我没有找到任何在线示例,其中有多个计划事件附加到lambda上,但我认为需要在template.yaml文件中进行以下添加:
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: HelloWorldFunction
Handler: helloworld.App::handleRequest
Runtime: java11
MemorySize: 512
Environment:
Variables:
PARAM1: VALUE
Events:
CronHourlyEvent: # this was already present
Type: Schedule
Properties:
Description: Send John Doe
Enabled: True
Schedule: "cron(0 0/1 * * ? *)"
Input: !Sub '{"name": "John Doe"}'
CronDailyEvent: # added this
Type: Schedule
Properties:
Description: Send Jane Doe
Enabled: True
Schedule: "cron(0 12 1/1 * ? *)"
Input: !Sub '{"name": "Jane Doe"}'
我想在本地测试,所以我下载并配置了sam-sdk。但我不认为它支持本地运行cron作业。我能够手动触发事件,但找不到任何根据提供的cron表达式自动运行计划任务的方法。
因此,我想知道:
- 是否可以将2个或更多的schedule/cron类型事件附加到AWS Lambda函数?
- 如果可以,我所做的代码更改是否正确?
这将直接进入生产环境,我似乎找不到一种在本地测试的方法。
AWS::Events::Rule
资源。