gcloud端点使用时间戳类型部署错误

时间:2018-04-05 09:47:53

标签: protocol-buffers grpc google-cloud-endpoints-v2

我已经成功部署了很多google gRPC云端点。

但是我第一次在我的proto中使用时间戳类型,当我尝试部署我的gRPC API时,我有一个错误:

gcloud endpoints deploy services api_descriptor.pb api_config.yaml

ERROR: (gcloud.endpoints.services.deploy) INVALID_ARGUMENT: Cannot 
convert to service config.
'ERROR: google/protobuf/timestamp.proto:121:1: (at document line 76) 
Unexpected end tag '--)' with missing begin tag.'

我生成api_descriptor.pb的命令

protoc -I . backoffice*.proto \
--proto_path=. \
--include_imports \
--include_source_info \
--descriptor_set_out=api_descriptor.pb 

我的api_config.yaml

type: google.api.Service
config_version: 3

name: backoffice.endpoints.MY_PROJECT.cloud.goog

title: Backoffice gRPC API
apis:
- name: package.BackofficeApi

usage:
  rules:
  - selector: "*"
    allow_unregistered_calls: true

我找不到关于这个问题的任何信息...任何想法?

2 个答案:

答案 0 :(得分:2)

遗憾的是,这是timestamp.proto文件中的一个错误。

它是been fixed,但听起来你所获得的protobuf版本还没有修复。

幸运的是,您可以在本地解决此问题 - 只需修改timestamp.proto(无论您在哪里获得;这取决于您使用的是哪个套餐)在线打破--) 121在行121的末尾为--,在下一行为),因为它位于当前文件中(上面链接)。

答案 1 :(得分:2)

protobuf版本(3.5.0 - 3.5.2,截至2018年5月9日)似乎存在此问题,修复程序尚未发布。我在"<python path>\Lib\site-packages\grpc_tools\_proto\google\protobuf\timestamp.proto"

找到了有问题的文件

更换一行:

// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--)

// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime)

解决了我的问题