Я не знал, что облачная функция имеет большие ограничения по региону.Мой сервис развернут в регионе asia-southeast1c (сервис Go на основе кэша Redis в том же регионе и зоне), но, к сожалению, облачная функция доступна только в us-central1.Есть ли какие-либо возможности для запуска этой функции в моем Google Compute Engine, где существует мой экземпляр Redis и Service?
Я пытался использовать VPC, но не знаю, где находится регион, в us-central1.Я хочу реализовать облачную функцию, потому что в ней есть обновление триггера событий, которое я хочу использовать для своей службы, чтобы предоставить кэш-память redis для чтения и записи, которая предоставляет данные для моей службы.Если я извлекаю данные непосредственно из Firebase, это отнимает много времени.
Это мой код, IP-адрес и другая информация о БД и учетной записи службы, которые подвергаются цензуре из-за конфиденциальной информации.
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const bbkey = "outlet:1:available_vehicles:bluebird"
const sbkey = "outlet:1:available_vehicles:silverbird"
Redis = require('ioredis')
var redis = new Redis({
//sentinels: [{host: "XXX.XX.XX.2", port: "26379"},{host: "XXX.XX.XX.3", port: "26379"}],
sentinels: [{host: "XXXXX", port: "26379"},{host: "XXXXXXZ", port: "26379"}],
name: "mymaster"
});
redis.ping(function (err, result) {
console.log(result);
console.log(err)
});
redis.on("error",function(err){
console.log("ERROR! "+err);
});
function Counter (fleetname,serviceType,location,status){
if(serviceType===bbkey&&location==="1:PERIMETER BANDARA"){
date = new Date().getTime();
if(status<=0){
console.log(fleetname+" from Bxxxxxx are inbound pool at "+date);
redis.rpush(bbkey,fleetname);
}
if(status>0){
console.log(fleetname+" from Bxxxxxx are outbound pool at "+date);
redis.lrem(bbkey,0,fleetname);
}
if(serviceType===sbkey&&location==="1:PERIMETER BANDARA"){
date = new Date().getTime();
if(status<=0){
console.log(fleetname+" from Sxxxxxx are inbound pool at "+date);
redis.rpush(sbkey,fleetname)
}
if(status>0){
console.log(fleetname+" from Sxxxxxx are outbound pool at "+date);
redis.lrem(sbkey,0,fleetname)
}
}
}
}
exports.counterTaxi =
functions.database.ref('/airport/{type}/vehicles/{no}/position')
.onUpdate((change, context) => {
console.log('Counting', context.params.no);
const position = change.after.val();
return Counter(context.params.no,context.params.type,position.content.location,position.content.time_out)
})
;