Skip to main content

A Python package which wanders across your AWS account and records your resources in DynamoDB

Project description

CloudWanderer

cloudwanderer

A Python package which wanders across your AWS account and records your resources in DynamoDB

Running

Start a local dynamodb

$  docker run -p 8000:8000 amazon/dynamodb-local

Open up python and import and initialise CloudWanderer

$ python
>>> import logging
>>> from cloudwanderer import CloudWanderer
>>> from cloudwanderer.storage_connectors import DynamoDbConnector
>>> wanderer = CloudWanderer(storage_connector=DynamoDbConnector(
...     endpoint_url='http://localhost:8000'
... ))
>>> logging.basicConfig(level='INFO')
>>> wanderer.storage_connector.init()

Query all the resources from your current account region and save them to your local dynamodb.

>>> wanderer.write_all_resources()
INFO     root:cloud_wanderer.py:97 --> Fetching cloudformation stacks
INFO     root:cloud_wanderer.py:97 --> Fetching cloudwatch alarms
INFO     root:cloud_wanderer.py:97 --> Fetching cloudwatch metrics
INFO     root:cloud_wanderer.py:97 --> Fetching dynamodb tables
INFO     root:cloud_wanderer.py:97 --> Fetching ec2 classic_address
...

Get a list of lambda functions back.

>>> lambda_functions = wanderer.read_resource_of_type(service='lambda', resource_type='function')
>>> print([dict(wanderer.read_resource(x.urn)) for x in lambda_functions])

[{'FunctionArn': 'arn:aws:lambda:eu-west-2:111111111111:function:awesomeproject-201904202316-HostedUICustomResource-1PLE213GNV66A', 'MemorySize': Decimal('128'), 'Description': '', 'TracingConfig': {'Mode': 'PassThrough'}, 'Timeout': Decimal('300'), 'Handler': 'index.handler', 'CodeSha256': 'fBLFD+AwFo/EQK5rdUweTW8jdBg6cw9LORbpVYqlXXQ=', 'RevisionId': '7fd173f0-0fc0-4df3-a4c3-5464431da769', 'Role': 'arn:aws:iam::111111111111:role/cognitod72684bb_userpoolclient_lambda_role-dev', 'LastModified': '2019-04-20T22:32:07.805+0000', 'FunctionName': 'awesomeproject-201904202316-HostedUICustomResource-1PLE213GNV66A', 'Runtime': 'nodejs8.10', 'CodeSize': Decimal('1742'), 'Version': '$LATEST', 'PackageType': 'Zip'}, ...]

Expanding Boto3: Adding custom service definitions

As CloudWanderer works off boto3's Resource classes, there is limited suppor for the wide range of AWS resources to query out of the box with boto3. Fortunately as boto3 is data defined, it's relatively trivial to add the json to support additional resources.

Look to the json files in boto3 for an example of what a complete definition looks like. However, you do not need to fill out the full service definition, look at cloud_wanderer/service_definitions for an example of what's required to fill out specific resources.

The only non-obvious thing in that is that the shape definition comes from the botocore json. Look at the shapes key in the service-{n}.json you're interested in, follow that to the request that returns the resource you want to record (e.g. ListFunctions) and see what the output shape name is (e.g. ListFunctionsResponse), then see what the members shape is (e.g. FunctionList) and finally look at the shape name for that member (i.e. the shape of the resource you actually want to return) (e.g. FunctionConfiguration)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudwanderer-0.3.2.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cloudwanderer-0.3.2-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file cloudwanderer-0.3.2.tar.gz.

File metadata

  • Download URL: cloudwanderer-0.3.2.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.0

File hashes

Hashes for cloudwanderer-0.3.2.tar.gz
Algorithm Hash digest
SHA256 b542a17b461ee405ee98812f4ab40f8bb5d489255ed24bea5ffbf81a158c28c6
MD5 662c39a46b414a721c6aecf4f2c2f9ed
BLAKE2b-256 85d5124f93e978662c731e10deeca92be3a7b930903158dc93f75622332a7f9f

See more details on using hashes here.

File details

Details for the file cloudwanderer-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: cloudwanderer-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.0

File hashes

Hashes for cloudwanderer-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0175817f74ac3e1bac116e5acaa506b867a1733744cf7034ece5257641baab5b
MD5 f79fc950455d63c1e51a8de43e9a08d6
BLAKE2b-256 5e98aba7344cff14920061ab85107fb5fd1ac81867079cf13bf8ee1118cf8dac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page