Ruby で HTTP Cloud Functions の関数を作成してデプロイする
このガイドでは、Ruby ランタイムを使用して Cloud Functions の関数を記述するプロセスを説明します。Cloud Functions には次の 2 つのタイプがあります。
- HTTP 関数。標準的な HTTP リクエストから呼び出します。
- イベント ドリブン関数。Cloud Pub/Sub トピック上のメッセージや Cloud Storage バケット内の変更など、Cloud インフラストラクチャのイベントによってトリガーされます。
詳細については、HTTP 関数の作成とイベント ドリブン関数の作成をご覧ください。
gcloud CLI を使用して Google Cloud プロジェクトを作成する
- 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 を有効にします。
- Google Cloud SDK をインストールして初期化します。
- 次のコマンドを使用して、
gcloud
コンポーネントを更新してインストールします。gcloud components update
-
開発環境を準備します。
関数を作成する
関数コードで使用するため、ローカル システムにディレクトリを作成します。
Linux / Mac OS X
mkdir ~/helloworld cd ~/helloworld
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
helloworld
ディレクトリに、次の内容のapp.rb
ファイルを作成します。このサンプル関数は HTTP リクエストで指定された名前を使用します。名前が指定されていない場合は、「Hello World!」という挨拶を返します。
依存関係を指定する
Ruby での依存関係は bundler で管理され、Gemfile
というファイルに表現されます。
関数をデプロイすると、Cloud Functions は bundler
を使用して、Gemfile
と Gemfile.lock
で宣言された依存関係をダウンロードしてインストールします。
Gemfile
には、関数に必要なパッケージとオプションのバージョンの制約が列挙されます。Cloud Functions の関数では、これらのパッケージの 1 つは functions_framework
gem である必要があります。
この演習用に、関数コードを含む app.rb
ファイルと同じディレクトリに Gemfile
というファイルを作成し、そのファイルに次の内容を含めます。
source "https://rubygems.org"
gem "functions_framework", "~> 0.7"
functions_framework
gem とその他の依存関係は、次のコマンドを実行してインストールします。
bundle install
をご覧ください。関数をローカルでビルドしてテストする
関数をデプロイする前に、ローカルでビルドしてテストできます。
次のコマンドを実行します。このコマンドは、実行形式の
functions-framework-ruby
ファイルを使用して、hello_http
関数を実行するローカル ウェブサーバーを起動します。bundle exec functions-framework-ruby --target hello_http
ブラウザで
https://localhost:8080
にアクセスするか、別のウィンドウからcurl localhost:8080
を実行して、関数をテストします。詳細については、ローカル関数にリクエストを送信するをご覧ください。
関数をデプロイする
関数をデプロイするには、helloworld
ディレクトリで次のコマンドを実行します。
gcloud functions deploy ruby-http-function \
--gen2 \
--runtime=ruby32 \
--region=REGION \
--entry-point hello_http \
--source=. \
--trigger-http \
--allow-unauthenticated
REGION は、関数をデプロイする Google Cloud リージョンの名前(例: us-west1
)に置き換えます。
オプションの --allow-unauthenticated
フラグを使用すると、認証なしで関数にアクセスできます。
デプロイした関数をテストする
関数がデプロイされたら、
gcloud functions deploy
コマンドの出力のuri
プロパティをメモするか、次のコマンドを使用して取得します。gcloud functions describe ruby-http-function \ --region REGION
REGION は、関数をデプロイした Google Cloud リージョンの名前(例:
us-west1
)に置き換えます。ブラウザで、この URL にアクセスします。この関数は、「Hello World!」メッセージを返します。
関数のログを表示する
コマンドライン ツールでログを表示する
関数のログは、Cloud Logging UI または Google Cloud CLI を使用して確認できます。
gcloud CLI を使用して関数のログを表示するには、logs read
コマンドを使用します。
gcloud functions logs read \
--gen2 \
--limit=10 \
--region REGION \
ruby-http-function
REGION は、関数をデプロイした Google Cloud リージョンの名前(例: us-west1
)に置き換えます。
出力は次のようになります。
LEVEL: I
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.477
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello__http-1" on port 8080.
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.451
LOG: I, [2023-06-01T00:09:41.451784 #1] INFO -- : FunctionsFramework: Serving function "hello_http" on port 8080...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.364
LOG: I, [2023-06-01T00:09:41.363923 #1] INFO -- : FunctionsFramework: Starting server...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.363
LOG: I, [2023-06-01T00:09:41.363855 #1] INFO -- : FunctionsFramework: Looking for function name "hello_http"...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.354
LOG: I, [2023-06-01T00:09:41.354150 #1] INFO -- : FunctionsFramework: Loading functions from "./app.rb"...
ロギング ダッシュボードでログを表示する
ロギング ダッシュボードで関数のログを表示するには、Cloud Functions の概要ページを開き、リストから関数の名前をクリックして、ログタブをクリックします。