Cloudflare Workersとは
Cloudflare Workersは、Cloudflareが提供するサーバーレス実行環境です。Node.jsのようにJavaScript(またはTypeScript)で書いたコードを、グローバルに分散されたCloudflareのエッジで実行できるのが特徴。(使用できるnpmパッケージには制限あり。)これを活用して、空席状況を定期的にスクレイピングして、空きができたらSlackに通知する仕組みを作りたい。サーバレスアプリケーションはAWS Lambda、Google Cloud Functions, Azure Functionsなどあるけど、Cloudflare Workersが一番お安く(無料枠で)実現できそうでした。
作りたいもの
- 定期的にWebページをスクレイピング。
- スクレイピングした内容をDBに保存。
- 更新があればSlackに通知。
役割 | サービス名 |
---|---|
定期実行 | Cloudflare Workers |
データ保存 | Cloudflare D1(SQLite) |
通知 | Slack(Webhook) |
公開アクセス | 一切不要(非公開) |
作成順序
まずはデータ保存場所のデータベースD1を作成して、その後Workerを作成します。Cloudflare Workersのアプリケーションの単位をWorkerと言うらしい。Workerに作成したD1データベースをバインディングします。その後、コードの編集・動作確認を行い、問題なさそうであればスケジュール(トリガーイベント)を作成して完了です。
データベース作成
テーブル追加
Workerの作成
HelloWorldを選択して、中身のコードを書き換えていく。
D1データベースをバインディング
コード修正
Workerのコード編集画面からコードを修正する。プレビュー機能を用いるとデプロイしなくても、テストが行える。
HTTPリクエストによるトリガー(fetch)と、スケジュールの基本形
export default {
//HTTPリクエスト
async fetch(request, env, ctx) {
return new Response("This is a fallback fetch response.");
},
//スケジュールによる実行
async scheduled(event, env, ctx) {
console.log("Running scheduled task...");
}
};
トリガーの作成
AIに作ってもらったコード内容は割愛。