Songmu/ecschedule

`ecschedule dump` コマンドでエラーが表示される

Closed this issue · 2 comments

はじめまして。ecschedule dump コマンドにてエラーに遭遇しましたので報告いたします。
解決方法などありましたらご教授いただけると幸いです。

環境

ecschedule: v0.3.1 (rev:13906aa)
OS: macOS Catalina Version 10.15.6

エラー内容

ECS クラスタに対して設定しているスケジュールタスクをインポートするために dump コマンドを実行した所下記のようなエラーに遭遇しました。

$ ecschedule dump --cluster my-services-development --region ap-northeast-1
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x150e4d6]

goroutine 1 [running]:
github.com/Songmu/ecschedule.(*ruleGetter).getRule(0xc000271a18, 0x17154e0, 0xc0002d3800, 0xc00043d310, 0x0, 0x0, 0x0)
        /home/runner/work/ecschedule/ecschedule/rule_getter.go:98 +0xfd6
github.com/Songmu/ecschedule.glob..func3(0x17154e0, 0xc0002d3800, 0xc00001e200, 0x4, 0x4, 0x170e520, 0xc00000e018, 0x170e520, 0xc00000e020, 0x0, ...)
        /home/runner/work/ecschedule/ecschedule/cmd_dump.go:101 +0xc1f
github.com/Songmu/ecschedule.(*runnerImpl).Run(0x19a2540, 0x17154e0, 0xc0002d3800, 0xc00001e200, 0x4, 0x4, 0x170e520, 0xc00000e018, 0x170e520, 0xc00000e020, ...)
        /home/runner/work/ecschedule/ecschedule/commands.go:72 +0x9d
github.com/Songmu/ecschedule.Run(0xc00001e1f0, 0x5, 0x5, 0x170e520, 0xc00000e018, 0x170e520, 0xc00000e020, 0x0, 0x0)
        /home/runner/work/ecschedule/ecschedule/ecsched.go:75 +0x7b2
main.main()
        /home/runner/work/ecschedule/ecschedule/cmd/ecschedule/main.go:13 +0xad

名前付きプロファイルで default を用意していないため、事前に下記環境変数にてプロファイルを指定しています。

$ export AWS_PROFILE=myservice-production

その他

dump は実行できませんでしたが、手動で yml ファイルを作成し diffrunapply を実行したところ正常に動作致しました。

他に必要な情報がありましたらお申し付けください。

本件解決致しました。

とある EventBridge ルールの取得でエラーが発生しており、該当のルールを削除することで無事 ecschedule dump コマンドが使用できるようになりました。
ちなみに該当のルールは、以前存在していた ECS クラスタに対するもので、現在はその ECS クラスタは存在しないものの、ルールのみ(ターゲットも設定なし)残っていたというものでした。

なるほど、丁寧なレポートありがとうございます。ひとまず解決してよかったです。
panicが起きてしまうのはよくないので、対応を入れたほうが良さそうですね。