Skip to content

multi-cloud-explorer/mce-lib-aws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloud Explorer - AWS

Librairie pour réaliser un inventaire des ressources d'une souscription AWS.

License: GPL v3 Build Status Quality Gate Status Coverage Status codecov Code Health Requirements Status

Documentation

Ressources AWS implémentées

  • 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

Remarques

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.

Installation

pip install git+https://github.com/multi-cloud-explorer/mce-lib-aws.git

Utilisation en ligne de commande

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"
  }
]

Intégration dans votre code

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)

TODO

  • 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