我有一个像这样的云功能,它已经被设置为在多个地区运行。
export const cloudFunction = functions .region(["asia-south1", "us-central1", "europe-west1", "southamerica-east1"]) .https.onCall(async (data, context) => {});
如何调用离用户最近的云函数区域?从任何客户端框架?
ffscu2ro1#
每个云功能都有自己的URL,其中包含区域,因此您必须根据用户自己的时区找到最接近的区域,并在客户端指定区域。例如,一种方法如下:
const getClosestGcpRegion = () => { const regions = ['asia-south1', 'us-central1', 'europe-west1'] const regionOffsets = { 'asia-south1': '+05:30', 'us-central1': '-06:00', 'europe-west1': '+01:00', } let closestRegion = '' let closestOffset = Number.MAX_SAFE_INTEGER for (const region of regions) { const offset = regionOffsets[region].split(':') const offsetMinutes = Number(offset[0]) * 60 + Number(offset[1]) const offsetDiff = Math.abs(DateTime.local().offset - offsetMinutes) if (offsetDiff < closestOffset) { closestOffset = offsetDiff closestRegion = region } } console.log({ closestRegion }) return closestRegion; } export const functions = getFunctions(app, getClosestGcpRegion())
或者,也 checkout 全球外部HTTP(S)负载平衡器与云功能,可以帮助您实现相同的目标.
1条答案
按热度按时间ffscu2ro1#
每个云功能都有自己的URL,其中包含区域,因此您必须根据用户自己的时区找到最接近的区域,并在客户端指定区域。例如,一种方法如下:
或者,也 checkout 全球外部HTTP(S)负载平衡器与云功能,可以帮助您实现相同的目标.