はじめに
GMOアドマーケティングの吉岡です。今回は BigQueryのみに存在するレポートテーブルのレコードをCloudSQLに同期する必要があったため、Google Cloud Workflowsというサービスを使って実装してみました。 バッチ実行が失敗した際に日付を指定して再実行できると便利なので、今回はこちらのやり方を紹介します。
Cloud Workflowsとは?
Cloud Workflowsとは、Google CloudとHTTPベースのAPIサービスをサーバーレスワークフローと統合するサービス。詳細はこちら→ Cloud Workflows公式ページ
つい先日、GoogleのProfessional Cloud Architect試験を受けたのですが、多くのサービスに関する問題が出題される中、Workflowsに関する問題は一切ありませんでした。
2021年1月に一般公開された新しいサービスのため、まだテストには出ないのかもしれません。
書き方
次のようなymlを書いて実行します。以下のコードは引数があればそちらを使い、なければ当日の日付を出力します。
steps内のassignに指定したキーと、callを指定した場合のresultがその後のステップで${}として呼び出せそうです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
main: params: [input] steps: - assignStep: assign: - now_date: ${time.format(sys.now(), "Asia/Tokyo")} - default_date: ${default(map.get(input, "date"), now_date)} - date_params: ${map.get(input, "date")} - substrCurrentDatetime: call: text.substring args: source: ${default_date} start: 0 end: 10 result: currentDate - logStep: call: sys.log args: text: ${currentDate} severity: DEBUG |
他にも配列をループしたり、HTTPメソッドを呼び出すことも可能です。
詳細は公式ドキュメントから
詳細は公式ドキュメントから
GCPのワークフローからワークフローの作成・編集を選択してコードを入力します。
コード入力後にデプロイボタンを押し、ワークフローを作成します。
実行
作成したワークフローが一覧に表示されているので、対象ワークフローを選択します。実行からjson形式での引数が指定できるので、コードに入力したdateキーに日付を指定して実行します。
指定した日付のデバッグログが出力されました。
まとめ
今回はGoogle Cloud Workflowsで、引数として日付を指定していればそちらを使い、指定がなければ当日の日付が出力されるサンプルを紹介しました。実際はこの日付を使い、BigQueryのテーブルから対象の日付レポートを取得し、加工してGCSにCSV形式で格納、CSVからCloudSQLにインポートという手順をCloud Workflowsで実行しています。
GCPを使っている方であればいろいろ連携できそうなので、ぜひ使ってみてください。
参考リンク
- ワークフロー | Google Cloud
https://cloud.google.com/workflows, (参照: 2022/11/30)
告知
明日は天河さんによるによる「テキストエリアを入力値によって動的に変化させる」です。引き続き、GMOアドマーケティング Advent Calendar 2022 をお楽しみください!
■学生インターン募集中!
https://note.gmo-ap.jp/n/nc42c8a60afaf
■エンジニア採用ページはこちら!
https://note.gmo-ap.jp/n/n02cbeb6edb0d
■GMOアドパートナーズ 公式noteはこちら!
https://note.gmo-ap.jp/