# awsecr
[![Python application](https://github.com/glasswalk3r/awsecr/actions/workflows/python-app.yml/badge.svg)](https://github.com/glasswalk3r/awsecr/actions/workflows/python-app.yml)
CLI to interact with AWS ECR service.
## Description
awsecr is a Python module that allows an end user to access an AWS ECR
repository to do the following:
- pull/push images
- list available repositories
- list available images per repository, summarizing all founded vulnerabilities.
Authentication between AWS ECR and the local Docker client is automatic.
See `TODO.txt` for next planned features.
## Samples outputs
The output samples will *roughly* look like the ones generated at the terminal
by the CLI. Expect to have better output in the terminal.
Listing repositories available:
```
$ awsecr repos
┌ All ECR repositories ───────┬────────────────────────────────────────────────────────────────┬────────────────┬───────────────┐
│ Name │ URI │ Tag Mutability │ Scan on push? │
├─────────────────────────────┼────────────────────────────────────────────────────────────────┼────────────────┼───────────────┤
│ nodejs │ 012345678910.dkr.ecr.us-east-1.amazonaws.com/nodejs │ IMMUTABLE │ True │
│ spark-py │ 012345678910.dkr.ecr.us-east-1.amazonaws.com/spark-py │ MUTABLE │ False │
│ hive-metastore │ 012345678910.dkr.ecr.us-east-1.amazonaws.com/hive-metastore │ IMMUTABLE │ True │
└─────────────────────────────┴────────────────────────────────────────────────────────────────┴────────────────┴───────────────┘
```
Listing images from a repository:
```
┌ Docker images at api-foobar123 ─────────────────────────────────┬─────────────┬────────────┬───────────────────────────┬────────────────────┐
│ Image │ Scan status │ Size (MB) │ Pushed at │ Vulnerabilities │
├──────────────────────────────────────────────────────────────────┼─────────────┼────────────┼───────────────────────────┼────────────────────┤
│ 012345678910.dkr.ecr.us-east-1.amazonaws.com/api-foobar123:1.3.5 │ COMPLETE │ 205.1 │ 2021-12-09 18:06:20-03:00 │ 1/10/118/51/274/22 │
│ 012345678910.dkr.ecr.us-east-1.amazonaws.com/api-foobar123:1.3.6 │ COMPLETE │ 133.8 │ 2021-12-09 15:42:28-03:00 │ 1/10/118/51/274/22 │
└──────────────────────────────────────────────────────────────────┴─────────────┴────────────┴───────────────────────────┴────────────────────┘
```
Except that the *Vulnerabilities* column will have `1/10/118/51/274/22` as
values in the terminal using colors to indicate severity, being highest to
lesser, left to right.
## How to install
The preferred way is to install it from https://pypi.org with:
```
pip install awsecr
```
## How to use it
You can check the `awsecr` CLI online help:
```
$ awsecr -h
usage: awsecr [OPERATION]
Easier interaction with AWS ECR to manage Docker images.
positional arguments:
{repos,image} the desired operation with the registry.
optional arguments:
-h, --help show this help message and exit.
--image IMAGE the local Docker image to use together with the image --push sub operation.
--list REPOSITORY sub operation for "image" operation. List all images from the repository.
--push REPOSITORY sub operation for "image" operation. Pushes a Docker image to the repository.
The "repos" operation requires no additional options. It lists the available
ECR repositories for the current AWS user credentials.
```
## References
Other open source projects that are related to awsecr:
- https://pypi.org/project/ecrtools/
- https://pypi.org/project/ecr-scan-reporter/
- https://github.com/muckamuck/ecrscan
Raw data
{
"_id": null,
"home_page": "https://github.com/glasswalk3r/awsecr",
"name": "awsecr",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "awsecr",
"author": "Alceu Rodrigues de Freitas Junior",
"author_email": "glasswalk3r@yahoo.com.br",
"download_url": "https://files.pythonhosted.org/packages/6d/e1/d956e801b5b749498567debd0aa7398cd0cbe526f88ab06aae42aad4ce1a/awsecr-0.5.5.tar.gz",
"platform": null,
"description": "# awsecr\n\n[![Python application](https://github.com/glasswalk3r/awsecr/actions/workflows/python-app.yml/badge.svg)](https://github.com/glasswalk3r/awsecr/actions/workflows/python-app.yml)\n\nCLI to interact with AWS ECR service.\n\n## Description\n\nawsecr is a Python module that allows an end user to access an AWS ECR\nrepository to do the following:\n\n- pull/push images\n- list available repositories\n- list available images per repository, summarizing all founded vulnerabilities.\n\nAuthentication between AWS ECR and the local Docker client is automatic.\n\nSee `TODO.txt` for next planned features.\n\n## Samples outputs\n\nThe output samples will *roughly* look like the ones generated at the terminal\nby the CLI. Expect to have better output in the terminal.\n\nListing repositories available:\n\n```\n$ awsecr repos\n\u250c All ECR repositories \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Name \u2502 URI \u2502 Tag Mutability \u2502 Scan on push? \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 nodejs \u2502 012345678910.dkr.ecr.us-east-1.amazonaws.com/nodejs \u2502 IMMUTABLE \u2502 True \u2502\n\u2502 spark-py \u2502 012345678910.dkr.ecr.us-east-1.amazonaws.com/spark-py \u2502 MUTABLE \u2502 False \u2502\n\u2502 hive-metastore \u2502 012345678910.dkr.ecr.us-east-1.amazonaws.com/hive-metastore \u2502 IMMUTABLE \u2502 True \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\nListing images from a repository:\n\n```\n\u250c Docker images at api-foobar123 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Image \u2502 Scan status \u2502 Size (MB) \u2502 Pushed at \u2502 Vulnerabilities \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 012345678910.dkr.ecr.us-east-1.amazonaws.com/api-foobar123:1.3.5 \u2502 COMPLETE \u2502 205.1 \u2502 2021-12-09 18:06:20-03:00 \u2502 1/10/118/51/274/22 \u2502\n\u2502 012345678910.dkr.ecr.us-east-1.amazonaws.com/api-foobar123:1.3.6 \u2502 COMPLETE \u2502 133.8 \u2502 2021-12-09 15:42:28-03:00 \u2502 1/10/118/51/274/22 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\nExcept that the *Vulnerabilities* column will have `1/10/118/51/274/22` as\nvalues in the terminal using colors to indicate severity, being highest to\nlesser, left to right.\n\n## How to install\n\nThe preferred way is to install it from https://pypi.org with:\n\n```\npip install awsecr\n```\n\n## How to use it\n\nYou can check the `awsecr` CLI online help:\n\n```\n$ awsecr -h\nusage: awsecr [OPERATION]\n\nEasier interaction with AWS ECR to manage Docker images.\n\npositional arguments:\n {repos,image} the desired operation with the registry.\n\noptional arguments:\n -h, --help show this help message and exit.\n --image IMAGE the local Docker image to use together with the image --push sub operation.\n --list REPOSITORY sub operation for \"image\" operation. List all images from the repository.\n --push REPOSITORY sub operation for \"image\" operation. Pushes a Docker image to the repository.\n\nThe \"repos\" operation requires no additional options. It lists the available\nECR repositories for the current AWS user credentials.\n```\n\n## References\n\nOther open source projects that are related to awsecr:\n\n- https://pypi.org/project/ecrtools/\n- https://pypi.org/project/ecr-scan-reporter/\n- https://github.com/muckamuck/ecrscan\n",
"bugtrack_url": null,
"license": null,
"summary": "Easy interaction with AWS ECR from a CLI",
"version": "0.5.5",
"project_urls": {
"Homepage": "https://github.com/glasswalk3r/awsecr"
},
"split_keywords": [
"awsecr"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2e1a8cb6a2d3829c22476752cf41cf9add3299db0ac6e2c9c6ee81831aafdec9",
"md5": "8950f0de8f3263d3a8b729826c9a6ef6",
"sha256": "f84362b5e484e7888165daea77ce5331e61017e8acf6373e940446dc1f6d34b6"
},
"downloads": -1,
"filename": "awsecr-0.5.5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "8950f0de8f3263d3a8b729826c9a6ef6",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.8",
"size": 21756,
"upload_time": "2024-08-07T19:53:32",
"upload_time_iso_8601": "2024-08-07T19:53:32.893521Z",
"url": "https://files.pythonhosted.org/packages/2e/1a/8cb6a2d3829c22476752cf41cf9add3299db0ac6e2c9c6ee81831aafdec9/awsecr-0.5.5-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6de1d956e801b5b749498567debd0aa7398cd0cbe526f88ab06aae42aad4ce1a",
"md5": "7f7449e0d3aee5fcd37b041e3ba23eac",
"sha256": "7b38165545236ce00a94ef5af717c9bebae17ee5b0aa8caf69d68f382dc33ac7"
},
"downloads": -1,
"filename": "awsecr-0.5.5.tar.gz",
"has_sig": false,
"md5_digest": "7f7449e0d3aee5fcd37b041e3ba23eac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 25707,
"upload_time": "2024-08-07T19:53:34",
"upload_time_iso_8601": "2024-08-07T19:53:34.437558Z",
"url": "https://files.pythonhosted.org/packages/6d/e1/d956e801b5b749498567debd0aa7398cd0cbe526f88ab06aae42aad4ce1a/awsecr-0.5.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-07 19:53:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "glasswalk3r",
"github_project": "awsecr",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "awsecr"
}