このチュートリアルでは、関数のソースコードの zip ファイルを Cloud Storage バケットにアップロードし、Terraform を使用してリソースをプロビジョニングして、Pub/Sub 関数をデプロイする方法について説明します。Terraform は、宣言型の構成ファイルを使用して Google Cloud リソースをプロビジョニングできるオープンソース ツールです。
このチュートリアルでは例として Node.js 関数を使用していますが、Python、Go、Java の関数にも対応しています。使用しているランタイムがどれであっても、手順は同じです。Cloud Functions v2 API で Terraform を使用する方法については、Hashicorp のリファレンス ページをご覧ください。
環境設定
このチュートリアルでは、Cloud Shell でコマンドを実行します。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。Cloud Shell の初期化には数分かかることがあります。
アプリケーションの準備
Cloud Shell で次の操作を行います。
Cloud Shell インスタンスにサンプルアプリ リポジトリのクローンを作成します。
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
Cloud Run functions のサンプルコードが含まれているディレクトリに移動します。
cd terraform-docs-samples/functions/pubsub
このチュートリアルで使用する Node.js サンプルは、基本的な「Hello World」Pub/Sub 関数です。
main.tf
ファイルは次のようになっています。
Terraform を初期化する
main.tf
ファイルを含む terraform-docs-samples/functions/pubsub
ディレクトリで、次のコマンドを実行して必要なプラグインを追加し、.terraform
ディレクトリをビルドします。
terraform init
Terraform 構成を検証する
Terraform 構成をプレビューします。このステップは省略可能ですが、main.tf
の構文が正しいかどうかを確認できます。このコマンドにより、作成されるリソースのプレビューが表示されます。
terraform plan
Terraform 構成を適用する
構成を適用して関数をデプロイします。プロンプトが表示されたら、「yes
」と入力します。
terraform apply
関数のトリガー
Pub/Sub 関数をテストするには:
トピックにメッセージをパブリッシュします(この例のトピック名は
functions2-topic
です)。gcloud pubsub topics publish TOPIC_NAME --message="Friend"
関数のログで結果を確認します。ここで、
FUNCTION_NAME
は関数の名前です(この例の関数名はfunction
です)。gcloud functions logs read FUNCTION_NAME
ログの出力に、新しい「Friend」メッセージが含まれているはずです。
クリーンアップ
チュートリアルの完了後は、それ以上の費用が発生しないように、作成したものをすべて削除できます。
Terraform では、terraform destroy
コマンドを実行して、構成ファイルで定義されているすべてのリソースを削除できます。
terraform destroy
Terraform でリソースを削除できるようにするには、「yes
」と入力します。