Облачные функции Google golang с базисными зависимостями протобуфа - PullRequest
1 голос
/ 28 апреля 2019

Если я использую bazel для создания своих зависящих от protobuf функций golang-сервера, bazel сделает сгенерированный protobuf код go доступным по указанному пути импорта.

Для работы с облачными функциями Google требуется использовать модули go.

Как мне добавить фиктивный путь импорта, созданный bazel, в мой файл go.mod? Сбой при развертывании функции в облаке Google из-за невозможности разрешения фиктивного импорта. (G cloud требует, чтобы я загрузил исходный код go, AWS lambdas позволил бы мне загрузить двоичный файл, который работал бы нормально.)

Полагаю, мне придется либо пойти с лямбдами AWS, использовать безсерверные контейнеры, либо написать генруль, который копирует выходные данные сгенерированного прототипа кода в мою директорию с исходным кодом, но я бы хотел избежать этого уродства.

1 Ответ

1 голос
/ 29 мая 2019

Я работаю в Google on Go и облачных функциях Google.

Я вижу несколько вариантов использования облачных функций:

  • Публикация сгенерированного кода публично.Возможно, вы не захотите делать это по разным причинам.
  • Скопируйте сгенерированный код в исходный каталог.Это самое простое.При развертывании вашей функции текущий каталог архивируется и отправляется на сборку.Мы не копируем никаких зависимостей из-за пределов вашего текущего каталога.Если вы сделаете это, вы можете импортировать сгенерированный код, указав путь к пакету с префиксом пути к каталогу в вашем каталоге.
  • Использовать вендорство.Если вы запустите go mod vendor и получите этот сгенерированный код (по любому пути, который вы выберете), он создаст каталог vendor со всеми вашими зависимостями.Однако строитель облачных функций предпочитает go.mod, а не vendor.Таким образом, вам нужно будет .gcloudignore файл go.mod и go.sum, чтобы убедиться, что они не будут загружены при развертывании вашего кода.https://cloud.google.com/functions/docs/writing/specifying-dependencies-go имеет больше информации.
...