<p align="center" >
<img src="logo.png" alt="logo" width="250"/>
<h3 align="center">cloudsnake 🐍</h3>
<p align="center">Wrapping some awscli commands with beautiful TUI</p>
<p align="center">Build with ❤ in Python</p>
</p>
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
- [Introduction](#introduction)
- [Installation](#installation)
- [Badges](#badges)
- [TO DO](#to-do)
- [TOP LINKS](#top-links)
- [Tools](#tools)
- [Poetry commands](#poetry-commands)
- [Cloudsnake commands](#cloudsnake-commands)
- [License](#license)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
# Introduction
Lorem ipsum....
# Installation
```console
pip3 install cloudsnake
pipx install cloudsnake
```
# Badges
| | |
|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Code | ![Code Size](https://img.shields.io/github/languages/code-size/containerscrew/tftools) |
| CI/CD | [![CI - Test](https://github.com/ofek/hatch-showcase/actions/workflows/test.yml/badge.svg)](https://github.com/ofek/hatch-showcase/actions/workflows/test.yml) [![CD - Build](https://github.com/ofek/hatch-showcase/actions/workflows/build.yml/badge.svg)](https://github.com/ofek/hatch-showcase/actions/workflows/build.yml) |
| Package | [![python](https://img.shields.io/badge/Python-3.12-3776AB.svg?style=flat&logo=python&logoColor=white)](https://www.python.org)[![PyPI - Version](https://img.shields.io/pypi/v/hatch-showcase.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/hatch-showcase/) ![packaging](https://img.shields.io/badge/packaging-poetry-cyan.svg) |
| Meta | [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [![License - MIT](https://img.shields.io/badge/license-MIT-9400d3.svg)](https://spdx.org/licenses/) |
| Linter | [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) |
# TO DO
* Implement websocket protocol of ssm-session-plugin
* Implement python textual for OptionList
* Reorganize global flags (region, profile, log-level)
# TOP LINKS
https://github.com/aws/aws-cli/blob/b6e7c5b79e4471713b2f7c660eff99b36d977064/awscli/customizations/sessionmanager.py#L83
https://stackoverflow.com/questions/57868722/unable-to-decode-aws-session-manager-websocket-output-in-python
https://github.com/aws/session-manager-plugin/blob/mainline/src/sessionmanagerplugin/session/shellsession/shellsession.go
Logger: https://stackoverflow.com/questions/384076/how-can-i-color-python-logging-output
Textual for beginners: https://mathspp.com/blog/textual-for-beginners
More of textual: https://dev.to/wiseai/textual-the-definitive-guide-part-1-1i0p
[Packaging projects](https://packaging.python.org/en/latest/tutorials/packaging-projects/)
[Poetry](https://python-poetry.org/docs/)
Some examples using boto3 SDK https://docs.aws.amazon.com/code-library/latest/ug/python_3_ec2_code_examples.html
Mocking: https://github.com/getmoto/moto
# Tools
1. EC2 SSM CONNECTION
2. ECS SSM CONNECTION
3. SSM GET PARAMETERS
4. MYSQL IAM CONNECTION
5. AWS RESOURCE BY TAG OUTPUT TABLE
# Poetry commands
```shell
poetry add boto3 dacite
poetry config pypi-token.pypi pypi-
poetry publish --build
```
# Cloudsnake commands
```shell
cloudsnake --help
cloudsnake ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[*].{Instance:InstanceId,VpcId:VpcId,AZ:Placement.AvailabilityZone,Name:Tags[?Key==`Name`]|[0].Value}' --output json
cloudsnake ec2 describe-instances --filters "Name=instance-state-name,Values=running" --output json
# Get instance name of running instances
cloudsnake ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[*].{InstanceName:Tags[?Key==`Name`]|[0].Value}' --output json
```
## License
`cloudsnake` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
Raw data
{
"_id": null,
"home_page": "https://github.com/containerscrew/cloudsnake",
"name": "cloudsnake",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": null,
"keywords": "aws, cli, rich, textual, cloudsnake",
"author": "containerscrew",
"author_email": "info@containerscrew.com",
"download_url": "https://files.pythonhosted.org/packages/a2/70/4f6741df99b684992e8466b0dd85673bf573aad38a32bf676f811adb56a6/cloudsnake-0.2.2.tar.gz",
"platform": null,
"description": "<p align=\"center\" >\n <img src=\"logo.png\" alt=\"logo\" width=\"250\"/>\n <h3 align=\"center\">cloudsnake \ud83d\udc0d</h3>\n <p align=\"center\">Wrapping some awscli commands with beautiful TUI</p>\n <p align=\"center\">Build with \u2764 in Python</p>\n</p>\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*\n\n- [Introduction](#introduction)\n- [Installation](#installation)\n- [Badges](#badges)\n- [TO DO](#to-do)\n- [TOP LINKS](#top-links)\n- [Tools](#tools)\n- [Poetry commands](#poetry-commands)\n- [Cloudsnake commands](#cloudsnake-commands)\n - [License](#license)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n# Introduction\n\nLorem ipsum....\n\n# Installation\n\n```console\npip3 install cloudsnake\npipx install cloudsnake\n```\n\n# Badges\n\n| | |\n|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Code | ![Code Size](https://img.shields.io/github/languages/code-size/containerscrew/tftools) |\n| CI/CD | [![CI - Test](https://github.com/ofek/hatch-showcase/actions/workflows/test.yml/badge.svg)](https://github.com/ofek/hatch-showcase/actions/workflows/test.yml) [![CD - Build](https://github.com/ofek/hatch-showcase/actions/workflows/build.yml/badge.svg)](https://github.com/ofek/hatch-showcase/actions/workflows/build.yml) |\n| Package | [![python](https://img.shields.io/badge/Python-3.12-3776AB.svg?style=flat&logo=python&logoColor=white)](https://www.python.org)[![PyPI - Version](https://img.shields.io/pypi/v/hatch-showcase.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/hatch-showcase/) ![packaging](https://img.shields.io/badge/packaging-poetry-cyan.svg) |\n| Meta | [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [![License - MIT](https://img.shields.io/badge/license-MIT-9400d3.svg)](https://spdx.org/licenses/) |\n| Linter | [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) |\n\n\n\n\n# TO DO\n\n* Implement websocket protocol of ssm-session-plugin\n* Implement python textual for OptionList\n* Reorganize global flags (region, profile, log-level)\n\n\n\n# TOP LINKS\n\nhttps://github.com/aws/aws-cli/blob/b6e7c5b79e4471713b2f7c660eff99b36d977064/awscli/customizations/sessionmanager.py#L83\nhttps://stackoverflow.com/questions/57868722/unable-to-decode-aws-session-manager-websocket-output-in-python\nhttps://github.com/aws/session-manager-plugin/blob/mainline/src/sessionmanagerplugin/session/shellsession/shellsession.go\nLogger: https://stackoverflow.com/questions/384076/how-can-i-color-python-logging-output\nTextual for beginners: https://mathspp.com/blog/textual-for-beginners\nMore of textual: https://dev.to/wiseai/textual-the-definitive-guide-part-1-1i0p\n[Packaging projects](https://packaging.python.org/en/latest/tutorials/packaging-projects/)\n[Poetry](https://python-poetry.org/docs/)\nSome examples using boto3 SDK https://docs.aws.amazon.com/code-library/latest/ug/python_3_ec2_code_examples.html\nMocking: https://github.com/getmoto/moto\n\n# Tools\n\n1. EC2 SSM CONNECTION\n2. ECS SSM CONNECTION\n3. SSM GET PARAMETERS\n4. MYSQL IAM CONNECTION\n5. AWS RESOURCE BY TAG OUTPUT TABLE\n\n# Poetry commands\n\n```shell\npoetry add boto3 dacite\npoetry config pypi-token.pypi pypi-\npoetry publish --build\n```\n\n# Cloudsnake commands\n\n```shell\ncloudsnake --help\ncloudsnake ec2 describe-instances --filters \"Name=instance-state-name,Values=running\" --query 'Reservations[*].Instances[*].{Instance:InstanceId,VpcId:VpcId,AZ:Placement.AvailabilityZone,Name:Tags[?Key==`Name`]|[0].Value}' --output json\ncloudsnake ec2 describe-instances --filters \"Name=instance-state-name,Values=running\" --output json\n# Get instance name of running instances\ncloudsnake ec2 describe-instances --filters \"Name=instance-state-name,Values=running\" --query 'Reservations[*].Instances[*].{InstanceName:Tags[?Key==`Name`]|[0].Value}' --output json\n```\n\n## License\n\n`cloudsnake` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "AWS cli operations with pretty TUI",
"version": "0.2.2",
"project_urls": {
"Documentation": "https://github.com/containerscrew/cloudsnake#readme",
"Homepage": "https://github.com/containerscrew/cloudsnake",
"Repository": "https://github.com/containerscrew/cloudsnake"
},
"split_keywords": [
"aws",
" cli",
" rich",
" textual",
" cloudsnake"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "9008142af2743f5e326571a31ffff022122a790b649c94550f46a9cfc06dad37",
"md5": "b047e2cd860268ef7d47351ce586f9ab",
"sha256": "6f6721f34ab2c693d4884ba12393af81d567e1628815ce9547f90f1b037c5b44"
},
"downloads": -1,
"filename": "cloudsnake-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b047e2cd860268ef7d47351ce586f9ab",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 10631,
"upload_time": "2024-05-29T21:49:52",
"upload_time_iso_8601": "2024-05-29T21:49:52.492257Z",
"url": "https://files.pythonhosted.org/packages/90/08/142af2743f5e326571a31ffff022122a790b649c94550f46a9cfc06dad37/cloudsnake-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a2704f6741df99b684992e8466b0dd85673bf573aad38a32bf676f811adb56a6",
"md5": "bfe5b498ddbadd1ba443663c15683f68",
"sha256": "94b2aa22de1d360ab7dc459ad0760e5badf0b58f4771bd7ac658ddf78e6adf9c"
},
"downloads": -1,
"filename": "cloudsnake-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "bfe5b498ddbadd1ba443663c15683f68",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 9624,
"upload_time": "2024-05-29T21:49:54",
"upload_time_iso_8601": "2024-05-29T21:49:54.282826Z",
"url": "https://files.pythonhosted.org/packages/a2/70/4f6741df99b684992e8466b0dd85673bf573aad38a32bf676f811adb56a6/cloudsnake-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-29 21:49:54",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "containerscrew",
"github_project": "cloudsnake",
"github_not_found": true,
"lcname": "cloudsnake"
}