本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程 倾听 Amazon ECS CloudWatch Events
在本教程中,您设置一个简单的 AWS Lambda 函数,该函数会侦听 Amazon ECS 任务事件并将这些事件写出到 CloudWatch Logs 日志流。
先决条件:设置测试群集
如果您没有要从中捕获事件的正在运行的集群,请执行 创建集群中的步骤来创建一个集群。在本教程结束时,您可在此集群上运行任务来测试您是否已正确配置 Lambda 函数。
步骤 1. 创建 Lambda 函数
在此过程中,您将创建一个简单的 Lambda 函数来充当 Amazon ECS 事件流消息的目标。
-
通过以下网址打开 AWS Lambda 控制台:https://console.amazonaws.cn/lambda/
。 -
选择 Create function (创建函数)。
-
在 Author from scratch 屏幕上,执行以下操作:
-
对于名称,输入一个值。
-
对于 Runtime (运行时),选择 Python 2.7。
-
对于 Role (角色),选择 Create a new role with basic Lambda permissions (创建具有基本 Lambda 权限的新角色)。
-
-
选择 Create function (创建函数)。
-
在 Function code 部分中,编辑示例代码以匹配以下示例:
import json def lambda_handler(event, context): if event["source"] != "aws.ecs": raise ValueError("Function only supports input from events with a source type of: aws.ecs") print('Here is the event:') print(json.dumps(event))
这是一个简单的 Python 2.7 函数,可输出由 Amazon ECS 发送的事件。如果一切配置正确,则在本教程结束时,您将在与此 Lambda 函数关联的 CloudWatch Logs 日志流中看到事件详细信息。
-
选择 Save (保存)。
步骤 2. 注册事件规则
接下来,您创建一个 CloudWatch Events 事件规则,该规则可捕获来自 Amazon ECS 集群的任务事件。该规则捕获来自定义该规则的账户中的所有集群的所有事件。任务消息本身包含有关事件源的信息(包括事件源所在的集群),可使用这些信息以编程方式对事件进行筛选和排序。
在使用 AWS 管理控制台创建事件规则时,控制台会自动添加所需的 IAM 权限以便向 CloudWatch Events 授予调用 Lambda 函数所需的权限。如果您使用 AWS CLI 创建事件规则,则需要明确授予此权限。有关更多信息,请参阅 https://docs.amazonaws.cn/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html 中的Amazon CloudWatch Events 用户指南事件和事件模式。
将事件路由到 Lambda 函数
-
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/
。 -
在导航窗格上,依次选择 Events (事件)、Rules (规则)、Create rule (创建规则)。
-
对于 Event Source (事件源),选择 ECS 作为事件源。默认情况下,规则将应用于您的所有 Amazon ECS 组的所有 Amazon ECS 事件。或者,您可以选择特定的事件或特定的 Amazon ECS 组。
-
对于 Targets (目标),选择 Add target (添加目标),对于 Target type (目标类型),选择 Lambda function (Lambda 函数),然后选择您的 Lambda 函数。
-
选择 Configure details (配置详细信息)。
-
对于 Rule definition,键入规则的名称和说明,然后选择 Create rule。
步骤 3 测试您的规则
最后,您创建一个 CloudWatch Events 事件规则,该规则可捕获来自 Amazon ECS 集群的任务事件。该规则捕获来自定义该规则的账户中的所有集群的所有事件。任务消息本身包含有关事件源的信息(包括事件源所在的集群),可使用这些信息以编程方式对事件进行筛选和排序。
测试您的规则
-
在 https://console.amazonaws.cn/ecs/
上打开 Amazon ECS 控制台。 -
选择 Clusters 和 default。
-
在 Cluster : default 屏幕上,选择 Tasks 和 Run new Task。
-
对于 Task Definition,选择最新版本的 console-sample-app-static,然后选择 Run Task。
-
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/
。 -
在导航窗格中,选择 日志 并为您的 Lambda 功能(例如, /aws/lambda/
my-function
). -
选择日志流以查看事件数据。