Librairie pour réaliser un inventaire des ressources d'une souscription AWS.
- aws.acm.certificate
- aws.apigateway.restapis
- aws.autoscaling.autoScalingGroup
- aws.cloudfront.distribution
- aws.cloudsearch.domain
- aws.dynamodb.table
- aws.ec2.instance
- aws.ecs.cluster
- aws.efs.filesystem
- aws.elasticache.cluster
- aws.elasticbeanstalk.application
- aws.elb.loadbalancer
- aws.elbv2.loadbalancer
- aws.es.domain
- aws.lambda.function
- aws.opsworks.stack
- aws.rds.db
- aws.redshift.cluster
- aws.s3.bucket
- aws.sqs.queue
- aws.sns.topic
Sans filtre de région ou de type, cette librairie va parcourir TOUTES les régions AWS pour tous les types de services gérés par mce-lib-aws.
Tant que le parallélisme n'est pas implémenté, cette opération peut prendre de 5 à 30 mn pour réaliser un inventaire complet.
Il est donc conseillé pour le moment de selectionner les régions à filtrer pour éviter des connections inutiles et diminuer le temps d'exécution.
pip install git+https://github.com/multi-cloud-explorer/mce-lib-aws.git
mce-aws run --help
Usage: mce-aws run [OPTIONS]
Options:
-S, --services [aws.acm.certificate|aws.apigateway.restapis|aws.autoscaling.autoScalingGroup|aws.cloudfront.distribution|aws.cloudsearch.domain|aws.dynamodb.table|aws.ec2.instance|aws.ecs.cluster|aws.efs.filesystem|aws.elasticache.cluster|aws.elasticbeanstalk.application|aws.elb.loadbalancer|aws.elbv2.loadbalancer|aws.es.domain|aws.lambda.function|aws.opsworks.stack|aws.rds.db|aws.redshift.cluster|aws.s3.bucket|aws.sqs.queue|aws.sns.topic]
Multiple services filter
-R, --regions TEXT Multiple regions filter
-a, --account-id TEXT Subscription ID [required]
-k, --access-key-id TEXT AWS Access Key ID [required]
-s, --secret-access-key TEXT AWS Secret Key [required]
-r, --default-region TEXT AWS Default Region [default: eu-central-1; required]
--output PATH File for output json data
-v, --verbose Enables verbose mode.
-D, --debug
-l, --log-level [DEBUG|WARN|ERROR|INFO|CRITICAL]
Logging level [default: INFO]
--log-file PATH File for output logs
--help Show this message and exit.
mce-aws run -S aws.s3.bucket -R us-east-1 -a 123456789001 -k testing -s testing --output /tmp/export.json
# Ou:
export AWS_ACCESS_KEY_ID=testing
export AWS_SECRET_ACCESS_KEY=testing
export AWS_DEFAULT_REGION=us-east-1
mce-aws run -S aws.s3.bucket -a 123456789001 --output /tmp/export.json
cat /tmp/export.json
[
{
"arn": "arn:aws:s3:::mybucket0",
"data": {
"Name": "mybucket0",
"CreationDate": "2020-05-12T14:00:53.127747"
},
"tags": {
"key1": "value1"
},
"name": "mybucket0",
"account_id": "123456789001",
"region": "us-east-1",
"service": "aws.s3.bucket"
}
]
import boto3
from mce_lib_aws.crawler import get_all_assets
account_id = '123456789'
regions_allowed = ['eu-west-3', 'aws-global']
resources_allowed = ['aws.s3.bucket', 'aws.ec2.instance']
session = boto3.Session(aws_access_key_id="testing", aws_secret_access_key="testing", region_name="us-east-1")
for asset in get_all_assets(session, account_id, resources_allowed=resources_allowed, regions_allowed=regions_allowed):
print(asset)
- Ajouter du parallélisme avec Gevent ou concurrent.futures
- Documenter la création d'un compte et des droits AWS nécessaires à l'inventaire
- Terminer les exemples dans contrib/
- Ajouter des services AWS
- Ajouter des tests sur les opérations sur les Tags