如何使用 Lambda 实现任务自动化?

上次更新时间:2019 年 10 月 14 日

我想使用 AWS Lambda 实现 AWS 账户中任务的自动化。该如何进行设置?

简短描述

多种 AWS 服务都可以与 Lambda 集成以调用函数,从而执行计划或响应某些事件。最常用于实现任务自动化的服务例如 Amazon CloudWatch EventsAmazon Simple Storage Service (Amazon S3) 事件通知。本文针对这两种方法都提供了示例,您可以将其作为您的使用案例的指南。

有关更多示例,请参阅教程:将 AWS Lambda 用于计划的事件教程:将 AWS Lambda 与 Amazon S3 结合使用

注意:CloudWatch 和 Amazon S3 可能会自动更新 Lambda 函数的执行角色使用基于资源的策略添加需要的访问权限。但并非所有 AWS 服务都会自动执行此操作,同时其他进程也可能会更改函数的执行角色并使其无法正确调用。在这种情况下,请为将与 Lambda 集成的服务手动添加权限

解决方法

创建 Lambda 函数

按照以下示例步骤创建一个简单函数,以将输入记录到 Amazon CloudWatch Logs。此函数将是您配置的事件的目标。您可以将示例函数代码替换为您要为您的使用案例自动化执行的任务的代码。

注意:您也可以通过构建和上传您自己的部署程序包来创建 Lambda 函数。

1.    打开 Lambda 控制台

2.    如果您是初次使用 Lambda,请选择立即开始使用。否则请选择创建函数。此时将打开创建函数页面,显示从头开始创建选项。

3.    选择从头开始创建后,在基本信息下执行以下操作:
对于函数名称,请输入一个名称。
对于运行时,请选择 Node.js 10.x

4.    在权限,展开 选择或创建执行角色,然后执行以下任意一项操作:
如果您是初次使用 Lambda,请选择创建具有基本 Lambda 权限的新角色
如果您已创建了要使用的 Lambda 执行角色,请选择使用现有角色
如果要使用 AWS 托管策略模板创建新的执行角色,请选择从 AWS 策略模板创建新角色,输入名称,然后选择策略模板。

5.    选择创建函数

6.    在 配置窗格的函数代码下,将此示例函数代码粘贴到编辑器窗格

'use strict';
exports.handler = (event, context, callback) => {
    console.log('LogScheduledEvent');
    console.log('Received event:', JSON.stringify(event, null, 2));
    callback(null, 'Finished');
};

7.    选择保存

有关更多信息,请参阅使用控制台创建 Lambda 函数

创建 CloudWatch Events 规则

使用 CloudWatch Events 创建将按计划触发或响应事件触发的规则。有关更多信息,请参阅 Amazon CloudWatch Events 入门

计划事件

要按特定时间表执行操作但不进行任何输入,请遵循创建按计划触发的 CloudWatch 事件规则中的说明。指定您希望自动化任务运行的频率或时间的计划。将您创建的 Lambda 函数添加为将会响应事件触发的目标。

在创建规则后,将会按您定义的时间表自动调用您的 Lambda 函数。如果您使用示例函数代码,则来自 Lambda 的日志流将会按计划填充到 CloudWatch。

注意:对于其他示例,请参阅教程:使用 CloudWatch Events 计划 AWS Lambda 函数

服务事件

如要执行操作以响应由某个 AWS 服务生成的事件,请遵循创建将会根据事件触发的 CloudWatch Events 规则。在此示例设置中,对于服务名称,请选择 EC2。对于事件类型,请选择 EC2 实例状态更改通知。将您创建的 Lambda 函数添加为目标。

注意:有关更多信息,请参阅 CloudWatch Events 中的事件模式来自支持的服务的 CloudWatch Events 事件示例

创建规则后,每次出现您定义的事件模式时都将调用您的 Lambda 函数。

在此例中,您可以通过更改 Amazon Elastic Compute Cloud (Amazon EC2) 实例的状态来测试规则。如果您尚未启动实例,请启动 EC2 实例。当您创建实例以及停止或启动实例时,Lambda 会将日志流发送到 CloudWatch。

注意:您的 AWS 账户可能会产生 EC2 实例费用。如果您创建了一个仅用于此示例的实例,完成后请务必终止实例以免产生经常性费用。

配置 Amazon S3 事件通知

使用 Amazon S3 事件通知,以在每次 S3 存储桶中发生您指定的受支持的 Amazon S3 事件类型时触发 Lambda 函数。有关更多信息和示例事件,请参阅配合使用 AWS Lambda 和 Amazon S3

创建一个 S3 存储桶(如果您尚未创建)。然后遵循启用和配置事件通知中的说明。在此例中,对于事件,请选中所有对象创建事件复选框。对于发送到,请选择 Lambda 函数。对于 Lambda,请选择您创建的 Lambda 函数。

要测试设置,请将一个对象上传到 S3 存储桶。如果您配置了前缀后缀筛选条件,请确保该对象具有正确的前缀或后缀。上传完成后,将会调用您的 Lambda 函数。如果您使用示例函数代码,则来自 Lambda 的日志流将会填充到 CloudWatch。这些日志包含事件对象中的元数据,如 S3 存储桶名称和对象名称。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?