在AWS SAM(Serverless Application Model)中,可以使用CloudWatch规则来触发Lambda函数。下面是一个使用AWS SAM定义CloudWatch规则和Lambda函数的示例:
首先,创建一个名为template.yaml
的SAM模板文件,并添加以下内容:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: mylambda/
Handler: index.handler
Runtime: nodejs14.x
MyCloudWatchRule:
Type: AWS::Events::Rule
Properties:
ScheduleExpression: rate(1 hour) # 每小时触发一次,你可以根据需求自定义触发时间表达式
Targets:
- Arn: !GetAtt MyLambdaFunction.Arn
Id: MyLambdaFunctionTarget
在上面的示例中,我们定义了一个名为MyLambdaFunction
的Lambda函数,该函数使用Node.js 14.x运行时。然后,我们创建了一个名为MyCloudWatchRule
的CloudWatch规则,并将其配置为每小时触发一次。规则的目标是我们之前定义的Lambda函数。
接下来,我们创建一个名为index.js
的Lambda函数代码文件,并添加以下内容:
exports.handler = async (event, context) => {
console.log('Lambda function triggered by CloudWatch rule.');
// 添加你的自定义逻辑
return {
statusCode: 200,
body: 'Lambda function executed successfully.'
};
};
在上面的示例中,我们简单地在Lambda函数中打印一条日志消息,并返回一个成功的响应。
最后,使用AWS SAM CLI构建和部署我们的应用程序。在命令行中运行以下命令:
sam build
sam deploy --guided
按照提示提供必要的部署配置,然后等待部署完成。
部署完成后,CloudWatch规则将每小时触发Lambda函数,并在CloudWatch日志中显示Lambda函数触发的日志消息。
请注意,上面的示例中使用了AWS SAM CLI来构建和部署应用程序。确保你已经安装了AWS CLI和AWS SAM CLI,并且已经配置了正确的AWS凭证。