Node.js で HTTP Cloud Functions を作成してデプロイする
このドキュメントでは、シンプルな Cloud Functions HTTP 関数を作成するプロセスについて説明します。これは次の 2 種類の Cloud Functions の 1 つになります。
- HTTP 関数。標準的な HTTP リクエストから呼び出します。
- イベント ドリブン関数。Pub/Sub トピック上のメッセージや Cloud Storage バケット内の変更など、Cloud インフラストラクチャのイベントによってトリガーされます。
詳細については、HTTP 関数の作成とイベント ドリブン関数の作成をご覧ください。
準備
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud Functions、Cloud Build、Artifact Registry、Cloud Run、and Cloud Logging API を有効にします。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud Functions、Cloud Build、Artifact Registry、Cloud Run、and Cloud Logging API を有効にします。
- gcloud CLI をインストールして初期化します。
gcloud
コンポーネントを更新してインストールします。gcloud components update
-
開発環境を準備します。
関数を作成する
関数コードで使用するため、ローカル システムにディレクトリを作成します。
Linux / Mac OS X
mkdir ~/helloworld cd ~/helloworld
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
helloworld
ディレクトリに、次の内容のindex.js
ファイルを作成します。このサンプル関数は、すべてのリクエストに「Hello World!」という挨拶を返します。
依存関係を指定する
Node.js における依存関係は、npm で管理され、package.json
というメタデータ ファイルで表現されます。 このファイルは、手動または npm
コマンドを使用して作成できます。
npm
コマンドを使用してpackage.json
ファイルを作成するには:helloworld ディレクトリから
npm init
コマンドを実行します。Enter
を押して質問の回答のデフォルトを受け入れます。npm init
package.json
ファイルを編集して、functions-framework 依存関係を追加します。"dependencies": { "@google-cloud/functions-framework": "^3.1.0" }
package.json
ファイルを手動で作成する場合は、次の内容をコピーします。
多くの Node.js クライアント ライブラリは、Google Cloud プロダクトで使用でき、依存関係としてインストールできます。
をご覧ください。関数をローカルでビルドしてテストする
関数をデプロイする前にローカルでテストするには、Functions Framework をローカルにインストールしてから、関数を実行する必要があります。
helloworld
ディレクトリから次のコマンドを実行して、ローカルマシンに Functions Framework をインストールします。npm install @google-cloud/functions-framework
関数をローカルで実行するには、
helloworld
ディレクトリから次のコマンドを実行します。npx @google-cloud/functions-framework --target=helloGET
ブラウザで
http://localhost:8080
にアクセスするか、別のウィンドウからcurl localhost:8080
を実行して、関数をテストします。詳細については、ローカル関数にリクエストを送信するをご覧ください。
関数から「Hello World!」というメッセージが返されます。
関数をデプロイする
関数をデプロイするには、helloworld
ディレクトリにある gcloud functions deploy
コマンドを実行します。
gcloud functions deploy hello-node-function \
--gen2 \
--runtime=nodejs20 \
--region=REGION \
--source=. \
--entry-point=helloGET \
--trigger-http \
--allow-unauthenticated
REGION は、関数をデプロイする Google Cloud リージョンの名前(例: us-west1
)に置き換えます。
これにより、選択したリージョンの nodejs20 ランタイムでサンプル関数がデプロイされます。
オプションの --allow-unauthenticated
フラグを使用すると、認証なしで関数にアクセスできます。
デプロイした関数をテストする
関数がデプロイされたら、
gcloud functions deploy
コマンドの出力のuri
プロパティをメモするか、次のコマンドを使用して取得します。gcloud functions describe hello-node-function \ --region=REGION
REGION は、関数をデプロイした Google Cloud リージョンの名前(例:
us-west1
)に置き換えます。ブラウザまたは次の
curl
コマンドを使用して、この URL にアクセスします。curl FUNCTION_URL
FUNCTION_URL は、先ほど取得した
uri
プロパティに置き換えます。この関数は、「Hello World!」メッセージを返します。
関数のログを表示する
コマンドライン ツールを使用してログを表示する
関数のログは、Cloud Logging UI または Google Cloud CLI で確認できます。
gcloud CLI を使用して関数のログを表示するには、gcloud functions logs read
コマンドを使用します。
gcloud functions logs read \
--gen2 \
--region=REGION \
--limit=10 \
hello-node-function
REGION は、関数をデプロイした Google Cloud リージョンの名前(例: us-west1
)に置き換えます。
出力は次のようになります。
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:24.956
LOG:
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:01.692
LOG:
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:47.711
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:46.542
LOG:
LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:27.390
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.
ロギング ダッシュボードを使用してログを表示する
ロギング ダッシュボードで関数のログを表示するには、Cloud Functions の概要ページを開き、リストから関数の名前をクリックして、ログタブをクリックします。