#firebase #google-cloud-functions
# #firebase #google-cloud-функции
Вопрос:
У меня есть действие Google Assistant, которое использует облачные функции, и в этом действии мне нужно отправлять запросы GET / POST на мой частный сервер.
Мы используем платформу Thingworx для разработки, и она размещена в частном облаке за брандмауэром.
Я также пробовал Postman для отправки этих запросов, и он работал отлично, но когда я использую то же самое в своем действии Google Assistant, это просто не работает, и все, что я получаю, это пустой ответ.
Мой код запроса приведен ниже:
function callMeAPI(agent) {
var request = require("request");
var options = { method: 'GET',
url: 'https://{IP:Port}/Thingworx/Things/{Path}',
qs: { appKey: 'AppKey Used Here' },
headers:
{ 'cache-control': 'no-cache',
Accept: 'application/json' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
agent.add("body");
});
Итак, есть ли какие-либо порты и IP-адреса / URL, которые нам нужно добавить в наши правила брандмауэра, чтобы добавить запросы, исходящие от облачных функций, для прохождения через брандмауэр в наше приложение Thingworx?
Ответ №1:
Вы не должны делать никаких предположений об IP-адресе исходящего трафика, исходящего от облачных функций. Исходный IP-адрес может меняться со временем, в зависимости от инфраструктуры Google, а также в зависимости от того, в каком регионе была развернута ваша функция.
Если вам нужно убедиться, что доступ к вашей сети исходит от вашей функции, вы должны реализовать какую-то аутентификацию в запросе, чтобы ваше собственное приложение могло проверить запрос. Как правило, существует некоторый общий секрет, который знают только обе стороны, что указывает на то, что они знают друг о друге.
Комментарии:
1. Итак, поскольку Firebase динамически выделяет свой IP-адрес, как и другие сервисы Google (например, Карты Google), могу ли я просто внести его в белый список «firebase.google.com » чтобы разрешить его подключение к нашему облаку? Кроме того, использует ли Firebase определенные порты для своих функций, как для FCM (5228)?
2. Это не динамическое распределение IP-адресов. Просто не гарантируется, что они будут из заданного диапазона IP в любой данный момент времени. Исходные порты никогда не гарантируются.