ステートファイルが失われた後、 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 関連のリソースの削除をブロックする制限または制限を含むサービスコントロールポリシー (SCPs) がないことを確認します。

制約事項

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

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

  • このパターンは 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 は、アカウントのプロビジョニングとカスタマイズに役立つ 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 管理オペレーション専用の です。これは、組織の管理アカウントとは異なります。

  • 販売済みアカウントは、選択したすべてのベースラインコンポーネントとコントロール 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. 対応するサービスコンソールを使用してリソース名を特定し、削除します。たとえば、Parameter Store リソースを削除するには:

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

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

    3. 検索ボックスで、クリックしてドロップダウンを表示し、名前を選択し、等号を選択して、/aft と入力します。

    4. 10 個のバッチでパラメータを削除します。(これは同時に削除できる最大数です)。

      AFT バージョン 1.12.2 の場合、削除する Parameter Store リソースは約 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. 管理者権限を持つ Log Archive アカウントにサインインします。

  2. Amazon S3 コンソールを開きます。

  3. 次のバケットを空にします。

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

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

    ( をアカウント ID 111122223333に置き換えます)。

  4. 2 つのバケットを削除します。

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

IAM ロールを削除します。

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

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

    • AWSAFTService

    • AWSAFTExecution

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

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

IAM ロールを削除します。

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

  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. 確認ダイアログボックスで、「削除」と入力し、「削除」を選択します。

  7. エンドポイントのステータスが Deleted に変わるまで待ちます。

    削除が完了するまでに数分かかる場合があります。

指定された CloudWatch クエリが見つかりません。

AFT によって作成された CloudWatch クエリが見つからない場合は、次の手順に従います。

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

  2. ナビゲーションペインの「ログ」で、「ログインサイト」を選択します。

  3. 右上隅で、保存されたクエリとサンプルクエリのアイコンを選択します。

    これで、AFT クエリが表示されます。スクリーンショットについては、「追加情報」セクションを参照してください。

  4. 次のクエリを選択し、アクション削除を選択して削除します。

    • Customization Logs by Account ID

    • Customization Logs by Customization Request ID

関連リソース

追加情報

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

CloudWatch Logs Insights ダッシュボードでの AFT クエリへのアクセス。