本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:ScheduleAmazon Lambda使用函数EventBridge
本教程的创建规则部分已过时,并且即将更新。
您可以设置规则运行Amazon Lambda按计划执行函数。本教程演示如何使用 Amazon Web Services Management Console 或 Amazon CLI 创建规则。如果要使用Amazon CLI但是还没安装,请参阅安装、更新和卸载Amazon CLI版本 2.
对于时间表,EventBridge不在中提供第二级精度计划表达式. 使用 cron 表达式的最高解析精度是一分钟。由于分布式的性质EventBridge和目标服务,计划规则触发时间与目标服务运行目标资源的时间之间之间可能有几秒钟的延迟。
第 1 步:创建Amazon Lambda功能
创建 Lambda 函数来记录计划的事件。
创建 Lambda 函数
打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/
。 -
选择 Create function (创建函数)。
-
选择 Author from scratch (从头开始创作)。
-
输入 Lambda 函数的名称和说明。例如,将函数命名为
LogScheduledEvent
。 -
将其他选项保留为默认值,然后选择创建函数.
-
在存储库的代码双击函数页面的选项卡index.js.
-
使用以下代码替换现有代码。
'use strict'; exports.handler = (event, context, callback) => { console.log('LogScheduledEvent'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
-
选择 Deploy(部署)。
第 2 步:创建规则
创建按计划运行您在步骤 1 中创建的 Lambda 函数的规则。
您可以使用控制台或Amazon CLI创建规则。使用Amazon CLI首先,您可以向该规则授予调用 Lambda 函数的权限。然后,您可以创建规则并将该 Lambda 函数添加为目标。
创建规则(控制台)
打开 AmazonEventBridge控制台https://console.aws.amazon.com/events/
. -
在导航窗格中,选择 Rules (规则)。
-
选择 Create rule (创建规则)。
-
为规则输入名称和描述。
-
对于定义模式,请执行以下操作:
-
选择 Schedule。
-
选择每个固定速率并指定计划间隔,例如,5 分钟。
-
-
对于 Select event bus (选择事件总线),选择 Amazon default event bus (亚马逊云科技默认事件总线)。仅在默认事件总线上支持计划规则。
-
对于 Target (目标),选择 Lambda function (Lambda 函数)。
-
适用于函数接下来,选择您在步骤 1 中创建的 Lambda 函数。
-
请选择创建。
创建规则 (Amazon CLI)
-
要创建按计划运行的规则,请使用
put-rule
命令。aws events put-rule \ --name
my-scheduled-rule
\ --schedule-expression 'rate(5 minutes)'当此规则运行时,它会创建一个事件,然后将其发送到目标。以下是示例事件。
{ "version": "0", "id": "53dc4d37-cffa-4f76-80c9-8b7d4a4d2eaa", "detail-type": "Scheduled Event", "source": "aws.events", "account": "123456789012", "time": "2015-10-08T16:53:06Z", "region": "us-east-1", "resources": [ "arn:aws:events:us-east-1:123456789012:rule/my-scheduled-rule" ], "detail": {} }
-
授予EventBridge服务委托人 (
events.amazonaws.com
) 运行规则的权限,请使用add-permission
命令。aws lambda add-permission \ --function-name
LogScheduledEvent
\ --statement-idmy-scheduled-event
\ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1
:123456789012
:rule/my-scheduled-rule
-
要将在步骤 1 中创建的 Lambda 函数添加到规则,请使用
put-targets
命令。aws events put-targets --rule
my-scheduled-rule
--targets file://targets.json -
创建文件
targets.json
并输入以下内容。[ { "Id": "1", "Arn": "arn:aws:lambda:
us-east-1
:123456789012
:function:LogScheduledEvent
" } ]
第 3 步:验证规则
完成步骤 2 后至少等待五分钟,然后您可以验证是否已调用 Lambda 函数。
测试您的规则
打开 AmazonEventBridge控制台https://console.aws.amazon.com/events/
. -
在导航窗格中,选择 Rules (规则)。
-
选择在步骤 2 中创建的规则的名称,然后选择规则的指标.
-
要查看 Lambda 函数的输出,请执行以下操作:
打开 CloudWatch 控制台 (https://console.aws.amazon.com/cloudwatch/
)。 -
在导航窗格中,选择日志。
-
选择您的 Lambda 函数 (
/aws/lambda/
) 的日志组的名称。function-name
-
选择日志流的名称,以查看您启动的实例的函数提供的数据。
第 4 步:确认成功
如 Lambda 你在CloudWatch记录,您已成功完成本教程。如果活动不在你的CloudWatch日志中,通过验证规则是否成功创建开始故障排除,如果规则看起来正确,请验证 Lambda 函数的代码是否正确。
第 5 步:清除 资源
除非您想要保留为本教程创建的资源,否则可立即将其删除。通过删除Amazon您不再使用的资源,可防止您的产生不必要的费用Amazonaccount.
删除EventBridge规则
-
打开“规则” 页
的EventBridge控制台。 -
选择您创建的规则。
-
选择 Delete。
-
选择 Delete。
删除 Lambda 函数
-
打开 Lamba 控制台的 Functions(函数)页面
。 -
选择您创建的函数。
-
依次选择 Actions 和 Delete。
-
选择 Delete。