Cloud Task 位置和 Cloud Function 位置不同

Cloud Task Location and Cloud Function Locations are Different

当我第一次设置我的 Cloud Tasks 时,我从不选择位置,我让 Google 根据我的项目设置来完成。当我 运行 $ gcloud functions list 我所有的功能都在 us-central1

当我去 Cloud Task 控制台检查我的队列时,位置是 us-east1,当我 运行 $ gcloud app describe 我得到 locationId: us-east1

为什么位置不同,这会导致我的项目出现任何问题吗?

我是我的 index.js 文件 我使用以下设置我的 queuePath:

const project = JSON.parse(process.env.FIREBASE_CONFIG!).projectId;
const location = 'us-east1';
const queue = 'ttl-task';

在大多数 (?) 情况下,控制台或 gcloud 要求用户提供部署所需的位置。可能有例外;例如,Firestore 数据库与 App Engine 应用程序位于同一位置,并且 App Engine 应用程序一旦位于项目中就是单例且无法移动。

gcloud 有一个附带的 config 命令,它为后续的 gcloud 命令设置默认值。这可能会引起(不)警惕,我建议不要设置默认值(在授权帐户旁边)并且总是例如使用 gcloud--region=...--location=... 等;这更明显是故意的,尤其是在脚本中(尽管仍然不完善)。

您可能选择了控制台默认设置,或者在部署 Cloud Tasks 时设置了 regionlocation 默认设置。

通常,您希望最小化网络流量“距离”,因为在一个距离内发送网络流量总是更快,例如位置而不是跨位置,因为它们在物理上相距甚远,即使是光也需要非零时间才能通过 space.

问题的答案是这肯定会引起. The function that's associated with the Cloud Task needs to be in the same region as the Cloud Task. It's a very easy fix though.