Skip to main content

AWS ECS related deployment tools

Project description

      _            _              __ _     _
     | |          | |            / _(_)   | |
   __| | ___ _ __ | | ___  _   _| |_ _ ___| |__
  / _` |/ _ \ '_ \| |/ _ \| | | |  _| / __| '_ \
 | (_| |  __/ |_) | | (_) | |_| | | | \__ \ | | |
  \__,_|\___| .__/|_|\___/ \__, |_| |_|___/_| |_|
            | |             __/ |
            |_|            |___/

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 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 service in deployfish.yml
  • Use deploy to start managing your service

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
        memoryReservation: 128
        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.

Documentation

deployfish.readthedocs.io is the full reference for deployfish, including a full deployfish.yml reference and tutorials.

Installing deployfish

deployfish is a pure python package. As such, it can be installed in the usual python ways. For the following instructions, either install it into your global python install, or use a python virtual environment to install it without polluting your global python environment.

Install via pip

pip install deployfish

Install via setup.py

Download a release from Github, then:

unzip deployfish-deployfish-1.3.2.zip
cd deployfish-deployfish-1.3.2
python setup.py install

Or:

git clone https://github.com/caltechads/deployfish.git
cd deployfish
python setup.py install

Using pyenv to install into a virtual environment (Recommended)

If you use python and frequently need to install additional python modules, pyenv and pyenv-virtualenv are extremely useful. They allow some very useful things:

  • Manage your virtualenvs easily on a per-project basis
  • Provide support for per-project Python versions.

To install pyenv and pyenv-virtualenv and set up your environment for the first time

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deployfish-1.3.2.tar.gz (119.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deployfish-1.3.2-py2.py3-none-any.whl (164.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file deployfish-1.3.2.tar.gz.

File metadata

  • Download URL: deployfish-1.3.2.tar.gz
  • Upload date:
  • Size: 119.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.7

File hashes

Hashes for deployfish-1.3.2.tar.gz
Algorithm Hash digest
SHA256 95dc32b5535d0bf5e6abbfd04e14c18da040035bb313b054b2858dda9a9fd027
MD5 9f1ebda25a6e55baa00cb8a75f0a8279
BLAKE2b-256 a2604bacb8fa739cbb5b60052c3c117da4a330e7b0761e0cd7ab2d735aa9ad9a

See more details on using hashes here.

File details

Details for the file deployfish-1.3.2-py2.py3-none-any.whl.

File metadata

  • Download URL: deployfish-1.3.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 164.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.7.7

File hashes

Hashes for deployfish-1.3.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 972c5208e1f8e115fdbd146c0d4cf1e35c607a9eabd51bd627c9924258c02935
MD5 b53a5152d31485117019ccd81b024183
BLAKE2b-256 b092424f81717192c1cf6bd170c4ec5696bf21a6bf6fa0bd1a1a7f4418dd3b23

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page