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.4.0.tar.gz (12.0 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.4.0-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cloudwanderer-0.4.0.tar.gz
  • Upload date:
  • Size: 12.0 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.4.0.tar.gz
Algorithm Hash digest
SHA256 bc72d94d12b48780033b1f48a5b45fd8eea45565639deae46b49b3f09adf95ec
MD5 b8e075afbdd3b926f8d77a187647dcd8
BLAKE2b-256 966ef5b64710617c4aa080a0ab60bcfde25e0a104d1823a5daa40fcec0dc8cd9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cloudwanderer-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 14.6 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3cbb1bbe897e9fdbecd4c3f50c9293194749f050824caec0a75de295b26ecad9
MD5 e8b9e85b38688ddf8c358c904d7e3239
BLAKE2b-256 b1abce901790282da52608cd91cf10cd0363d8f902ce9a6baeb41cf63c701c03

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