Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cloudwanderer-io/cloudwanderer
A Python package which wanders across your AWS account and records your resources in a variety of Storage Connectors
https://github.com/cloudwanderer-io/cloudwanderer
aws python
Last synced: 4 months ago
JSON representation
A Python package which wanders across your AWS account and records your resources in a variety of Storage Connectors
- Host: GitHub
- URL: https://github.com/cloudwanderer-io/cloudwanderer
- Owner: CloudWanderer-io
- License: mit
- Created: 2020-12-05T23:35:17.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-01-11T17:36:00.000Z (about 3 years ago)
- Last Synced: 2024-10-31T16:57:37.022Z (4 months ago)
- Topics: aws, python
- Language: Python
- Homepage: http://cloudwanderer.io
- Size: 8.81 MB
- Stars: 24
- Watchers: 3
- Forks: 1
- Open Issues: 67
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
.. image :: https://user-images.githubusercontent.com/803607/101322139-7111b800-385e-11eb-9277-c6bf3a580987.png
|version| |checks| |docs|
.. |version|
image:: https://img.shields.io/pypi/v/cloudwanderer?style=flat-square
:alt: PyPI
:target: https://pypi.org/project/cloudwanderer/.. |checks|
image:: https://img.shields.io/github/workflow/status/cloudwanderer-io/cloudwanderer/Python%20package/main?style=flat-square
:alt: GitHub Workflow Status (branch)
:target: https://github.com/CloudWanderer-io/CloudWanderer/actions?query=branch%3Amain.. |docs|
image:: https://readthedocs.org/projects/cloudwanderer/badge/?version=latest&style=flat-square
:target: https://www.cloudwanderer.io/en/latest/?badge=latest
:alt: Documentation Status| **Documentation:** `CloudWanderer.io `_
| **GitHub:** `https://github.com/CloudWanderer-io/CloudWanderer `_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?What does it do?
"""""""""""""""""".. image:: https://raw.githubusercontent.com/CloudWanderer-io/CloudWanderer/969a5692982f81ae2448a3447cb271adb2b333fa/doc_source/images/discovering-ec2-instances-video.png
:target: https://www.youtube.com/watch?v=GARTSsyYkk8
:alt: YouTube video demonstrating how to query public ec2 instances with CloudWander and OpenCypher.Watch the above `YouTube video `__ to see an example of what you can do with CloudWanderer.
Installation
""""""""""""""".. code-block ::
pip install cloudwanderer
Local Quickstart
""""""""""""""""""Spin up a local `Gremlin Graph Database server `__ and a Jupyter Notebook.
.. code-block ::
$ git clone https://github.com/CloudWanderer-io/docker-graph-notebook.git
$ cd docker-graph-notebook
$ docker-compose upLook in the output for something that looks like:
.. code-block::
jupyter-notebook_1 | Or copy and paste one of these URLs:
jupyter-notebook_1 | http://localhost:8888/?token=88dc054886e3ea73480de91066937a33c9bc8bd484eb395cOpen the URL in question in a tab in your browser.
Open up Python **in your preferred IDE** and import and initialise `CloudWanderer`
.. doctest ::
>>> 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.
.. doctest ::
>>> wanderer.write_resources()
Go to the Jupyter Notebook link you opened earlier and, **create a new notebook by hitting 'new'** on the top right, and type the following into a new cell to get a list of VPCs.
.. code-block::
%%gremlin
g.V().hasLabel('aws_ec2_vpc').out().path().by(valueMap(true))Voila!
.. image:: https://user-images.githubusercontent.com/803607/144116568-ef8e6d38-11f6-477e-8c30-0882fbe29c94.png
:alt: Example Query and graph outputYou 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 `__.