0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ecspressoってなに?

Posted at

はじめに

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 でワンコマンド反映。
  • diffverify で変更内容とリソース整合性を事前チェック、rollback で安全に巻き戻し。
  • CodeDeploy を経由した Blue/Green デプロイ、Auto Scaling、Fargate/Fargate Spot、EBS Volume、Service Connect など最新機能をフルサポート。

コア機能と強み

機能 ひとことで 運用メリット
deploy サービス作成/更新、タスク定義登録を一括実行 createupdate‐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

diffverify を挟めば、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 フレンドリーな宣言的デプロイ、強力な差分&検証、豊富なプラグインが大きな魅力。
  • 既存サービスでも initdeploy の 2 ステップで導入できるため、低コストで安全な ECS デリバリー をすぐに体験できます。

日々のデプロイが「コマンド一杯」「GUI ぽちぽち」になっているチームは、ぜひ一度 ecspresso を試してみてください。☕🚀


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?