使用 “AWS组织” 自动标记 Transit Gateway 附件 - AWS Prescriptive Guidance

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

使用 “AWS组织” 自动标记 Transit Gateway 附件

由 Richard Milner-Watts (AWS)、Haris Bin Ayub () 和 John Capps (AWS) 创作 AWS

代码库:T ransit Gateway 附件标记器

环境:生产

技术:联网;基础设施;管理和治理;运营/操作

AWS服务:AWSStep Functions;T AWS ransit Gateway;亚马逊VPC;AWSLambda

Summary

在 Amazon Web Services (AWS) 上,您可以使用AWS资源访问管理器跨AWS账户边界共享 T AWSransit Gateway。但是,当您跨账户边界创建中转网关连接时,创建的连接没有名称标签。这可能会使识别这些连接变得耗时。 

此解决方案提供了一种自动机制,用于为组织管理的组织中的账户收集有关每个 Transit Gateway 附件的信息。AWS该过程包括从 Transit Gateway 路由表中查找无类域间路由 (CIDR) 范围。然后,该解决方案会将格式为 <CIDR-range>-<AccountName> 的名称标签应用于持有中转网关的账户内的连接。

该解决方案可以与解决方案库中的无服务器公交网络 Orchestrator 等解决方案一起使用。AWS无服务器中转网络编排工具支持大规模自动创建中转网关连接。

先决条件和限制

先决条件

  • 一个活跃的AWS账户

  • 包含所有相关账户的 Organizations AWS 组织

  • 访问组织根目录下的组织管理账户,以创建所需的AWS身份和访问管理 (IAM) 角色

  • 包含一个或多个与组织共享并带有连接的中转网关的共享网络成员账户

架构

以下AWS管理控制台屏幕截图显示了此解决方案生成的无关联名称标签的 Transit Gateway 附件和两个带有名称标签的 Transit Gateway 附件的示例。生成的名称标签的结构为 <CIDR-range>-<AccountName>

控制台显示不带名称标签的附件与两个带名称标签的附件。

此解决方案用于部署 AWSStep AWS CloudFormationFun ctions 工作流程,该工作流程用于管理在所有已配置的区域中创建 Transit Gateway 名称标签。该工作流程调用 Lambd AWSa 函数,这些函数执行底层任务。

解决方案从 Organizations 获取账户名后,Step AWS Functions 状态机将获取所有 Transit Gateway 附件IDs。它们按AWS地区并行处理。此处理包括查找每个附件的CIDR范围。该CIDR范围是通过在区域内的 Transit Gateway 路由表中搜索匹配的 Transit Gateway 附件 ID 来获得的。如果所有必需的信息均可用,该解决方案会将名称标签应用于附件。该解决方案不会覆盖任何现有名称标签。

该解决方案按照 Amazon EventBridge 事件控制的时间表运行。该活动每天上午 6:00 启动解决方案。UTC

目标技术堆栈

  • Amazon EventBridge

  • AWSLambda

  • AWS组织

  • AWS Transit Gateway

  • 亚马逊 Virtual Private Cloud(亚马逊VPC)

  • AWS X-Ray

目标架构

下图演示了参考架构和工作流。

跨共享网络和组织管理帐户的九步流程。
  1. 计划的事件启动规则。

  2. 该 EventBridge 规则启动 Step Functions 状态机。

  3. 状态机调用 Lambda 函数 tgw-tagger-organizations-account-query

  4. tgw-tagger-organizations-account-query Lambda 函数在组织管理账户中代入该角色。

  5. tgw-tagger-organizations-account-queryLambda 函数调用 Organizations API 以返回AWS账户元数据。

  6. 状态机调用 Lambda 函数 tgw-tagger-attachment-query

  7. 对于每个区域,状态机并行调用 Lambd tgw-tagger-rtb-query a 函数来读取每个附件的CIDR范围。

  8. 对于每个区域,状态机并行调用 tgw-tagger-attachment-tagger Lambda 函数。

  9. 名称标签是在共享网络账户中为中转网关连接创建的。

自动化和扩缩

该解决方案并行处理每个区域以减少运行的总持续时间。

工具

AWS服务

  • AWS CloudFormation— 通过将基础架构视为代码,AWS CloudFormation 提供了一种对相关资源AWS和第三方资源集合进行建模、快速一致地配置这些资源并在其整个生命周期中对其进行管理的方法。

  • Ama zon EventBridge — Amazon EventBridge 是一项无服务器事件总线服务,可用于将应用程序与来自各种来源的数据连接起来。 EventBridge 接收事件(环境变化的指示器),并应用规则将事件路由到目标。规则根据事件的结构(称为事件模式)或计划将事件与目标匹配。

  • AWSLambda — Lam AWS bda 是一项计算服务,它支持在不预置或管理服务器的情况下运行代码。只有在需要时 Lambda 才运行您的代码,并且能自动扩缩,从每天几个请求扩展到每秒数千个请求。您只需按使用的计算时间付费。代码不运行时不会产生任何费用。

  • AWSOr gani AWS zations — 随着AWS资源的增长和扩展,Organizations 可帮助你集中管理和治理环境。使用 Or AWS ganizations,您可以通过编程方式创建新AWS账户和分配资源,对账户进行分组以组织工作流程,将策略应用于账户或群组进行治理,并通过对所有账户使用单一付款方式来简化计费。

  • AWSStep Fun ctions — AWS Step Functions 是一项低代码的可视化工作流AWS服务,用于编排服务、自动化业务流程和构建无服务器应用程序。工作流可以管理故障、重试、并行化、服务集成和可观测性,因此您可专注于更高价值的业务逻辑。

  • AWSTransit Gat eway — T AWS ransit Gateway 通过中央枢纽连接VPCs和本地网络。这简化了您的网络,结束了复杂的对等关系。它充当云路由器,因此每个新连接仅需建立一次。

  • 亚马逊 VPC — Amazon Virtual Private Cloud(AmazonVPC)是一项用于在您定义的逻辑隔离的虚拟网络中启动AWS资源的服务。

  • AWSAWSX-Ray — X-Ray 收集有关您的应用程序所处理的请求的数据,并提供可用于查看、筛选和深入了解这些数据的工具,以识别问题和优化机会。

代码

该解决方案的源代码可在 Tr ansit Gateway Attachment Tagger GitHub 存储库中找到。存储库包含以下文件:

  • tgw-attachment-tagger-main-stack.yaml 在共享网络账户中创建支持此解决方案的所有资源。

  • tgw-attachment-tagger-organizations-stack.yaml 在组织的管理账户中创建角色。

操作说明

任务描述所需技能

收集必要的先决条件信息。

要配置从 Lambda 函数到 Organizati AWS on API s 的跨账户访问权限,您需要该组织管理账户的账户 ID。

注意:两个 CloudFormation 堆栈的创建顺序很重要。您必须首先将资源部署到共享网络账户中。在将资源部署到组织的管理账户之前,共享网络账户中的角色必须已存在。有关更多信息,请参阅AWS文档

DevOps 工程师

启动主解决方案堆栈的 CloudFormation 模板。

主解决方案堆栈的模板将部署IAM角色、Step Functions 工作流程、Lambda 函数和事件。 CloudWatch

打开共享网络帐户的AWS管理控制台,然后打开 CloudFormation 控制台。 使用 tgw-attachment-tagger-main-stack.yaml 模板并指定以下值来创建堆栈: 

  • 堆栈名称tgw-attachment-tagger-main- stack 

  • awsOrganizationsRootAccountId— 组织管理账户的账户 ID

  • TGWRegions参数-解决方案的AWS区域,以逗号分隔的字符串输入

  • TGWListparameter — IDs 要从解决方案中排除的公交网关,以逗号分隔的字符串输入

有关启动 CloudFormation 堆栈的更多信息,请参阅AWS文档

DevOps 工程师

验证解决方案是否已成功启动。

等待 CloudFormation 堆栈的状态变为 CREATE_ COMPLETE。这应该需要不到 1 分钟的时间。

打开 Step Functions 控制台,验证是否创建了一台名为 tgw-attachment-tagger-state-machine 的新状态机

DevOps 工程师
任务描述所需技能

收集必要的先决条件信息。

要配置从 Lambda 函数到 Organizati AWS on API s 的跨账户访问权限,您需要共享网络账户的账户 ID。

DevOps 工程师

启动 Organizations 堆栈的 CloudFormation 模板

Organiz AWS ations 堆栈的模板将在组织的管理账户中部署该IAM角色。 

访问组织管理帐户的AWS控制台。然后打开 CloudFormation 控制台。 使用 tgw-attachment-tagger-organizations-stack.yaml 模板并指定以下值来创建堆栈:

  • 堆栈名称tgw-attachment-tagger-organizations- stack

  • NetworkingAccountId参数-共享网络帐户的帐户 ID 

对于其他堆栈创建选项,请用默认值。

DevOps 工程师

验证解决方案是否已成功启动。

等待 CloudFormation 堆栈的状态变为 CREATE_ COMPLETE。这应该需要不到 1 分钟的时间。

打开 Identity and Access Management (IAM) 控制台,确认已创建名为 tgw-attachment-tagger-organization-query- role 的新角色。

DevOps 工程师
任务描述所需技能

运行状态机。

打开共享网络账户的 Step Functions 控制台,然后在导航窗格选择状态机

选择状态机 tgw-attachment-tagger-state-机器,然后选择开始执行。 

由于解决方案不使用此状态机输入,因此您可使用默认值。

{ "Comment": "Insert your JSON here" }

选择启动执行

DevOps 工程师

观察状态机直至完成。

在打开的新页面,您可观看状态机的运行。持续时间将取决于待处理中转网关连接的数量。

在此页面,您可检查状态机的每个步骤。您可以查看状态机中的各种任务,并点击指向 Lambda 函数的 CloudWatch 日志链接。对于在地图中并行运行的任务,您可使用索引下拉列表来查看每个区域的具体实现。

DevOps 工程师

验证中转网关连接标签。

打开共享网络账户的VPC控制台,然后选择 T ransit Gateway 附件。 在控制台上,为满足标准的连接提供名称标签(连接将传播到中转网关路由表,并且资源所有者是组织的成员)。

DevOps 工程师

验证 CloudWatch 事件的启动。

等待 CloudWatch 事件启动。这定于 06:00 UTC 举行。 

然后打开共享网络账户的 Step Functions 控制台,然后在导航窗格选择状态机

选择状态机 tgw-attachment-tagger-state-机器。验证解决方案是否在 06:00 UTC 运行。

DevOps 工程师

相关资源