miyagawaさん由来! (?)
ecs-delopyからecspressoになった音がした
— songmu (@songmu) September 9, 2019
共に専門性の高い仕事をする人には、その専門領域をうまいこと民主化するためのエネイブルメント力を求めたいよなーとか思ったりした。
— songmu (@songmu) August 4, 2023
コンテナイメージを作るところまでがアプリケーション側の責務か?
(モノレポとかのケースもあると思うが便宜上)
コンテナイメージをビルドするだけでは、運用に関する設定がおこなえない。
--no-wait
オプションの追加--no-wait
オプションの説明ECS サービスの状態が安定するのを待たずに、ECS サービスの状態を変更する操作を実行したら即終了したい場合に備えて、各コマンドには --no-wait オプションが実装されています。CI/CD 環境などで自動デプロイを行う場合など、ワークフローの実行を長時間ブロックさせたくないという要求に対応したものです。
--no-wait で実行した後に、別途 ECS サービスが安定状態になるまで待機するために ecspresso wait コマンドが用意されています。
--latest-task-definition
オプションの追加--latest-task-definition
オプションの使い所ecspresso deploy
の前段で ecspresso run
で別の処理を実行したい場合等に効果的。例えば、アプリデプロイ前にDB migrationを実行したい場合、ecspresso run
にやらせるのは一つのパターン。
ecspresso run --overrides '{"ContainerOverrides":[{"Name":"app","Command":["migraion"]}]}'
ecspresso deploy --lates-task-definition
--latest-task-definition
を使うことでタスク定義のバージョンが上がりすぎることを防ぎ、ロールバックが適切に動くようにする。
意を汲み取った使い方の例: ECS(Fargate)でDBマイグレーションを行う- やんばるテック
デーモンセットでロールバックが完全に動いていなかった。作者が使っていないユースケースでうまく動かないのOSSあるある。
以下のような1枚のYAMLでscheduled taskを一元管理。YAMLは ecschedule dump
でダンプしてこられる。
region: us-east-1
cluster: clusterName
- name: taskName1
description: task 1
scheduledExpression: cron(30 15 ? * * *)
taskDefinition: taskDefName
containerOverrides:
- name: containerName
command: [subcommand1, arg]
environment:
HOGE: foo
FUGA: {{ must_env `APP_FUGA` }}
- name: taskName2
description: task2
scheduledExpression: cron(30 16 ? * * *)
taskDefinition: taskDefName2
containerOverrides:
- name: containerName2
command: [subcommand2, arg]
ecschedule apply
で反映。
ECSのScheduled Task管理のためにecspressoに機能追加のpull requestを送ろうかと思ってたけど、最小限の設定でサクサクタスク追加できる感じが良いなーと思ってるので若干思想が違いそうなので別ツール作るかなってなってる。
— songmu (@songmu) September 8, 2019
https://t.co/fGdvLbVq0a ECSのScheduled taskのTask definition変えたりできないかなあ
— mash (@maaash) January 10, 2018
ECS scheduled task 管理 良い感じ
— soh335 (@soh335) January 31, 2019
ecspressoってScheduled Taskの管理というかdeployは出来ないのかな……
— 伏原 幹 (@__kan) April 16, 2020
実は私はバッチ処理が好き。バッチにまつわるOSSをそこそこ出してきた。
ecsched
という名前にしていた
d
で終わるのはデーモン(サーバー)ぽいので後に明確に ecschedule
としたhttps://songmu.jp/riji/entry/2020-11-16-ecschedule.html
難産だった。新規サービス開発でバッチの本数が大幅に増えることが想定されたため完成させた。
tfstate対応は当初なかった。(後日contributeいただいた。ありがとうございます!)
https://d.hatena.ne.jp/keyword/ecschedule
ブログなどを拾った感じ、ウェルスナビ、トラストバンク、コネヒト、はてな、カヤック、クラシコム、リブセンス などにお使いいただいてる(いた)ようです。
125 stars (2023年8月8日現在)
ありがとうございます!
goccy/go-yamlの素晴らしいと思っている点
— songmu (@songmu) February 20, 2020
- JSONタグを相互利用可能
- struct埋め込みに対してinline指定ができる
- flowが指定可能
- structフィールド定義順にきちんとMarshalされる
- コードが読みやすい!https://t.co/UBTgNQ4TqH
エスプレスタックご利用ください。
OSS活動を支援してくれると嬉しいです。