完成 MNS 主题触发器创建后,您可以开始写入函数代码。本文介绍如何使用函数计算控制台编写函数。

前提条件

创建触发器

编写函数代码(Python)

  1. 登录函数计算控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击服务-函数
  4. 找到目标服务下的目标函数,单击函数名称。
  5. 单击代码执行页签,在代码编辑器中编写代码。
    本文以 Python 函数代码为例。以下示例代码可以作为 MNS 主题触发器的函数模板。
    import json
    import logging
    
    def handler(event, context):
      logger = logging.getLogger()
      logger.info("mns_topic trigger event = {}".format(event))
      # do your things, for example, record event to tablestore
      return "OK"                     

event 格式说明

发布在 MNS Topic 上的消息根据 notifyContentFormat 进行处理,即入口函数的 event。更多信息,请参见 NotifyContentFormat

  • 创建触发器时,若 event 格式设置为 STREAM
    • 当消息中不含消息属性(MessageAttributes)时,event 格式如下。

      说明 当消息中不含消息属性(MessageAttributes)时,event 的内容格式为 JSON 字符串。
      # message body
      'hello topic'
    • 当消息中含有消息属性(MessageAttributes)时,event 格式如下。

      说明 event 的内容中包含 MessageAttributes 相关的键值对。详情请参见 PublishMessage
          {
              "body": "hello topic",
              "attrs": {
                  "Extend": "{\\"key\\":\\"value\\"}"
              }
          }                    
  • 创建触发器时,若 event 格式设置为 JSON
    • 当消息中不含消息属性(MessageAttributes)时,event 格式如下。

          {
              "TopicOwner": "1186202104331798",
              "Message": "hello topic",
              "Subscriber": "1186202104331798",
              "PublishTime": 1550216480040,
              "SubscriptionName": "test-fc-subscibe",
              "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C39DBB",
              "TopicName": "test-topic",
              "MessageId": "2F5B3C082B923D4EAC694B76D928B5B8"
          }        
      							
    • 当消息中含有消息属性(MessageAttributes)时,event 格式如下。

      说明 event 的内容中包含 MessageAttributes 相关的键值对。详情请参见 PublishMessage
          {
              "key": "value",
              "TopicOwner": "1186202104331798",
              "Message": "hello topic",
              "Subscriber": "1186202104331798",
              "PublishTime": 1550216302888,
              "SubscriptionName": "test-fc-subscibe",
              "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C39DBB",
              "TopicName": "test-topic",
              "MessageId": "2F5B3C281B283D4EAC694B7425288675"
          }
      							

后续步骤

调试函数