Google Cloud上で定期的にスクレイピングを実施、結果をGoogleDirveに保存する方法をお伝えする講座の2回目です。
前回のスクレイピング講座では、GoogleCloudへの登録とアカウントの2段階認証設定を行いました。
今回は、定期的にプログラムを実行するため、ジョブスケジューラーの設定とスケジューラーからプログラムを起動するために必要なメッセージングサービスの設定、そしてCloudFunctionの有効化を行います。
また最後に今後何度も利用することになるCloudShellという機能の起動方法も説明します。
メッセージングサービスPub/Subの設定
Pub/Subとは
Google が提供するメッセージングサービスです。PubはPublisher (メッセージを送る人)の略であり、Subは Subscriber (メッセージを受け取る人)の略です。
Pub/SubでやりとりするメッセージはTopicと呼ばれ、Topicはメッセージの種類ごとに定義します。
具体的にイメージするために例えばチャットアプリを想像してください。書き込むメッセージがTopicのことであり、Topicをアプリに届けるのがPub/Subの役目となります。
この講座では、スケジューラーからプログラムを起動する際のトリガーとしてPub/Subを利用します。
Pub/Subの設定
検索用のテキストエリアに「Pub/Sub」と入力して「検索」ボタンをクリックします。
「コンソールに移動」をクリックします。
Pub/Subのメイン画面では、「トピックを作成」をクリックします。
トピックの作成画面に遷移するので、「トピックID」に任意の値を入力して「トピックを作成」をクリックします。
トピックが作成されたことを確認できます。
ジョブ管理ツールCloud Schedulerの設定
Cloud Schedulerとは
GoogleCloud上で定期的にプログラムを実行するためのツールです。WindowsOSで言うタスクスケジューラーのようなものだと思ってください。
スケジューラーがない場合、手動でプログラムを実行する必要がありますが、スケジューラーを利用することで、好きな時間に自動でプログラムを実行することができます。
例えば1時間ごとにプログラムを実行したい場合、手動だと睡眠時間の問題で運用を続けることが難しいですが、スケジューラーでは可能となります。
Cloud Schedulerの設定
「CloudScheduler」で検索して、CloudSchedulerのメイン画面に遷移します。※ 検索方法はこれまでと同じなので割愛します。
メイン画面が表示されたら「ジョブを作成」をクリックします。
ジョブの作成画面ではスケジュールと実行内容の詳細を指定します。スケジュールは以下のように設定します。
名前 | 任意の文字列を設定 |
リージョン | 変更しなくても大丈夫です。 |
説明 | 任意の文字列を設定 |
頻度 | CRON形式という記載方法でスケジューラーが動作するタイミングを指定します。 9時と18時に動作させる場合「0 9-18/9 * * *」と設定 |
タイムゾーン | 「日本標準時(JST)」を選択 |
実行内容には以下を設定します。
ターゲットタイプ | pub/sub を指定 |
Cloud Pub/Sub | トピックを設定 |
メッセージ本文 | 任意 |
これでスケジューラーの設定は完了です。
指定した時間にトピックが送られる仕組みが構築されました。
CloudFunctionの有効化
CloudFunctionとは
CloudFunctionは、様々なイベント(HTTPアクセス、メッセンジャーサービスによるTopic受信、特定のファイル更新等々)をトリガーに、自分で作成したプログラムを実行できる仕組みを提供してくれます。
プログラム言語は複数対応しており、Python、Java、Node.js等々メジャーな言語であれば利用可能です。
とても便利な仕組みなのですが、例えばPythonでは、ライブラリ管理で利用するpipコマンドなどが使えず、開発環境や実行環境を整えるが少し大変です。(そのためにこのWEBページがあるのですが)
CloudFunctionの有効化の手順
今回の講座ではCloudFunctionの有効化のみ行います。
CloudFunctionのページから「関数を作成」をクリックします。
「必要なAPIの有効化」が表示されるので、「有効にする」をクリックします。
その後、関数の作成画面に遷移しますが、有効化が目的のため、これ以降の設定は必要ありません。
CloudShellの起動方法
CloudShellとは
これまでの設定手順では、WEB画面への入力やボタンのクリックで操作を行ってきました(GUIベースの操作)。CloudShellはそれらの作業を専用の画面(コンソール)からコマンドを入力して行うためのインターフェースです(CLIベースの操作)。
スクレイピングでは、「Selenium」というライブラリや、ブラウザとしては「ヘッドレスChrome」を使うのですが、これらを使ったプログラムをCloudFunctionに登録するには、GUIベースの操作ではできないのです。そこでCloudFunctionに登録するために、CloudShellを使います。
またGUIベースでは複数の操作手順が必要な作業が、CloudShellでは1行のコマンドで実行可能になる場合もあり、慣れるとCLIベースの操作のほうが作業が楽になるというメリットもあります。
CloudShellはこれから何度も使いますので、起動の仕方は覚えてください。
CloudShellの起動手順1
検索用のテキストボックスに「Cloud Shell」と入力すると、リストが表示されます。
そのリストから「Cloud Shell Google Cloud」をクリックします。
コンソールへ移動をクリックします。
画面下部に背景が黒いエリアが出現します。このエリアがCloudShellです。
CloudShellの起動手順2
画面右上メニューの赤い枠で囲まれたアイコンをクリックするとGloudShellが起動します。
画面下部の黒い部分がCloudShellになります。
コメント