哪个 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 中的数据工厂。
所以,简而言之:
- 使用 username/password
登录数据源
- 从众所周知的格式中提取数据 (CSV/Json)
- 转换数据,例如删除列,执行像日期过滤这样的简单过滤。
- 将数据重新格式化为另一种格式 (JSON/CSV/BigQuery)
...无需从头开始编写所有代码。
我可以用一个 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
这应该是一个非常简单的问题,但我不知道该用什么。我想创建一个数据管道,从 outside/external API(例如,Spotify API)获取数据并对其执行一些相当简单的数据清理,同时继续创建一个JSON Cloud Storage 中的文件或将数据输入 BigQuery。
据我所知,我可以使用 Composer 来完成它,使用 DAGS 等,但我在这里需要的是更多 simple/lightweight(主要基于 UI),而且成本不高就像 Composer 一样,而且更易于使用。我正在寻找的是 Azure 中的数据工厂。
所以,简而言之:
- 使用 username/password 登录数据源
- 从众所周知的格式中提取数据 (CSV/Json)
- 转换数据,例如删除列,执行像日期过滤这样的简单过滤。
- 将数据重新格式化为另一种格式 (JSON/CSV/BigQuery) ...无需从头开始编写所有代码。
我可以用一个 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