Amazon CloudWatch SyntheticsのスケジューリングがCron式をサポート

Amazon CloudWatch SyntheticsのスケジューリングがCron式をサポート

これまで

弊社ではフロントエンド側の監視(外形監視、Web監視)として、たとえばコーポレートサイトの問い合わせ機能が正常に動作しているか、ログイン画面が正常に表示されているか、といったチェックをAmazon CloudWatch Synthetics のCanaryを用いて定期的に実施しています。

※ちなみに、CanaryはPuppeteerというヘッドレスChromeのNode.jsライブラリで動作しています。

これまでは、Amazon CloudWatch SyntheticsのCanaryで定期実行を行いたい場合、Canaryの機能としては「継続的に実行」で最大60分間隔でしか実行できないため細かい設定ができませんでした。
そのため、導入当初は毎日1度の実行を行うためにCanaryのコード内で時間をチェックして、1日のうち23回分はスキップするといったことをしていました。
しかし、それでは少しづつ起動時刻がずれてしまう問題が起きたため、別途AWS Lambdaを実装してそちらから定期的にCanaryを呼び出すように修正したりしていました。
参考:弊社佐々木の記事

スケジュールにCron式の設定が可能に

先述のような問題がありましたが、先日Canaryの設定「スケジュール」にこれまでの「継続的に実行」、「1回実行」に加えて「CRON expression」が追加されたため、Canary内だけでスケジューリングに必要な作業を完結できるようになりました。
Amazon CloudWatch Synthetics が、スケジューリングの cron 式をサポート


※「CRON expression」が追加されている。現在は「1回実行」を選びつつ、AWS Lambdaから呼び出している。

Cron expressionの設定

設定方法は、「スケジュール」で「CRON expression」を選択し、 「CRON expressions have required fields, which are separated by white space.」にCron式を入力するだけです。


※毎日JST 9:00時に起動したい場合

ここで、3番目(Day-of-month)と5番目(Day-of-week)の両方に * は指定できないことを注意しましょう。その場合は片方に ? を指定してください。
また、省略可能ですが6番目にYearを指定することもできます。
公式ドキュメント

まとめ

Amazon CloudWatch Syntheticsを利用することで、外形監視をより簡単に、柔軟に設定できるようになっています。
外形監視を適切に実施し、可用性のチェックに努めていきたいと思います。