

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用无服务器工作流程和 Amazon 监控标签更改 EventBridge
<a name="tag-monitor"></a>

Amazon EventBridge 支持对 Amazon 资源进行标签更改。使用这种 EventBridge 类型，您可以构建 EventBridge规则以匹配标签更改，并将事件路由到一个或多个目标。例如，目标可能是调用自动化工作流程的 Amazon Lambda 函数。本主题提供了一个教程，介绍如何使用 Lambda 构建经济实惠的无服务器解决方案，以安全地处理资源上的标签更改。 Amazon 

## 标签更改会生成 EventBridge 事件
<a name="generate-events"></a>

EventBridge 提供描述 Amazon 资源变化的近乎实时的系统事件流。许多 Amazon 资源都支持标签，标签是用户定义的自定义属性，可以轻松组织和分类 Amazon 资源。标签的常见使用案例包括成本分配分类、访问控制安全和自动化。

借 EventBridge助，您可以监控标签的更改并跟踪 Amazon 资源的标签状态。以前，为了实现类似的功能，您可能需要连续轮询 APIs 和编排多个呼叫。现在，对标签（包括单个服务 APIs、[标签编辑器和标](https://docs.amazonaws.cn/ARG/latest/userguide/tag-editor.html)[记 API](https://docs.amazonaws.cn/resourcegroupstagging/latest/APIReference/index.html)）的任何更改都将在资源事件中启动标签更改。以下示例显示了标签更改所提示的典型 EventBridge 事件。它显示新的、已更新的或已删除的标签密钥及其关联值。

```
{
  "version": "0",
  "id": "bddcf1d6-0251-35a1-aab0-adc1fb47c11c",
  "detail-type": "Tag Change on Resource",
  "source": "aws.tag",
  "account": "123456789012",
  "time": "2018-09-18T20:41:38Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2:us-east-1:123456789012:instance/i-0000000aaaaaaaaaa"
  ],
  "detail": {
    "changed-tag-keys": [
      "a-new-key",
      "an-updated-key",
      "a-deleted-key"
    ],
    "tags": {
      "a-new-key": "tag-value-on-new-key-just-added",
      "an-updated-key": "tag-value-was-just-changed",
      "an-unchanged-key": "tag-value-still-the-same"
    },
    "service": "ec2",
    "resource-type": "instance",
    "version": 3,
  }
}
```

所有 EventBridge 事件都有相同的顶级字段：
+ **版本** – 默认情况下，该值在所有事件中设置为 `0`0 (零)。
+ **id** – 为每个事件生成一个唯一值。在事件通过规则移到目标时以及处理事件时，这对于跟踪事件非常有用。
+ **详细信息-类别** – 与 `source` 字段组合起来标识显示在 detail 字段中的字段和值。
+ **来源** – 标识事件来源的服务。标签变更的来源是 `aws.tag`。
+ **时间**– 事件发生的时间。
+ **区域** – 标识事件源自的 Amazon Web Services 区域 区域。
+ **资源** — 此 JSON 数组包含用于标识事件中涉及的资源的亚马逊资源名称 (ARNs)。这是标签已更改的资源。
+ **详细信息** – 一个 JSON 对象，其内容因事件类型而异。资源的标签更改包括以下详细字段：
  + **changed-tag-keys**— 此事件更改的标签密钥。
  + **服务** – 资源所属的服务。在本示例中，服务是 `ec2`，即 Amazon EC2。
  + **资源类别** – 服务的资源类别。在此示例中，是 Amazon EC2 实例。
  + **版本** – 标签集的版本。版本从 1 开始，标签更改时会递增。您可以使用该版本来验证标签更改事件的顺序。
  + **标签** – 更改后附加到资源的标签。

有关更多信息，请参阅《[亚马逊* EventBridge 用户指南》中的亚马逊 EventBridge *事件模式](https://docs.amazonaws.cn/eventbridge/latest/userguide/eb-event-patterns.html)。

通过使用 EventBridge，您可以根据不同的字段创建匹配特定事件模式的规则。我们将在本教程中演示如何执行此操作。此外，我们还将展示，在未将指定标签附加到 Amazon EC2 实例的情况下，如何自动停止该实例。我们使用这些 EventBridge 字段创建模式来匹配启动 Lambda 函数的实例的标签事件。

## Lambda 和无服务器
<a name="lambda-and-serverless"></a>

Amazon Lambda 遵循无服务器模式在云中运行代码。需要时，您仅需运行代码，无需考虑服务器。您只需按使用的计算时间付费。尽管这种模式被称为*无服务器*，但这并不意味着没有服务器。在这种情况下，无服务器意味着您不必预置、配置或管理用于运行代码的服务器。 Amazon 所有这些都为你完成，所以你可以专注于你的代码。有关 Lambda 的更多信息，请参阅 [Amazon Lambda 产品概述](https://www.amazonaws.cn/lambda)。