使用 API 将 Bigquery 数据导出到外部应用程序的最佳 GCP 架构

The best GCP architecture for exporting Bigquery data to an external application with API

我将以下这些 GCP 产品一起用于 CRM 系统:

每周一次,外部应用程序以这种方式从 Bigquery 导出数据:

  1. 外部应用程序使用令牌向 Appengine 发出请求。
  2. AppEngine 从云端检索此令牌的权限 SQL,进行一些额外的计算以获得允许的 ID 列表。
  3. Appengine 运行使用这些 ID 过滤的 Bigquery 查询。类似这样的东西:SELECT * FROM table WHERE id IN(ids)
  4. Appengine 在 JSON.
  5. 中使用未修改的查询结果响应外部应用程序

问题是导出不是很频繁,但数据量可能很大,我不想用这些数据加载 AppEngine。在这种情况下还有哪些其他 GCP 产品有用?请记住,我需要从 Appengine 和 CloudSQL.

检索权限

不清楚 JSON 是直接来自 BigQuery 查询结果,还是您在应用程序中对 render/format 进行了额外处理。我假设直接结果。

想到的一个选择是利用云存储。您可以使用 signed url 功能为您的(潜在的大)结果提供 time-limited link,而无需公开 public 访问权限。

加上 BigQuery 将结果导出到 GCS 的能力(通过 export job, or using the newer EXPORT DATA SQL 语句,您可以 运行 查询并将结果直接传送到 GCS。

有了这个,您可以简单地将用户重定向到当前流程末尾的已签名 URL。这里还有一些额外的功能是互补的,例如使用 GCS 数据生命周期功能自动老化和删除文件,因此您无需担心结果的缓慢积累。