哪个 Google 云函数更适合从外部 API 获取数据到 GCP?

Which Google Cloud function is preferable to fetch data from external API into GCP?

这应该是一个非常简单的问题,但我不知道该用什么。我想创建一个数据管道,从 outside/external API(例如,Spotify API)获取数据并对其执行一些相当简单的数据清理,同时继续创建一个JSON Cloud Storage 中的文件或将数据输入 BigQuery。

据我所知,我可以使用 Composer 来完成它,使用 DAGS 等,但我在这里需要的是更多 simple/lightweight(主要基于 UI),而且成本不高就像 Composer 一样,而且更易于使用。我正在寻找的是 Azure 中的数据工厂。

所以,简而言之:

我可以用一个 GCP 应用程序处理所有这些吗?还是我需要组合使用 Cloud Scheduler、Cloud Functions 等?

一如既往,您有多种选择...

Cloud Scheduler 似乎需要定期触发该过程(最多每分钟一次)。

那么,你有两个选择:

  • 编码流程:API调用,transform/clean数据,将数据下沉到目的地
  • 使用 Cloud Workflow:您可以定义要执行的 API 调用
    • 调用API
    • 将原始数据存储在 BigQuery 中(API 也可以调用,您有连接器可以简化流程)
    • 运行 在 BigQuery 中查询 clean/format 您的数据并将它们存储到最终 table (API 也调用)

您还可以混合使用 Cloud Functions 获取数据和 clean/format 通过 BigQuery 中的查询获取数据。


不从头开始做这样的具体事情...很难...


编辑 1

如果您查看 the documentation,您可以看到该示例

- getCurrentTime:
    call: http.get
    args:
      url: https://us-central1-workflowsample.cloudfunctions.net/datetime
    result: currentTime
- readWikipedia:
    call: http.get
    args:
      url: https://en.wikipedia.org/w/api.php
      query:
        action: opensearch
        search: ${currentTime.body.dayOfTheWeek}
    result: wikiResult
- returnResult:
    return: ${wikiResult.body[1]}

第一步getCurrentTime执行外部调用,并将结果存入result: currentTime

在下一步中,您可以重用结果 currentTime 并在另一个 API 调用中仅获取您想要的值。

你可以插入这样的步骤。

如果需要鉴权,可以调用secretmanager获取secret值,然后在后续步骤中得到secretmanager的调用结果。

为了更轻松地连接到 Google API,您可以使用 connectors