Я пытаюсь запустить сценарий оболочки в облачной функции 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
, содержащий только
- Загрузить ZIP в качестве источника для CloudФункция
- перейдите на вкладку «Тестирование» функции Cloud и нажмите «Проверить эту функцию»
- просмотреть журналы