ecspresso v1 をリリースします(v0.99.x をリリースしているのでお試しください)

おかげさまで各所でご利用頂いている(模様の) Amazon ECS デプロイツール ecspresso ですが、リリースしてからもうすぐ3年になりますし、ここで一部非互換の修正を入れた v1 を出そうとしています。

非互換な点は少ないのでほとんどの方にはそのまま使って頂けると思いますが、下記を確認した上で v0.99.x を試して頂いて、もし何か問題があればフィードバックを頂けると幸いです。

(2020-10-30 追記) v1.0.0 をリリース済です。

github.com

(2020-09-25 23:00 追記) Homebrew で 0.99.x がインストールできるようになりました。 tap ecspresso@0.99 by mashiike · Pull Request #9 · kayac/homebrew-tap · GitHub

$ brew install kayac/tap/ecspresso@0.99

既に v0.x がインストールされている場合は conflict するので、一旦 unlink して link し直してください。

$ brew unlink ecspresso
$ brew link ecspresso@0.99

v0.x に戻したい場合は逆操作です。

$ brew unlink ecspresso@0.99
$ brew link ecspresso

v1 リリース後は @0.99 は削除されるので、単に brew upgrade ecspresso で v1 へ更新されるようになる予定です。 (追記ここまで)

v1 で非互換になる点

deploy --update-service (true) がデフォルトになります

従来 、service 定義ファイルを更新した場合にそれを ECS service に反映するには、ecspresso deploy --update-service とオプションを指定する必要がありました。

v1 では --update-service はデフォルトで true になります。v0.x と同様、service 定義に変更があっても deploy 時に適用したくない場合、deploy --no-update-service として明示する必要があります。

次に説明する、service 定義の desiredCount が反映されるようになる件との組み合わせで、意図しない挙動になる場合がありますのでご注意ください。

service 定義に記述された desiredCount を解釈するようになります

Does not `desiredCount` field work? · Issue #131 · kayac/ecspresso · GitHub

これまでは service 定義に desiredCount 属性が記述されていても無視されていました。v1 では service 定義に desiredCount 属性が存在して null ではない数値が記載されている場合に限り、deploy 時にその値を使用するようになります。deploy --tasks N が指定されていればそちらが優先されます。

ecspress deploy 実行時に実際に ECS task に指定される desiredCount は、以下の優先順位で決定されます。

  1. --tasks で指定された値
  2. service 定義に desiredCount で定義されている値
  3. (現在の service の desiredCount と変更なし)

これまで通りの挙動を期待する場合は、service 定義に desiredCount が指定されていないことを確認してください。

service / task 定義ファイルの path を config ファイルからの相対で解釈するようになります

feature request: resolve definition files path relatively from config.yml · Issue #140 · kayac/ecspresso · GitHub

例えば現在 config.yaml に以下のように記述されていている場合、

service_definition: ecs-service-def.json
task_definition: ecs-task-def.json

ecs-(service|task)-def.json は ecspresso 実行時のカレントディレクトリに存在している必要があります。

v1 では config ファイルからの相対で解釈するようになるため、

$ ecspresso --config path/to/config.yml

として実行した場合は ecs-(service|task)-def.json は ecspresso 実行時のカレントディレクトリではなく、config.yml と同一ディレクトリ (path/to) に存在しているものとして実行します。


以上、よろしくお願いします!