はじめに
Amazon ECS をヘビーに使う現場では、「タスク定義の登録」「サービス更新」「リビジョン管理」「ロールバック」など日常運用の細かな作業が 手間 になりがちです。
ecspresso は KAYAC Inc. が OSS として開発する Go 製 CLI で、こうした ECS のオペレーションを シンプルかつ宣言的 にまとめてくれます。2025 年 3 月に最新安定版 v2.4.6 が公開され、Service Connect や VPC Lattice などの新機能にも対応しました。
ecspresso とは
- 「espresso ☕」のように発音し、AWS CLI/API をラップして ECS ワークロードをデプロイ/管理するツール。
-
YAML / JSON / Jsonnet で “構成ファイル + サービス定義 + タスク定義” をコード化し、
ecspresso deploy
でワンコマンド反映。 -
diff
・verify
で変更内容とリソース整合性を事前チェック、rollback
で安全に巻き戻し。 - CodeDeploy を経由した Blue/Green デプロイ、Auto Scaling、Fargate/Fargate Spot、EBS Volume、Service Connect など最新機能をフルサポート。
コア機能と強み
機能 | ひとことで | 運用メリット |
---|---|---|
deploy | サービス作成/更新、タスク定義登録を一括実行 |
create と update‐service の手動分離が不要 |
diff / verify | リモートとの差分チェック & 各種リソース検証 | 誤リリース防止・事前 QA |
rollback | タスク定義の n 世代戻し & サービス切替 | 即時の障害回避 |
exec / tasks | ECS Exec & タスク一覧操作 | デバッグ/ポートフォワードまで一本化 |
render / template | ENV 変数・SSM・SecretsManager 等をテンプレ展開 | GitOps らしい宣言的管理 |
プラグイン | tfstate / CloudFormation / SSM / SecretsManager … | IaC と ECS の橋渡し |
CI 連携 | Homebrew, asdf, aqua, GitHub Actions, CircleCI Orb | マルチプラットフォームで簡単導入 |
v2 系で変わったこと(抜粋)
-
deploy
が サービス作成 も兼ねるようになりcreate
コマンドを廃止。 - AWS SDK を Go v2 へ全面移行しパフォーマンス向上。
- Jsonnet による 構成ファイル記述 と ネイティブ関数 をサポート。
-
rollback --deregister-task-definition
がデフォルト true=不要リビジョンを自動整理。 -
diff --unified
を既定で有効化し読みやすさ向上。
クイックスタート(既存サービスをコード化)
# 既存サービスを取り込み
ecspresso init \
--region ap-northeast-1 \
--cluster default \
--service mysvc \
--config ecspresso.yml
# 生成された ecspresso.yml / ecs-service-def.json / ecs-task-def.json をコミット
git add .
git commit -m "Manage mysvc via ecspresso"
# 次回リリース
IMAGE_TAG=2025-04-21 ecspresso deploy --config ecspresso.yml
diff
と verify
を挟めば、ECR イメージ存在や IAM ロールの Assume 権限まで自動チェックしてくれるため “壊れたタスクをデプロイしてしまう事故” を大幅に低減できます。
CI/CD 例(GitHub Actions)
name: deploy
on:
push:
branches: [main]
jobs:
ecs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: kayac/ecspresso@v2 # v2 系最新を取得
with:
version: v2.4.6
- run: ecspresso diff --config ecspresso.yml
- run: ecspresso deploy --config ecspresso.yml --no-wait
CI で差分確認だけ行い、--no-wait
で非同期デプロイにするか、CodeDeploy による Blue/Green を待機するかは好みに合わせて調整できます。
最新リリース v2.4 系の注目ポイント
- Service Connect & VPC Lattice: サービスディスカバリ/サービスメッシュ連携を CLI 一発で反映。
- EBS Volume: Fargate でも EBS 永続ボリュームを扱えるように。
-
外部 diff:
ecspresso diff --external "difft --color"
で好きな差分ツールを活用。 -
Application Auto Scaling 操作:
scale --auto-scaling-min/max
で Min/Max を同時更新。 -
Jsonnet 関数:
env()
,ssm()
,cfn_output()
などテンプレ関数が Jsonnet でも利用可能。
他ツールとの使い分け
ツール | 特徴 | ecspressoを選ぶ判断軸 |
---|---|---|
AWS Copilot | App レベルで抽象化、高速な初学者体験 | 既存 ECS 運用に部分導入しやすいか |
Terraform/CDK | フル IaC、一括スタック管理 | ECS 周辺だけを 小さく デプロイしたい |
ECS CLI v2 | (旧)AWS 公式 CLI、機能限定 | Blue/Green・差分表示・rollback が必要か |
GitHub Actions aws-actions/amazon-ecs-deploy-task-definition |
CI と相性◎ | テンプレート展開・多彩なサブコマンドが欲しいか |
実際には「インフラ枠=Terraform、サービス更新=ecspresso」のハイブリッド構成が定番です。
まとめ
- ecspresso は ECS 運用定番 CLI として着実に進化を続けており、v2.4 系で最新 AWS 機能と運用 DX を強化。
- GitOps フレンドリーな宣言的デプロイ、強力な差分&検証、豊富なプラグインが大きな魅力。
- 既存サービスでも
init
→deploy
の 2 ステップで導入できるため、低コストで安全な ECS デリバリー をすぐに体験できます。
日々のデプロイが「コマンド一杯」「GUI ぽちぽち」になっているチームは、ぜひ一度 ecspresso を試してみてください。☕🚀