Introduction
deployfish
has commands for managing the whole lifecycle of your application:
Safely and easily create, update, destroy and restart ECS services
Safely and easily create, update, run, schedule and unschedule ECS tasks
Extensive support for ECS related services like load balancing, application autoscaling and service discovery
Easily scale the number of containers in your service, optionally scaling its associated autoscaling group at the same time
Manage multiple environments for your task or service (test, qa, prod, etc.) in multiple AWS accounts.
Uses AWS Parameter Store for secrets for your containers
View the configuration and status of running ECS services
Run a one-off command related to your service
Easily exec through your VPC bastion host into your running containers, or ssh into a ECS container machine in your cluster.
Setup SSH tunnels to the private AWS resources in VPC that your service uses so that you can connect to them from your work machine.
Extensible! Add additional functionality through custom deployfish modules.
Works great in CodeBuild steps in a CodePipeline based CI/CD system!
Additionally, deployfish
integrates with
Terraform state files so that you can use the
values of terraform outputs directly in your deployfish
configurations.
To use deployfish
, you
Install
deployfish
Define your tasks and services in
deployfish.yml
Use
deploy
to start managing your tasks and services
A simple deployfish.yml
looks like this:
services:
- name: my-service
environment: prod
cluster: my-cluster
count: 2
load_balancer:
service_role_arn: arn:aws:iam::123142123547:role/ecsServiceRole
load_balancer_name: my-service-elb
container_name: my-service
container_port: 80
family: my-service
network_mode: bridge
task_role_arn: arn:aws:iam::123142123547:role/myTaskRole
containers:
- name: my-service
image: 123142123547.dkr.ecr.us-west-2.amazonaws.com/my-service:0.0.1
cpu: 128
memory: 256
ports:
- "80"
environment:
- ENVIRONMENT=prod
- ANOTHER_ENV_VAR=value
- THIRD_ENV_VAR=value
See the examples/
folder in this repository for example deployfish.yml
files.