Есть несколько хороших ответов для обоих этих сценариев ios - но не вместе.
1. Мне нужно вызвать внешний API через белый статический IP-адрес. См .: Связывание выхода из облачной функции со статическим c IP-адресом a) вызов внешнего API из облачной функции b) маршрутизирует весь выход из этой облачной функции через VP C Connector в vpcnetwork-1 (диапазон IP-адресов = 10.8.10.0/28) c) использует Cloud NAT, который направляет весь трафик c в vpcnetwork-1 через [STATI C IP] (в белом списке внешнего API)
2. Затем мне нужно взять эти данные API и отправить их в экземпляр Cloud SQL (в данном случае MySQL). См .: Подключение к облаку SQL из облачных функций a) создать UNIX подключение к сокету с [Cloud SQL Instance]
Когда я запускаю с VP C Connector (как показано выше), я получаю: 1) УСПЕХА! Я получил данные API, используя мой белый IP-адрес 2) СОЕДИНЕНИЕ ОТКАЗАНО [Cloud SQL Instance] - потому что я использую статический c внешний IP? Использует ли socketpath внешний или подключается в моем облачном проекте Google?
Если я удалю разъем VP C из своей облачной функции, я получу: 1) СОЕДИНЕНИЕ ОТКАЗАНО - этот IP-адрес не включен в белый список (потому что я больше не использую stati c IP) 2) УСПЕХА! Теперь я могу подключиться к [Cloud SQL Instance] (используя UNIX socketpath, userid, password)
Как мне заставить их работать в одной облачной функции? Я вижу, что могу «перенаправлять запросы только на частные IP-адреса через разъем VP C», но я действительно хочу противоположность этому. Я хочу направлять только внешние запросы на соединитель VP C, использовать мой stati c IP, а затем сохранять свою частную маршрутизацию для соединений внутри моего GCP.
ДОБАВЛЕНО: Я использую Javascript mysql для подключения к облаку SQL.
var pool = mysql.createPool({ socketPath: '/cloudsql/[instance_connection_name]',
user: uid,
password: pwd,
database: 'mysql_db' });
var result = pool.query(sql, {}, (err,result)=> {});
Работает нормально, без использования разъема VP C. Когда я использую разъем VP C с внешним IP-адресом stati c, в этом соединении отказывается. Не потому ли, что VP C Connector и экземпляр Cloud SQL не находятся на одном VP C? Я не думаю, что Cloud SQL связан с VP C, не так ли?