Неправильная облачная функция Google при запуске сценария оболочки - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь запустить сценарий оболочки в облачной функции Google.

Я использую Node в качестве основы и пробовал разные способы запуска сценария: execSync, execFileSync, spawnSync и т. Д .:

module.exports.main = function() {
    try {
        const output = require('child_process').execSync(__dirname + '/run.sh', [], 
        {
            stdio: 'inherit',
            shell: '/bin/bash'
        });
    }
    catch (error) {
        process.exit(error.status);
    }
}

Поведение, которое я получаю, очень странное.В целом, я думаю, что это сработало один раз, но в остальное время я либо получаю connection error и ничего не происходит, либо функция завершается «успешно», но ничего из скрипта оболочки не выводится, поэтому я не знаю, является ли это вообщеработал или нет.

Если быть точным, строки журнала, которые я вижу, когда функция "терпит неудачу", являются только следующими:

Выполнение функции начато

Функциявыполнение заняло 122 мс, завершено со статусом: «ошибка соединения»

Я не смог обнаружить шаблон в случае его сбоя и при запуске.

Точные шаги воспроизведения:

  • Создание функции Google Cloud
  • установка времени выполнения на Node 8
  • установка триггера на Pub / Sub topic
  • установка функции на вызовmain
  • создать почтовый индекс, содержащий
    • index.js с указанным выше содержимым (module.exports.main = ...)
    • run.sh, содержащий только
      • #! /bin/bash
      • echo "hi"
  • Загрузить ZIP в качестве источника для CloudФункция
  • перейдите на вкладку «Тестирование» функции Cloud и нажмите «Проверить эту функцию»
  • просмотреть журналы

1 Ответ

0 голосов
/ 06 апреля 2019

Решение, которое я нашел, состояло в том, чтобы переключиться на IBM Cloud Functions. Они позволяют запускать образ докера, поэтому возможно выполнение любого двоичного файла.

Хотя я подозреваю, почему функция Google Cloud не сработала, вероятно, ей не хватило памяти. Но это только предположение

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