☕️

ecspresso advent calendar 2020 day 1 - ecspresso とは

2020/12/01に公開

Amazon ECS のデプロイツールである ecspresso の利用法をまとめていく ecspresso Advent calendar 1日目です。

ecspresso とは

ecspresso は、AWS(Amazon Web Services) のコンテナオーケストレーションサービス、Amazon ECS 用のデプロイツールです。「エスプレッソ」と読みます。

GitHub で開発しています。

https://github.com/kayac/ecspresso

特徴

  • Go 言語で書かれた OSS です
  • ECS service / task に関わる最小限のリソースをコード管理し、デプロイを実行するためのツールです
  • ECS service / task が動作するにあたって必要な関連リソース(例: IAM Role, ELB target group, VPC, Subnet, Security gruop など)を作成/管理する機能はありません
    • TerraformState を管理している tfstate ファイルを読み、その情報を使うことができます
  • 既存の ECS service / task の情報を元に、構成ファイルを生成する機能があります
    • AWS Console や他のツールでデプロイしている既存リソースを、あとから ecspresso で管理するように変更できます

参考: 第2回 AWS Fargate かんたんデプロイ選手権

こんな人におすすめ

ecspresso の開発思想は「ECS のデプロイに関わる最小限のリソースのみを管理するツール」です。ECS でコンテナを動作させるにあたっては、最低でも VPC, IAM Role 等を別途用意する必要がありますが、それらの周辺リソースの面倒は ecspresso は見ません。

そのため、AWS や ECS のことをあまり理解していない人が、試しに ECS でなにかを起動してみよう、という場合にはあまりお勧めしません。

周辺リソースの管理は CloudFormation や Terraform などの他の手法で管理できる人が、ECS のデプロイだけを別途管理したい場合、現在他のツールや AWS console で ECS を管理している人が、ECS の管理をコード化したくなった場合にお勧めします。

なぜ ECS のみを管理対象にしているのか

ECS の周辺リソースと ECS 上にデプロイするアプリケーションは、ライフサイクルが異なることが多いためです。

周辺リソースは一度運用が始まったらそれほど頻繁に構成変更しないが、アプリケーションは毎日何度もデプロイする、という運用はよくあります。その場合に1つのツールですべてを管理するよりは、管理対象として明確に分かれているほうが運用上好ましいことが多いと考えています。


2日目は ecspresso のインストールについて説明します。
https://zenn.dev/fujiwara/articles/b86d91f42af150

Discussion