Google Cloud PubSub - 如何向 Cloud Function 发送多个参数

Google Cloud PubSub - How to send multiple arguments to the Cloud Function

我一直在使用 Google Cloud PubSub 来触发 Google Cloud Functions。到目前为止,我一直在使用单个参数 "uuid",现在我还需要发送 development/production 标志。

下面是 Google 应用 Engine/Django 中的发布者:

    publisher = pubsub_v1.PublisherClient()
    topic_name = 'projects/project/topics/cloudfunction_topic'
    message_to_publish = video.uuid
    publisher.publish(topic_name, data=message_to_publish.encode('utf-8'), spam='')

下面是 GCF 中的订阅者部分:

    if os.getenv('GCF', None):
        uuid = base64.b64decode(event['data']).decode('utf-8')

我应该如何更改它以便消息中可以有多个参数(video.uuid、production/development)?

最简单的方法 (IMO) 是创建一个 json 结构,并在发送方将其序列化为 utf-8 字符串,然后将其反序列化为 json 结构GCF.

Pub/Sub 消息是 base64 编码的,因此您可以编写 json 并将其从 Pub/Sub 发送到 Cloud Function,或者您可以从 Pub/Bub 传递属性这既是 json 又是纯文本。

例如,如果您 运行 Pub/Sub 像这样手动操作:

您可以添加属性:

“测试”一词是 base64,但 console.dir(事件)例如这样...

    exports.getData = (event, context) => {...
      console.dir(event);

...将在 Cloud Logging 中显示:

然后在您的 Cloud Function 中解析和使用 Pub/Sub 属性就相当容易了。显然,这是 Node,但在 Python.

中会类似