Categorygithub.com/tedsmitt/ecsgo
module
0.6.0
Repository: https://github.com/tedsmitt/ecsgo.git
Documentation: pkg.go.dev

# README

ecsgo

Inspired by the incredibly useful gossm, this tool makes use of the ECS ExecuteCommand API to connect to running ECS tasks.

It provides an interactive prompt to select your cluster, task and container (if only one container in the task it will default to this), and opens a connection to it. You can also use it to port-forward to containers within your tasks.

That's it! Nothing fancy.

Installation

MacOS/Homebrew

brew tap tedsmitt/ecsgo
brew install ecsgo

Linux

wget https://github.com/tedsmitt/ecsgo/releases/latest/download/ecsgo_Linux_x86_64.tar.gz
tar xzf ecsgo_*.tar.gz

Move the ecsgo binary into your $PATH

Pre-requisites

session-manager-plugin

This tool makes use of the session-manager-plugin. For instructions on how to install, please check out this user guide.

MacOS users can install this via Homebrew if desired brew install --cask session-manager-plugin

Infrastructure

Use ecs-exec-checker to check for the pre-requisites to use ECS exec.

Usage

CLI Args

By default, the tool will prompt you to interactively select which cluster, service, task and container to connect to. You can change the behaviour using the flags detailed below:

LongShortDescriptionDefault Value
--cluster-nSpecify the ECS cluster nameN/A
--service-sSpecify the ECS service nameN/A
--task-tSpecify the ECS Task IDN/A
--container-uSpecify the container name in the ECS Task (if task only has one container this will selected by default)N/A
--cmd-cSpecify the command to be run on the container (default will change depending on OS family)./bin/sh,powershell.exe
--forward-fPort-forward to the container (Remote port will be taken from task/container definitions)false
--local-port-lSpecify local port to forward (will prompt if not specified)N/A
--profile-pSpecify the profile to load the credentialsdefault
--region-rSpecify the AWS region to run inN/A
--quiet-qDisable output detailing the Cluster/Service/Task informationfalse
--aws-endpoint-url-eSpecify the AWS endpoint used for all service requestsN/A

Environment variables

The above options can also be configured via environment variables. Simply export environment variables in the form ECSGO_<OPT_NAME>. For example, if you want to set the --cluster value, it would be ECSGO_CLUSTER, or for the --aws-endpoint-url option it would be ECSGO_AWS_ENDPOINT_URL.

The tool supports Standard AWS Environment Variables for AWS Client configuration. If you aren't familiar with working on AWS via the CLI, you can read more about how to configure your environment here.

Example

See it in action below

ecsgo0 2 0

# Packages

Copyright © 2021 Ed Smith [email protected] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.