lucified/ecs-updater

Name: ecs-updater

Owner: Lucify

Description: null

Created: 2016-08-22 13:40:00.0

Updated: 2017-05-03 09:40:58.0

Pushed: 2017-07-20 18:53:00.0

Homepage: null

Size: 54

Language: TypeScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

ecs-updater

A Node.js CLI utility for updating and restarting AWS Elastic Container Service services.

Requirements

AWS credentials with authorization to perform the needed AWS API calls, corresponding to the following policy:


ersion": "2012-10-17",
tatement": [
{
  "Effect": "Allow",
  "Action": [
    "ecr:*"
  ],
  "Resource": "*"
},
{
  "Action": [
    "ecs:describeServices",
    "ecs:describeTaskDefinition",
    "ecs:registerTaskDefinition",
    "ecs:updateService"
  ],
  "Resource": [
    "*"
  ],
  "Effect": "Allow"
},
{
  "Sid": "",
  "Effect":"Allow",
  "Action":[
    "s3:GetObject",
    "s3:PutObject",
  ],
  "Resource":"arn:aws:s3:::${bucket}/${path}/*"
}


For operations involving Docker Hub, you will also have to be logged in into Docker Hub.

Installation

Preferably with NPM:

install -g ecs-updater

Configuration

Reads options from a ecs-updater.json file in the current working directory. Following options are available:

Alternatively every option can be specified by an environment variable, which have precedence.

Example:


GION: 'eu-west-1',
USTER: 'default',
RVICE: 'heaven',
NTAINER: 'heaven',
AGE: 'lucified/heaven',
CKET: '',
Y: '',
CKERFILE: 'Dockerfile'

Every option without a default value is mandatory, except IMAGE_TAG. If the command is run inside a git repository, the tag will be a shortened SHA1 of the HEAD commit.

Usage

Default action
updater

This will:

  1. Login to ECR
  2. Build a Docker image
  3. Tag the image so that Docker knows to upload it to the ECR repository or Docker hub
  4. Push the image to the repository or Docker hub
  5. Register a new ECS taskDefinition with a reference to the newly built image
  6. Restart the ECS service using the new taskDefinition
  7. Upload metadata into an S3 bucket

To run this command, all of the options listed in the configuration section need to be defined, expect for options that have defaults.

Restart
updater -s restart-terraform

This will load the most recent task definition from s3://[BUCKET]/[KEY]_taskdefinition.json and increment its revision, which will cause the service to restart with an updated task definition. The revision and tag information will be updated to the s3 bucket.

To run this command, all of the following options need to be defined:

Build
updater -s build

To run this command, all of the following options need to be defined:

Plain restart (advanced)
updater -s restart-service

This will load the most recent task definition from AWS and increment its revision, which will cause the service to restart. To run this command, all of the following options need to be defined:

This will not update the revision and tag information to the S3 bucket, which will cause Terraform to be out-of-sync. You will need to resolve that manually.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.