
AWS 계정에 생성된 리소스를 탐색합니다.
이 도구는 계정에 생성된 모든 AWS 리소스를 발견하려고 시도합니다. AWS에는 많은 제품(일명 서비스)이 있으며, 새로운 제품이 지속적으로 추가되고 기존 제품은 새로운 기능으로 확장되고 있습니다. 이러한 생태계를 통해 사용자는 다양한 서비스를 조합하여 맞춤형 클라우드 환경을 구성할 수 있습니다. 대규모로 서비스를 즉시 실행할 수 있는 기능에는 관리 비용이 따릅니다. 사용 중인 리소스에 대해 AWS 계정을 감사하는 것이 빠르게 어려워질 수 있습니다. 이는 청구 목적뿐만 아니라 보안에도 중요합니다. 유휴 리소스와 알 수 없는 리소스는 보안 구성 약점에 더 취약합니다. 또한 예상치 못한 종속성을 가진 리소스는 가용성, 액세스 제어 및 권한 부여 문제를 야기합니다.
botocore를 사용하여 AWS 서비스와 해당 서비스가 실행되는 리전을 검색합니다. 또한 서비스 API를 호출하는 데에도 사용됩니다. 호출되는 API는 리소스를 나열하거나 설명해야 하는 API입니다. 결과는 JSON 형식으로 stdout에 출력할 수 있습니다. 또한 여러 파일에 작성할 수도 있습니다:
먼저 Python2.7을 설치합니다.
진행 상황을 표시하는 작은 GUI가 있으며 표준 Python Tkinter 모듈을 사용합니다. 그러나 기본 네이티브 라이브러리 코드인 Tcl/Tk는 설치에 추가 단계가 필요할 수 있습니다. 그런 다음,
pip install -r requirements.txt
Python 설치 프로그램을 사용하여 Tkinter/Tcl/Tk를 설치합니다.
OS 패키지 관리자를 사용합니다:
sudo apt-get install python-tk
매개변수 없이 스크립트를 실행할 수 있습니다. 셸 환경, 인스턴스 메타데이터, 구성 파일, 그다음 자격 증명 파일에서 AWS 자격 증명을 검색합니다. 명령줄에서 자격 증명이 포함된 CSV 파일을 제공할 수도 있습니다. AWS 관리형 정책인 ViewOnlyAccess와 같은 권한이 있는 사용자가 필요합니다. 운이 좋다면 도구의 출력을 jq 같은 JSON 파서에 파이프하기만 하면 됩니다.
각 리전의 각 서비스에 대해 호출할 작업에 제한을 두지 않으면 도구가 완료되는 데 오랜 시간(수십 분)이 걸릴 수 있습니다. 서비스 및 리전별 필터링은 명령줄에서 수행할 수 있고, 서비스 작업별 필터링은 구성 파일을 통해 수행할 수 있습니다. 사전 구성된 파일이 생성되어 저장소에 커밋되었습니다. 기본적으로 사용됩니다.
명령줄 출력 외에도 React 기반 단일 페이지 앱에서 결과를 로컬에서 볼 수 있습니다. 웹 서버가 필요하지 않습니다. 브라우저에서 HTML 파일을 열고 프롬프트가 표시되면 생성된 JSON 파일을 선택하기만 하면 됩니다.
이 앱은 jsTree를 사용하여 데이터를 계층적 트리 구조로 표시합니다. 검색 기능도 있습니다.
참고: API를 호출할 때 예외를 발생시키는 API는 리전에 관계없이 다시 사용되지 않습니다. 알려진 예외 원인은 다음과 같습니다.
기본값으로 실행합니다.
$ python aws_inventory.py
botocore가 알고 있는 AWS 서비스를 나열합니다. 이는 서비스 모델 파일을 읽어 모두 로컬에서 수행됩니다.
$ python aws_inventory.py --list-svcs
acm
apigateway
application-autoscaling
appstream
autoscaling
batch
budgets
clouddirectory
cloudformation
cloudfront
.
.
.
$ python aws_inventory.py --list-operations
[shield]
DescribeSubscription
ListAttacks
ListProtections
[datapipeline]
ListPipelines
[firehose]
ListDeliveryStreams
.
.
.
[glacier]
# NONE
[stepfunctions]
ListActivities
ListStateMachines
Total operations to invoke: 4045
$ python aws_inventory.py --debug --dry-run

