AWS 리소스 평가 자동화 - AWS 권장 가이드

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

AWS 리소스 평가 자동화

작성자: Naveen Suthar(AWS), Arun Bagal(AWS), Manish Garg(AWS), Sandeep Gawande(AWS)

코드 리포지토리: infrastructure-assessment-iac-automation

환경: PoC 또는 파일럿

기술: DevOps; 인프라; 관리 및 거버넌스, 운영, 서버리스

AWS 서비스: 아마존 아테나, AWS, AWS Lambda CloudTrail, 아마존 S3, 아마존 QuickSight

요약

이 패턴은 AWS Cloud Development Kit(AWS CDK)를 사용하여 리소스 평가 기능을 설정하는 자동화된 접근 방식을 설명합니다. 운영팀은 이 패턴을 사용하여 자동화된 방식으로 리소스 감사 세부 정보를 수집하고 단일 대시보드에서 AWS 계정에 배포된 모든 리소스의 세부 정보를 볼 수 있습니다. 이는 다음과 같은 경우에 유용합니다.

  • 코드형 인프라 (IaC) 도구를 식별하고 HashiCorp Terraform, AWS CloudFormation, AWS CDK 및 AWS 명령줄 인터페이스 (AWS CLI) 와 같은 다양한 IaC 솔루션에서 생성된 리소스를 격리합니다.

  • 리소스 감사 정보 가져오기

또한 이 솔루션은 경영진이 단일 대시보드에서 AWS 계정의 리소스 및 활동에 대한 통찰력을 얻는 데도 도움이 됩니다.

참고: QuickSight Amazon은 유료 서비스입니다. 이를 실행하여 데이터를 분석하고 대시보드를 생성하기 전에 Amazon QuickSight 요금을 검토하십시오.

사전 조건 및 제한 사항

사전 조건

제한 사항

  • 이 솔루션은 단일 AWS 계정에 배포됩니다.

  • CloudTrail AWS가 이미 설정되어 있고 S3 버킷에 데이터를 저장하지 않는 한 솔루션은 배포 전에 발생한 이벤트를 추적하지 않습니다.

제품 버전

  • AWS CDK 버전 2.55.1 이상

  • Python 버전 3.9 이상

아키텍처

대상 기술 스택

  • Amazon Athena

  • AWS CloudTrail

  • Glue

  • Lambda

  • 아마존 QuickSight

  • Amazon S3

대상 아키텍처

AWS CDK 코드는 AWS 계정에서 리소스 평가 기능을 설정하는 데 필요한 모든 리소스를 배포합니다. 다음 다이어그램은 AWS Glue, Amazon Athena 및 로 CloudTrail 로그를 보내는 프로세스를 보여줍니다. QuickSight

AWS Glue, Amazon Athena, Amazon과 함께 6단계 프로세스를 통해 AWS 리소스를 평가합니다. QuickSight
  1. CloudTrail 저장을 위해 S3 버킷으로 로그를 전송합니다.

  2. 이벤트 알림은 로그를 처리하고 필터링된 데이터를 생성하는 Lambda 함수를 간접 호출합니다.

  3. 필터링된 데이터는 다른 S3 버킷에 저장됩니다.

  4. S3 버킷의 필터링된 데이터에 AWS Glue 크롤러가 설정되어 AWS Glue 데이터 카탈로그 테이블에 스키마를 생성합니다.

  5. Amazon Athena는 필터링된 데이터를 쿼리할 준비가 되었습니다.

  6. 는 시각화를 QuickSight 위해 쿼리된 데이터에 액세스합니다.

자동화 및 규모 조정

  • AWS Organizations에 조직 전반의 추적이 있는 경우 이 솔루션을 하나의 AWS 계정에서 여러 CloudTrail AWS 계정으로 확장할 수 있습니다. 조직 CloudTrail 수준에서 배포하면 이 솔루션을 사용하여 필요한 모든 리소스에 대한 리소스 감사 세부 정보를 가져올 수도 있습니다.

  • 이 패턴은 AWS 서버리스 리소스를 사용하여 솔루션을 배포합니다.

도구

서비스

  • Amazon Athena는 표준 SQL을 사용하여 Amazon S3에 있는 데이터를 직접 분석할 수 있는 대화형 쿼리 서비스입니다.

  • AWS Cloud Development Kit(AWS CDK)는 AWS 클라우드 인프라를 코드로 정의하고 프로비저닝하는 데 도움이 되는 소프트웨어 개발 프레임워크입니다.

  • AWS는 AWS CloudFormation 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, AWS 계정 및 AWS 지역의 수명 주기 전반에 걸쳐 리소스를 관리할 수 있도록 지원합니다.

  • AWS는 AWS 계정의 거버넌스, 규정 준수 및 운영 위험을 감사할 수 있도록 CloudTrail 지원합니다.

  • AWS Glue는 완전 관리형 추출, 전환, 적재(ETL) 서비스입니다. 이를 통해 데이터 스토어와 데이터 스트림 간에 데이터를 안정적으로 분류, 정리, 보강하고 이동할 수 있습니다. 이 패턴은 AWS Glue 크롤러와 AWS Glue 데이터 카탈로그 테이블을 사용합니다.

  • AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있도록 도와주는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.

  • QuickSightAmazon은 단일 대시보드에서 데이터를 시각화, 분석 및 보고하는 데 도움이 되는 클라우드 규모의 비즈니스 인텔리전스 (BI) 서비스입니다.

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

코드 리포지토리

이 패턴의 코드는 리포지토리에서 사용할 수 있습니다. GitHub infrastructure-assessment-iac-automation

코드 리포지토리에는 다음 파일과 폴더가 포함되어 있습니다.

  • lib 폴더 - AWS CDK는 AWS 리소스를 생성하는 데 사용되는 Python 파일 구성

  • src/lambda_code - Lambda 함수에서 실행되는 Python 코드

  • requirements.txt - 설치해야 하는 모든 Python 종속성 목록

  • cdk.json - 리소스를 스핀업하는 데 필요한 값을 제공하는 입력 파일

모범 사례

Lambda 함수에 대한 모니터링 및 알림을 설정합니다. 자세한 내용은 Lambda 함수 모니터링 및 문제 해결을 참조하십시오. Lambda 함수를 사용할 때의 일반적인 모범 사례는 AWS 설명서를 참조하십시오.

에픽

작업설명필요한 기술

로컬 머신에서 저장소를 복제합니다.

리포지토리를 복제하려면 git clone https://github.com/aws-samples/infrastructure-assessment-iac-automation.git 명령을 실행합니다.

AWS DevOps, DevOps 엔지니어

Python 가상 환경을 설정하고 필요한 종속성을 설치합니다.

다음 명령을 실행하여 Python 가상 환경을 설정합니다.

cd infrastructure-assessment-iac-automation python3 -m venv .venv source .venv/bin/activate

필요한 종속성을 설정하려면 pip install -r requirements.txt 명령을 실행합니다.

AWS DevOps, DevOps 엔지니어

AWS CDK 환경을 설정하고 AWS CDK 코드를 합성합니다.

  1. AWS 계정에서 AWS CDK 환경을 설정하려면 cdk bootstrap aws://ACCOUNT-NUMBER/REGION 명령을 실행합니다.

  2. 코드를 AWS CloudFormation stack 구성으로 변환하려면 명령을 실행합니다cdk synth.

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

스택이 배포될 계정 및 리전의 변수를 내보냅니다.

환경 변수를 사용하여 AWS CDK용 AWS 보안 인증을 제공하려면 다음 명령을 실행합니다.

export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number> export CDK_DEFAULT_REGION=<region>
AWS DevOps, DevOps 엔지니어

AWS CLI 프로필을 설치합니다.

계정에 대한 AWS CLI 프로필을 설정하려면 AWS 설명서의 지침을 따르십시오.

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

계정에 리소스를 배포하십시오.

AWS CDK를 사용하여 AWS 계정에 리소스를 배포하려면 다음을 수행하십시오.

  1. 복제된 리포지토리의 루트에 있는 cdk.json 파일에서 다음 파라미터에 대한 입력을 제공합니다.

    • s3_context

    • ct_context

    • kms_context

    • lambda_context

    • glue_context

    • qs_context

    이러한 값은 리소스 구성 및 명명법을 정의합니다. 기본값이 설정되며 필요한 경우 변경할 수 있습니다.

    참고: S3 버킷이 이미 존재한다는 오류가 발생하지 않도록 하려면 ct output 섹션의 s3_context에 고유한 이름을 입력해야 합니다.

  2. 리소스를 배포하려면 cdk deploy 명령을 실행합니다.

    cdk deploy 명령은 이벤트를 기록하고 입력 S3 버킷에 로그 파일을 저장하는 CloudTrail 리소스를 생성합니다. Lambda 함수에서 트레일의 로그 파일을 처리합니다. 필터링된 결과는 출력 S3 버킷에 저장되며 Amazon Athena와 Amazon에서 바로 사용할 수 있습니다. QuickSight

AWS DevOps

AWS Glue 크롤러를 실행하며 데이터 카탈로그 테이블을 생성합니다.

AWS Glue 크롤러는 데이터 스키마를 동적으로 유지하는 데 사용됩니다. 이 솔루션은 AWS Glue 크롤러 스케줄러에서 정의한 대로 정기적으로 크롤러를 실행하여 AWS Glue 데이터 카탈로그 테이블에 파티션을 생성하고 업데이트합니다. 출력 S3 버킷에서 데이터를 사용할 수 있게 되면 다음 단계에 따라 AWS Glue 크롤러를 실행하고 테스트용 데이터 카탈로그 테이블 스키마를 생성합니다.

  1. AWS Management Console에 로그인하고 에서 AWS Glue 콘솔을 엽니다.

  2. 탐색 창의 데이터 카탈로그에서 크롤러를 선택합니다.

  3. iac-tool-qa-resource-iac-json-crawler 크롤러를 선택합니다.

  4. 크롤러를 실행합니다.

  5. 크롤러가 성공적으로 실행되면 AWS Glue 데이터 카탈로그 테이블을 생성합니다. QuickSight AWS는 테이블을 사용하여 데이터를 시각화합니다.

참고: AWS CDK 코드는 AWS Glue 크롤러가 특정 시간에 실행되도록 구성하지만 온디맨드로 실행할 수도 있습니다.

AWS DevOps, DevOps 엔지니어

QuickSight 구조물 배포.

  1. 구문을 배포하려면 QuickSight #QuickSight setup – ends 인터-인에서 resource_iac_tool_stack.py 코드의 주석 처리를 제거해야 #QuickSight setup - start 합니다.

  2. 주석 처리를 제거한 후 cdk deploy 명령을 실행하여 QuickSight DataSet 계정에서 &를 생성합니다QuickSight DataSource. QuickSight

AWS DevOps, DevOps 엔지니어

QuickSight 대시보드 생성.

예제 QuickSight 대시보드와 분석을 만들려면 다음과 같이 하십시오.

  1. QuickSight 콘솔로 이동하여 리소스가 배포되는 AWS 지역을 선택합니다.

  2. 탐색 창에서 Datasets를 선택하고 Amazon QuickSight 데이터세트에 이름이 지정된 데이터세트가 ct-operations-iac-ds 생성되었는지 확인합니다.

    데이터세트가 보이지 않는 경우 구문을 재배포하세요. QuickSight

  3. ct-operations-iac-ds 데이터 세트를 선택하고 분석에 사용을 선택합니다.

  4. 기본 시트를 선택합니다.

  5. 왼쪽의 필드 목록에서 각 열을 선택합니다.

  6. 필요한 열을 선택한 후 적절한 시각적 유형을 선택하여 데이터를 확인합니다.

자세한 내용은 Amazon에서 분석 시작 QuickSight 및 Amazon의 시각적 유형을 참조하십시오 QuickSight.

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

AWS 리소스를 제거합니다.

  1. 솔루션에서 배포한 AWS 리소스를 제거하려면 cdk destroy 명령을 실행합니다.

  2. 두 S3 버킷에서 모든 객체를 삭제한 다음 버킷을 제거합니다.

    자세한 내용은 버킷 삭제를 참조하십시오.

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

수동으로 생성한 리소스를 모니터링하고 정리합니다.

(선택 사항) 조직에 IaC 도구를 사용하여 리소스를 생성해야 하는 규정 준수 요구 사항이 있는 경우, AWS 리소스 평가 도구 자동화를 사용하여 수동으로 프로비저닝된 리소스를 가져옴으로써 규정 준수를 달성할 수 있습니다. 도구를 사용하여 리소스를 IaC 도구로 가져오거나 다시 생성할 수도 있습니다. 수동으로 프로비저닝된 리소스를 모니터링하려면 다음과 같은 높은 수준의 작업을 수행합니다.

  1. AWS 리소스 평가 도구 자동화를 배포하십시오.

  2. Lambda 함수를 설정하여 매일 Athena 테이블을 쿼리하고, 수동으로 프로비저닝된 리소스에 대한 관련 데이터를 찾고, 이를 쉼표로 구분된 값(CSV) 파일로 내보냅니다.

  3. Lambda 함수가 실행되면 필요한 데이터가 포함된 알림을 각 이해 관계자에게 보낼 수 있습니다.

  4. 보존 기간을 연장하려면.csv 파일을 S3 버킷에 저장할 수 있습니다.

  5. .csv 파일의 정보를 기반으로 수동으로 생성한 리소스를 삭제하거나 기존 IaC 솔루션으로 가져옵니다.

AWS DevOps, DevOps 엔지니어

문제 해결

문제Solution

AWS CDK가 오류를 반환합니다.

AWS CDK 문제에 대한 도움이 필요하면 일반적인 AWS CDK 문제 해결을 참조하십시오.

관련 리소스

추가 정보

여러 계정

여러 계정에 대해 AWS CLI 보안 인증을 설정하려면 AWS 프로필을 사용하십시오. 자세한 내용은 AWS CLI 설정다중 프로필 구성 섹션을 참조하십시오.

AWS CDK 명령

AWS CDK로 작업할 때는 다음과 같은 유용한 명령을 유념하십시오.

  • 앱의 모든 스택 나열하기

    cdk ls
  • 합성된 AWS 템플릿을 내보냅니다. CloudFormation

    cdk synth
  • 스택을 기본 AWS 계정 및 리전에 배포하기

    cdk deploy
  • 배포된 스택을 현재 상태와 비교하기

    cdk diff
  • AWS CDK 설명서 열기

    cdk docs