完成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))
      # 例如,将事件记录到表格存储。
      return "OK"                     

event格式说明

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

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

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

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

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

      说明 event的内容中包含MessageAttributes相关的键值对。更多信息,请参见 PublishMessage
          {
              "key": "value",
              "TopicOwner": "118620210433****",
              "Message": "hello topic",
              "Subscriber": "118620210433****",
              "PublishTime": 1550216302888,
              "SubscriptionName": "test-fc-subscribe",
              "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****",
              "TopicName": "test-topic",
              "MessageId": "2F5B3C281B283D4EAC694B742528****"
          }
                                  

后续步骤

调试函数