상태 파일 손실 후 AWS Account Factory for Terraform(AFT) 리소스를 안전하게 정리 - 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

 상태 파일 손실 후 AWS Account Factory for Terraform(AFT) 리소스를 안전하게 정리

작성자: Gokendra Malviya(AWS)

요약

AWS Account Factory for Terraform(AFT)을 사용하여 AWS Control Tower 환경을 관리하면 AFT는 Terraform 상태 파일을 생성하여 Terraform에서 생성한 리소스의 상태 및 구성을 추적합니다. Terraform 상태 파일을 분실하면 리소스 관리 및 정리에 상당한 문제가 발생할 수 있습니다. 이 패턴은 AWS Control Tower 환경의 무결성을 유지하면서 AFT 관련 리소스를 안전하게 식별하고 제거하는 체계적인 접근 방식을 제공합니다.

이 프로세스는 원래 상태 파일 참조가 없더라도 모든 AFT 구성 요소를 적절하게 제거하도록 설계되었습니다. 이 프로세스는 환경에서 AFT를 성공적으로 다시 설정하고 재구성할 수 있는 명확한 경로를 제공하여 AWS Control Tower 운영 중단을 최소화합니다.

AFT에 대한 자세한 내용은 AWS Control Tower 설명서를 참조하세요.

사전 조건 및 제한 사항

사전 조건 

  • AFT 아키텍처에 대한 철저한 이해.

  • 다음 계정에 대한 관리자 액세스:

    • AFT 관리 계정

    • AWS Control Tower 관리 계정

    • 로그 아카이브 계정

    • 감사 계정

  • 서비스 제어 정책(SCPs AFT 관련 리소스의 삭제를 차단하는 제한 또는 제한이 포함되어 있지 않은지 확인합니다.

제한 사항

  • 이 프로세스는 리소스를 효과적으로 정리할 수 있지만 손실된 상태 파일을 복구할 수 없으며 일부 리소스는 수동 식별이 필요할 수 있습니다.

  • 정리 프로세스 기간은 환경의 복잡성에 따라 달라지며 몇 시간이 걸릴 수 있습니다.

  • 이 패턴은 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(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 Control Tower 서비스 전용 AWS 계정 입니다. 이를 일반적으로 AWS 지급인 계정 또는 AWS Organizations 관리 계정이라고도 합니다.

  • AFT 관리 계정은 AFT 관리 작업 전용 AWS 계정 입니다. 이는 조직의 관리 계정과 다릅니다.

  • 판매 계정은 선택한 모든 기준 구성 요소와 컨트롤을 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의 코드형 인프라(IaC) 도구로, 클라우드 및 온프레미스 리소스를 생성하고 관리하는 데 도움이 됩니다.

모범 사례

에픽

작업설명필요한 기술

AFT 태그로 식별되는 리소스를 삭제합니다.

  1. 관리자 권한으로 AFT 관리 계정에 로그인합니다.

  2. AWS Resource Groups 콘솔을 엽니다.

  3. 가 배포된 리전 AWS Control Tower 을 선택합니다.

  4. 탐색 창에서 Tag Editor를 선택합니다.

  5. 리소스 유형에서 지원되는 모든 리소스 유형을 선택합니다.

  6. 태그의 경우 managed_by를 태그 키로 입력하고 AFT를 태그 값으로 입력합니다.

  7. 리소스 검색을 선택합니다.

    이 검색에는 AFT에서 생성한 모든 리소스가 표시됩니다.

  8. 해당 서비스 콘솔을 사용하여 리소스 이름을 식별하고 삭제합니다. 예를 들어 Parameter Store 리소스를 삭제하려면

    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

    (계정 ID111122223333로 바꿉니다.)

  4. 두 버킷을 삭제합니다.

AWS 관리자, AWS DevOps, DevOps 엔지니어

IAM 역할을 삭제합니다.

  1. IAM 콘솔을 엽니다.

  2. 활성 서비스에서 다음 역할을 사용하고 있지 않은지 확인합니다.

    • AWSAFTService

    • AWSAFTExecution

  3. 두 역할을 삭제합니다.

AWS 관리자, AWS DevOps, DevOps 엔지니어
작업설명필요한 기술

IAM 역할을 삭제합니다.

  1. 관리자 권한으로 감사 계정에 로그인합니다.

  2. IAM 콘솔을 엽니다.

  3. 활성 서비스에서 다음 역할을 사용하고 있지 않은지 확인합니다.

    • AWSAFTService

    • AWSAFTExecution

  4. 두 역할을 삭제합니다.

AWS 관리자, AWS DevOps, DevOps 엔지니어
작업설명필요한 기술

IAM 역할을 삭제합니다.

  1. 관리자 권한으로 AWS Control Tower 관리 계정에 로그인합니다.

  2. IAM 콘솔을 엽니다.

  3. 활성 서비스에서 다음 역할을 사용하고 있지 않은지 확인합니다.

    • AWSAFTService

    • AWSAFTExecution

    • aft-control-tower-events-rule

  4. 세 가지 역할을 삭제합니다.

AWS 관리자, AWS DevOps, DevOps 엔지니어

EventBridge 규칙을 삭제합니다.

  1. EventBridge 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 역할을 선택합니다.

  3. 라는 규칙을 찾아 선택합니다aft-capture-ct-events.

  4. 삭제를 선택하고 메시지가 표시되면 삭제를 확인합니다.

AWS 관리자, AWS DevOps, DevOps 엔지니어

문제 해결

문제Solution

인터넷 게이트웨이 분리에 실패했습니다.

AFT 태그로 식별되는 리소스를 삭제하는 동안 인터넷 게이트웨이를 분리하거나 삭제할 때이 문제가 발생하면 먼저 VPC 엔드포인트를 삭제해야 합니다.

  1. AFT Management 계정에 로그인한 다음 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창의 VPC별 필터링 목록에서 aft-management-vpc라는 VPC를 선택합니다.

  3. 탐색 창에서 엔드포인트를 선택합니다.

  4. VPC aft-management-vpc와 연결된 엔드포인트를 선택합니다.

    • 잘못된 엔드포인트가 제거되지 않도록 삭제하기 전에 VPC ID 열을 다시 확인합니다.

    • AFT VPC와 연결된 엔드포인트만 삭제해야 합니다.

  5. 작업(Actions), VPC 엔드포인트 삭제(Delete VPC endpoints)를 차례로 선택합니다.

  6. 확인 대화 상자에서 삭제를 입력한 다음 삭제를 선택합니다.

  7. 엔드포인트 상태가 삭제됨으로 변경될 때까지 기다립니다.

    삭제를 완료하는 데 몇 분 정도 걸릴 수 있습니다.

지정된 CloudWatch 쿼리를 찾을 수 없습니다.

AFT에서 생성한 CloudWatch 쿼리를 찾을 수 없는 경우 다음 단계를 따릅니다.

  1. AFT Management 계정에 로그인한 다음 CloudWatch 콘솔을 엽니다.

  2. 탐색 창의 로그에서 Logs Insights를 선택합니다.

  3. 오른쪽 상단 모서리에서 저장된 쿼리 및 샘플 쿼리 아이콘을 선택합니다.

    이제 AFT 쿼리를 볼 수 있습니다. 스크린샷은 추가 정보 섹션을 참조하세요.

  4. 다음 쿼리를 선택한 다음 작업, 삭제를 선택하여 쿼리를 제거합니다.

    • Customization Logs by Account ID

    • Customization Logs by Customization Request ID

관련 리소스

추가 정보

CloudWatch Logs Insights 대시보드에서 AFT 쿼리를 보려면 다음 스크린샷과 같이 오른쪽 상단 모서리에서 저장된 쿼리 및 샘플 쿼리 아이콘을 선택합니다.

CloudWatch Logs Insights 대시보드에서 AFT 쿼리에 액세스합니다.