Как избежать выходных сетевых сборов из облачной функции в облачную SQL? - PullRequest
1 голос
/ 19 апреля 2020

Я наблюдал неожиданную плату за выход в сеть от Google Cloud Functions, и я пытаюсь понять, почему это происходит и как этого избежать.

Мониторинг Stackdriver показывает, что проблемная функция c Функция my ingest, которая считывает файлы из корзины GCS, обрабатывает их и вставляет строки в экземпляр Cloud SQL. См. Здесь корреляцию между выходом сети из облачной функции и полученными байтами для экземпляра SQL.

bytes in/out of cloud function and cloud sql

Функция и облако SQL оба экземпляра находятся в us-central1 (хотя разные зоны в этом регионе). Функция подключается к экземпляру SQL через предоставленную розетку unix. Экземпляр SQL имеет общедоступный c IP-адрес.

На основании пока начисленных сборов я, похоже, плачу $ 0,1 за ГиБ, что похоже на общие выходные цены Inte rnet.

Моя единственная теория сейчас состоит в том, что из-за общедоступного c IP мне взимаются публичные c inte rnet выходные цены для трафика c к экземпляру SQL. Это правдоподобно? Есть ли какая-то другая причина для обвинения? Если это правда, я предполагаю, что заряд будет go убран, если я отключу publi c IP для экземпляра SQL?

1 Ответ

2 голосов
/ 19 апреля 2020

Мне удалось решить эту проблему, добавив частный IP-адрес для экземпляра SQL, Бессерверный VP C Connector и изменив код подключения к базе данных, чтобы явно использовать частный IP-адрес.

Обратите внимание, что если экземпляр имеет и общедоступный c и частный IP-адрес, то подключение через сокет unix при /cloudsql/<instance_connection_name> будет по-прежнему выполняться плата за выход. Если экземпляр имеет только частный IP-адрес, метод сокета unix использует частную сеть и не взимает плату. Поэтому, чтобы сохранить общедоступный IP-адрес c и не брать на себя начальные платежи от облачных функций, вам потребуется использовать частный IP-адрес вместо сокета unix.

...