Google CloudのiPaaS「Application Integration」でファイル転送を自動化する
\スニダンを開発しているSODA inc.の Advent Calendar 2024 12日目の記事です!!!/
📣 みなさん! GCPはGCPではなくなり、Google Cloudとなりました(2022年6月)
いまだにGCPという表記を見かけるので気をつけましょう
お客様のエクスペリエンスをシンプルにし、プロダクト間の一貫性を保つために、Google Cloud Platform は Google Cloud という名称になりました。
引用元: Google Cloud の新しくなったホームページのご紹介
はじめに
株式会社SODA CPOのkjです (自己紹介は文末に)
みなさん自動化してますか?
GAS(Google App Script) やZapier など多くの自動化手法が増えているので、自動化が身近になっていることでしょう
ただ、それぞれのサービスにもできること・できないことがあり、特にファイル転送(FTP, SFTP)は自動化に困ることもあるのではないかと思います(工数の側面や無料ソフトのリスクなど)
株式会社SODAではデータをGoogle Bigqueryに入れており、そこからファイル転送のためのデータ出力が行われています
そんなファイル転送をGoogle Cloud上で完結させるためにApplication Integrationを利用して自動化していきます
Application Integrationとは
Application Integration は Google Cloud の Integration Platform as a Service(iPaaS)ソリューションです。多様な業務を支えるために必要な数多くのアプリケーション(Google Cloud サービスややサードパーティ製 SaaS)とデータを連携させ、管理する中核的なインテグレーション ツールを幅広く備えています。
引用元: Application Integration の概要 - Google Cloud
メリット
- ローコードで操作でき、GUI上でワークフローが作成可能なiPaaS
- Gemini Code Assistによるプロンプトからのワークフロー作成
- 便利なコネクタが90種類以上も用意されており、Googleのサービスだけではなく、多くのサービスとの連携が用意
デメリット
- ローコードなので、一定の開発知識は必要
- データ処理容量の上限があるため、GAS頼りになることもある
Application Integrationをセットアップする
サービスアカウントの作成
作成の詳細は省略しますが、多くのIAMロールを付与するため、不要な権限を持たせないためにもIntegrationごとにサービスアカウントを作成した方が良いと思っています
Application Integrationを初期設定をする
Application Integrationのコンソール にアクセスし、Get Startedしていきます
Application Integration を設定する - Google Cloud をみながら設定を進めていきます
プロジェクトを作成し、ワークフローを定義する
Application Integrationのコンソール から CREATE INTEGRATION
とします
実際に作ってみる (BigQuery to FTP)
今回はBigQueryで取得したデータをFTPで実際にファイル転送するワークフローを作成します
本来であれば、結果をGCSなどに保存しておいた方がいいですが、今回は簡潔に説明するために省きます
また、BigQueryで取得するデータ量が多い場合はIntegration上では処理できないため、GASを使ってAPIで呼ぶ設計を検討する必要があります
要件定義する
今回の要件は以下のように定義します
- 1時間おきに実行する
-
data
テーブルからid
,description
,created_at
を取得する - FTPで
item.csv
というファイル名でCSVファイルを転送する
ワークフローを作成する
GUI上でワークフローを作成します
ワークフローにはTriggerとTaskのノードを作成することができます
- Trigger
- 何を用いてワークフローを発火するか定義します
- 今回は時間ごとに発火したいため
Schedule
を利用します- APIやPub/Sub、他にもあらゆるサービスをTriggerに設定することができます
- Task
- 実際に行うタスクを定義します
- 今回はBigQueryとFTP、DataMapperを利用します
要件定義通りにワークフローを作成します
必要なConnectorの設定をする
ここでIntegration Connectorsの登場です
作成したワークフローのConnectorの詳細設定をします
まずはBigQuery Connectorをクリックし、左のパネルより CONFIGURE CONNECTIOR
をクリックします
Regionを選択肢、接続を作成します(この接続が先述のIntegration Connectors上での設定になります)
必要な情報を入力し、進めてください
Connectorを作成したら残りは以下を設定します
- Type
- 操作
- Set entities/actions
- ExecuteCustomQuery
作成が完了するとLocal Variables(ローカル変数)にconnectorOutputPayload
が追加されます
- ExecuteCustomQuery
FTP Connectorについても同様に設定します
接続先のPasswordは Secret Manager
を利用して管理します
Connector作成後の設定は以下です
- Type
- 操作
- Set entities/actions
- Upload
作成が完了するとLocal Variables(ローカル変数)にconnectorInputPayload
とconnectorOutputPayload
が追加されます
- Upload
BigQueryのクエリをセットする
次にBigQueryでファイル転送をしたいデータを取得します
ワークフロー作成画面に戻ります
BigQueryのConnectorをクリックし、サイドパネルからTask Inputのトグルを開くとScript Editorが開けるボタン EDIT CUSTOM SCRIPT
が表示されます
ここにクエリを入力し、保存します
Data Mappingの設定をする
先述の通り、Data Mappingでは文字列やConnectorのOutputを変数に入れることができます
BiqQueryで取得したデータをFTP Connectorが扱えるようにDataを変換します
実際にやることは以下です
- ConnectorからOutputされたデータ(JSON配列)をStringに変換する
- 変換したデータをFTPで転送するContentsに入れる
- FTPで転送するファイル名を入れる
実際にやってみましょう
まずはData Mappingをクリックし、サイドパネルから OPEN DATA MAPPING EDITOR
をクリックします
このような画面が表示されます
右のパネルには変数が表示されています
この変数を用いて実際のマッピング作業を行なっていきます
まずは ConnectorからOutputされたデータ(JSON配列)をStringに変換する
をします
ConnectorからOutputされたデータ
をInputにドラッグ&ドロップすることができます
+ボタンがあるので、クリックし、 TO_STRING()
を選択します
次に FTP ConnectorのInput
に先ほどのデータを入れます
InputはObjectになっており、こちらに入力パラメータの詳細が記載されています
connectorInputPayloadのContent
に転送するデータ内容を入れる必要があるため、ドラッグ&ドロップします
最後に転送するファイル名を指定します
Inputは Variable or Value
をクリックし、 Value
からファイル名の文字列を入力します
Outputは connectorInputPayloadのRemoteFile
となります
これでBigQueryを実行した結果をFTPでファイル転送するためのワークフローができました
Schedule Triggerの設定をする
定期的に実行するための設定をします(今回は1時間おき)
Triggerをクリックして、パネルを開きます
左のパネルの Schedule
から設定ができます
BASICは以下の設定ができます
- Run at a specific time
- 特定の時間に実行する
- Repeat by the hour
- 時間ごとに実行する
- 今回はこちらを使用します
- Rebeat by the minute
- 分ごとに実行する
AdvanceではCronの設定ができますが、今回は省略します
- 分ごとに実行する
以下のように設定します
テストをする
実際に動かしてみます
Schedule Triggerは時間を待たなければいけないため、Private Triggerを置きます
Private Triggerであれば、任意のタイミングで発火できるため、即時のテストに便利です
上部パネルの TEST > Private Trigger
をクリックすると、 テスト統合
のパネルが表示されます
TEST INTEGRATION
をクリックすると実行されます
成功したら以下のような表示がされます
実際に転送先のファイルを確認してみてください
デプロイをする
実際にデプロイします
上部パネルのPublishをクリックします
Autogenerate integration description
と出てきますが、これは無視して NO JUST PUBLISH
で進めましょう
YESにするとGeminiが自動で説明文を書いてくれるようなので、使ってみたい方はぜひ使用してみてください
少し待つと以下のような画面になり、デプロイが完了します
これでファイル転送の自動化の完了です
最後に
今回はGoogle Cloud上で完結させるためにApplication Integrationを利用して自動化していきました
初めて利用した際は結構つまづいたので時間がかかってしまいましたが、慣れてくると色々なことができて楽しいです
どんどん手作業を自動化し、より本質的なことに力を注いでいきましょう!Let's 自動化Life
自己紹介と宣伝
2024/12に執行役員CPO(Chief Product Officer)として入社したkjです
バックグラウンドとしては、Product Manager, toC Product, Blockchain, Engineer(BE, FE, iOS等々)です!
スニーカーダンクをより大きくしていくための戦略づくりと組織づくり、そして実行をしていっています
趣味は🎣、🍶です
株式会社SODAでは一緒に働く仲間を募集しています!
サービスも組織も共に大きく成長させていくフェーズとなっています
より多くのお客さまを支えるプロダクトを共に作っていきましょう
採用ページ
株式会社SODAの開発組織がお届けするZenn Publicationです。 是非Entrance Bookもご覧ください! → recruit.soda-inc.jp/engineer
Discussion