Cloud Endpoints 構成のデプロイメントに関するトラブルシューティング

このページでは、Cloud Endpoints 構成をデプロイする際に発生する可能性があるエラーのトラブルシューティング方法について説明します。表示されるエラー メッセージには、プロジェクトに固有の情報が含まれます。たとえば、エラー メッセージに自分のプロジェクト ID が記載されることがあります。このページでは、YOUR_PROJECT_ID などのプレースホルダの値で示します。

各手順の後、gcloud endpoints services deploy コマンドを再度実行して、エラーが解決されるかどうかを確認してください。

サービス構成に変換できない

ERROR: (gcloud.endpoints.services.deploy) INVALID_ARGUMENT:
Cannot convert to service config. http: undefined field <unknown> on message <RequestType>

.proto ファイルを調べて、プロトコル バッファ メッセージとコード変換マッピングの間で一致しないフィールドがあるかどうかを確認します。

たとえば、.proto ファイルの以下の部分が原因でこのエラーが発生します。Unary のマッピング オプションで、Request メッセージ定義にない undefined という名前のフィールドが指定されています。

rpc Unary(Request) Response {
  option (google.api.http) { get : "/{undefined}" };
}

message Request {
  string defined = 1;
}

プロジェクト設定を取得できない

ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Not allowed to get project settings for project YOUR_PROJECT_ID

  1. gcloud CLI を再度認証し、エラー メッセージに表示されたプロジェクトにアクセスするための権限を持つアカウントで認証されたことを確認します。
    gcloud auth login

    新しいブラウザタブが開き、アカウントの選択を求めるプロンプトが表示されます。

  2. エラー メッセージに表示されたプロジェクト ID が、Endpoints 構成のデプロイ先となる Google Cloud プロジェクトに対応していることを確認します。
    gcloud projects list
  3. gcloud CLI に正しいプロジェクト ID が現在のプロジェクトとして設定されていることを確認します。
    gcloud config set project YOUR_PROJECT_ID

呼び出し元に権限がない

ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Caller does not have permission 'servicemanagement.services.create' on project YOUR_PROJECT_ID

Endpoints 構成を初めてデプロイするとき、Service Management によって API のマネージド サービスが作成されます。マネージド サービスを作成するには、ユーザーに少なくともプロジェクト レベルで編集者の役割が付与されている必要があります。Service Management によってマネージド サービスが作成された後、Endpoints 構成を再デプロイするために必要な最小限の権限は、サービスに対する Service Config 編集者の役割(roles/servicemanagement.configEditor)です。詳細については、API へのアクセス権の付与をご覧ください。

ドメイン名の所有権を確認できない

ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Ownership for domain name YOUR_DOMAIN_NAME on project YOUR_PROJECT_ID cannot be verified

  • api_config.yaml ファイルの name フィールドでカスタム ドメイン(例: example.com)を構成している場合は、サービス構成をデプロイする前に、ドメイン名を検証する必要があります。
  • cloud.goog ドメイン(App Engine にのみ対応)を使用する場合は、name フィールドが次の形式になっていることと、プロジェクト ID が正しいことを確認してください。
    API_NAME.endpoints.YOUR_PROJECT_ID.cloud.goog

その他のエラーのトラブルシューティング

上記以外のエラーが発生した場合や、上記の情報で問題が解決しなかった場合は、デバッグ情報を表示するフラグを使って gcloud コマンドを再び実行します。

gcloud --verbosity=debug endpoints services deploy api_descriptor.pb api_config.yaml api_config_http.yaml

次のステップ