マラソン疲れ
- 思ったより残っていて辛い
- 足も痛い…
- 好きで走っているんだけど辛い
夕飯
- 引き続き鍋
- 安売りのうどんがあまりにも不味くて残念だった
AWS WAF のアクセス制御を IP アドレスを条件として行う際に設定する IPSets の管理を比較的頻繁に行う必要がありそうで、毎回マネジメントコンソールを触るのは気が引けたので雑にコマンドラインツールを作ってみた。あくまでも作ってみた系の話しのなので改善点は多々、そもそも必要なのかも疑わしいけど、思いのほかサクッと動いたのでメモしておく。
名前が wafoo というのはどうでも良い。
ちなみに、AWS の認証周りは @k1LoW さんの awsecrets を利用させて頂いている。
また、コマンドラインオプション等は codenize.tools のオプションを出来るだけ参考にさせて頂いた。
$ bundle exec exe/wafoo --help Commands: wafoo apply # 指定した IPSet ID の IPset を apply する wafoo export # 指定した IPSet ID の IPset を export する wafoo help [COMMAND] # Describe available commands or one specific command wafoo list # IPSet ID の一覧を取得する wafoo version # version 情報を出力. Options: [--profile=PROFILE] [--region=REGION]
雑に ip_set_id
と name
が YAML で出力される。
$ bundle exec exe/wafoo list --profile oreno-profile --region ap-northeast-1 listing... --- !ruby/struct:Aws::WAFRegional::Types::IPSetSummary ip_set_id: ${IPSet ID} name: IPSet_1 --- !ruby/struct:Aws::WAFRegional::Types::IPSetSummary ip_set_id: ${IPSet ID} name: IPSet_2
bash-3.2$ bundle exec exe/wafoo export --profile ${Your Profile} --region ap-northeast-1 --ip-set-id=${IPSet ID} export... 192.168.1.8/32 192.168.1.9/32 192.168.3.0/24 192.168.4.0/32 192.168.4.1/32 192.168.4.10/32 192.168.4.11/32 192.168.4.12/32 192.168.4.13/32 192.168.4.14/32 192.168.4.15/32 192.168.4.2/32 192.168.4.3/32 192.168.4.4/32 192.168.4.5/32 192.168.4.6/32 192.168.4.7/32 192.168.4.8/32 192.168.4.9/32
カレントディレクトリの ${IPSet ID} というファイルに出力される。
$ cat ${IPSet ID} 192.168.1.8/32 192.168.1.9/32 192.168.3.0/24 192.168.4.0/32 192.168.4.1/32 192.168.4.10/32 192.168.4.11/32 192.168.4.12/32 192.168.4.13/32 192.168.4.14/32 192.168.4.15/32 192.168.4.2/32 192.168.4.3/32 192.168.4.4/32 192.168.4.5/32 192.168.4.6/32 192.168.4.7/32 192.168.4.8/32 192.168.4.9/32
例えば、192.168.5.0/28 を追加したとする。現時点で WAF の IPSets の辛いところが、CIDR のオクテット設定が 8
16
24
32
しか指定出来ないところ。
www.slideshare.net
wafoo ではこれら以外のオクテットを指定した場合には、自動的に IP アドレス範囲を返してくれる。(※ ネットワークアドレスとブロードキャストアドレスは今のところ除く処理は入れていない)
$ cat ${IPSet ID} 192.168.1.8/32 192.168.1.9/32 192.168.3.0/24 192.168.4.0/32 192.168.4.1/32 192.168.4.10/32 192.168.4.11/32 192.168.4.12/32 192.168.4.13/32 192.168.4.14/32 192.168.4.15/32 192.168.4.2/32 192.168.4.3/32 192.168.4.4/32 192.168.4.5/32 192.168.4.6/32 192.168.4.7/32 192.168.4.8/32 192.168.4.9/32 192.168.5.0/28
まずは dry-run
する。
$ bundle exec exe/wafoo apply --profile ${Your Profile} --region ap-northeast-1 --ip-set-id=${IPSet ID} --dry-run apply...(dry-run) -192.168.4.9/32 removed. +192.168.4.9/32 added. +192.168.5.0/28 added.
なぜか、追加した行の一つ前の行が削除、追加されるのは要改善。
そして、apply
する。
$ bundle exec exe/wafoo apply --profile ${Your Profile} --region ap-northeast-1 --ip-set-id=${IPSet ID} apply... -192.168.4.9/32 removed. +192.168.4.9/32 added. +192.168.5.0/28 added. 192.168.1.8/32 192.168.1.9/32 192.168.3.0/24 192.168.4.0/32 192.168.4.1/32 192.168.4.10/32 192.168.4.11/32 192.168.4.12/32 192.168.4.13/32 192.168.4.14/32 192.168.4.15/32 192.168.4.2/32 192.168.4.3/32 192.168.4.4/32 192.168.4.5/32 192.168.4.6/32 192.168.4.7/32 192.168.4.8/32 192.168.4.9/32 192.168.5.0/32 192.168.5.1/32 192.168.5.10/32 192.168.5.11/32 192.168.5.12/32 192.168.5.13/32 192.168.5.14/32 192.168.5.15/32 192.168.5.2/32 192.168.5.3/32 192.168.5.4/32 192.168.5.5/32 192.168.5.6/32 192.168.5.7/32 192.168.5.8/32 192.168.5.9/32
追加された結果もちゃんと確認出来る。
例えば、192.168.1.9/32 と 192.168.3.0/24 を削除したいとする。
$ cat ${IPSet ID} 192.168.1.8/32 192.168.4.0/32 192.168.4.1/32 192.168.4.10/32 192.168.4.11/32 192.168.4.12/32 192.168.4.13/32 192.168.4.14/32 192.168.4.15/32 192.168.4.2/32 192.168.4.3/32 192.168.4.4/32 192.168.4.5/32 192.168.4.6/32 192.168.4.7/32 192.168.4.8/32 192.168.4.9/32 192.168.5.0/32 192.168.5.1/32 192.168.5.10/32 192.168.5.11/32 192.168.5.12/32 192.168.5.13/32 192.168.5.14/32 192.168.5.15/32 192.168.5.2/32 192.168.5.3/32 192.168.5.4/32 192.168.5.5/32 192.168.5.6/32 192.168.5.7/32 192.168.5.8/32 192.168.5.9/32
まずは dry-run
する。
$ bundle exec exe/wafoo apply --profile ${Your Profile} --region ap-northeast-1 --ip-set-id=${IPSet ID} --dry-run apply...(dry-run) -192.168.1.9/32 removed. -192.168.3.0/24 removed.
一応、削除対象が出力される。
そして、apply
する。
$ bundle exec exe/wafoo apply --profile ${Your Profile} --region ap-northeast-1 --ip-set-id=${IPSet ID} apply... -192.168.1.9/32 removed. -192.168.3.0/24 removed. 192.168.1.8/32 192.168.4.0/32 192.168.4.1/32 192.168.4.10/32 192.168.4.11/32 192.168.4.12/32 192.168.4.13/32 192.168.4.14/32 192.168.4.15/32 192.168.4.2/32 192.168.4.3/32 192.168.4.4/32 192.168.4.5/32 192.168.4.6/32 192.168.4.7/32 192.168.4.8/32 192.168.4.9/32 192.168.5.0/32 192.168.5.1/32 192.168.5.10/32 192.168.5.11/32 192.168.5.12/32 192.168.5.13/32 192.168.5.14/32 192.168.5.15/32 192.168.5.2/32 192.168.5.3/32 192.168.5.4/32 192.168.5.5/32 192.168.5.6/32 192.168.5.7/32 192.168.5.8/32 192.168.5.9/32
削除対象がちゃんと削除されていることも確認出来る。
感じで色々と修正すべきところはあるけど、一応、やりたいことは実現出来ているので、とりあえず良しとしよう。
全ては以下の記事にて。
奥さんや両親にカッコイイところを見せられなかったのが本当に悔しい。リベンジ。
ただ、沿道の声援やボランティアスタッフの皆さんに支えられたレースだった。感謝の言葉しかない。
母が朝食に用意したぼたもち。昨晩、遅くにこさえたらしい。
台所に立ってぼたもちを丸めている母の背中を思うと涙が出る。
完走出来たのは沿道の応援やボランティアスタッフ、家族のおかげ。本当に感謝。ここから再スタート。
25 キロ以降、別人が走っているのではないかと思いたいけど、これも自分。
以下、言い訳でしかないけど。
昨年はどちらかと言えば暖かいレースだったと記憶していたが、今年はスタート直後から降り出した雨が冷えて、徐々に体温を奪っていった。T シャツと短パン、アームウォーマー、レッグウォーマーという格好ではペースが落ちはじめた時の冷えには対応出来なかった。
震えが止まらず、ストーブを抱いても体は全く温まることなくどんどん体が冷えてどうしようもなくなるのが怖い。
足の痛みや猛烈な冷えに悩ませれている時に、救いとなったのは沿道の声援とボランティアスタッフの介抱だった。ペースダウンしてから何度か救護室に転がり込んでテーピングして頂いたり、暖かい飲み物を頂いたりしながらなんとか完走することが出来た。まさに、彼らのお陰でゴールすることが出来た。本当に感謝。偉そうな言い方かもしれないけど、完走は彼らへの恩返しなのかもしれない。
なかなかゴールしないので一度自宅に帰ってしまった奥さんと両親。奥さんの友人(よいっちゃん)のツッコミで再び走り出したことを知ったとのことだが、ゴールで待ってくれているひとたちが居るということも本当に心強く前に進むことが出来た。
ラストの 2 キロは沿道の父と並走した。足が痛い痛いって言っていた父の方が速いような気がした。自分が走りを始めた頃、父の背中を追いながら走っていたことを思いだした。本当に有難かった。
マラソンを舐めていたのは間違いないし、死にそうになって色々と気付きがあったので、今後のレースやトレーニング生かしていきたいと思う。
とは言え、無事に完走出来て本当に嬉しかった。一生、忘れることが出来ないマラソンになった。