このページでは、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
- gcloud CLI を再度認証し、エラー メッセージに表示されたプロジェクトにアクセスするための権限を持つアカウントで認証されたことを確認します。
gcloud auth login
新しいブラウザタブが開き、アカウントの選択を求めるプロンプトが表示されます。
- エラー メッセージに表示されたプロジェクト ID が、Endpoints 構成のデプロイ先となる Google Cloud プロジェクトに対応していることを確認します。
gcloud projects list
- 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