ECS Helpers - A tool for managing the deployment process of an application in Amazon Elastic Container Service (ECS).
Mostly drop-in replacement for ecs_helper written in Rust to provide better performance and less container size.
ECS Helpers is a command-line tool that allows you to control the deployment process of your application in Amazon Elastic Container Service. The tool provides various commands for building and pushing images, deploying your application, exporting images, logging in to Amazon Elastic Container Registry (ECR), running commands, exporting environment variables, and more. To use it an ECS Cluster with a service running there and have task_definitons
is required. Docker images are stored in the ECR Elastic Container Registry.
Prerequisites:
To use ECS Helpers, you need to install the ecs_helpers
crate. You can install it using the following command:
cargo install ecs_helpers
You can use the ecs_helpers
command followed by the desired command and arguments to control your application deployment process.
Alternatively, you can use the Docker image bondiano/ecs_helpers
. This image contains the ecs_helpers
and Docker.
To use the Docker image, you can run the following command:
docker run ghcr.io/bondiano/ecs_helpers ecs_helpers
- build_and_push: builds and pushes the Docker image to Amazon Elastic Container Registry (ECR).
- deploy: deploys the Docker image to Amazon Elastic Container Service (ECS).
- export_images: exports Docker images to a file.
- ecr_login: logs in to Amazon Elastic Container Registry (ECR).
- run_command: runs a command in a container.
- export_env_secrets: exports environment variables to a file.
- deploy: deploys the Docker image to Amazon Elastic Container Service (ECS).
You can select the desired command by passing the argument to the ecs_helpers
command. For example, to build and push an image with the tag api, you can use the following command:
ecs_helpers build_and_push --image=api
ECS Helpers can also be used in GitLab CI by using a pre-built Docker image. Here's an example of how to use ECS Helpers in a GitLab CI pipeline:
stages:
- build
- deploy
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ''
DOCKER_IMAGE: docker:20.10.6
PROJECT: test_project
ECS_HELPERS_IMAGE: ghcr.io/bondiano/ecs_helpers:latest
AWS_REGION: us-east-1
AWS_DEFAULT_REGION: us-east-1
APPLICATION: app
PROJECT: project-name
USE_IMAGE_TAG_ENV_PREFIX: "true"
.ci_deploy: &ci_deploy
only:
- master
- staging
build_app:
<<: *ci_deploy
stage: build
image: $ECS_HELPERS_IMAGE
script:
- mkdir -p ./apps/api/dist/apps && cp -r ./dist/apps/api ./apps/api/dist/apps
- ecs_helpers build_and_push --image=api --cache -d ./apps/api
deploy_app:
<<: *ci_deploy
stage: deploy
image: $ECS_HELPERS_IMAGE
variables:
APPLICATION: app
script:
- ecs_helpers deploy
In this example, ECS Helpers is used to build and push the api Docker image in the build_app
job, and to deploy the application in the deploy_app
job.
When a new version of an application is deployed, a new task definition revision is created in the target service.