View a markdown version of this page

ステートファイルが失われた後、 AWS Account Factory for Terraform (AFT) リソースを安全にクリーンアップする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステートファイルが失われた後、 AWS Account Factory for Terraform (AFT) リソースを安全にクリーンアップする

Gokendra Malviya (Amazon Web Services)

概要

AWS Account Factory for Terraform (AFT) を使用して AWS Control Tower 環境を管理すると、AFT は Terraform 状態ファイルを生成して、Terraform によって作成されたリソースの状態と設定を追跡します。Terraform ステートファイルが失われると、リソース管理とクリーンアップに大きな課題が生じる可能性があります。このパターンは、 AWS Control Tower 環境の整合性を維持しながら、AFT 関連のリソースを安全に識別および削除する体系的なアプローチを提供します。

このプロセスは、元のステートファイルへの参照がない場合でも、すべての AFT コンポーネントを適切に削除できるように設計されています。このプロセスは、 AWS Control Tower オペレーションの中断を最小限に抑えるために、環境で AFT を正常に再確立および再設定するための明確な道筋を提供します。

AFT の詳細については、AWS Control Tower のドキュメントを参照してください。

前提条件と制限

前提条件

  • AFT アーキテクチャについての十分な理解。

  • 次のアカウントへの管理者アクセス:

    • AFT 管理アカウント

    • AWS Control Tower 管理アカウント

    • ログアーカイブアカウント

    • 監査アカウント

  • AFT 関連リソースの削除をブロックする制約や制限がサービスコントロールポリシー (SCP) に含まれていないことを確認します。

制限事項

  • このプロセスではリソースを効果的にクリーンアップできますが、失われたステートファイルを復元することはできません。また、一部のリソースは手動で識別しなければならない場合があります。

  • クリーンアッププロセスの所要時間は、環境の複雑さによって異なり、数時間かかる場合もあります。

  • このパターンは AFT バージョン 1.12.2 でテストされており、次のリソースを削除します。別のバージョンの AFT を使用している場合は、追加リソースの削除が必要になる場合があります。

    サービス名

    リソース数

    AWS CodeBuild

    6

    AWS CodeCommit

    4

    AWS CodePipeline

    4

    Amazon DynamoDB

    5

    Amazon Elastic Compute Cloud (Amazon 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 は、 AWS Control Towerでアカウントのプロビジョニングとカスタマイズを支援する Terraform パイプラインを設定します。AFT は GitOps モデルに従って、アカウントプロビジョニングのプロセスを自動化します AWS Control Tower。ここで、ユーザーはアカウントリクエストの Terraform ファイルを作成し、リポジトリにコミットします。このファイルは、アカウントプロビジョニングの AFT ワークフローをトリガーするための入力となります。アカウントプロビジョニングが完了すると、AFT は追加のカスタマイズ手順を自動的に実行できます。

AFT コンポーネントと高レベルのワークフロー。

このアーキテクチャの詳細は以下のとおりです。

  • AWS Control Tower 管理アカウントは AWS アカウント 、 AWS Control Tower サービス専用の です。これは通常、AWS 支払者アカウントまたは AWS Organizations 管理アカウントとも呼ばれます。

  • AFT 管理アカウントは AWS アカウント 、AFT 管理オペレーション専用の です。これは、組織の管理アカウントとは異なります。

  • 販売済みアカウントは、選択したすべてのベースラインコンポーネントとコントロール AWS アカウント を含む です。AFT は AWS Control Tower を使用して新しいアカウントを提供します。

このアーキテクチャの詳細については、 AWS Control Tower ワークショップの「AFT の概要」を参照してください。

ツール

AWS のサービス

  • AWS Control Tower は、規範的なベストプラクティスに従って、 AWS マルチアカウント環境のセットアップと管理に役立ちます。

  • AWS Account Factory for Terraform (AFT) は、アカウントとリソースのプロビジョニングとカスタマイズに役立つ Terraform パイプラインを設定します AWS Control Tower。

  • AWS Organizations は、 AWS リソースの拡大とスケーリングに合わせて環境を一元的に管理および管理するのに役立ちます。Organizations を使用すると、アカウントの作成、リソースの割り当て、ワークロードを整理するためのアカウントのグループ化、ガバナンスポリシーの適用、すべてのアカウントに単一の支払い方法を使用した請求の簡素化が可能になります。

  • AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。このパターンには、IAM ロールとアクセス許可が必要です。

その他のツール

  • Terraform は、HashiCorp の infrastructure as code (IaC) ツールで、クラウドとオンプレミスのリソースの作成と管理を支援します。

ベストプラクティス

エピック

タスク説明必要なスキル

AFT タグで識別されるリソースを削除する

  1. 管理者権限を使用して AFT 管理アカウントにサインインします。

  2. AWS Resource Groups コンソール を開きます。

  3. AWS Control Tower がデプロイされたリージョンを選択します。

  4. ナビゲーションペインでタグエディタを選択します。

  5. [リソースタイプ][サポートされるすべてのリソースタイプ] を選択します。

  6. [タグ] では、タグキーとして「managed_by」、タグ値として「AFT」と入力します。

  7. [リソースを検索] を選択します。

    この検索で、AFT によって作成されたすべてのリソースが表示されます。

  8. 対応するサービスコンソールを使用してリソース名を特定し、削除します。例えば、パラメータストアリソースを削除するには、次の手順を実行します。

    1. AWS Systems Manager コンソール を開きます。

    2. ナビゲーションペインで、[パラメータストア] を選択します。

    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 エンジニア
タスク説明必要なスキル

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. この 2 つのバケットを削除します。

AWS 管理者、AWS DevOps、DevOps エンジニア

IAM ロールを削除する

  1. [IAM コンソール] を開きます。

  2. アクティブなサービスで、次のロールが使用されていないことを確認します。

    • AWSAFTService

    • AWSAFTExecution

  3. この 2 つのロールを削除します。

AWS 管理者、AWS DevOps、DevOps エンジニア
タスク説明必要なスキル

IAM ロールを削除する

  1. 管理者権限を使用して監査アカウントにサインインします。

  2. [IAM コンソール] を開きます。

  3. アクティブなサービスで、次のロールが使用されていないことを確認します。

    • AWSAFTService

    • AWSAFTExecution

  4. この 2 つのロールを削除します。

AWS 管理者、AWS DevOps、DevOps エンジニア
タスク説明必要なスキル

IAM ロールを削除する

  1. 管理者権限を持つ AWS Control Tower 管理アカウントにサインインします。

  2. [IAM コンソール] を開きます。

  3. アクティブなサービスで、次のロールが使用されていないことを確認します。

    • AWSAFTService

    • AWSAFTExecution

    • aft-control-tower-events-rule

  4. この 3 つのロールを削除します。

AWS 管理者、AWS DevOps、DevOps エンジニア

EventBridge ルールを削除する

  1. Amazon EventBridge コンソールを開きます。

  2. 左のナビゲーションペインで、[ロール] を選択します。

  3. aft-capture-ct-events という名前のルールを見つけて選択します。

  4. [削除] を選択し、プロンプトが表示されたら削除を確定します。

AWS 管理者、AWS DevOps、DevOps エンジニア

トラブルシューティング

問題ソリューション

インターネットゲートウェイのデタッチに失敗した

AFT タグで識別されるリソースを削除しようとして、インターネットゲートウェイをデタッチまたは削除するときにこの問題が発生した場合は、まず VPC エンドポイントを削除する必要があります。

  1. AFT 管理アカウントにサインインし、Amazon VPC コンソールを開きます。

  2. ナビゲーションペインの [VPC でフィルタリング] リストで、aft-management-vpc という名前の VPC を選択します。

  3. ナビゲーションペインで、[エンドポイント] を選択します。

  4. VPC aft-management-vpc に関連付けられているエンドポイントを選択します。

    • 削除する前に VPC ID 列を再チェックして、間違ったエンドポイントを削除しないようにします。

    • AFT VPC に関連付けられているエンドポイントのみを削除するように注意してください。

  5. [アクション][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

関連リソース

追加情報

CloudWatch のログのインサイトダッシュボードで AFT クエリを表示するには、次のスクリーンショットに示すように、画面右上隅の [保存済みクエリとサンプルクエリ] アイコンを選択します。

CloudWatch のログのインサイトダッシュボードでの AFT クエリへのアクセス