https://github.com/bugcrowd/ecs-task-runner
Run a Docker task on AWS ECS and stream logs back via AWS Cloudwatch Logs
https://github.com/bugcrowd/ecs-task-runner
Last synced: about 1 year ago
JSON representation
Run a Docker task on AWS ECS and stream logs back via AWS Cloudwatch Logs
- Host: GitHub
- URL: https://github.com/bugcrowd/ecs-task-runner
- Owner: bugcrowd
- Created: 2016-10-20T23:32:35.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2025-03-02T22:22:00.000Z (about 1 year ago)
- Last Synced: 2025-04-08T16:54:30.905Z (about 1 year ago)
- Language: JavaScript
- Size: 858 KB
- Stars: 12
- Watchers: 44
- Forks: 8
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
ECS Task Runner
===============
Run a task on ECS and receive output by sending task logs to Cloudwatch Logs and streaming them back to you.
Installation
------------
**NOTE:** We have moved the package under our `bugcrowd` NPM organization - this will be the only package location maintained going forward.
- For cli usage: `npm install -g @bugcrowd/ecs-task-runner`
- As a module: `npm install @bugcrowd/ecs-task-runner --save`
Usage
-----
ECS Task Runner requires an already existing ECS cluster and Task Definition. The Task Definition must send it's logs to AWS Cloudwatch (using awslogs-stream-prefix) and the ECS hosts will need an IAM role that has permission to do that.
### CLI Tool
```
Options:
--cluster [required]
--task-definition [required]
--container-name [required]
--cmd [required]
--started-by
--env
--launch-type
--assign-public-ip
--subnets
--security-groups
--region (default: us-east-1)
```
#### cluster
The arn of your ECS Cluster
#### task-definition
The arn of your ECS Task Definition
#### container-name
The name of your container in your Task Definition that you want to run this command in
#### cmd
The command you want to run
#### started-by
If provided, this will show up as startedBy in your ECS console
#### env
This option is a key/value pair defined as `key=value` and can be repeated multiple times. Each
pair is passed as an environment variable to the container, where `key` is the name of the env var
and `value` is it's value.
#### launch-type
Specify the launchType for the task to be run. Valid options are EC2, FARGATE and EXTERNAL.
Default: EC2
### Network configuration
When awsvpc networking mode is configured for the task this requires the awsvpc configuration to
be specified when executing a taks. The following options can be used to do so. Subnets and security groups
are required options in this case.
#### assign-public-ip
Boolean whether to assign a public ip to the task.
#### subnets
Array of subnets to configure.
#### security-groups
Array of security-groups.
#### region
The AWS region used when accessing ECS and CloudWatch. If nothing is provided falls back to `us-east-1`.
The `AWS_DEFAULT_REGION` environment variable has precendence over this setting.
### Example Module Usage
```
const ecsTaskRunner = require('ecs-task-runner');
const options = {
clusterArn: 'xxx',
taskDefinitionArn: 'xxx',
containerName: 'xxx',
cmd: 'echo hello'
};
ecsTaskRunner(options, function(err, stream) {
if (err) throw err;
stream.pipe(process.stdout);
stream.on('error', (err) => {
throw err;
});
});
```