デプロイエラーのトラブルシューティング

このページで説明する内容は次のとおりです。

デプロイの詳細とログを検査する

デプロイと個々のリビジョンの詳細とログを調べることができます。

デプロイの状態を検査する

各デプロイには、現在のステータス、エラーコード、障害の原因に関する詳細情報が含まれます。

エラーが発生した場合は、まずデプロイの状態を表示します。

リビジョンの状態を検査する

デプロイがエラーコード REVISION_FAILED で失敗した場合は、リビジョンの状態を確認できます。

リビジョンの状態の出力で、stateDetail フィールドと errorCode フィールドを確認します。

リビジョンの状態には、デプロイメントと同じ情報が含まれます。また、ビルド ID も含まれます。

Cloud Build のログを検査する

リビジョンの状態を表示し、リビジョンで使用される Cloud Build のビルド ID を取得します。

ビルド ID を使用して Cloud Build ログを調べます。ビルド結果の検査の詳細については、ビルド結果を表示するをご覧ください。

一般的なエラー

このセクションでは、Infra Manager を使用して Terraform 構成をデプロイする際に発生する可能性のある一般的なエラーについて説明します。

デプロイに失敗しました

デプロイの状態が FAILED の場合、デプロイで予期しないエラーが発生しています。

デプロイの状態を表示し、stateDetail フィールドと errorCode フィールドを調べて詳細を確認します。

デプロイがエラーコード REVISION_FAILED で失敗した場合は、リビジョンの状態を検査できます。

構成エラー

デプロイの状態が FAILED の場合、Terraform 構成の構成エラーが原因で失敗している可能性があります。

デプロイ エラーが構成に関連している場合、デプロイの状態の出力に tfErrors フィールドと errorLogs フィールドが含まれます。構成エラーの例としては、無効な構成や権限がないなどがあります。

Terraform からエラーを表示します。デプロイの状態の出力で、次の操作を行います。

  • tfErrors は、Terraform で発生したエラーの概要です(このリストのエラーは Infra Manager によって 10 件に制限されています)。
  • errorLogs は、アーティファクト バケット内の Cloud Storage オブジェクトを参照します。このバケットには、改行区切りの JSON 形式ですべての tfErrors が含まれています。

tfError には、リソースのアドレスと、errorDescription フィールドに人が読める形式のエラーの説明があります。 Google Cloud API から返された HTTP エラーコードが原因でリソースが失敗した場合、httpResponseCode フィールドにも値が入力されます。その他の API 障害情報は、エラー フィールドに記録されます。

サービス アカウントに構成を取得するための権限がない

次のエラーが表示されます。

  error downloading 'GCS_LOCATION': googleapi: Error 403: SA_EMAIL does
  not have storage.objects.list access to the Google Cloud Storage bucket.

このエラーは、Infra Manager に Cloud Storage バケットから Terraform 構成を取得する権限がないため発生します。

この問題に対処するには、サービス アカウントに storage.objectViewer ロールを付与します。サービス アカウントに権限を付与する方法については、サービス アカウントを構成するをご覧ください。

構成を取得する場所が正しくない

次のエラーが表示されます。

  `blueprint fetch failed: invalid path`

このエラーは、Terraform 構成を取得するために無効なロケーションが指定されている場合に表示されます。Infrastructure Manager では、Terraform 構成を「ブループリント」という用語で参照します。

このエラーに対処するには、Terraform 構成の場所を確認し、コマンドで場所の形式が正しいことを確認します。

リソースをアクチュエートするための権限が正しくない

エラーは通常、tfErrors の下にあり、デプロイできなかったリソースの 403 レスポンス コードが含まれています。

このエラーは、Terraform 構成で定義されたリソースの作成、読み取り、更新、削除を行う権限がサービス アカウントにない場合に表示されます。

このエラーに対処するには、サービス アカウントに IAM 権限を付与するをご覧ください。

バックエンドを使用した構成

次のエラーが表示されます。

  `blueprint invalid: found backend config in file.tf`

このエラーは、Terraform 構成にバックエンド ブロックがある場合に表示されます。Infrastructure Manager がバックエンドを管理するため、Terraform 構成でバックエンド ブロックを定義することはできません。

このエラーに対処するには、構成からバックエンド ブロックを削除します。

Cloud Build リポジトリの構成を検証する

Infra Manager が Git リポジトリにアクセスできない場合(プライベート Git リポジトリまたは Cloud Build 自動ワークフローを使用)、Cloud Build リポジトリが正しく構成されていることを確認する必要があります。

限定公開リポジトリへのアクセスを提供するように Cloud Build リポジトリが構成されていることを確認するには、GitHub リポジトリに接続するをご覧ください。

Infrastructure Manager は、Cloud Build リポジトリの URL が Terraform 構成(--git-source-repo で参照)と一致し、読み取り専用トークンを生成できる最初の接続を使用します。リポジトリ接続は、選択した Cloud Build リポジトリで accessReadToken API を呼び出すことによって直接検証されます。

Infra Manager サービス アカウントを使用して次のコマンドを実行し、権限が正しいことを確認します。

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token \
--impersonate-service-account=SERVICE_ACCOUNT)" \
"https://cloudbuild.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/connections/CB_CONNECTION/repositories/CB_REPO:accessReadToken"

次のステップ