команда облачных функций Google для упаковки без развертывания - PullRequest
2 голосов
/ 13 октября 2019

Я должен что-то упустить, потому что я не могу найти эту опцию здесь: https://cloud.google.com/sdk/gcloud/reference/beta/functions/deploy

Я хочу упаковать и загрузить свою функцию в корзину: --stage-bucket Но на самом деле не развертывать функцию

Я собираюсь развернуть несколько функций (разных обработчиков) из одного пакета с шаблоном Deployment Manager: type: 'gcp-types/cloudfunctions-v1:projects.locations.functions'

gcloud beta functions deploy настаивает на упаковке и развертывании функции. Где находится команда gcloud beta functions package?

Вот пример шаблона DM, который я планирую запустить:

resources:
  - name: resource-name
    type: 'gcp-types/cloudfunctions-v1:projects.locations.functions'
    properties:
      labels:
        testlabel1: testlabel1value
        testlabel2: testlabel2value
      parent: projects/my-project/locations/us-central1
      location: us-central1
      function: function-name
      sourceArchiveUrl: 'gs://my-bucket/some-zip-i-uploaded.zip'
      environmentVariables:
        test: '123'
      entryPoint: handler
      httpsTrigger: {}
      timeout: 60s
      availableMemoryMb: 256
      runtime: nodejs8

РЕДАКТИРОВАТЬ: я понял, у меня есть другой вопрос. Когда я загружаю почтовый индекс, должен ли этот почтовый индекс включать зависимости? Должен ли я сначала выполнить npm install или pip install и включить эти пакеты в zip, или облачные функции читают мои файлы require.txt и packages.json и делают это для меня?

Ответы [ 2 ]

2 голосов
/ 13 октября 2019

Интерфейс командной строки SDK не предоставляет команду для упаковки вашей функции.

Эта ссылка предоставит вам подробную информацию о том, как сжать файлы вместе. Есть только два момента:

  • Тип файла должен быть zip-файлом.
  • Размер файла не должен превышать ограничение в 100 МБ.

Тогда вынеобходимо вызвать API , который возвращает подписанный URL-адрес для загрузки пакета.

После загрузки вы можете указать URL-адрес минус дополнительные параметры в качестве местоположения.

1 голос
/ 13 октября 2019

Не существует команды функций gcloud для "упаковки" вашего развертывания, возможно потому, что это просто создает zip-файл и помещает его в нужное место, а затем ссылается на это место.

Вероятно, самый простой способсделать это, чтобы сгенерировать zip-файл и скопировать его в корзину GCS, а затем установить sourceArchiveUrl в шаблоне в правильное местоположение.

Существует 2 других метода:

  • Вы можете указать исходный код в исходном репозитории (для этого будет использоваться sourceRepository часть шаблона).
  • Вы можете получить прямой URL (используя этот API ) для загрузкиZIP-файл для использования запроса PUT, загрузите туда код и затем передайте этот же URL-адрес в signedUploadUrl в шаблоне. Этот метод обсуждается в ответе @ John. Он не требует от вас какой-либо подписи самостоятельно, а также не требует создания собственной корзины для хранения кода («подписанный URL-адрес» относится к расположению функций частного облака).

По крайней мере, для двух методов zip-файлов вам не нужно включать (общедоступные) зависимости - файл package.json (или needs.txt) будет обрабатываться облачными функциями для их установки. Я не знаю о методе SourceRepository, но я ожидаю, что он будет работать аналогично. Есть документация о том, как облачные функции устанавливают зависимости при развертывании функции для узла и python .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...