Skip to content

springload/ecs-tool

 
 

Repository files navigation

Go Report Card

What is it?

ecs-tool can run commands on an ECS cluster. There are some tools available, like official: ecs-cli, awscli, and custom ones like ecs-deploy.

However, they have too many flags to just do one thing: run a command. Also, those tools don't give the command output, and there are different flags or even tools to get it.

So what if there was a project- and environment-specific config with all the settings, so that you can concentrate only on a command you want to run?

There it is

So that's it:

$ecs-tool run -h Runs the specified command on an ECS cluster, optionally catching its output. It can modify the container command. Usage: ecs-tool run [flags] Flags: --container_name string Name of the container to modify parameters for -h, --help help for run -l, --log_group string Name of the log group to get output Global Flags: -c, --cluster string name of cluster (required) --config string config file to use. Overrides -e/--environment lookup -e, --environment string look up config based on the environment flag. It looks for ecs-$environment.toml config in infra folder. -p, --profile string name of profile to use -t, --task_definition string name of task definition to use (required) 

There are a couple of required flags, but they can be set either via enviromental variables or in the config. It is possible to define a specific config by using --config flag, or rely on ecs-tool to look it up based on --environment flag. The tool then will search for infra/ecs-$environment.toml file.

Just try running ecs-tool envs in a project folder to discover available environments.

It is as simple as this (while being in the project folder /Users/user/company/project_name):

$ecs-tool run -e production -- uptime 2018/07/26 09:52:24 info Using config file: /Users/user/company/project_name/infra/ecs-production.toml 2018/07/26 09:52:26 info waiting for the task to finish task_definition=project_name-production-app 21:52:28 up 16 days, 10:45, load average: 0.00, 0.02, 0.00 

Even more, it is possible to configure ecs-tool via environmental variables instead of using config. Every flag has to be uppercased and prefixed by ECS_. So that --cluster can be set by ECS_CLUSTER environmental variable, or --task_definition by ECS_TASK_DEFINITION.

Also, ecs-tool exit code is the same as the container exit code.

runFargate

The runFargate function is a command that is integrated into the ecs-tool utility. This tool simplifies running commands on an AWS ECS (Elastic Container Service) cluster with Fargate.

That normany use subnet with 'private' 'Tier' tag but if there is zero proivate subnets that will use 'public'

ecs-tool runFargate -e "preview" -- env 

EXEC

ecs-tool exec Executes a specified command in a running container on an ECS Fargate cluster and get the output. That function use existing container, so it's faster than runFargate This command also could connect to fargate existing task:

ecs-tool exec -e "preview" /bin/sh 

SSH

'SSH' access availabe to developers using ecs-tool ssh

$ecs-tool ssh -e preview INFO[0000] Using config file: ecs-preview.toml INFO[0000] Looking for ECS Task... task_definition=test-preview-app INFO[0001] Looking for EC2 Instance... task_arn=arn:aws:ecs:ap-southeast-2:123456789:task/00000000-0000-0000-0000-000000 task_definition=test-preview-app INFO[0001] Pushing SSH key... instance_id=i-12345678888765432 task_definition=test-preview-app INFO[0002] Connecting to container... instance_id=i-12345678888765432 task_definition=test-preview-app root@d00e0c978012:/app# ls Gemfile Gemfile.lock Guardfile LICENSE README.md Rakefile api_testing_examples.md app bin config config.ru db docker docker-compose.yml infra lib log model_testing_examples.md public spec tmp root@d00e0c978012:/app# 

AWS Authentication

It is handled by aws-sdk-go and supports all standard methods: env vars, ~/.aws/credential and ~/.aws/config.

Installation

There are deb and rpm packages and binaries for those who don't use packages. Just head up to the releases page.

For Mac users there is one simple command: brew install springload/tools/ecs-tool.

About

A tool to work with Amazon ECS. Allows easy deployments and running commands.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5

Languages