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 구성을 다시 배포하기 위해 필요한 최소 권한은 서비스에 대한 서비스 구성 편집자 역할(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 도메인을 사용 중이면 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

다음 단계