状态文件丢失后,安全地清 AWS 理 Terraform (AFT) 资源的 Account Factory - AWS Prescriptive Guidance

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

 状态文件丢失后,安全地清 AWS 理 Terraform (AFT) 资源的 Account Factory

Gokendra Malviya,Amazon Web Services

摘要

当你使用 Acco AWS unt Factory for Terraform (AFT) 管理 AWS Control Tower 环境时,AFT 会生成一个 Terraform 状态文件来跟踪 Terraform 创建的资源的状态和配置。丢失 Terraform 状态文件可能会给资源管理和清理带来重大挑战。这种模式提供了一种系统的方法,可以安全地识别和移除 AFT 相关资源,同时保持环境的完整性。 AWS Control Tower

该过程旨在确保正确移除所有 AFT 组件,即使没有原始状态文件参考也是如此。此过程为在您的环境中成功重新建立和重新配置 AFT 提供了明确的途径,有助于确保最大限度地减少对运营的干扰。 AWS Control Tower

有关 AFT 的更多信息,请参阅AWS Control Tower 文档

先决条件和限制

先决条件

  • 对 A FT 架构有透彻的了解。

  • 对以下账户的管理员访问权限:

    • AFT 管理账户

    • AWS Control Tower 管理账户

    • 日志存档账户

    • 审计账户

  • 验证没有任何服务控制策略 (SCPs) 包含会阻止删除 AFT 相关资源的限制或限制。

限制

  • 此过程可以有效地清理资源,但无法恢复丢失的状态文件,并且某些资源可能需要手动识别。

  • 清理过程的持续时间取决于环境的复杂性,可能需要几个小时。

  • 此模式已在 AFT 版本 1.12.2 中进行了测试,并删除了以下资源。如果您使用的是其他版本的 AFT,则可能需要删除其他资源。

    服务名称

    资源数量

    AWS CodeBuild

    6

    AWS CodeCommit

    4

    AWS CodePipeline

    4

    Amazon DynamoDB

    5

    亚马逊弹性计算云(亚马逊 EC2)

    16

    Amazon EventBridge

    4

    AWS Identity and Access Management (IAM) 角色

    40

    AWS Key Management Service (AWS KMS)

    2

    AWS Lambda

    17

    Amazon Simple Storage Service(Amazon S3)

    2

    Amazon Simple Notification Service (Amazon SNS)

    2

    Amazon Simple Queue Service(Amazon SQS)

    2

    AWS Systems Manager

    62

    AWS Step Functions

    4

重要

通过此模式中的步骤删除的资源无法恢复。在执行这些步骤之前,请仔细验证资源名称并确保它们是由 AFT 创建的。

架构

下图显示了 AFT 组件和高级工作流程。AFT 建立了一个 Terraform 管道,可以帮助你在中配置和自定义账户。 AWS Control Tower AFT 遵循一种 GitOps 模型来实现账户配置过程的自动化 AWS Control Tower。您可以为账户请求创建 Terraform 文件并将其提交到存储库,存储库提供的输入触发 AFT 帐户配置工作流程。账户配置完成后,AFT 可以自动运行其他自定义步骤。

AFT 组件和高级工作流程。

在此架构中:

  • AWS Control Tower 管理账户是专用于 AWS 账户 该 AWS Control Tower 服务的账户。这通常也称为AWS 付款人账户AWS Organizations 管理账户

  • AFT 管理账户是专门用 AWS 账户 于 AFT 管理操作的账户。这与贵组织的管理账户不同。

  • Vended 账户 AWS 账户 包含您选择的所有基准组件和控件。AFT AWS Control Tower 用来出售一个新账户。

有关此架构的更多信息,请参阅 AWS Control Tower 研讨会中的 AFT 简介

工具

AWS 服务

  • AWS Control Tower按照规范性最佳实践,帮助您设置和管理 AWS 多账户环境。

  • AWS A@@ ccount Factory for Terraform (AFT) 设置了 Terraform 管道,以帮助你在中配置和自定义账户和资源。 AWS Control Tower

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

  • AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。此模式需要 IAM 角色和权限。

其他工具

  • Terraform 是一款基础设施即代码 (IaC) 工具 HashiCorp ,可帮助您创建和管理云和本地资源。

最佳实践

操作说明

Task描述所需技能

删除由 AFT 标签标识的资源。

  1. 使用管理员权限登录 AFT 管理账户。

  2. 打开 AWS Resource Groups 管理控制台

  3. 选择 AWS Control Tower 已部署的区域。

  4. 在导航窗格中,选择标签编辑器

  5. 对于资源类型,请选择所有支持的资源类型

  6. 对于标签,键入 m anaged_by 作为标签键,键入 AFT 作为标签值。

  7. 选择搜索资源

    此搜索显示由 AFT 创建的所有资源。

  8. 识别资源名称并使用相应的服务控制台将其删除。例如,要删除参数存储资源,请执行以下操作:

    1. 打开 AWS Systems Manager 管理控制台

    2. 在导航窗格中,选择 Parameter Store

    3. 在搜索框中,单击显示下拉列表,选择名称,选择等于,然后键入/aft。

    4. 以 10 个为一批删除参数。(这是您可以同时删除的最大数量。)

      对于 AFT 版本 1.12.2,将有大约 62 个参数存储资源需要删除。所有参数名称都将以 /aft 开头。

    但是,并非所有资源都可以通过识别 AWS Resource Groups。在以下步骤中,您将找到并删除剩余的资源。

AWS 管理员、AWS DevOps、 DevOps 工程师

删除 IAM 角色。

  1. 使用管理员权限登录 AFT 管理账户。

  2. 打开 IAM 管理控制台

  3. 按列出的顺序删除这些角色(由于依赖关系,顺序很重要):

    • aft-*

    • AWSAFTAdmin

    • AWSAFTExecution

    • AWSAFTService

    • codebuild_trigger_role

AWS 管理员、AWS DevOps、 DevOps 工程师

删除 AWS Backup 备份保管库。

  1. 打开 AWS Backup 管理控制台

  2. 找到名为的备份保管库aws_backup_vault

  3. 确认保管库中不包含任何活动备份。

  4. 删除 aws_backup_vault

AWS 管理员、AWS DevOps、 DevOps 工程师

删除 Amazon CloudWatch 资源。

  1. 打开 CloudWatch 管理控制台

  2. 按所列顺序删除以下资源:

    1. 事件总线:删除aws_cloudwatch_event_bus

    2. 日志:搜索前缀 AFT 并删除所有相关的日志组。

    3. 查询定义:删除以下查询:

      • Customization Logs by Account ID

      • Customization Logs by Customization Request ID

AWS 管理员、AWS DevOps、 DevOps 工程师

删除 AWS KMS 资源。

  1. 切换到辅助区域,该区域用作跟踪 AFT 自身状态的后端。

  2. 打开 AWS KMS 管理控制台

  3. 删除名为 AFT 的名。

AWS 管理员、AWS DevOps、 DevOps 工程师
Task描述所需技能

删除 S3 存储桶。

  1. 使用管理员权限登录日志存档帐户。

  2. 打开 Amazon S3 控制台

  3. 清空以下存储桶:

    • aws-aft-logs-471112509802-us-east-1

    • aws-aft-s3-access-logs-471112509802-us-east-1

    111122223333替换为您的账户 ID。)

  4. 删除这两个存储桶。

AWS 管理员、AWS DevOps、 DevOps 工程师

删除 IAM 角色。

  1. 打开 IAM 管理控制台

  2. 确认任何活动服务均未使用以下角色:

    • AWSAFTService

    • AWSAFTExecution

  3. 删除这两个角色。

AWS 管理员、AWS DevOps、 DevOps 工程师
Task描述所需技能

删除 IAM 角色。

  1. 使用管理员权限登录审核账户。

  2. 打开 IAM 管理控制台

  3. 确认任何活动服务均未使用以下角色:

    • AWSAFTService

    • AWSAFTExecution

  4. 删除这两个角色。

AWS 管理员、AWS DevOps、 DevOps 工程师
Task描述所需技能

删除 IAM 角色。

  1. 使用管理员权限登录 AWS Control Tower 管理账户。

  2. 打开 IAM 管理控制台

  3. 确认任何活动服务均未使用以下角色:

    • AWSAFTService

    • AWSAFTExecution

    • aft-control-tower-events-rule

  4. 删除这三个角色。

AWS 管理员、AWS DevOps、 DevOps 工程师

删除 EventBridge 规则。

  1. 打开 Amazon EventBridge 控制台

  2. 在左侧导航窗格中,选择 Rules (规则)

  3. 找到并选择名为的规则aft-capture-ct-events

  4. 选择删除并在出现提示时确认删除。

AWS 管理员、AWS DevOps、 DevOps 工程师

故障排除

事务解决方案

断开互联网网关失败。

在删除由 AFT 标签标识的资源时,如果在断开或删除 Internet 网关时遇到此问题,则必须先删除 VPC 终端节点:

  1. 登录 AFT 管理账户,然后打开 Amazon VPC 控制台

  2. 在导航窗格的按 VPC 筛选列表中,选择名为的 VPC aft-management-vpc

  3. 在导航窗格中,选择端点

  4. 选择与 VPC 关联的终端节点aft-management-vpc

    • 删除前请仔细检查 VPC ID 列,以免移除错误的终端节点。

    • 请注意仅删除与 AFT VPC 关联的端点。

  5. 选择 Actions(操作)、Delete VPC Endpoint(删除 VPC 端点)。

  6. 在确认对话框中,键入 delete,然后选择删除

  7. 等待终端节点状态更改为 “已删除”。

    删除可能需要几分钟才能完成。

您找不到指定的 CloudWatch 查询。

如果您找不到 AFT 创建的 CloudWatch 查询,请按照以下步骤操作:

  1. 登录 AFT 管理账户,然后打开CloudWatch 控制台

  2. 在导航窗格的 “日志” 下,选择 “日志见解”。

  3. 在右上角,选择已保存和示例查询图标。

    现在,您应该可以看到 AFT 查询了。有关屏幕截图,请参阅 “其他信息” 部分。

  4. 选择以下查询,然后选择 “操作”、“删除” 将其删除。

    • Customization Logs by Account ID

    • Customization Logs by Customization Request ID

相关资源

其他信息

要在 L CloudWatch ogs Insights 控制面板上查看 AFT 查询,请从右上角选择已保存和示例查询图标,如以下屏幕截图所示:

在 “ CloudWatch 日志见解” 控制面板上访问 AFT 查询。