🎄

Application Integration でお世話になった人へクリスマスメッセージを贈ろう

2024/12/24に公開

はじめに

こんにちは。クラウドエースの間瀬です。
本記事は Jagu'e'r Advent Calendar 24 日目の記事になります。
今回は Google Cloud が提供する Application Integration という比較的新しいサービスが持つメール送信の機能を使ってみたいと思います。

Google Cloud でメールを扱う方法は限られている

Google Cloud には Amazon SES のようなメールを送受信するためのサービスがないため、メールの扱いに困ることがあると思います。現状、Google Cloud が提供する機能でメールを扱う方法は以下が挙げられます。

  • Application Integration のメール送信機能を利用する。※送信のみ
  • App Engine の Mail API が提供するメール送受信機能を利用する。
  • Cloud Monitoring のアラート通知チャンネルによってメールを送信する。※送信のみ。メールフォーマットはほぼ固定

これらは基本的には Google Cloud が管理する仕組みを利用することになり、送信元アドレスや IP アドレス等の制御ができないため、例えばコンシューマ向けのサービスでメールを送信するケースには不向きだと思われます。
このようなケースに対応するには、Google Cloud の Marketplace 等から利用することができる SendGrid などのサードパーティのメールサービスを利用する方が適切かと思います。

今回紹介する方法では主に社内や関係者に対してメールを送信するケースで活用できると思います。

Application Integration は様々なサービスを統合したワークフローを作成・提供するためのプラットフォーム

Google Cloud の中でも比較的新しいサービスで、エディタ上でコードレスにワークフローを作成することができることに加えて、Google Cloud 以外のサービスと連携する機能も備えているので幅広いユースケースに適用できます。

application-integration

Application Integration のメール送信機能

Application Integration では処理を「トリガー」や「タスク」という単位で定義します。この中の一つに「Send Email」というタスクがあるのでこれを使うことでメール送信ができます。
詳しくは後述します。

https://cloud.google.com/application-integration/docs/configure-send-email-task?hl=ja

やってみる

今回は特定の Pub/Sub トピックでメッセージを受信するか、API でリクエストを受信することをトリガーにメールを送信するようにしたいと思います。
実際に構築した際のエディタは以下の通りです。作成してから気づきましたが、変数をうまく設計すれば2つのトリガーに対して Send Mail は一つでも送信することは可能かと思います。

archi

Application Integration API の有効化

はじめて Application Integration を利用するプロジェクトの場合は以下のような初期セットアップ画面が表示されると思います。
画面に従って操作することでサービスを利用するための API が有効になります。

appi-api

Pub/Sub Trigger

本トリガーで Pub/Sub のトピックを指定することでメッセージがパブリッシュされることを契機にワークフローが実行されます。
あらかじめトピックを作成しておくことがあることにご注意ください。サブスクリプションは自動で作成されるようです。

pubsubtrigger

Data Mapping 1

本タスクでは、Pub/Sub で受信したメッセージをパースして Send Email タスクへ連携するための変数値を抽出しています。
少し見ずらいかもしれませんが、以下の図のように変数を定義して入出力値を指定しています。今回は Pub/Sub のメッセージの本文にあたる data の値を JSON にパースして別の変数に移しています。
また、メールの本文を HTML 形式で送信することから base64 でエンコードされた状態でメッセージを受信するようにしているので、変数を移す過程でデコードしています。

variable

Send Email

Data Mapping 1 にて編集した変数値を本タスクの入力値にそれぞれマッピングします。
タスクに入力すべき値はあらかじめ決まっており、送信先メールアドレス、タイトル、本文を指定することでメールが送信されます。

mailtask

API Trigger

本トリガーを使うことで API のエンドポイントが用意されます。リクエストとして必要なパラメータは変数として定義することで指定でき、今回は後続のメール送信に必要な送信先メールアドレス、タイトル、本文をリクエストとして受け取るようにしています。

api

Data Mapping 2 & Send Email

記載は割愛しますが上記で紹介している内容と同様に変数の受け渡しを行います。

動作確認

Application Integration では作成したワークフローをテストする機能が提供されています。※ PUBLISH することでデプロイされます。

test1

下記のようにトリガーに対してテストデータを渡すことでテストを実施していきます。
test2

メールの確認

実際に受信したメールの本文は以下の通りです。HTML は Gemini 2.0 に生成してもらいました。

mail

参考までにメール送信元情報は以下の通りです。「noreply-application-integration@google.com」というアドレスからメールを受信することになります。

mail2

さいごに

今回は Application Integration によるメール送信機能を紹介させていただきました。本記事の執筆を通じて、Application Integration は色んなユースケースに対応できそうだったので今後使いこなしていきたいと思います。
また、トピックがあれば記事を執筆したいと思います。閲覧いただきありがとうございました。良いクリスマスを!

Discussion