Amazon ECS デプロイツール ecspresso v2.5.0 をリリースしたのでお知らせです。
新機能がいくつか、ログ出力まわりの変更、その他細かい修正などが入っています。非互換な変更は (ログ形式以外) ありません。
新機能
外部コマンド呼び出しプラグインを追加
ecspresso の実行時に、テンプレート関数から外部コマンドを呼び出して結果を取得する external plugin を追加しました。
ここでは使い方の例として、「現在時刻を ISO8601 形式で出力する jq コマンドを呼び出す」ようにしてみます。
$ jq -n "{ Now: now | todateiso8601 }"
{
"Now": "2024-10-25T16:13:22Z"
}
ecspresso の設定ファイルで、external plugin から呼び出すコマンドを定義します。ここでは
jqというテンプレート関数を定義する- 実行するコマンドは
jq -nで引数を1つ取る
としてみます。
# ecspresso.yml plugins: - name: external config: name: jq command: ["jq", "-n"] num_args: 1 timeout: 5
テンプレートからは、定義したテンプレート関数に対して、引数を渡すことで実行できます。
local jq = std.native('jq');
{
today: jq('{ Now: now | todateiso8601 }').Now,
}
デフォルトでは、コマンドは標準出力にJSONを出力することを期待しています。設定で parser: string を指定することで、結果を文字列として扱うこともできるようになっています。
ユースケースとしては、ecspresso 実行前になんらかのコマンドを実行して ecspresso のテンプレートに埋め込む値を生成する必要がある場面を想定しています。
これまでは、環境変数を経由して値を受け渡す必要がありました。
external plugin を利用することで、環境変数での値のやりとりなしにコマンドの出力を直接扱うことが可能になります。
deploy --wait-until=deployed を追加
ecspresso deploy を実行すると、デフォルトでは ECS サービスが stable になるまで待機します。最新の deployment が成功した時点で待機を打ち切るためのオプションが追加されました。
デフォルトではこれまで通り、--wait-until=stable なので挙動は変わりません。
CodeDeploy 利用時に DeploymentConfigName を上書き可能に
これまでは、CodeDeploy の DeploymentGroup (ECSサービスに1:1対応している) に設定されている DeploymentConfigName が暗黙的に指定されていました。設定ファイルで codedeploy.deployment_config_name を明示的に指定することで、DeploymentGroup に指定された以外の DeploymentConfig を利用できるようになりました。
codedeploy: application_name: myapp deployment_group_name: mydeployment deployment_config_name: myDeploymentConfig # optional, override DeploymentGroup setting
ログ出力を log/slog に変更
ログの出力を Go 標準の slog に変更しました。v2.4までとはログの出力形式が多少異なります。
v2.4 まで
$ ecspresso diff --debug 2025/05/09 14:59:37 [INFO] ecspresso version: v2.4.6 2025/05/09 14:59:38 ecspresso/ecspresso [DEBUG] config file path: ecspresso.jsonnet 2025/05/09 14:59:38 ecspresso/ecspresso [DEBUG] timeout: 10m0s
v2.5 から
$ ecspresso diff --debug 2025-05-09T14:58:49.875+09:00 [INFO] ecspresso version: v2.5.0 2025-05-09T14:58:51.302+09:00 [DEBUG] [ecspresso/ecspresso] config file path: ecspresso.jsonnet 2025-05-09T14:58:51.302+09:00 [DEBUG] [ecspresso/ecspresso] timeout: 10m0s
また、--log-format=json というオプションが追加されました。ログと、その他の出力 (diff は除きます) が、JSON で出力されるようになります。
その他細かい変更
依存パッケージの更新、内部で time.Sleep() を利用しているタイミングで Ctrl-C などでの打ち切りがすぐに行われなかったのを修正、verify コマンドのリファクタリング(動作は同じです)、などが含まれています。
ということで、ecspresso v2.5.0 のお知らせでした。機能要望などをお送りいただいた皆様、ありがとうございました。今回のリリースでは非互換変更は含まれていないはずですが、もし何かありましたらお知らせ下さい。