{"id":17601128,"url":"https://github.com/cloudwanderer-io/cloudwanderer","last_synced_at":"2025-04-13T00:51:07.517Z","repository":{"id":45062851,"uuid":"318911087","full_name":"CloudWanderer-io/CloudWanderer","owner":"CloudWanderer-io","description":"A Python package which wanders across your AWS account and records your resources in a variety of Storage Connectors","archived":false,"fork":false,"pushed_at":"2022-01-11T17:36:00.000Z","size":9237,"stargazers_count":24,"open_issues_count":67,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-10T13:54:51.155Z","etag":null,"topics":["aws","python"],"latest_commit_sha":null,"homepage":"http://cloudwanderer.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CloudWanderer-io.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-05T23:35:17.000Z","updated_at":"2023-09-29T06:57:05.000Z","dependencies_parsed_at":"2022-08-26T10:51:29.808Z","dependency_job_id":null,"html_url":"https://github.com/CloudWanderer-io/CloudWanderer","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CloudWanderer-io%2FCloudWanderer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CloudWanderer-io%2FCloudWanderer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CloudWanderer-io%2FCloudWanderer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CloudWanderer-io%2FCloudWanderer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CloudWanderer-io","download_url":"https://codeload.github.com/CloudWanderer-io/CloudWanderer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650435,"owners_count":21139672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","python"],"created_at":"2024-10-22T12:08:42.085Z","updated_at":"2025-04-13T00:51:07.500Z","avatar_url":"https://github.com/CloudWanderer-io.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":".. image :: https://user-images.githubusercontent.com/803607/101322139-7111b800-385e-11eb-9277-c6bf3a580987.png\n\n|version| |checks| |docs|\n\n.. |version|\n   image:: https://img.shields.io/pypi/v/cloudwanderer?style=flat-square\n      :alt: PyPI\n      :target: https://pypi.org/project/cloudwanderer/\n\n.. |checks|\n   image:: https://img.shields.io/github/workflow/status/cloudwanderer-io/cloudwanderer/Python%20package/main?style=flat-square\n      :alt: GitHub Workflow Status (branch)\n      :target: https://github.com/CloudWanderer-io/CloudWanderer/actions?query=branch%3Amain\n\n.. |docs|\n   image:: https://readthedocs.org/projects/cloudwanderer/badge/?version=latest\u0026style=flat-square\n      :target: https://www.cloudwanderer.io/en/latest/?badge=latest\n      :alt: Documentation Status\n\n| **Documentation:** `CloudWanderer.io \u003chttps://www.cloudwanderer.io\u003e`_\n| **GitHub:** `https://github.com/CloudWanderer-io/CloudWanderer \u003chttps://github.com/CloudWanderer-io/CloudWanderer\u003e`_\n\nA 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:\n\n1. `What EC2 instances do I have that are in Public Subnets that have roles and are accessible from the internet? \u003chttps://www.youtube.com/watch?v=GARTSsyYkk8\u003e`__\n2. How old are my IAM users access keys?\n3. What lambda functions do I have that are connected to VPCs that have access to the internet via a NAT gateway?\n4. How many untagged VPCs do I have across all regions?\n\nWhat does it do?\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. image:: https://raw.githubusercontent.com/CloudWanderer-io/CloudWanderer/969a5692982f81ae2448a3447cb271adb2b333fa/doc_source/images/discovering-ec2-instances-video.png\n   :target: https://www.youtube.com/watch?v=GARTSsyYkk8\n   :alt: YouTube video demonstrating how to query public ec2 instances with CloudWander and OpenCypher.\n\nWatch the above `YouTube video \u003chttps://www.youtube.com/watch?v=GARTSsyYkk8\u003e`__ to see an example of what you can do with CloudWanderer.\n\n\nInstallation\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. code-block ::\n\n   pip install cloudwanderer\n\nLocal Quickstart\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nSpin up a local `Gremlin Graph Database server \u003chttp://tinkerpop.apache.org/docs/current/reference/#gremlin-server\u003e`__ and a Jupyter Notebook.\n\n.. code-block ::\n\n   $ git clone https://github.com/CloudWanderer-io/docker-graph-notebook.git\n   $ cd docker-graph-notebook\n   $ docker-compose up\n\nLook in the output for something that looks like:\n\n.. code-block::\n\n   jupyter-notebook_1  |     Or copy and paste one of these URLs:\n   jupyter-notebook_1  |         http://localhost:8888/?token=88dc054886e3ea73480de91066937a33c9bc8bd484eb395c\n\nOpen the URL in question in a tab in your browser.\n\n\nOpen up Python **in your preferred IDE** and import and initialise `CloudWanderer`\n\n.. doctest ::\n\n   \u003e\u003e\u003e import logging\n   \u003e\u003e\u003e from cloudwanderer import CloudWanderer\n   \u003e\u003e\u003e from cloudwanderer.storage_connectors import GremlinStorageConnector\n   \u003e\u003e\u003e storage_connector = GremlinStorageConnector(\n   ...     endpoint_url=\"ws://localhost:8182\"\n   ... )\n   \u003e\u003e\u003e wanderer = CloudWanderer(storage_connectors=[storage_connector])\n   \u003e\u003e\u003e logging.basicConfig(level='INFO')\n\nGet all the resources from your AWS account and save them to your local Gremlin graph database.\n\n.. doctest ::\n\n   \u003e\u003e\u003e wanderer.write_resources()\n\nGo 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.\n\n.. code-block:: \n\n   %%gremlin\n   g.V().hasLabel('aws_ec2_vpc').out().path().by(valueMap(true))\n\nVoila!\n\n.. image:: https://user-images.githubusercontent.com/803607/144116568-ef8e6d38-11f6-477e-8c30-0882fbe29c94.png\n   :alt: Example Query and graph output\n\nYou can learn more Gremlin (the language that's supported by the local setup here) by reading `Kevin Lawrence's amazing book on Gremlin \u003chttps://kelvinlawrence.net/book/Gremlin-Graph-Guide.html\u003e`__ \nOR you can get stuck in to the much more straightforward OpenCypher language by following the `Neptune Quickstart guide \u003chttps://www.cloudwanderer.io/en/latest/neptune_quickstart.html\u003e`__.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudwanderer-io%2Fcloudwanderer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudwanderer-io%2Fcloudwanderer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudwanderer-io%2Fcloudwanderer/lists"}