Вызовите облачную функцию httpsCallable с помощью Google Cloud Scheduler и передайте некоторые данные.

У меня есть вызываемая облачная функция firebase, которая throws при вызове без каких-либо данных.

/functions/index.js

export.someCallableFunction = functions.https.onCall(someCallableFunction);

Я хочу настроить облачный планировщик, чтобы пинговать его и избегать холодных запусков, когда это возможно (я знаю, что избежать холодных запусков не на 100%).

От: https://console.cloud.google.com/cloudscheduler/jobs

введите описание изображения здесь

Могу ли я сделать это с помощью вызываемых функций? Как я могу передать им данные?

Мне нужно будет создать обычную HTTP функцию запроса, чтобы сначала запланировать вызовы к ней, а затем заставить ее вызывать callable?


person cbdeveloper    schedule 06.07.2020    source источник


Ответы (2)


Если вы хотите вызвать вызываемую функцию без клиентской библиотеки, вам придется следовать ее протоколу спецификация. По сути, вам нужно отправить на него POST с полезной нагрузкой JSON. Вам решать, как заставить и функцию, и планировщик согласовать то, что не вызывает исключения.

Вполне возможно, что Cloud Scheduler просто не позволяет достаточно конфигурации для поддержки минимально необходимых заголовков, требуемых вызываемыми объектами. В этом случае вам придется использовать что-то другое, кроме Cloud Scheduler, для вызова функции.

person Doug Stevenson    schedule 06.07.2020
comment
Спасибо за помощь, Дуг. Итак, admin.functions().httpsCallable('addMessage')({...someData}); не будет работать, верно? Не могли бы вы порекомендовать что-нибудь, чтобы избежать холодных запусков при вызове? При холодном запуске им требуется от 5 до 7 секунд на реакцию. - person cbdeveloper; 06.07.2020
comment
Используйте другую службу планирования, которая позволяет запускать код, который можно использовать для реализации спецификации. У вас есть много вариантов - некоторые из них можно найти при поиске в Интернете. - person Doug Stevenson; 06.07.2020

Это легко сделать, если вы знаете некоторые особенности. Я сделал видеоурок о том, как это сделать: https://www.youtube.com/watch?v=WBYt4Mphf6E

Вам необходимо установить правильные заголовки с помощью Google Cloud SDK и запустить задание с консоли. Также требуются данные тела.

person August Kimo    schedule 16.11.2020