BLOG
작년에 출시된 AWS Config Advanced Query(고급 쿼리)는 간단한 SQL과 같은 쿼리를 사용하여 감사, 규정 준수 또는 운영 문제 해결을 위해 AWS 리소스의 리소스 구성 속성을 쉽게 쿼리할 수 있는 기능입니다.
최근 AWS는 이 AWS Config 고급 쿼리에 새로운 기능을 추가했습니다. 업데이트된 기능으로 이제는 configuration aggregators(구성 집계기)에서 고급 쿼리를 사용하여 여러 계정 및 리전에서 동일한 쿼리를 실행할 수 있습니다. 이를 통해 중앙 계정에서 전체 AWS 사용 공간을 쿼리하는 간편한 메커니즘을 제공하고 리소스에 대한 관련 정보를 확보할 수 있습니다.
오늘 블로그 포스팅으로는 해당 신규 기능을 어떻게 사용하면 되는지, 자세한 사용법을 알려드리겠습니다.
전제조건
다중 계정, 다중 리전의 쿼리를 지원받기 위해서는 다음의 조건이 충족되어야 합니다.
- 모든 계정 및 리전에서 AWS Config 기록이 켜져 있는지 확인하십시오.
- 계정과 리전의 데이터를 집계하는 구성 집계가 있는지 확인하십시오.
AWS Config의 레코딩 활성화 상태 확인
AWS Config에 처음 액세스 하는 경우 Setting Up AWS Config with the Console(콘솔을 사용해 AWS Config 설치하기)을 참고하여 설치 단계를 따라주십시오. 혹은 AWS Config 설정을 참고하여 레코딩이 켜져 있는지 확인하십시오. 이는 쿼리를 구성할 리소스가 있는 각 계정 및 리전에 대해 꼭 수행되어야 합니다. 또한 CloudFormation StackSets를 사용하여 여러 개의 계정과 리전에서 프로그래밍 방식으로 AWS Config 레코딩을 활성화 할 수 있습니다.
Aggregator(수집기) 생성
아직 수집기를 생성하지 않았다면 Setting Up An Aggregator Using the Console(콘솔을 사용하여 수집기 설치하기)문서의 단계를 따라 생성해 주시기 바랍니다. 다중 계정 및 리전 고급 쿼리를 실행하는 중앙 계정에서 수집기를 생성해야 합니다.
다중 계정, 다중 리전 쿼리 생성
여러 계정과 여러 리전 쿼리를 생성하려면AWS Config > Resources > Advanced query 순으로 이동하십시오. 이 방법을 따르면 새로운 콘솔로 이동됩니다. 여기에서 SQL query editor(SQL 쿼리 편집기)에 액세스할 수 있습니다. 일부 사용 사례에 익숙해지려면 이 시점에서 자체 쿼리를 작성하거나 AWS가 작성한 샘플 SQL 쿼리 목록에서 선택하십시오. Resource type schema in GitHub (GitHub의 리소스 유형 스키마)를 참조하여 고급 쿼리를 사용하여 쿼리할 수 있는 모든 속성을 볼 수 있습니다.
AWS는 재고 및 규정 준수 관리에서 공통적인 시나리오에 대해 60개까지의 샘플 쿼리를 제공하고 있습니다. 이름, 설명, 작성자 또는 태그별로 특정 쿼리를 검색할 수 있습니다.
기본 예제
그럼 먼저 간단한 예제로 시작하겠습니다. AWS 조직의 활성 DynamoDB 테이블 목록을 가져오려 한다고 해보겠습니다. 계정에 이미 aggregator(수집기)가 있다는 가정 하에 조직의 모든 계정과 리전에서 AWS Config 데이터를 집계하길 원할 경우, 쿼리 편집기 화면으로 이동시켜주는 Active DynamoDB tables 이름의 샘플 쿼리를 선택합니다.
본 예제에서는 계정이나 리전에서 쿼리를 실행하거나 수집기를 선택하기 위해 Query scope(쿼리 범위)을 선택합니다. 계정과 리전에서 이 쿼리를 실행하려고 하므로 Query scope 섹션의 드롭 다운 메뉴에서 aggregator를 선택합니다. accountID 와 awsRegion 속성을 포함하여 샘플 쿼리를 수정하여 내 쿼리 결과에 채워지도록 합니다.
마지막으로 Run 버튼을 클릭하십시오.
그러면 아래 그림처럼 쿼리는 조직 전체의 모든 활성DynamoDB 테이블을 반환합니다.
심화 예제
그렇다면 이제 EC2 인스턴스에 연결되지 않은 볼륨을 식별하려고 하는 좀 더 심화된 예제를 다뤄보겠습니다. 이 미사용 볼륨에 대해서도 비용이 발생하기 때문에 본 예제는 비용 관리 관점에서 중요할 수 있습니다. Unused EBS 샘플 쿼리를 선택하고 aggregator에서 실행합니다.
결과에는 계정 번호 및 리전과 함께 조직 전체에서 사용되지 않는 미부착 EBS 볼륨이 표시됩니다.
다음 명령으로 AWS CLI를 사용하여 동일한 쿼리를 수행할 수 있습니다.
aws configservice –region us-east-1 select-aggregate-resource-config –expression “SELECT resourceId, accountId, awsRegion, resourceType, configuration.volumeType, configuration.size, resourceCreationTime, tags, configuration.encrypted, configuration.availabilityZone, configuration.state.value WHERE resourceType = ‘AWS::EC2::Volume’ AND configuration.state.value <> ‘in-use'” –configuration-aggregator-name DevAggregator
예제에서 볼 수 있듯이 다중 계정과 다중 리전 쿼리는 특정 기준을 충족하는 계정 및 리젼의 리소스를 빠르게 식별할 수 있습니다.
쿼리 결과 내보내기
이제 쿼리 결과를 얻었으므로 오프라인 분석 및 다른 팀들과의 공유를 위해 JSON 또는 CSV 형식으로도 내보낼 수 있습니다.
글을 마치며
고급 쿼리에 대한 AWS Config 다중 계정, 다중 리전 지원은 AWS footprint를 중앙에서 쿼리할 수 잇는 강력하고 편리한 옵션을 제공합니다. 이 기능으로 더 이상 정보를 가져 오기 위해 각 계정 및 리전에서 개별 리소스를 설명할 필요가 없어졌습니다. AWS Config에서 이 흥미로운 새 기능을 활용해 보십시오!.
** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 개제하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달 드리도록 하겠습니다.