こんにちは。Tomoyuki(@tomoyuki65)です。
イベント駆動型の処理を作って定期実行させたくて色々調べていましたが、なんと無料で使えて使いやすそうなCloudflare Workersというのを見つけました!
例えば有名なやつだとAWSのLambdaやGoogle CloudのCloud Functionsなどがあったりしますが、どちらも利用するにはクレジットカード登録が必要だったりして結構ハードルが高いです。
ただCloudflare Workersならクレジットカードが不要でアカウントの作成ができ、処理を定期実行させるのも簡単なので結構おすすめだと思います。
そのでこの記事では、Cloudflare Workersの使い方についてご紹介します。
目次
【無料】Cloudflare WorkersでAPIを定期実行できるぞ!
まずはアカウント作成をするため、Cloudflareの公式サイトにアクセスし、画面中央の「無料で始める」をクリックします。
次にメールアドレスとパスワードを入力後、ロボットでないことを確認し、「サインアップ」をクリックします。
これで入力したメールアドレス宛に確認メールが送信されます。
次に送信されたメール内容に記載のリンクをクリックし、認証処理を行います。
メール認証後、Cloudflareの画面に戻り、画面右上のメニューから「アカウントホーム」をクリックします。
これでCloudflareのアカウント作成が完了です。
Cloudflare Workers用CLIツールのインストールとログイン
次にCloudflare WorkersのCLIツールをインストールしますが、今回はnpm用のライブラリを例として使います。
尚、この記事ではnpmに関する詳細は割愛させていただきますので、まだインストールしてない方はvoltaなどのパッケージ管理ライブラリを利用してnodeのインストールおよびnpmを利用できるようにして下さい。
では以下のコマンドを実行し、Cloudflare WorkersのCLIツール「wrangler」をインストールします。
$ npm i -g wrangler
次に以下のコマンドを実行し、wranglerコマンドのパスが通っているかを確認して下さい。
$ wrangler --version
次に以下のコマンドを実行し、上記で作成したCloudflareアカウントにログインします。
$ wrangler login
次にブラウザで認証用の画面が表示されるので、画面下の「Allow」をクリックして認証します。
これでCLIツールからのログインが完了です。
ログイン完了後にターミナルを確認すると質問をされますが、「no」を入力しておけばOKです。
CLIツールでWorker(ワーカー)を作成
次にWorker(ワーカー)とよばれるアプリケーションを作成します。
一応画面からも作れますが、CLIツールから作った方が色々便利なため、以下のコマンドを実行して各種ファイルを作成します。
$ mkdir cf && cd cf
$ npm create cloudflare@latest
コマンド実行後、パッケージをインストールするか聞かれるので「y」を入力します。
次に作成するアプリケーションについて色々聞かれるので、今回は以下のように入力や選択を行います。
・Step 1 of 3
In which directory do you want to create your application? | sample |
What would you like to start with? | Hello World example |
Which template would you like to use? | Hello World Worker |
Which language do you want to use? | TypeScript |
・Step 2 of 3
Do you want to use git for version control? | yes |
・Step 1 of 3
Do you want to deploy your application? | no |
これで「sample」フォルダが新しく作成されます。合わせてコマンド「cd sample」でsampleディレクトリに移動します。
「sample」フォルダをテキストエディタで確認すると以下のようになります。
次に以下のコマンドを実行し、ローカルサーバーを起動して確認します。
$ wrangler dev
ローカルサーバー起動後、以下のように表示されるので、「b」を入力するとブラウザが開きます。
※起動したサーバーを止めたい場合は「x」を入力して下さい。
ブラウザで「Hello World!」が表示されればOKです。
トリガー起動時に実行される処理を追加して試す
次にトリガー起動時に実行される処理を追加するため、「src/index.ts」を以下のように修正します。
/**
* Welcome to Cloudflare Workers! This is your first worker.
*
* - Run `npm run dev` in your terminal to start a development server
* - Open a browser tab at http://localhost:8787/ to see your worker in action
* - Run `npm run deploy` to publish your worker
*
* Bind resources to your worker in `wrangler.toml`. After adding bindings, a type definition for the
* `Env` object can be regenerated with `npm run cf-typegen`.
*
* Learn more at https://developers.cloudflare.com/workers/
*/
// 環境変数の定義
interface Env {
ENV: string;
}
export default {
async fetch(request, env, ctx): Promise<Response> {
return new Response('Hello World!');
},
// トリガー起動用の処理を追加
async scheduled(
controller: ScheduledController,
env: Env,
ctx: ExecutionContext,
) {
console.log("トリガー起動により実行されました!!");
console.log(`ENV: ${env.ENV}`);
},
} satisfies ExportedHandler<Env>;
次に以下のコマンドを実行し、ローカル環境用の環境変数ファイルを作成します。
$ touch .dev.vars
次に作成したファイルを以下のように修正します。
ENV=local
次にトリガーを起動させる条件を「wrangler.toml」に追加します。
・・
# トリガー設定
[triggers]
crons = ["0 22 * * *"]
・・
※トリガー設定についてはcron形式で記述し、上記の「[“0 22 * * *”]」についてはJST時間(日本時間)で毎朝7時に起動する設定です。(UTC時間に+9時間するとJST時間となる)
次に以下のコマンドを実行し、トリガーテスト用のオプション「–test-scheduled」を付けてサーバーを起動します。
$ wrangler dev --test-scheduled
サーバー起動後、ログに記載されているURLを確認し、末尾に「/__scheduled」を追加したURL(下記の場合は「http://localhost:8787/__scheduled」)をブラウザから開きます。
ブラウザからURL「http://localhost:8787/__scheduled」を開くと下図のようになり、これでトリガー起動の処理が実行されます。
もう一度ターミナルを確認し、トリガー起動時の処理に追加したログ出力が表示されればOKです。
本番環境用の環境変数設定とデプロイ
次に上記で作成したファイルを本番環境へデプロイしてみます。
まずは以下のコマンドを実行し、本番環境用の環境変数を設定します。
$ wrangler secret put ENV
コマンド実行後、環境変数「ENV」の値の入力を求められるので、今回は「prod」と入力してEnterを押します。
次に以下のコマンドを実行し、本番環境へデプロイします。
$ npm run deploy
コマンド実行後、ターミナルは以下のようになります。
次にCloudflareの画面を開き、画面左のメニュー「Workers & Pages」をクリックするとデプロイしたアプリケーションが表示されるので、「sample」をクリックします。
次にアプリ「sample」の詳細画面が表示されます。
環境変数やトリガー設定の確認をするため、タブの「設定」をクリックします。
次に設定画面が表示され、上記で設定した環境変数やトリガーイベントが想定通り設定されていればOKです。あとはトリガーが起動するまで待って下さい。
本番環境でトリガー起動の確認
トリガーに設定した時間経過後、アプリ「sample」のメトリクス画面を確認し、下図のように想定通りトリガーが起動していればOKです。
そして、タブ「ログ」をクリックしてログ出力を確認します。
ログ出力を確認し、テストした時と同様に想定通りのログが出力されていればOKです。
トリガーを手動実行したい場合
また、トリガーを手動実行させたい場合は、アプリ詳細画面の右上にある「コードの編集」をクリックします。
これでコード編集画面が開き、右側にあるタブ「スケジュール」を選択後、「スケジューリングされたイベントをトリガーする」をクリックします。
これでトリガーを手動実行できます。
※トリガーを手動実行した場合、アプリ詳細画面にあるタブ「ログ」では出力されないようなので、その点はご注意下さい。
トリガーの削除
上記では日本時間の毎朝7時にトリガーを実行するように設定したので、そのままだと明日以降も起動してしまいます。
そんなトリガー設定を消したい場合は、アプリの設定画面を開き、対象のトリガーのゴミ箱アイコンをクリックします。
トリガー削除のポップアップが表示されるので、「削除」をクリックします。
トリガーイベントの設定が消えればOKです。
招待されたアカウントの方でアプリをデプロイする方法について
Cloudflareを実務で使う場合は、自分の個人アカウントではなく、招待された方のアカウントでデプロイ作業等が必要になると思います。
その場合、Cloudflareにログイン後のURLか、「Workers & Pages」の概要ページなどに表示されているアカウントIDを使います。
アカウントIDを確認後、それを「wrangler.toml」に設定すれば、対象のアカウントに対してデプロイ等が可能です。
・・
# デプロイ先のアカウントIDを設定
account_id = "XXXXXXXXXXX"
・・
最後に
今回はCloudflare Workersの使い方について解説しました。
Cloudflare Workersならクレカ不要で簡単に登録して無料プランを利用することができ、処理の定期実行も簡単に行うことが可能です。
イベント駆動型の処理を作って定期実行させたい方がいたら、ぜひ参考にしてみて下さい。
各種SNSなど、チャンネル登録やフォローをしていただけると励みになるので、よければぜひお願いします!
Tomoyuki
最新記事 by Tomoyuki (全て見る)
- 【スト6】モダンキャミィの初心者向けコンボまとめ【STREET FIGHTER 6(ストリートファイター6)】 - 2024年11月10日
- モンハンワイルズでおすすめのオプション設定まとめ【Monster Hunter Wilds】 - 2024年11月4日
- モンハンワイルズでおすすめのグラフィック設定まとめ【Monster Hunter Wilds】 - 2024年11月2日
コメントを残す