Skip to main content

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

Project description

https://user-images.githubusercontent.com/803607/101322139-7111b800-385e-11eb-9277-c6bf3a580987.png

PyPI GitHub Workflow Status (branch) Documentation Status

A Python package which allows you to enumerate and store your AWS Resources in AWS Neptune (or Gremlin for local execution) in order to be able to ask questions like:

  1. What EC2 instances do I have that are in Public Subnets that have roles and are accessible from the internet?

  2. How old are my IAM users access keys?

  3. What lambda functions do I have that are connected to VPCs that have access to the internet via a NAT gateway?

  4. How many untagged VPCs do I have across all regions?

AWS resources represented on a graph

Installation

pip install cloudwanderer

Local Quickstart

Spin up a local Gremlin Graph Database server and a Jupyter Notebook.

$ git clone https://github.com/CloudWanderer-io/docker-graph-notebook.git
$ cd docker-graph-notebook
$ docker-compose up

Look in the output for something that looks like:

jupyter-notebook_1  |     Or copy and paste one of these URLs:
jupyter-notebook_1  |         http://localhost:8888/?token=88dc054886e3ea73480de91066937a33c9bc8bd484eb395c

Open the URL in question in a tab in your browser.

Open up Python and import and initialise CloudWanderer

>>> import logging
>>> from cloudwanderer import CloudWanderer
>>> from cloudwanderer.storage_connectors import GremlinStorageConnector
>>> storage_connector = GremlinStorageConnector(
...     endpoint_url="ws://localhost:8182"
... )
>>> wanderer = CloudWanderer(storage_connectors=[storage_connector])
>>> logging.basicConfig(level='INFO')

Get all the resources from your AWS account and save them to your local Gremlin graph database.

>>> wanderer.write_resources()

Go to the Jupyter Notebook link you opened earlier and type the following to get a list of VPCs back into a new cell.

%%gremlin
g.V().hasLabel('aws_ec2_vpc').out().path().by(valueMap(true))

Voila!

Example Query and graph output

You can learn more Gremlin (the language that’s supported by the local setup here) by reading Kevin Lawrence’s amazing book on Gremlin OR you can get stuck in to the much more straightforward OpenCypher language by following the Neptune Quickstart guide.

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.25.1.tar.gz (45.8 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.25.1-py3-none-any.whl (64.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cloudwanderer-0.25.1.tar.gz
  • Upload date:
  • Size: 45.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for cloudwanderer-0.25.1.tar.gz
Algorithm Hash digest
SHA256 b20a73cfb976f544b0889539ae38bf9f9c28046e8243f012d7d0293fef579826
MD5 47b27c24c3392ed619d339bf173ea963
BLAKE2b-256 8373f13dc28cac567e6cb0f0dda688c0f099e23a46cc08ff88d1fd1097b79513

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cloudwanderer-0.25.1-py3-none-any.whl
  • Upload date:
  • Size: 64.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for cloudwanderer-0.25.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1a30fc84ab3949e0c43707b937f0ff55dd772aeca5d75cd6b0ffe8a960c515bc
MD5 1c24638108b4398784519b5e9519a37a
BLAKE2b-256 c8b7a32aa909ddae40bc039f72b40cbd7e6df9d05f4913558c7a2d74427f2285

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