始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Set up Firestore
/ 20
Develop an event-driven function for new Firestore documents
/ 20
Develop an event-driven function for Firestore to update a document
/ 30
Use Secrets with Cloud Run functions
/ 30
Cloud Run functions は、Google Cloud データベース(Firestore、Cloud Spanner、Cloud SQL、Cloud Bigtable)や、Google Cloud のインメモリ データストア キャッシュ サービスである Memorystore と統合することで、アプリケーションやサービスを拡張できます。
このラボでは、Google Cloud のサーバーレス NoSQL ドキュメント データベースである Firestore と統合する Cloud Run functions の関数を作成します。Cloud Run functions フレームワークと、Node.js 用の Firestore クライアント ライブラリを使用して関数を作成し、データベースでイベントが発生したときに関数を実行するトリガーを設定します。
Firestore 関数のライフサイクルは通常、次のステップで構成されます。
このラボでは、次の作業を行います。
この Google Skills ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを実施できます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力例:
出力:
出力例:
このタスクでは、環境変数を設定し、このラボの実行に必要となる関連サービス API を有効にします。
Cloud Run functions の関数を作成する前に、いくつかの環境変数を設定します。
ラボの認証情報を使用して Google Cloud コンソールにログインし、Cloud Shell ターミナル ウィンドウを開きます。
Cloud Shell で次のコマンドを実行して、プロジェクト ID とリージョンの環境変数を設定します。
プロジェクト番号の環境変数を設定します。
Cloud Run functions のデフォルト リージョンを設定します。
このラボで必要となるサービス API を有効にするには、次のコマンドを実行します。
このラボのタスクを実行するには、Firestore データベースを設定する必要があります。Firestore では、ドキュメントとコレクションの形式でデータが保存されます。Cloud Run functions の関数を Firestore とともに使用するには、関数をデプロイする前に Firestore を設定する必要があります。
Google Cloud コンソールで、上部のナビゲーションにある検索バーをクリックし、「Firestore」と入力します。検索結果から [Firestore] を選択します。
[Firestore データベースを作成] をクリックします。
[Standard Edition] を選択します。
[構成オプション] で [ネイティブ モードの Firestore] を選択します。
[セキュリティ ルール] では [開く] を選択します。
[ロケーション タイプ] で [リージョン] をクリックし、リストから「
その他の設定はデフォルトのままにして、[データベースを作成] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Firestore データベースを作成したら、関数コードを開発できます。このタスクでは、データベースに新しいドキュメントが作成されたときに実行する関数のソースコードを記述します。この関数は、関数呼び出しで受け取ったデータに関する情報をログに記録するものです。
Firestore の関数は、cloudevents データ構造を使用して呼び出されます。このデータ構造は、protobuf.js NPM モジュールでプロトコル バッファを使用してデコードできます。詳しくは、ラボの最後に記載されているリンクをご覧ください。
必要な .proto ファイルと依存関係ファイルを Cloud Storage からコピーして、アーカイブからコンテンツを抽出するには、次のコマンドを実行します。
firestore_functions ディレクトリに移動します。
firestore_functions ディレクトリには、空の node.js ファイルと package.json ファイルも含まれます。これらのファイルは次のサブタスクで更新します。
Cloud Shell ツールバーで [エディタを開く] をクリックします。
エディタで、firestore-functions/index.js ファイルに次のコードを追加します。
エディタで、firestore-functions/package.json ファイルに次のコードを追加します。
関数をデプロイする前に、Cloud Run functions のサービス エージェントに特定の権限を付与します。Cloud Shell で次のコマンドを実行します。
[ターミナルを開く] をクリックします。
Cloud Run functions サービス エージェントのサービス アカウントの環境変数を設定します。
Artifact Registry のアーティファクトを表示して取得するには、Cloud Run functions サービス アカウントに artifactregistry.reader ロールを付与します。
Cloud Functions API を無効にします。
Cloud Functions API を再度有効にします。
数秒待ってから、Cloud Run functions サービス アカウントに artifactregistry.reader ロールを付与するコマンドを再実行します。
関数をデプロイするには、Cloud Shell で次のコマンドを実行します。
コマンドが正常に実行されると、関数エンドポイントの URL が生成されます。コマンド出力例の一部を以下に示します。
Cloud コンソールで Firestore Studio に移動します。
新しいドキュメント コレクションを作成するには、[コレクションを開始] をクリックします。
[コレクション ID] に「customers」と入力します。
このコレクションのドキュメントに ID を生成するには、[ドキュメント ID] をクリックします。
このドキュメントに、次のフィールドと値を追加します。
| フィールド名 | フィールド タイプ | フィールド値 |
|---|---|---|
| firstname | string | Lucas |
[保存] をクリックします。
Cloud Run functions の関数が呼び出されたことを確認するには、ナビゲーション メニュー()で [Cloud Run] をクリックします。
関数名「newCustomer」をクリックします。
[ログ] をクリックします。
関数コードから生成されたログエントリが存在し、作成したデータベース ドキュメントのデータが表示されることを確認します。
最新のログエントリを表示するには、必要に応じて [更新] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、Firestore データベースでドキュメントが更新されたときにトリガーされる関数を開発します。この関数は、新しいフィールドをドキュメントに追加するものです。フィールドの値は、他のドキュメントのフィールドの値から取得します。
エディタで、firestore-functions/index.js ファイルに次のコードを追加します。
このアプローチでは、すべての関数が同じ依存関係を共有しますが、一部の関数は依存関係を必要としない場合もあります。
特定の関数に必要な依存関係の数を最小限に抑え、必要なメモリ量を減らすには、各関数のソースコードを専用の最上位ディレクトリに、専用のプロジェクト構成ファイルとともに保持することをおすすめします。
新しい関数をデプロイするには、Cloud Shell で次のコマンドを実行します。
コマンド出力で、関数がデプロイされ、状態が Active であることを確認します。
Cloud コンソールの Firestore Studio で、customers コレクション内の既存ドキュメントのうち、firstname フィールドの値が Lucas であるものを選択します。
このドキュメントで [フィールドを追加] をクリックします。
次のフィールドと値を追加します。
| フィールド名 | フィールド タイプ | フィールド値 |
|---|---|---|
| lastname | string | Sherman |
[保存] をクリックします。
数秒待ってから、ドキュメントに新しいフィールド fullname が追加されたことを確認します。
これは、ドキュメントが更新されたときに関数 updateCustomer が呼び出されたことを示しています。
Cloud Run functions の関数が呼び出されたことを確認するには、ナビゲーション メニュー()で [Cloud Run] をクリックします。
関数名「updateCustomer」をクリックします。
[ログ] をクリックします。
関数コードから生成されたログエントリが存在し、fullname フィールドがドキュメントに追加されたことを示していることを確認します。
最新のログエントリを表示するには、必要に応じて [更新] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Secret Manager は、API キー、パスワード、証明書、認証情報、その他の機密情報などのデータを安全に保存する Google Cloud サービスです。これらのシークレットは、Cloud Run functions の関数やその他のサービスからアクセスして、関数のロジックやサービスの実装に使用できます。
このタスクでは、Secret Manager で認証情報をシークレットとして作成して保存します。そして関数を開発し、関数のロジックでキーにアクセスします。
シークレットを作成して使用するには、Cloud Shell で次のコマンドを実行して、Secret Manager API を有効にします。
Secret Manager で、名前が api-cred で値が secret_api_key のシークレットを作成して保存します。
シークレットにアクセスするには、関数のランタイム サービス アカウントにシークレットへのアクセス権を付与する必要があります。
デフォルトでは、Cloud Run functions は Compute Engine のデフォルト サービス アカウントを関数のランタイム サービス アカウントとして使用します。
Secret Manager で認証するには、Compute Engine のデフォルト サービス アカウントに Secret Manager Secret Accessor ロールを付与します。
このサブタスクでは、前に開発した newCustomer 関数を変更して、シークレットにアクセスできるようにします。
エディタで、index.js ファイルの newCustomer 関数に次のコードを追加します。コードは、関数本体の最後にある console.log ステートメントの後の関数の末尾に追加します。
Cloud Shell で、シークレットを使用する newCustomer 関数を再デプロイします。
シークレットをボリュームとして参照することで、ファイルがディスクから読み取られるたびに、関数が Secret Manager の最新のシークレット値にアクセスすることになります。
関数をデプロイしたら、関数がシークレットにアクセスできることを確認します。
describe コマンドの出力には、シークレットに関する情報が含まれます。コマンド出力の一部を次に示します。
関数をテストするには、前のタスクのテストと同じように、Cloud コンソールの Firestore Studio から新規顧客ドキュメントを追加します。
Cloud コンソールで関数のログを表示するには、ナビゲーション メニュー()で [Cloud Run] をクリックします。
関数名「newCustomer」をクリックします。
関数のログを表示するには、[ログ] をクリックします。
シークレット キーの値をログに記録するエントリが存在することを確認します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このラボでは、Firestore データベースを設定し、データベースに新しいドキュメントが作成されたときにトリガーされる Cloud Run functions のイベント ドリブン関数を開発しました。また、ドキュメントが更新されたときに、そのドキュメントに新しいフィールドを追加する関数も開発しました。 さらに、シークレットを作成して Cloud Run functions の関数からアクセスし、ログを使用してシークレットの値を確認しました。
Firestore 用の Cloud Run functions 関数やその他のトピックの詳細については、以下のドキュメントをご覧ください。
Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください