Japan APN Ambassador Advent Calendar 2020 2 日目のエントリです。ecschedule で ECS の Scheduled Task を管理してみました。
インストール
go get
でインストールしました。
$ go get github.com/Songmu/ecschedule/cmd/ecschedule $ ecschedule -help Usage of ecschedule (v0.3.0 rev:HEAD): -conf string configuration -version display version Commands: apply apply the rule dump dump tasks run run the rule diff diff of the rule with remote
Scheduled Task の dump
dump
サブコマンドで既存の Scheduled Task を dump することが可能です。今回は既に存在する Scheduled Task を dump してみます。
$ ecschedule dump --cluster sample-cluster --region ap-northeast-1 > ecschedule.yaml $ cat ecschedule.yaml region: ap-northeast-1 cluster: sample-cluster rules: - name: batch scheduleExpression: rate(1 minute) disabled: true taskDefinition: batch:6 launch_type: FARGATE platform_version: 1.3.0 network_configuration: aws_vpc_configuration: subnets: - subnet-xxxxxxxxxxxxxxxxxx security_groups: - sg-xxxxxxxxxxxxxxxxxx assign_public_ip: ENABLED
ecschedule.yaml
に対象 ECS Cluster に存在する Scheduled Task が dump されました。
Scheduled Task の apply
該当の Scheduled Task が Disabled の状態となっているため、ecschedule で有効化してみます。
$ git diff diff --git a/ecschedule.yaml b/ecschedule.yaml index dd7be7b..31f021e 100644 --- a/ecschedule.yaml +++ b/ecschedule.yaml @@ -3,7 +3,6 @@ cluster: sample-cluster rules: - name: batch scheduleExpression: rate(1 minute) - disabled: true taskDefinition: batch:6 launch_type: FARGATE platform_version: 1.3.0
ecschedule.yaml
を変更して apply
サブコマンドを実行する前に、diff
サブコマンドで ecschedule.yaml
と Scheduled Task の状態を差分確認してみます。
$ ecschedule -conf ecschedule.yaml diff -rule batch
以下の様に差分を出力してくれます。PR レビューに便利ですね。
差分が確認できたので apply します。
$ ecschedule -conf ecschedule.yaml apply -rule batch
差分が適用されました。
AWS マネージメントコンソールから Scheduled Task を見てみると、問題なく ENABLED となっていることが確認できました。
おわりに
簡単ですが、ecschedule を用いて Scheduled Task を管理してみました。とても便利ですね。個人的には dump 機能が好きです。「当初は AWS マネージメントコンソールや AWS CLI で作成したけど、後から IaC で管理したい」というケースに非常にマッチするのではないでしょうか。
ECS Service の Deployment は ecspresso で、Scheduled Task は ecschedule で管理すると最強なのでは説が僕の中で浮上しています。