Coleta de recursos na aws de forma programática
O programa tem como objetivo a coleta de recursos dentro de uma conta aws de forma programática.
Recursos: IAM,AMI,EC2,RDS,Snapshot,Security Groups,EBS,Load balancers e S3.
- Possuir python3 instalado com as seguintes libs:
boto3==1.21.26
pandas==1.4.2
openpyxl==3.0.10
awscli==1.22.81
python-dotenv==0.20.0
progress==1.6
- Possuir acesso programático à conta com pelo menos permissão de ReadOnlyAccess
Primeiramente o usuário deve realizar login no awscli passando as credenciais.
$ aws configure
ou exportando as credenciais como variável de ambiente.
$ export AWS_ACCESS_KEY_ID="xxxxxxxxx"
$ export AWS_SECRET_ACCESS_KEY="xxxxxxxxx"
Instalar as libs se for necessário, utilizando o arquivo requirements.txt
pip install -r requirements.txt
Nome | Description | Default |
---|---|---|
AWS_REGION | Região padrão para a pesquisa de recursos pelo SDK | us-east-1 |
PROJ_NAME | Nome do projeto, os arquivos gerados incluírão esse nome. Utilizar um nome diferente para cada cliente. | projx |
OUPUT_FOLDER | Pasta na qual os arquivos gerados serão salvos | ./output/ |
Para utilizar a aplicação é necessário executar o comando:
python3 main.py <options>
Para definir quais serviços devem ser incluídos na análise é preciso utilizar os argumentos:
Argument | Description |
---|---|
--s3 | Buckets S3 |
--iam | Usuários IAM |
--ec2 | Instâncias EC2 |
--sg-ec2 | Security Groups - EC2 |
--ebs | Volumes EBS |
--snapshot | Snaphots de Volumes EBS |
--ami | Imagens AMI |
--loadbalancer | Loadbalancers |
--rds | RDS |
--sg-rds | Security Groups - RDS |
-a, --all | Inclui todos os serviços |
Argument | Description |
---|---|
-j, --join | Unifica todos as planilhas geradas em um único arquivo |
-h | Help |
Para gerar um relatório referente ao S3 e um relatório referente à RDS:
python3 main.py --s3 --rds
Para gerar um relatório único que contenha todos os serviços:
python3 main.py -a -j
É possível executar essa aplicação utilizando um container docker hospedado publicamente no dockerhub registry.
Para a execução via docker, é necessário ter o awscli instalado na máquina local e configurar as credenciais com o aws configure
. Após isso, basta utilizar o seguinte comando:
docker run -it -v "$(pwd):/app/output" -v $HOME/.aws/credentials:/root/.aws/credentials:ro -e PROJ_NAME=XXXXX -e AWS_REGION=us-east-1 chnacib/hermes
Lembrando que deve ser passado as opções adicionais ao final do comando. Por exemplo:
docker run -it -v "$(pwd):/app/output" -v $HOME/.aws/credentials:/root/.aws/credentials:ro -e PROJ_NAME=XXXXX -e AWS_REGION=us-east-1 chnacib/hermes --all --join
Os arquivos serão gerados no diretório local onde foi executado o comando docker, ou basta substituir a variável $(pwd) pelo path desejado.