Вопрос
Почему вдруг все вызовы Firebase Cloud Function перестают работать при выполнении через стандартную библиотеку HTTP Ruby (Net :: HTTP)?
Фон
Это прекрасно работает:
require 'net/http'
require 'json'
uri = URI("https://postb.in/1570228026855-4628713761921?hello=world")
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req.body = {a: 1}.to_json
http.request(req)
end
Однако тот же сценарий не работает с URL-адресом облачной функции вместо postb.in.
Выполнение того же POST-запроса к URL-адресу функции облака через cURL работает. Это происходит только при использовании библиотеки ruby Net: HTTP, где время ожидания истекает:
/usr/lib/ruby/2.5.0/net/http.rb:937:in `initialize': execution expired (Net::OpenTimeout)
Эта функция вызывалась много раз в секунду в течение последних нескольких месяцев из сообщения Ruby Net: HTTP Post без проблем. И он вдруг перестал работать прошлой ночью. Я тестировал на нескольких серверах с ruby версиями 2.3.8, а также 2.5.
Код функции облака:
export const testHook = functions.https.onRequest((request, response) => {
console.log(request)
response.status(200).send('works')
})