Amazon EC2 Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

教程:侦听 Amazon ECS CloudWatch Events

在本教程中,您设置一个简单的 AWS Lambda 函数,该函数会侦听 Amazon ECS 任务事件并将这些事件写出到 CloudWatch Logs 日志流。

步骤 1:设置测试集群

如果您没有要从中捕获事件的正在运行的集群,请执行 开始使用 Amazon ECS中的步骤来创建一个集群。在本教程结束时,您可在此集群上运行任务来测试您是否已正确配置 Lambda 函数。

步骤 2:创建 Lambda 函数

在此过程中,您将创建一个简单的 Lambda 函数来充当 Amazon ECS 事件流消息的目标。

  1. 通过以下网址打开 AWS Lambda 控制台:https://console.amazonaws.cn/lambda/

  2. 选择 Create a Lambda function

  3. Select blueprint 屏幕上,为 Select runtime 选择 Python 2.7,然后选择 hello-world-python

  4. the Lambda function code 部分中,编辑示例代码以匹配以下示例:

    Copy
    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 日志流中看到事件详细信息。

  5. Configure triggers 屏幕上,选择 Next。(稍后配置您的事件源。)

  6. Configure function 屏幕上,为 Name 输入 eventstream-handler

  7. Lambda function handler and role 部分中,为 Role 选择 Create a custom role。这将弹出一个新窗口,可使用此窗口为 Lambda 函数创建新角色。

  8. AWS Lambda requires access to your resources 屏幕上,接受默认值,然后选择 Allow

  9. Configure function 屏幕上,选择 NextCreate function

步骤 3:注册事件规则

接下来,您创建一个 CloudWatch Events 事件规则,该规则可捕获来自 Amazon ECS 集群的任务事件。该规则捕获来自定义该规则的账户中的所有集群的所有事件。任务消息本身包含有关事件源的信息(包括事件源所在的集群),可使用这些信息以编程方式对事件进行筛选和排序。

注意

在使用 AWS 管理控制台创建事件规则时,控制台会自动添加所需的 IAM 权限以便向 CloudWatch Events 授予调用 Lambda 函数所需的权限。如果您使用 AWS CLI 创建事件规则,则需要明确授予此权限。有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的事件和事件模式

将事件路由到 Lambda 函数

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 在导航窗格上,选择 EventsCreate rule

  3. 对于 Event selector,选择 ECS 作为事件源。默认情况下,规则将应用于您的所有 Amazon ECS 组的所有 Amazon ECS 事件。或者,您可以选择特定的事件或特定的 Amazon ECS 组。

  4. 对于 Targets,选择 Add target,对于 Target type,选择 Lambda function,然后选择您的 Lambda 函数。

  5. 选择 Configure details

  6. 对于 Rule definition,键入规则的名称和说明,然后选择 Create rule

步骤 4:测试您的规则

最后,您创建一个 CloudWatch Events 事件规则,该规则可捕获来自 Amazon ECS 集群的任务事件。该规则捕获来自定义该规则的账户中的所有集群的所有事件。任务消息本身包含有关事件源的信息(包括事件源所在的集群),可使用这些信息以编程方式对事件进行筛选和排序。

测试您的规则

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. 选择 Clustersdefault

  3. Cluster : default 屏幕上,选择 TasksRun new Task

  4. 对于 Task Definition,选择最新版本的 console-sample-app-static,然后选择 Run Task

  5. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  6. 在导航窗格中,选择 Logs,然后选择 Lambda 函数的日志组(例如,/aws/lambda/my-function)。

  7. 选择日志流以查看事件数据。