このガイドは、JavaScript を使用した動的ウェブ アプリケーションのジャンプ スタート ソリューションの理解、デプロイ、使用に役立ちます。このソリューションでは、Google Cloud で動的ウェブサイトを構築して実行する方法を説明します。このガイドは、独自の動的ウェブサイトを Google Cloud にデプロイする例として使用できます。これには、必要となる可能性のある Google Cloud プロダクトやそうしたプロダクトが相互に通信する方法が含まれます。
このソリューション ガイドでは、Developer Journey ウェブ アプリケーションを Google Cloud にデプロイします。
Developer Journey は TypeScript、Next.js、React で構築され、キャッシュ保存が可能なページを事前レンダリングするための、静的な生成とサーバーサイドのレンダリングの手法を示します。
このドキュメントは、クラウドの基本的なコンセプトを理解していることを前提としていますが、Google Cloud の知識が必須というわけではありません。また、Terraform の使用経験も役に立ちます。
目標
このソリューション ガイドでは、Google Cloud を使用して以下を行う方法を示します。
- Cloud Run に一般公開されているウェブ アプリケーションをデプロイする
- Google Cloud で推奨されるセキュリティ対策(シークレットの使用や、適切な IAM 権限を含む最小権限の割り当てなど)に従って、アプリケーションを Google Cloud データベースに接続する
- バックエンド サービスのをデプロイして運用する
- コンテンツを変更するか、アプリケーションを修正して機能を追加する
- 安全にビルドと再デプロイを行う
- デプロイを確認する
- アプリケーションをカスタマイズする
次のことをおすすめします。
- TypeScript と React プログラミングに精通している。
- 新しい JavaScript アプリケーションにクラウド インフラストラクチャを使用することに興味がある。
- データベース接続、CI/CD、デバッグ、ロギングに精通している。
- ウェブサイト開発の基礎に精通している。
使用するプロダクト
Developer Journeys ソリューションに組み込まれている Google Cloud プロダクトの概要は次のとおりです。
- Cloud Run: サーバーレスのコンテナ化アプリを構築してデプロイできるフルマネージド サービス。Cloud Run がスケーリングなどのインフラストラクチャ タスクを処理するので、コードのビジネス ロジックに集中できます。
- Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQL ドキュメント データベースです。
- Cloud Load Balancing : Google Cloud でのスケーラブルで高性能なロード バランシング
- Secret Manager: シークレットをバイナリ blob またはテキスト文字列として保存、管理、アクセスできるサービス。Secret Manager を使用すると、ランタイム時にアプリケーションが必要とするデータベース パスワード、API キー、TLS 証明書を格納できます。
- Cloud Storage: 低コストで無制限のオブジェクト ストレージをさまざまなデータ型に使用する、エンタープライズ クラスのサービス。データは Google Cloud の内部および外部からアクセス可能で、地理的に冗長に複製されます。
- Cloud Build: リポジトリや Cloud Storage スペースからソースコードをインポートしてビルドし、Docker コンテナや Java アーカイブなどの継続的デリバリーのためのアーティファクトを生成するサービス。
アーキテクチャ
次の図は、ソリューションのアーキテクチャを示しています。
リクエスト フロー
このアーキテクチャは、次のコンポーネントで構成されます。
- モバイルとウェブのユーザーが URL 経由でアプリケーションに接続します。
- 利用可能であれば、Cloud CDN からキャッシュに保存されたアセットが配信されます。そうでない場合、リクエストは Cloud Load Balancing にルーティングされます。
- 静的アセットの場合、Cloud Storage バケットから Cloud Load Balancing が pull されます。
- 動的リソースの場合、Cloud Load Balancing はリクエストを Cloud Run に転送します。
- 機密性の高い値は、Secret Manager に保存されている環境変数を使用して Cloud Run に提供されます。
- Cloud Run は、ウェブ アプリケーション用の NoSQL データベース バックエンドである Firestore からユーザーデータのクエリを実行します。
費用
JavaScript を使用した動的ウェブ アプリケーション ソリューションで使用される Google Cloud リソースの費用を見積もるには、Google Cloud 料金計算ツールで事前に計算された見積もりをご覧ください。
見積もりを出発点として使用して、デプロイの費用を計算します。見積もりを変更して、ソリューションで使用するリソースに対して行う予定の構成の変更を反映できます。
事前に計算された見積もりは、次のような特定の要因に関する前提条件に基づいています。
- リソースがデプロイされている Google Cloud のロケーション。
- リソースが使用される時間。
始める前に
このソリューションをデプロイするには、まず Google Cloud プロジェクトと IAM 権限が必要です。
Google Cloud プロジェクトを作成または選択する
ソリューションをデプロイするときに、リソースがデプロイされている Google Cloud プロジェクトを選択します。デプロイには、新しいプロジェクトを作成するか、既存のプロジェクトを使用できます。
新しいプロジェクトを作成する場合は、デプロイを始める前に作成します。新しいプロジェクトを使用すると、本番環境ワークロードに使用されるリソースなど、以前にプロビジョニングされたリソースとの競合を回避できます。
プロジェクトを作成するには、次の手順を完了します。
-
In the Google Cloud console, go to the project selector page.
-
Click Create project.
-
Name your project. Make a note of your generated project ID.
-
Edit the other fields as needed.
-
Click Create.
必要な IAM 権限を取得する
デプロイ プロセスを開始するには、次の表に示す Identity and Access Management(IAM)権限が必要です。
このソリューション用に新規プロジェクトを作成した場合は、そのプロジェクトに roles/owner
基本ロールが付与され、必要なすべての権限を持っています。roles/owner
ロールがない場合は、これらの権限(またはこれらの権限を含むロール)の付与を管理者に依頼してください。
必要な IAM 権限 | 必要な権限を含む事前定義ロール |
---|---|
|
Service Usage 管理者 ( roles/serviceusage.serviceUsageAdmin ) |
|
サービス アカウント管理者 ( roles/iam.serviceAccountAdmin ) |
|
プロジェクト IAM 管理者 ( roles/resourcemanager.projectIamAdmin ) |
config.deployments.create config.deployments.list |
Cloud Infrastructure Manager 管理者 ( roles/config.admin ) |
iam.serviceAccount.actAs |
サービス アカウント ユーザー ( roles/iam.serviceAccountUser ) |
一時的なサービス アカウントの権限について
コンソールからデプロイ プロセスを開始すると、ユーザーに代わってソリューションをデプロイするために(また、必要に応じて後でデプロイを削除するために)サービス アカウントが作成されます。このサービス アカウントには、特定の IAM 権限が一時的に割り当てられます。つまり、ソリューションのデプロイと削除のオペレーションが完了すると、権限が自動的に取り消されます。ソリューションのデプロイを削除した後に、このガイドの後半で説明するように、サービス アカウントを削除することをおすすめします。
サービス アカウントに割り当てられたロールを確認する
Google Cloud プロジェクトまたは組織の管理者が必要とする場合に、以下のロールの情報を表示してください。
roles/datastore.owner
roles/iam.serviceAccountAdmin
roles/iam.serviceAccountUser
roles/resourcemanager.projectIamAdmin
roles/run.admin
roles/`roles/secretmanager.admin
roles/storage.admin
roles/compute.networkAdmin
roles/compute.admin
ソリューションをデプロイする
このソリューションを最小限の労力でデプロイできるように、Terraform 構成が GitHub で提供されています。Terraform 構成では、ソリューションに必要なすべての Google Cloud のリソースを定義しています。
次のいずれかの方法でソリューションをデプロイできます。
コンソールから: デフォルトの構成でソリューションを試して動作を確認する場合は、この方法を使用します。Cloud Build は、ソリューションに必要なすべてのリソースをデプロイします。デプロイされたソリューションが不要になった場合は、コンソールから削除できます。ソリューションのデプロイ後に作成したリソースは、個別に削除する必要があります。
このデプロイ方法を使用する場合、コンソールからデプロイするの手順に沿って操作します。
Terraform CLI を使用: このソリューションをカスタマイズする場合、または Infrastructure as Code(IaC)のアプローチを使用してリソースのプロビジョニングと管理を自動化する場合は、この方法を使用します。GitHub から Terraform 構成をダウンロードし、必要に応じてコードをカスタマイズしてから、Terraform CLI を使用してソリューションをデプロイします。ソリューションをデプロイした後も、引き続き Terraform を使用してソリューションを管理できます。
このデプロイ方法を使用するには、Terraform CLI を使用してデプロイするの手順に沿って操作します。
コンソールからデプロイする
事前構成済みのソリューションをデプロイするには、次の手順を完了します。
Google Cloud ジャンプ スタート ソリューション カタログで、JavaScript を使用した動的ウェブ アプリケーション ソリューションに移動します。
ソリューションの概算費用やデプロイの推定時間など、ページに表示された情報を確認します。
ソリューションのデプロイを開始する準備ができたら、[デプロイ] をクリックします。
順を追って構成するペインが表示されます。
構成ペインの手順を実施します。
デプロイメントに入力する名前をメモします。この名前は、後でデプロイメントを削除するときに必要になります。
[デプロイ] をクリックすると、[ソリューションのデプロイ] ページが表示されます。このページの [ステータス] フィールドに「デプロイ中」が表示されます。
ソリューションがデプロイされるまで待ちます。
デプロイが失敗した場合、[ステータス] フィールドに「失敗」と表示されます。Cloud Build のログでエラーを診断できます。詳細については、コンソールからデプロイする際のエラーをご覧ください。
デプロイが完了すると、[ステータス] フィールドが [デプロイ済み] に変わります。
このソリューションが不要になった場合は、デプロイメントを削除して、Google Cloud リソースに対する課金が継続しないようにします。詳細については、デプロイメントを削除するをご覧ください。
Terraform CLI を使用してデプロイする
このセクションでは、Terraform CLI を使用してソリューションをカスタマイズする方法や、ソリューションのプロビジョニングと管理を自動化する方法について説明します。Terraform CLI を使用してデプロイするソリューションは、Google Cloud コンソールの [ソリューションのデプロイ] ページに表示されません。
Terraform クライアントを設定する
Terraform は、Cloud Shell またはローカルホストで実行できます。このガイドでは、Terraform がプリインストールされ、Google Cloud での認証が構成されている Cloud Shell で Terraform を実行する方法について説明します。
このソリューションの Terraform コードは、GitHub リポジトリで入手できます。
Cloud Shell に GitHub リポジトリのクローンを作成します。
GitHub リポジトリを Cloud Shell にダウンロードするよう求めるメッセージが表示されます。
[確認] をクリックします。
別のブラウザタブで Cloud Shell が起動し、Cloud Shell 環境の
$HOME/cloudshell_open
ディレクトリに Terraform コードがダウンロードされます。Cloud Shell で、現在の作業ディレクトリが
$HOME/cloudshell_open/terraform-dynamic-javascript-webapp/infra
かどうかを確認します。このディレクトリには、ソリューションの Terraform 構成ファイルが含まれています。このディレクトリに移動する必要がある場合は、次のコマンドを実行します。cd $HOME/cloudshell_open/terraform-dynamic-javascript-webapp/infra
次のコマンドを実行して Terraform を初期化します。
terraform init
次のメッセージが表示されるまで待ちます。
Terraform has been successfully initialized!
Terraform 変数を構成する
ダウンロードした Terraform コードには、要件に基づいてデプロイメントをカスタマイズするために使用できる変数が含まれています。たとえば、Google Cloud プロジェクトと、ソリューションをデプロイするリージョンを指定できます。
現在の作業ディレクトリが
$HOME/cloudshell_open/terraform-dynamic-javascript-webapp/infra
であることを確認します。そうでない場合は、そのディレクトリに移動します。同じディレクトリに、
terraform.tfvars
という名前のテキスト ファイルを作成します。terraform.tfvars
ファイルで次のコード スニペットをコピーし、必要な変数の値を設定します。- このコード スニペットにコメントとして記載されている手順を実施します。
- このコード スニペットには、値を設定する必要のある変数のみが含まれています。Terraform 構成には、デフォルト値を持つ他の変数が含まれています。すべての変数とデフォルト値を確認するには、
$HOME/cloudshell_open/terraform-dynamic-javascript-webapp/infra
ディレクトリにあるvariables.tf
ファイルをご覧ください。 terraform.tfvars
ファイルで設定した各値が、variables.tf
ファイルで宣言されている変数の型と一致していることを確認します。たとえば、variables.tf
ファイル内の変数に定義されている型がbool
の場合、その変数の値としてtrue
またはfalse
をterraform.tfvars
内で指定する必要があります。
# This is an example of the terraform.tfvars file. # The values in this file must match the variable types declared in variables.tf. # The values in this file override any defaults in variables.tf. # ID of the project in which you want to deploy the solution project_id = "PROJECT_ID" # Google Cloud region where you want to deploy the solution # Example: us-central1 region = "REGION" # Google Cloud zone where you want to deploy the solution # Example: us-central1-a zone = "ZONE"
必要な変数に割り当てできる値については、以下をご覧ください。
- project_id: プロジェクトの識別
- region と zone: 使用可能なリージョンとゾーン
Terraform 構成を検証して確認する
現在の作業ディレクトリが
$HOME/cloudshell_open/terraform-dynamic-javascript-webapp/infra
であることを確認します。そうでない場合は、そのディレクトリに移動します。Terraform 構成にエラーがないことを確認します。
terraform validate
コマンドからエラーが返された場合は、構成で必要な修正を行ってから、
terraform validate
コマンドを再度実行します。コマンドで次のメッセージが返されるまで、この手順を繰り返します。Success! The configuration is valid.
構成で定義されているリソースを確認します。
terraform plan
前述のように変数定義ファイル(
terraform.tfvars
)を作成しなかった場合、Terraform でデフォルト値のない変数の値の入力を求められます。必要な値を入力します。terraform plan
コマンドの出力に、構成の適用時に Terraform がプロビジョニングするリソースのリストが表示されます。変更を行う場合は、構成を編集してから、
terraform validate
コマンドとterraform plan
コマンドを再度実行します。
リソースをプロビジョニングする
構成にこれ以上の変更が必要ない場合は、リソースをデプロイします。
現在の作業ディレクトリが
$HOME/cloudshell_open/terraform-dynamic-javascript-webapp/infra
であることを確認します。そうでない場合は、そのディレクトリに移動します。Terraform 構成を適用します。
terraform apply
前述のように変数定義ファイル(
terraform.tfvars
)を作成しなかった場合、Terraform でデフォルト値のない変数の値の入力を求められます。必要な値を入力します。作成されるリソースのリストが表示されます。
アクションの実行を求められたら、「
yes
」と入力します。Terraform でデプロイの進行状況を示すメッセージが表示されます。
デプロイを完了できない場合、失敗の原因となったエラーが表示されます。エラー メッセージを確認し、構成を更新してエラーを修正します。次に、
terraform apply
コマンドを再実行します。Terraform のエラーのトラブルシューティングについては、Terraform CLI を使用してソリューションをデプロイする際のエラーをご覧ください。すべてのリソースが作成されると、Terraform によって次のメッセージが表示されます。
Apply complete!
このソリューションが不要になった場合は、デプロイメントを削除して、Google Cloud リソースに対する課金が継続しないようにします。詳細については、デプロイを削除するをご覧ください。
デプロイを確認する
JavaScript 動的ウェブ アプリケーションのサンプルをデプロイしました。ソリューションのデプロイは、次のような単一の Google Cloud プロジェクトに統合されている複数の主要サービスで構成されています。
- TypeScript で記述されたフロントエンド アプリケーション。
- Next.js フレームワークと React フレームワークを使用する Cloud Run サービス。
- Firestore データベース。
- Cloud Storage エンタープライズ対応バケット。
デプロイされた Google Cloud リソースとその構成を確認するには、インタラクティブなツアーをご覧ください。
省略可: アプリケーションをカスタマイズする
JavaScript を使用した動的ウェブ アプリケーション ソリューションをカスタマイズするには、Cloud Run にデプロイされたアプリケーションを変更してから、再デプロイします。このタスクを Cloud Shell エディタで直接行う際のガイダンスについては、「ガイドを表示」をクリックしてください。
このタスクが完了するまでに約 30 分かかります。
デプロイを削除する
このソリューションが不要になった場合は、このソリューションで作成したリソースに対する課金が継続しないように、すべてのリソースを削除します。
コンソールを使用して削除する
この手順は、ソリューションをコンソールからデプロイした場合に実施します。
Google Cloud コンソールで、[ソリューションのデプロイ] ページに移動します。
削除するデプロイメントが含まれているプロジェクトを選択します。
削除するデプロイメントを見つけます。
デプロイメントの行で、
(アクション)アイコンをクリックし、[削除] を選択します。行にアクション アイコンが表示されない場合は、スクロールしてください。
デプロイメントの名前を入力し、[確認] をクリックします。
[ステータス] フィールドに「削除中」が表示されます。
削除に失敗した場合は、デプロイメントの削除時のエラーのトラブルシューティング ガイダンスをご覧ください。
ソリューションに使用した Google Cloud プロジェクトが不要になった場合は、プロジェクトを削除できます。詳細については、省略可: プロジェクトを削除するをご覧ください。
Terraform CLI を使用して削除する
Terraform CLI を使用してソリューションをデプロイした場合は、次の手順に沿って操作します。
Cloud Shell で、現在の作業ディレクトリが
$HOME/cloudshell_open/terraform-dynamic-javascript-webapp/infra
であることを確認します。そうでない場合は、そのディレクトリに移動します。Terraform によってプロビジョニングされたリソースを削除します。
terraform destroy
破棄されるリソースのリストが表示されます。
アクションの実行を求められたら、「
yes
」と入力します。進行状況を示すメッセージが表示されます。すべてのリソースが削除されると、次のメッセージが表示されます。
Destroy complete!
削除に失敗した場合は、デプロイメントの削除時のエラーのトラブルシューティング ガイダンスをご覧ください。
ソリューションに使用した Google Cloud プロジェクトが不要になった場合は、プロジェクトを削除できます。詳細については、省略可: プロジェクトを削除するをご覧ください。
省略可: プロジェクトを削除する
ソリューションを新しい Google Cloud プロジェクトにデプロイした後、そのプロジェクトが不要になった場合は、次の手順で削除します。
- Google Cloud コンソールで、[リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- プロンプトでプロジェクト ID を入力し、[シャットダウン] をクリックします。
省略可: サービス アカウントを削除する
ソリューションに使用したプロジェクトを削除した場合は、このセクションをスキップしてください。
このガイドの前半で説明したように、ソリューションをデプロイしたときに、ユーザーに代わってサービス アカウントが作成されました。このサービス アカウントには特定の IAM 権限が一時的に割り当てられました。ソリューションのデプロイと削除オペレーションが完了した後、権限は自動的に取り消されましたが、サービス アカウントは削除されません。このサービス アカウントを削除することをおすすめします。
Google Cloud コンソールからソリューションをデプロイした場合は、[ソリューションのデプロイ] ページに移動します。(すでにページが表示されている場合は、ブラウザを更新します)。サービス アカウントが削除されるように、バックグラウンドでプロセスがトリガーされます。特に操作を行う必要はありません。
Terraform CLI を使用してソリューションをデプロイした場合は、次の手順を完了します。
Google Cloud コンソールで、[サービス アカウント] ページに移動します。
ソリューションに使用したプロジェクトを選択します。
削除するサービス アカウントを選択します。
ソリューション用に作成されたサービス アカウントのメール ID は、次の形式になります。
goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
メール ID には次の値が含まれます。
- DEPLOYMENT_NAME: デプロイメントの名前。
- NNN: 3 桁のランダムな数字。
- PROJECT_ID: ソリューションをデプロイしたプロジェクトの ID。
[削除] をクリックします。
エラーのトラブルシューティングを行う
エラーを診断して解決するために実行できるアクションは、デプロイ方法とエラーの複雑さによって異なります。
コンソールからデプロイする際のエラー
コンソールを使用してデプロイが失敗した場合は、次の操作を行います。
[ソリューションのデプロイ] ページに移動します。
デプロイが失敗した場合、[ステータス] フィールドに「失敗」と表示されます。
エラーの原因となったエラーの詳細を表示するには:
デプロイメントの行で、
(アクション)をクリックします。行にアクション アイコンが表示されない場合は、スクロールしてください。
[Cloud Build のログを表示する] を選択します。
Cloud Build のログを確認し、適切な措置を講じて失敗の原因となった問題を解決します。
Terraform CLI を使用してデプロイする際のエラー
Terraform を使用したデプロイが失敗した場合、terraform
apply
コマンドの出力には、問題を診断するために確認できるエラー メッセージが含まれます。
次のセクションの例では、Terraform の使用時に発生する可能性のあるデプロイエラーを示します。
「API が有効になっていない」エラー
プロジェクトを作成し、すぐに新しいプロジェクトでソリューションをデプロイすると、デプロイが失敗して次のようなエラーが発生することがあります。
Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.
このエラーが発生した場合は、数分待ってから terraform apply
コマンドを再度実行します。
デプロイメント削除時のエラー
デプロイメントを削除しようとして失敗することもあります。
- コンソールでソリューションをデプロイした後に、ソリューションによってプロビジョニングされたリソースを変更してからデプロイメントを削除しようとすると、削除が失敗することがあります。[ソリューションのデプロイ] ページの [ステータス] フィールドに「失敗」と表示され、Cloud Build のログにエラーの原因が表示されます。
- Terraform CLI を使用してソリューションをデプロイした後に、Terraform 以外のインターフェース(コンソールなど)を使用してリソースを変更し、デプロイメントを削除しようとすると、削除が失敗することがあります。
terraform destroy
コマンドの出力にあるメッセージにエラーの原因が示されます。
エラーログとエラーの内容を確認し、エラーの原因となったリソースを特定して削除してから、もう一度デプロイメントを削除してみてください。
コンソールベースのデプロイメントが削除されず、Cloud Build ログを使用してエラーを診断できない場合は、Terraform CLI を使用してデプロイメントを削除できます。次のセクションをご覧ください。
Terraform CLI を使用してコンソールベースのデプロイメントを削除する
このセクションでは、コンソールからコンソールベースのデプロイメントを削除しようとしたときにエラーが発生した場合に、コンソールベースのデプロイメントを削除する方法について説明します。このアプローチでは、削除するデプロイメントの Terraform 構成をダウンロードし、Terraform CLI を使用してデプロイメントを削除します。
デプロイメントの Terraform コード、ログ、その他のデータが保存されているリージョンを特定します。このリージョンは、ソリューションのデプロイ時に選択したリージョンとは異なる場合があります。
Google Cloud コンソールで、[ソリューションのデプロイ] ページに移動します。
削除するデプロイメントが含まれているプロジェクトを選択します。
デプロイメントのリストで、削除するデプロイメントの行を特定します。
「行の内容をすべて表示する」をクリックします。
[場所] 列で、次の例でハイライトされているように、2 番目の場所をメモします。
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
プロジェクト ID、リージョン、削除するデプロイメントの名前の環境変数を作成します。
export REGION="REGION" export PROJECT_ID="PROJECT_ID" export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
これらのコマンドで、次のように置き換えます。
- REGION: この手順でメモした場所。
- PROJECT_ID: ソリューションをデプロイしたプロジェクトの ID。
- DEPLOYMENT_NAME: 削除するデプロイメントの名前。
削除するデプロイメントの最新リビジョンの ID を取得します。
export REVISION_ID=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .latestRevision -r) echo $REVISION_ID
出力は次のようになります。
projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
デプロイメントの Terraform 構成の Cloud Storage のロケーションを取得します。
export CONTENT_PATH=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \ | jq .applyResults.content -r) echo $CONTENT_PATH
このコマンドの出力例を次に示します。
gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
Cloud Storage から Cloud Shell に Terraform 構成をダウンロードします。
gcloud storage cp $CONTENT_PATH $HOME --recursive cd $HOME/content/infra
次の例に示すように、
Operation completed
メッセージが表示されるまで待ちます。Operation completed over 45 objects/268.5 KiB
Terraform を初期化します。
terraform init
次のメッセージが表示されるまで待ちます。
Terraform has been successfully initialized!
デプロイされたリソースを削除します。
terraform destroy
破棄されるリソースのリストが表示されます。
宣言されていない変数に関する警告が表示された場合は、警告を無視してください。
アクションの実行を求められたら、「
yes
」と入力します。進行状況を示すメッセージが表示されます。すべてのリソースが削除されると、次のメッセージが表示されます。
Destroy complete!
デプロイメント アーティファクトを削除します。
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
数秒待ってから、デプロイメント アーティファクトが削除されたことを確認します。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .error.message
出力に
null
と表示されている場合は、数秒待ってから、もう一度コマンドを実行します。デプロイメント アーティファクトが削除されると、次のようなメッセージが表示されます。
Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
フィードバックを送信する
ジャンプ スタート ソリューションは情報提供のみを目的としており、正式にサポートされているプロダクトではありません。Google は、予告なくソリューションを変更または削除する場合があります。
エラーのトラブルシューティングを行うには、Cloud Build のログと Terraform の出力を確認します。
フィードバックを送信する場合は、次の操作を行います。
- ドキュメント、コンソール内チュートリアル、またはソリューションについては、このページの [フィードバックを送信] ボタンを使用してください。
コードが変更されていない場合は、適切な GitHub リポジトリで問題を作成します。
GitHub の問題はベスト エフォート ベースで審査されます。これは、一般的な使用に関する質問を目的としたものではありません。
- ソリューションで使用されているプロダクトに関する問題については、Cloud カスタマーケアにお問い合わせください。
次のステップ
Google Cloud のプロダクトと機能の詳細については、以下をご覧ください。