0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google CloudのIPaas Application Integrationを今更触った & サンプルがネット上に無かったので書く

Posted at

Application Integrationっていう、ETLとかに使えるらしいプロダクトが追加されたのは知っていたが、実際に触ったことは無かった。
Cloud Workflowsと組み合わせて、サーバーレスで色々できるらしい。
ということで今回は、「Google Cloud StorageにアップロードされたJSONファイルを取得し、そのプロパティを抽出して、後段の処理で使うための変数に割り当てる」処理のサンプルを残しておきます。

構築の流れ

  1. Google Cloudプロジェクトで、Application Integration APIを有効化する
  2. Integration(フローの管理単位)を新規作成する
  3. Integrationの中身(フロー)をGUIで作る
  4. フローの詳細パラメーターをJSONで与える
  5. テスト実行

この記事では「3」以降のみ説明します。

実際の手順

今回、値を読み出すファイル upload.txt の中身は、以下のようなJSONです。

{
  "key": "value",
  "today": "Friday"
}

このファイルがGCSバケットにアップロードされているので、それを読み出して、A.I.の変数に割り当てます。

B01.png

いきなり完成図ですが、向かって右側がフローを追加するフィールド。
向かって左側が、定義した変数が並ぶフィールドです。
フロー(四角いやつ)をクリックすると、右側に詳細設定パネルが出てきます。
フローは、必ずトリガーではじまり、外部から情報を取得するコネクターや、情報を変化させるタスクを経由して進んでいきます。
制御構造については今回は触れません。

B02.png

GCSバケット内のJSONファイルを取得したいので、Cloud Storageコネクターを追加します。
すると、左ペインにローカル変数「connectionInputPayload」が追加されます。
コネクター自体のプロパティにも、GCPプロジェクトやリージョンなどの設定値を与えますが、バケット名、バケット内のオブジェクト名といった具体的な指定は、この変数でおこないます。
パッと見ではわけが分かりませんが、中ほどにグレーアウトして表示されているのが「スキーマ」のJSONです。
ここに書かれているルールに従って、「Default Value」欄にJSONを書きます。
ここでは、バケット名、ファイル名だけを書いています。

B03.png

次に、「Data Mapping」です。
読んで字のごとく、データを変数に割り当てる処理です。
GCSコネクターのドキュメントを読むと書いてあるのですが、コネクターを実行すると、

  • Success
  • Content

の2つの値をJSONで返してきます。
今回の場合は、以下のような内容です。

[
  {
    "Success": "True",
    "Content": "{\n \"key\": \"value\",\n \"today\": \"Friday\"\n}\n\n"
  }
]

要素数が1個の配列の中に、キーが2つあるハッシュ(オブジェクト)が入っています。
ここで注意してほしいのは、Contentの値は文字列であってオブジェクトではない、ということです。
ここを変換するために、次段の処理が必要になります。

B04.png

Data Mapping Editorの画面です。
変数、Input、Outputという項目があります。
使うのはInput、Outputだけです。
画面に記述しているように、Inputでは変数を受け取って、その変数に対して何らかの処理をし、Outputの変数に代入します。
ここでは、GCSコネクターの出力からJSON文字列を切り出して、変数JSONContentに割り当てています。

B05.png

先述した通り、文字列でしかないJSONをオブジェクトとして認識させるため、 .TO_JSON() 関数を適用します。
JSONに変換したので、プロパティである .today にアクセスできます。

B06.png

テスト実行画面です。
GUIのツールバーから「TEST」を押すとこの画面になります。
何も変更せず TEST INTEGRATION しましょう。

B07.png

テスト実行結果の画面です。
変数 ChildJSONContent に、入れ子になっていたJSONの値(テキストファイルに書かれていたJSONの値)が取得できています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?