このチュートリアルでは、App Engine アプリケーション内で Cloud Tasks を使用して Cloud Run 関数をトリガーし、スケジュールされたメールを送信する方法について説明します。
目標
- 各コンポーネントのコードを理解する。
- SendGrid アカウントを作成する。
- ソースコードをダウンロードする。
- Cloud Tasks リクエストを受信し、SendGrid API を介してメールを送信する Cloud Run 関数をデプロイする。
- Cloud Tasks キューを作成する。
- Cloud Tasks リクエストを認証するためのサービスアカウントを作成する。
- ユーザーがメールを送信できるようにクライアントコードをデプロイする。
費用
Cloud Tasks、Cloud Run 関数、App Engine には無料枠があるため、無料枠でチュートリアルを実行する限り、追加の費用は発生しません。詳細については、料金をご覧ください。
始める前に
Google Cloud プロジェクトの選択または作成
プロジェクトで App Engine アプリケーションを初期化します。
[App Engine へようこそ] ページで [アプリケーションを作成] をクリックします。
アプリケーションのリージョンを選択します。このロケーションは、Cloud Tasks リクエストの
LOCATION_IDパラメータとして使用するため、メモしておいてください。App Engine コマンドで europe-west および us-central と呼ばれる 2 つのロケーションは、Cloud Tasks コマンドではそれぞれ europe-west1 および us-central1 と呼ばれます。言語として [Node.js] を選択し、環境として [Standard] を選択します。
[課金を有効にする] ポップアップが表示されたら、請求先アカウントを選択します。まだ請求先アカウントがない場合は、[請求先アカウントの作成] をクリックしてウィザードの手順を行います。
[開始] ページで [次へ] をクリックします。他のことは後で対応します。
Cloud Run functions と Cloud Tasks APIs を有効にします。
gcloud CLI をインストールして初期化する
コードについて
このセクションでは、アプリのコードとその動作を順を追って説明します。
タスクの作成
インデックス ページは、app.yaml のハンドラを使用して提供されます。タスクの作成に必要な変数が、環境変数として渡されます。
このコードにより、エンドポイント /send-email が作成されます。このエンドポイントは、インデックス ページからのフォーム送信を処理し、そのデータをタスク作成コードに渡します。
このコードでは実際にタスクが作成され、Cloud Tasks キューに送信されます。コードは、次の方法でタスクを構築します。
ターゲット タイプを
HTTP Requestに指定します。使用する
HTTP methodとターゲットのURLを指定します。ダウンストリーム アプリケーションが構造化ペイロードを解析できるように、
Content-Typeヘッダーをapplication/jsonに設定します。認証を要求しているリクエスト ターゲットに Cloud Tasks が認証情報を提供できるように、サービス アカウントのメールアドレスを追加します。サービス アカウントは個別に作成されます。
日付のユーザー入力が最大 30 日以内であることを確認し、フィールド
scheduleTimeとしてリクエストに追加します。