本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用无服务器工作流程和 Amazon 监控标签更改 EventBridge
Amazon EventBridge 支持对 Amazon 资源进行标签更改。使用这种 EventBridge 类型,您可以构建 EventBridge规则以匹配标签更改,并将事件路由到一个或多个目标。例如,目标可能是调用自动化工作流程的 Amazon Lambda 函数。本主题提供了一个教程,介绍如何使用 Lambda 构建经济实惠的无服务器解决方案,以安全地处理资源上的标签更改。 Amazon
标签更改会生成 EventBridge 事件
EventBridge 提供描述 Amazon 资源变化的近乎实时的系统事件流。许多 Amazon 资源都支持标签,标签是用户定义的自定义属性,可以轻松组织和分类 Amazon 资源。标签的常见使用案例包括成本分配分类、访问控制安全和自动化。
使用 EventBridge,您可以监控标签的更改并跟踪 Amazon 资源的标签状态。以前,为了实现类似的功能,您可能需要连续轮询APIs和编排多个呼叫。现在,对标签(包括单个服务APIs、标签编辑器和标记)的任何更改都API将在资源事件中启动标签更改。以下示例显示了标签更改所提示的典型 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数组包含 Amazon 资源名称 (ARNs),用于标识事件中涉及的资源。这是标签已更改的资源。
-
detail — 一个JSON对象,其内容因事件类型而异。资源的标签更改包括以下详细字段:
-
changed-tag-keys— 此事件更改的标签密钥。
-
服务 – 资源所属的服务。在本示例中,服务是
ec2
,即 Amazon EC2。 -
资源类别 – 服务的资源类别。在本示例中,它是一个 Amazon EC2 实例。
-
版本 – 标签集的版本。版本从 1 开始,标签更改时会递增。您可以使用该版本来验证标签更改事件的顺序。
-
标签 – 更改后附加到资源的标签。
-
有关更多信息,请参阅亚马逊 EventBridge 用户指南中的亚马逊 EventBridge 事件模式。
通过使用 EventBridge,您可以根据不同的字段创建匹配特定事件模式的规则。我们将在本教程中演示如何执行此操作。此外,我们还将展示在未将指定标签附加到Amazon EC2 实例的情况下如何自动停止该实例。我们使用这些 EventBridge 字段创建模式来匹配启动 Lambda 函数的实例的标签事件。
Lambda 和无服务器
Amazon Lambda 遵循无服务器模式在云中运行代码。需要时,您仅需运行代码,无需考虑服务器。您只需按使用的计算时间付费。尽管这种模式被称为无服务器,但这并不意味着没有服务器。在这种情况下,无服务器意味着您不必预置、配置或管理用于运行代码的服务器。 Amazon 所有这些都为你完成,所以你可以专注于你的代码。有关 Lambda 的更多信息,请参阅 Amazon Lambda 产品概述