繁体   English   中英

Google Cloud Function - Python 从 Webhook 获取数据的脚本

[英]Google Cloud Function - Python script to get data from Webhook

我希望有人能帮助我解决我的问题。

我创建了一个 google-cloud function,它触发了 http,并在 customer.io 中设置了一个 webhook

我需要捕获 customer.io 应用程序发送的数据。 这应该触发谷歌云 function 并在云 function 中运行 python 脚本设置。我是编写 python 脚本及其库的新手。 最终目标是将 webhook 数据写入 bigquery 表。

现在,我能够看到触发器正在工作,因为我看到了应用程序使用 function 日志发送的打印数据。 我还可以从 textpayload 中的日志中检查数据的模式。

这是我想在 bigquery 表上加载的 textpayload 的示例数据:

{
   "data":{
      "action_id":42,
      "campaign_id":23,
      "customer_id":"user-123",
      "delivery_id":"RAECAAFwnUSneIa0ZXkmq8EdkAM==-",
      "identifiers":{
         "id":"user-123"
      },
      "recipient":"test@example.com",
      "subject":"Thanks for signing up"
   },
   "event_id":"01E2EMRMM6TZ12TF9WGZN0WJaa",
   "metric":"sent",
   "object_type":"email",
   "timestamp":1669337039
}

这是我在 google-cloud function 上创建的示例 Python 代码:

import os

def webhook(request):
    request_json = request.get_json()
    if request.method == 'POST':
        print(request_json)
        return 'success'
    else:
        return 'failed'

我只尝试从 webhook 打印数据,我期望有一个 Python 代码将此 textpayload 数据写入 bigquery 表。

{
   "data":{
      "action_id":42,
      "campaign_id":23,
      "customer_id":"user-123",
      "delivery_id":"RAECAAFwnUSneIa0ZXkmq8EdkAM==-",
      "identifiers":{
         "id":"user-123"
      },
      "recipient":"test@example.com",
      "subject":"Thanks for signing up"
   },
   "event_id":"01E2EMRMM6TZ12TF9WGZN0WJaa",
   "metric":"sent",
   "object_type":"email",
   "timestamp":1669337039
}

因此,您有一个云 function,它会在 webhook 向其发送一些数据时执行一些代码。

这个云 function 现在需要的是 BigQuery python 客户端库。 这是一个如何使用它的例子( 来源):

from google.cloud import bigquery

client = bigquery.Client()

dataset_id = ...
table_name = ...
data = ... 

dataset_ref = client.dataset(dataset_id)
table_ref = dataset_ref.table(table_name)
table = client.get_table(table_ref)
result = client.insert_rows(table, data)

所以你可以把这样的东西放到你的云 function 中,以便将你的数据发送到目标 BigQuery 表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM