【ITニュース解説】Part-47: Trigger a Cloud Function based on the Cloud Storage Events in GCP
2025年09月13日に「Dev.to」が公開したITニュース「Part-47: Trigger a Cloud Function based on the Cloud Storage Events in GCP」について初心者にもわかりやすく解説しています。
ITニュース概要
Google Cloud Storageへのファイル作成や更新をきっかけに、Cloud Functionsのプログラムを自動実行する方法を解説する。これにより、データ処理やログ記録などの自動化が容易になる。記事では、ストレージバケットとトリガー付き関数の作成手順、そしてファイルアップロードによる動作確認を通じ、イベント発生時にファイル情報が自動で記録される様子を示す。
ITニュース解説
システムエンジニアを目指す初心者が知っておくべき、クラウド技術における自動化の基本について解説する。この記事は、Google Cloud Platform(GCP)というクラウドサービスを使って、ファイルが保存されたり更新されたりするのをきっかけに、特定のプログラムを自動で動かす方法を紹介している。これは、ファイルがアップロードされたら自動で画像を処理したり、データが追加されたらログを記録したりと、様々な作業を自動化する上で非常に強力な仕組みだ。
まず、GCPにおける主要なサービスを二つ理解する必要がある。一つは「Cloud Storage」だ。これはインターネット上にファイルを保存するためのサービスで、写真や動画、ドキュメントなど、あらゆる種類のデータを安全に保管できる。DropboxやGoogle Driveの企業版のようなものだと考えると良い。もう一つは「Cloud Functions」だ。これは、特定のイベントが発生したときにだけ、短いプログラムコードを自動で実行してくれるサービスだ。サーバーを常に動かしておく必要がなく、プログラムが実行された分だけ料金が発生するため、非常に効率的だ。
今回解説する内容は、このCloud StorageとCloud Functionsを連携させることにある。具体的には、Cloud Storageにファイルが新しくアップロードされたり、既存のファイルが更新されたりする「イベント」をきっかけに、Cloud Functionsが自動的にプログラムを実行するように設定する。この「きっかけ」のことを「トリガー」と呼ぶ。
それでは、具体的な設定手順を見ていこう。
最初のステップは、ファイルを保存するための場所である「Cloud Storageバケット」を作成することだ。GCPの管理画面からCloud Storageのセクションへ移動し、「バケットを作成」という操作を行う。バケットの名前は世界中で一つしかないユニークなものにする必要があり、ここでは「mycfdemobucket1021」という名前を使っている。その他の設定は特に変更せず、デフォルトのままでバケットを作成する。これは、プログラムが扱うファイルをどこに置くかを決める、非常に基本的な作業だ。
次に、このバケットにファイルがアップロードされたときに動く「Cloud Function」を作成する。GCPの管理画面でCloud Functionsのセクションへ移動し、新しい関数を作成する。
いくつかの設定項目があるため、一つずつ見ていこう。 関数名には「cf-demo3-events-storage」と入力する。これは作成するCloud Functionを識別するための名前だ。 リージョンは「us-central1」と設定する。これは、Cloud Functionがどこで動作するかを指定する場所、つまりデータセンターの地理的な位置だ。自分の住む場所に最も近い場所や、利用者が多い場所を選ぶことが多いが、今回は米国の中央にあるデータセンターを指定している。 最も重要な設定は「トリガー」だ。ここで「Cloud Storage」を選択し、さらに「イベントタイプ」として「google.cloud.storage.object.v1.finalized」を選ぶ。これは、「Cloud Storage上のオブジェクト(ファイル)が最終的に完成した、つまり新しくアップロードされたり、更新が完了したりしたときにトリガーを発動する」という意味だ。ファイルが一時的にアップロードされている途中ではなく、完全に保存が完了した瞬間にプログラムを動かす、という指示になる。そして、どのバケットを監視するかを「mycfdemobucket1021」と指定する。これにより、この特定のバケット内でファイルが作成または更新された場合にのみ、Cloud Functionが起動するようになる。
これらの設定を終えたら、実際に実行されるプログラムコードを設定する。ここでは「Node.js 22」というプログラミング言語の環境を選択する。記事では自動生成されたコードをそのまま使用しているが、そのコードの内容を見てみよう。
コードは以下のようになっている。
1const functions = require('@google-cloud/functions-framework'); 2 3functions.cloudEvent('helloGCS', cloudEvent => { 4 console.log(`Event ID: ${cloudEvent.id}`); 5 console.log(`Event Type: ${cloudEvent.type}`); 6 7 const file = cloudEvent.data; 8 console.log(`Bucket: ${file.bucket}`); 9 console.log(`File: ${file.name}`); 10 console.log(`Metageneration: ${file.metageneration}`); 11 console.log(`Created: ${file.timeCreated}`); 12 console.log(`Updated: ${file.updated}`); 13});
このコードは、「functions.cloudEvent」という部分で、Cloud Storageからのイベントを受け取ったときに実行される部分を定義している。イベントがトリガーされると、「cloudEvent」という変数に、そのイベントに関する詳細な情報が格納される。 コードの中で「console.log」と書かれている行が複数あるが、これはプログラムが実行された際に、指定された情報を「ログ」として出力するための指示だ。ログは、プログラムが正しく動いているか、どのようなデータを受け取ったかなどを確認するために非常に重要になる。 具体的には、イベントのIDや種類、そして「file」という変数に格納された、実際にアップロードされたファイルの情報(どのバケットに保存されたか、ファイルの名前、作成日時、更新日時など)を一つずつログに出力している。このコード自体は何も特別な処理をするわけではなく、単にイベントの詳細を記録するだけのシンプルなものだ。しかし、ここに画像のリサイズ処理や、データベースへのデータ書き込み処理などを追加すれば、様々な自動化が可能になる。
コードの設定が終わったら、「保存してデプロイ」を実行する。これにより、作成したCloud FunctionがGCPの環境に配置され、いつでも実行できる状態になる。デプロイには数分かかる場合がある。
Cloud Functionがデプロイされたら、実際に動作しているかを確認する。GCPのCloud Functionsの管理画面で作成した関数を選択し、「ログ」のセクションを開く。この時点ではまだ何もログが表示されないはずだ。
次に、実際にCloud Storageバケットにファイルをアップロードしてみよう。GCPのCloud Storageの管理画面に戻り、「mycfdemobucket1021」というバケットの中に、「myfile1.txt」という新しいファイルをアップロードする。
ファイルをアップロードした直後、再びCloud Functionのログのセクションを確認すると、新しいログが表示されているはずだ。そこには、先ほどのNode.jsのコードで指定した通り、イベントのIDや種類、そしてアップロードされたファイル(myfile1.txt)のバケット名、ファイル名、作成日時、更新日時といった詳細情報が記録されているだろう。これは、Cloud Storageへのファイルアップロードというイベントが正しくCloud Functionをトリガーし、設定したプログラムが自動的に実行されたことを意味する。
このように、GCPのCloud FunctionsとCloud Storageを連携させることで、ファイルの変更を検知して自動で処理を実行する強力なシステムを構築できる。システムエンジニアにとって、このようなイベント駆動型のアーキテクチャは、効率的でスケーラブルなシステムを設計する上で非常に重要な概念となる。サーバーの管理なしにプログラムを動かせる「サーバーレス」という考え方も、このCloud Functionsのようなサービスで実現されている。この基本的な仕組みを理解することは、今後のクラウド開発を進める上で大きな一歩となるだろう。