简介
本实验介绍如何创建可以监控云基础设施并响应事件的无服务器基础设施。
在本实验的第一部分中,您将学习如何结合使用 AWS Lambda 函数和 Amazon CloudWatch Events,对创建 Amazon EC2 实例做出响应。
在本实验的第二部分中,您将创建一个 AWS Lambda 函数,用于监控网站并在其未正确响应时提醒您。
涵盖的主题
在本实验结束时,您将能够:
- 创建 AWS Lambda 函数
- 配置 Amazon CloudWatch Events
- 配置 Amazon CloudWatch 警报
- 配置 Amazon Simple Notification Service (SNS) 以发送通知
技术性知识先决条件
要成功完成本实验,您应该熟悉 Amazon EC2。尽管我们提供了完整的解决方案代码,但您仍需要掌握 Node.js 编程技能。
图标键
本实验中使用了不同图标,以提醒大家注意各种类型的说明和备注。下面的列表解释了每个图标的用途:
- 预期输出:您可以用来验证命令或已编辑文件输出的示例输出。
- 注意:一项提示、技巧或重要指导。
- 刷新:您可能需要刷新 Web 浏览器页面或列表才能看到新信息。
其他 AWS 服务
在您访问本实验期间,IAM 策略将禁用本实验不需要的其他 AWS 服务。此外,本实验中只会使用所需的服务功能,并且在某些情况下,甚至会根据实验设计特意进一步限制这些功能。如果访问其他服务或执行本实验指南中未描述的操作,可能会出现错误。
技术简介
AWS Lambda
AWS Lambda 是一项计算服务,可以在云中提供大小可调的计算容量,让开发人员能够更轻松地进行 Web 级计算。您可以将代码上传到 AWS Lambda,该服务可以使用 AWS 基础设施为您运行代码。AWS Lambda 支持多种编码语言,包括 Node.js、Java 或 Python。
在您上传代码并创建 Lambda 函数后,AWS Lambda 会负责预置和管理您用来运行代码的服务器。在本实验中,您将使用 AWS Lambda 作为事件驱动型计算服务,AWS Lambda 运行您的代码,以响应 SNS 主题和 Amazon S3 存储桶中的数据更改。
您可以通过两种方式使用 AWS Lambda:
- 作为一项事件驱动型计算服务:AWS Lambda 运行您的代码以响应事件,例如上传您将在本实验中看到的图像文件。
- 作为一项计算服务:运行您的代码以响应使用 Amazon API Gateway 发出的 HTTP 请求或响应 API 调用。
Amazon Lambda 可以为您带来 Amazon 的规模经济效益。AWS Lambda 只在必要时执行您的代码,并且可以自动扩展,从每天处理数次请求扩展到每秒处理数千次请求。借助这些功能,您可以使用 Lambda 轻松地为 AWS 服务(例如 Amazon S3 和 Amazon DynamoDB)构建数据处理调用、处理存储在 Amazon Kinesis 中的流数据,或创建您自己的达到 AWS 规模、性能和安全性的后端。
AWS Lambda 蓝图
蓝图是事件源和 Lambda 函数的示例配置,可以为您执行最低程度的处理。大多数蓝图用于处理来自特定事件源(例如 Amazon S3 或 DynamoDB)的事件。例如,如果您选择 s3-get-object 蓝图,那么它会提供示例代码来处理由 Amazon S3 发布的对象创建的事件,Lambda 将该事件作为参数接收。
创建新的 AWS Lambda 函数时,您可以使用最适合您的场景的蓝图。然后,您可以根据需要自定义该蓝图。您并非必须使用蓝图(您可以单独编写 Lambda 函数并且配置事件源)。
Amazon CloudWatch
CloudWatch Events 提供近乎实时的系统事件流,这些事件描述了 AWS 资源中的更改。使用可在数分钟内设置好的简单规则,您可以轻松将每种类型的事件路由到包括 AWS Lambda 函数在内的一个或多个目标,而且开销更低、效率更高。您可以将 CloudWatch Events 视为您的 AWS 环境的中枢神经系统。它连接到每项受支持的服务,并且能够感知到操作更改。然后,受规则的驱使,它将激活函数,并发送消息以响应环境。
Amazon Simple Notification Service (SNS)
Amazon SNS 是一项通知服务,相比开发自定义消息收发解决方案的复杂性或需要现场管理和维护的系统的授权软件购买费用,具有很多优势。该服务在 Amazon 成熟的网络基础设施和数据中心内运行,所以只要应用程序需要,就可以随时获取主题。为防止消息丢失,发布到 Amazon SNS 的所有消息都以冗余方式存储在多个服务器和数据中心。Amazon SNS 支持不同设备上的应用程序和终端用户通过移动推送通知、HTTP/HTTPS、电子邮件/电子邮件-JSON、SMS、Amazon SQS 队列或 AWS Lambda 函数来接收通知。