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

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

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

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

ERROR: unknown location: http: In path template '[PATH]': unexpected end of input '/'.'

このエラーは、OpenAPI ドキュメント内の 1 つ以上のパスの末尾にスラッシュ(「/」)が含まれている場合に表示されます。この問題を解決するには、すべてのパスの末尾にあるスラッシュを削除します。たとえば、OpenAPI ドキュメントの次のスニペットではこのエラーが発生します。

paths:
  "/echo/":
    post:
      description: "Echo back a given message."

これを修正するには、/echo/ から末尾のスラッシュを削除します。

paths:
  "/echo":
    post:
      description: "Echo back a given message."

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

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

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

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

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

gcloud --verbosity=debug endpoints services deploy openapi.yaml

次のステップ