Развертывание конфигурации конечных точек Google Cloud не соответствует рекомендациям Google API Linter - PullRequest
4 голосов
/ 31 января 2020

После выполнения Развертывание конфигурации конечных точек Я успешно развернул скомпилированный файл .proto и файл конфигурации gRP C API.

Отлично. Я решил быть хорошим гражданином и использовать API Google Linter на моем .proto.

. Это привело к ряду рекомендаций, включающих различные аннотации. Требуются новые аннотации proto импорт;

До

syntax = "proto3";
package api.v1;

// Request message for Get method.
message GetFooRequest {
  // The field will contain name of the resource requested.
  string name = 1;
}

...blah,blah

После

syntax = "proto3";
package api.v1;

import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";

// Request message for Get method.
message GetFooRequest {
  // The field will contain name of the resource requested.
  string name = 1 [
    (google.api.field_behavior) = REQUIRED,
    (google.api.resource_reference).type = "api.v1.HelloWorld/Foo"
  ];
}
...blah,blah

Аннотации требуют четыре новых прото-файла для импорта:

import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";

Все они являются частью протоколов общего API Google protos, поэтому я клонировал репо в /Users/Jack/api-common-protos/ с помощью:

git clone https://github.com/googleapis/api-common-protos.git

... и включите его при компиляции моего .proto файла:

python3 -m grpc_tools.protoc --proto_path=api
                             --proto_path=/Users/Jack/api-common-protos/google
                             api/v1/foo.proto

Нет ошибок. Отлично. Наконец, я развернул API:

gcloud endpoints services deploy api_descriptor.pb api-config.yaml

Это завершено. Однако на портале для разработчиков теперь отображается:

We encountered the following errors while processing this API specification:

API parse error: Error: ENOENT: no such file or directory, open '/tmp/google/api/client.proto'

Please correct these errors and try again.

Scrot:

enter image description here

Если удалить аннотацию (и требуемый импорт) , Портал разработчика конечных точек для моего API работает нормально.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Вероятно, не так много времени для временного решения проблемы:

cp /Users/Jack/api-common-protos/google/api/client.proto /tmp/google/api/client.proto

Тогда файл будет доступен там, где его ожидают, несмотря на то, что он не помещается туда автоматически.

0 голосов
/ 17 февраля 2020

Это ошибка на портале для разработчиков. Я сообщил об этом ответственной команде.

...