Как запустить приложение администратора Firebase с функцией запуска событий в Google Cloud Engine? - PullRequest
1 голос
/ 14 июня 2019

Я не знал, что облачная функция имеет большие ограничения по региону.Мой сервис развернут в регионе 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)
})
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...