Skip to main content

AWS ECS Cli tool for connecting to ecs container and update secret manager

Project description

ecs_connect_cli

AWS ECS Exec command cli tool is aimed to :

  • connect to your container instance running under ECS Fargate.
  • tail the log from cloudwatch logs (if you configure a logconfiguration in your task definition)
  • update secret value into secret manager

 

The aws ecs execute-command command is quite complicated to remember and the tool give you the ability to parse and retrieve:

  • your clusters
  • your services
  • your tasks
  • your container

To let you choose which one you want to connect into.

Enhancements :sunglasses: You can now connect to ECS and tail your logs from an EC2 instance or AWS CloudShell without the need of aws cli and aws credentials file.

At start, you are asked what kind of credentials you want to use and which default region.

You can now also update your secret directly from the command line.

ecs-connect-cli update-secret your-secret-name

I also add the possibility to run directly with pipx

pipx run ecs-connect-cli --help

 

Installation

Requirements

  • Install awscli via [https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html] (not necessary if you are connected to an EC2 instance)

  • Install ssm tools via [https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html]

 

To install you have several options:

  • Install it globally with your pip:
pip install ecs-connect-cli
  • Install it into a virtualenv (after creating a virtualenv with the tool of your choice):
source .venv_3.11.0/bin/activate
pip install ecs-connect-cli
  • Run the cli directly with pipx
pipx run ecs-connect-cli --help

 

if it is the first time you connect to aws-cli, you have to get credentials key from your aws administrator.

 

Usage

If you use it with with pip, you can call the CLI as below or directly call it with pipx

ecs-connect-cli --help


Welcome in AWS ECS Exec command Cli !

                                                                                                                                                                                       
 Usage: ecs_connect_cli [OPTIONS] COMMAND [ARGS]...                                                                                                                                        
                                                                                                                                                                                       
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version             -v        Show the application's version and exit.                                                                   │
│ --install-completion            Install completion for the current shell.                                                                  │
│ --show-completion               Show completion for the current shell, to copy it or customize the installation.                           │
│ --help                          Show this message and exit.                                                                                │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ connect                           Connect to an ECS Fargate container                                                                      │
│ exec-command                      Execute manage.py command with args                                                                      │
│ list-cluster                      List cluster into an AWS account                                                                         │
│ list-service                      List service(s) into a cluster                                                                           │
│ list-task                         List task(s) into a service into a cluster                                                               │
│ tail                              Tail logs of a selected  ECS container                                                                   | update-secret                     Update secret from secret manager                                                                        |
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

 

Testing

The project now contains two test layers:

  • unit tests (fast, mocked CLI/AWS boundaries)
  • integration tests (real boto3 calls against MiniStack)

Local setup

Use a Python version supported by this project (3.10 to 3.14).

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Run unit tests

pytest -m "not integration" -q

Run integration tests with MiniStack

Start MiniStack:

docker run --rm -p 4566:4566 ministackorg/ministack

Run integration tests in another terminal:

export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test
export AWS_DEFAULT_REGION=us-east-1
export ECS_CONNECT_AWS_ENDPOINT_URL=http://localhost:4566
pytest -m "integration" -q

You can also use AWS_ENDPOINT_URL instead of ECS_CONNECT_AWS_ENDPOINT_URL.

Run all tests

pytest -q

 

Thanks to Typer from @tiangolo

Thanks to @kraymer for echoprompt :sunglasses:

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

ecs_connect_cli-1.20.0.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ecs_connect_cli-1.20.0-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file ecs_connect_cli-1.20.0.tar.gz.

File metadata

  • Download URL: ecs_connect_cli-1.20.0.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.0 CPython/3.12.3 Linux/6.17.0-1010-azure

File hashes

Hashes for ecs_connect_cli-1.20.0.tar.gz
Algorithm Hash digest
SHA256 019ab5a70af5619138457420cbd45467d2b4a3608e4b55e0072051955c26a18e
MD5 0746218500035161e15805564bfd57a2
BLAKE2b-256 957ee05167d17fa6da268c9c0a9fa9fb720eae49a648c16eea1cc72fca0f5ba0

See more details on using hashes here.

File details

Details for the file ecs_connect_cli-1.20.0-py3-none-any.whl.

File metadata

  • Download URL: ecs_connect_cli-1.20.0-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.0 CPython/3.12.3 Linux/6.17.0-1010-azure

File hashes

Hashes for ecs_connect_cli-1.20.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0536e32bb9d31f8bc70198ca4a8b71691d34227f4627e74931e075eb485915cc
MD5 4e4abe739d819b214bc9f35eac5c4968
BLAKE2b-256 f82f4e7c47dea6816548b0ff342fea51a655a2d8d2aad565b34707279d1420cf

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