以下の内容はhttps://sfujiwara.hatenablog.com/entry/ecspresso-v2.7より取得しました。


ECS Expressモードに対応した ecspresso v2.7 をリリースしました

Amazon ECS デプロイツール、ecspresso v2.7.0 をリリースしました。

github.com

新機能

ECS Express モードに対応

先日リリースされたAmazon ECSの新機能、Express モードに対応しています。

aws.amazon.com

Amazon ECS Express Mode は、AWS 全体で一般的に使用されるリソースを作成するための新たな統合により、Amazon ECS サービスリソースへのシンプルなインターフェイスを提供します。ECS Express Mode は、ECS クラスター、タスク定義、Application Load Balancer、自動スケーリングポリシー、Amazon Route 53 ドメインを 1 つのエントリポイントから自動的にプロビジョニングして設定します。

簡単な定義で、ECSが動作するための周辺リソースを自動的に作成してくれるものですね。

ecspresso v2.7 では ECS Express モードに対して、従来の ecspresso が提供している機能をほぼ全面的にサポートしています。

  • ecspresso init --express: Express モードで動作しているサービスを定義ファイル化
    • 従来のタスク定義、サービス定義の代わりに ecs-express-def.json(jsonnet) というExpress専用の定義ファイルを作成します。
  • ecspresso deploy: ExpressモードのECSサービスをデプロイ、作成
  • ecspresso diff: 定義ファイルと実リソースのdiff形式差分表示
  • ecspresso render [express-definition or expressdef]: 各種定義ファイルの JSON / Jsonnet 形式でのレンダリング
  • ecspresso delete: Express サービスの削除
  • ecspresso status: Express サービスの状態表示
  • ecspresso rollback: 実行中のデプロイに対してロールバック
  • ecspresso verify: Express 定義ファイル中のリソースに対しての検証
  • exec, refresh, tasks, wait コマンド: 同様に動作します

もちろん、定義ファイルでのテンプレートやJsonnet関数での便利な機能(環境変数、tfstate、SSMパラメーターの参照など)も従来通り動作します。

ただし、以下のサブコマンドについては Express モードでは動作しません。

  • scale, run, revisions, register, deregister, appspec

Expressモードのサービスに対して ecspresso status を実行すると、従来のstatusコマンドの表示に加えて、Express専用の状態(自動定義されたpublic endpointのDNS名など) も表示します。

$ ecspresso status
2025-11-23T11:38:42.750+09:00 [INFO] ecspresso version: v2.7.0
Service: printenv
Cluster: ecspresso
TaskDefinition: ecspresso-printenv:11
Express:
  Status: ACTIVE 
  IngressPaths:
    PUBLIC pr-xxxxxxxxxxxxxxx.ecs.ap-northeast-1.on.aws

ちなみに、実際に動作する最小限の Express 用の定義ファイルは次のようなものです。ロールとコンテナイメージの定義だけ。簡単ですね! (IAM Roleだけは別途定義が必要ですが、これはマネージメントコンソールでも同様なのです)

{
  "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
  "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices",
  "primaryContainer": {
    "image": "nginx:latest"
  }
}

Expressモードから通常のECSサービスへのマイグレーション

Expressモードは簡単に定義できるのですが、簡単さと引き換えにECSが持つ細かい機能へのアクセスができません。例えばタスク定義での詳細な設定 (ulimitとかfirelensを使ったログ送信とか) はExpress用の定義ファイルからは設定できません。

しかしecspressoは、このように簡単に定義されてデプロイされたExpress ECSサービスに対して、通常のサービス定義とタスク定義を作成する形にマイグレーションを行えます。ecspresso init --no-express を実行するだけです。

$ ecspresso init --service myservice --cluster default --no-express

これで従来の ecspresso 同様、ECSのフル機能にアクセスできるサービス定義(ecs-service-def)とタスク定義(ecs-task-def)ファイルが自動生成されます。あとは通常のECSサービス同様に設定を変更し、ecspresso deploy するだけです。 deployしてもECS上ではExpressモードのままですが、サービス定義とタスク定義の変更は通常のECSサービス同様に適用されます。

簡単操作で作ったはいいものの詳細な項目が弄れなくて困る、という心配はありません。

【制限事項】ExpressモードのECSサービスではサービス定義の deploymentConfigurationloadBalancers は変更不可になっています。これらを操作したい場合は、生成された定義ファイルを使って別の(通常の)ECSサービスとしてdeployしてから変更することになります。

コンテナイメージを提供します

これまでのecspressoの配布方法に加えて、コンテナイメージの提供を始めました。

Package ecspresso · GitHub

distrolessのベースイメージにecspressoのバイナリが入っているだけのものです。イメージは AMD64/Arm64 両対応です。

$ docker pull ghcr.io/kayac/ecspresso:v2.7.0

バイナリをインストールすることなく、dockerから~/.aws や定義ファイルが入っているディレクトリをvolume mountして実行することもできますし、独自のコンテナをビルドする際にマルチステージビルドで COPY --from=ecspresso /usr/local/bin/ecspresso などとしてecspressoのバイナリを取り込む用途にも使えます。

$ docker run --rm \
    -v ~/.aws:/root/.aws:ro \
    -v $(pwd):/work \
    -w /work \
    ghcr.io/kayac/ecspresso:v2.7.0 deploy --config ecspresso.yml

まとめ

  • 2025年11月にリリースされたECSの新機能、Expressモードに対応した ecspresso v2.7.0 をリリースしました
  • コンテナイメージの提供も始めました
  • どうぞご利用ください



以上の内容はhttps://sfujiwara.hatenablog.com/entry/ecspresso-v2.7より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14