触发器:将更新的行发送到Cloud函数



BigQuery表中不支持触发器
一种方法是创建Pub/Sub接收器,并在云函数中接收此事件

假设此数据已更新/插入{ name: 'abc', id: '09nv' }表中

我想在表更新后立即将这些数据发送到云功能。

我能做的最好的事情就是在Pub/Sub消息中发送这个消息。

Pub/Sub message format:
{
"data": string,   // will have to stringify the json row(s) as required format is string
"attributes": {
string: string,
...
},
"messageId": string,
"publishTime": string,
"orderingKey": string
}

然而,我不知道如何在Pub/Sub消息(data(中发送更新后的数据。

如果有Pub/Sub方法之外的其他方法,也可以尝试。

使用Google Pub/Sub,您可以将消息发布到相关主题。消息需要按照模式和指定的格式进行编码。您可以将此消息发送到Cloud Function,并通过Pub/Sub主题发布的消息进行触发。

您需要将消息发布到某个主题。

你可以看到这个例子。此外,您可以在该链接中看到更多文档。

def publish(request):
request_json = request.get_json(silent=True)

topic_name = request_json.get("topic")
message = request_json.get("message")

if not topic_name or not message:
return ('Missing "topic" and/or "message" parameter.', 400)

print(f'Publishing message to topic {topic_name}')

然后,从Pub/Sub主题触发的Cloud功能将向PubSubMessage发送事件。

您需要对云函数进行编码。

def hello_pubsub(event, context):

import base64

print("""This Function was triggered by messageId {} published at {} to {}
""".format(context.event_id, context.timestamp, context.resource["name"]))

if 'data' in event:
name = base64.b64decode(event['data']).decode('utf-8')
else:
name = 'World'
print('Hello {}!'.format(name))

您可以尝试的另一个选项是使用MySQL语言使用CloudSQL。使用Cloud SQL,您可以使用服务器级别的触发器。

Google Cloud SQL是一项易于使用的服务,可提供完全管理的服务云中的SQL数据库。Google Cloud SQL提供MySQL或PostgreSQL数据库。

相关内容

  • 没有找到相关文章

最新更新