函数计算CFC

    CDN触发器

    用户可以为新建的函数或已有函数配置CDN触发器,创建函数的流程可以具体参考 创建函数 这里不再赘述。

    这里假设用户已完成一个名为hello-cdn的Python函数的创建,以下内容以此为前提,指引用户在CFC控制台在函数管理页面中为函数配置触发器。接下来,我们将通过三步来完成一个触发器的设置。

    编写处理函数

    使用CDN触发器需要用户在函数代码中作出相应的调整,按照CDN的事件格式来编写handler,具体可参考 CDN事件说明

    1. 登录管理控制台,选择“产品服务>云函数计算 CFC”,进入“函数列表”页面。
    2. 在“函数列表”页面,点击名称为hello-cdn的函数,进入函数详情页面。
    3. 在函数详情页中编写函数代码,以对触发操作做出适当的处理,之后点击右下角保存按钮完成函数的修改操作。

      # -*- coding: utf-8 -*-
      def handler(event, context): 
          for record in event['events']:        
              domain = record['eventDetail']['domain']    
              status = record['eventDetail']['status']        
              print("current status of domain '%s' is '%s'" % (domain, status))
          return 'Successfully processed {} records.'.format(len(event['events']))

    配置CDN触发器

    1. 登录管理控制台,选择“产品服务> 函数计算 CFC”,进入“函数列表”页面。
    2. 点击需要添加CDN触发器的函数名称(即hello-cdn),进入函数详情页面。
    3. 点击左侧导航栏中的“触发器”,进入函数配置页面,点击“新增触发器”。

    image.png

    1. 在弹出框中,点击下拉框“选择事件源进行添加”,选择CDN触发器。

    image.png

    1. 之后在弹出框中配置好域名、事件类型和触发器备注,并点击确认,完成触发器的创建。

      • 事件类型:触发器需要匹配的事件类型,可以通过下拉框选择一种类型,这里我们选择“启动域名成功”
      • 域名:CDN服务中管理的域名
      • 备注:触发器的备注信息

    image.png

    1. 在函数配置页面“触发器”一栏中,可以看到刚刚创建好的CDN触发器及其信息。

    image.png

    测试触发器

    1. 点击测试按钮

    image.png

    1. 输入测试事件,并点击执行,测试内容如下

         {
              "events": [
                  {
                      "eventName": "CdnDomainStarted",
                      "eventVersion": "1.0.0",
                      "eventSource": "cdn",
                      "eventTime": 1551085929,
                      "userId": "9b2aa05367204d9481ef29bdf5ef8243",
                      "eventDetail": {
                          "domain": "www.test.com",
                          "status": "started"
                      }
                  }
              ]
          }
    2. 查看返回的结果

    image.png

    CDN事件说明

    事件名称 事件说明 事件粒度 事件版本
    CachedObjectsBlocked 发现违禁资源 用户粒度 1.0.0
    CachedObjectsPushed 预热资源完成 用户粒度 1.0.0
    CachedObjectsRefreshed 刷新资源完成 用户粒度 1.0.0
    CdnDomainCreated 创建域名成功 用户粒度 1.0.0
    CdnDomainDeleted 删除域名成功 用户粒度 1.0.0
    LogFileCreated 产生域名日志 域名粒度、用户粒度 1.0.0
    CdnDomainStarted 启动域名成功 域名粒度、用户粒度 1.0.0
    CdnDomainStopped 停止域名成功 域名粒度、用户粒度 1.0.0

    粒度说明

    事件的粒度分为用户粒度和域名粒度,其中域名粒度更为精细,用户粒度指代用户全局粒度;针对每个CFC函数触发器的设置,不指定具体域名即为用户粒度触发器,指定具体域名即为域名粒度触发器。

    • 用户粒度:用户账户产生指定事件,即可触发相关CFC函数
    • 域名粒度:特定域名产生指定事件,即可触发相关CFC函数

    事件结构

    预热刷新事件 CachedObjectsPushed:用户账户下预热任务完成 CachedObjectsRefreshed:用户账户下刷新任务完成

    {
        "events": [
            {
                "eventName": "CachedObjectsPushed", // 事件类型
                "eventVersion": "1.0.0", // 事件版本
                "eventSource": "cdn", // 事件源
                "eventTime": 1551085930, // 时间戳
                "userId": "9b2aa05367204d9481ef29bdf5ef8243", // 用户账户ID
                "eventDetail": {
                    "taskId": "eJwzMTU3NjQ2MXBIM0tMTTJKNtMklIMkwwsEo0AAbMLeg==", // 任务ID
                    "status": "completed" // 刷新或预热任务完成
                }
            }
        ]
    }

    黄反事件

    CachedObjectsBlocked:用户账户下发现黄反URL

    {
        "events": [
            {
                "eventName": "CachedObjectsBlocked", // 事件类型
                "eventVersion": "1.0.0", // 事件版本
                "eventSource": "cdn", // 事件源
                "eventTime": 1551085930, // 时间戳
                "userId": "9b2aa05367204d9481ef29bdf5ef8243", // 用户账户ID
                "eventDetail": {
                    "url": "http://www.test.com/sexy.jpg", // 黄反URL
                    "status": "slightPorn" // 取值为slightPorn或severePorn
                }
            }
        ]
    }

    日志事件 LogFileCreated:用户账户下某一域名或特定域名产生最近时间访问日志

    {
        "events": [
            {
                "eventName": "CachedObjectsBlocked", // 事件类型
                "eventVersion": "1.0.0", // 事件版本
                "eventSource": "cdn", // 事件源
                "eventTime": 1551085930, // 时间戳
                "userId": "9b2aa05367204d9481ef29bdf5ef8243", // 用户账户ID
                "eventDetail": {
                    "domain": "www.test.com", // 产生日志的域名
                    "logTime": "2019-02-26T12:00:00" // 日志产生时间 
                }
            }
        ]
    }

    域名事件 CdnDomainStarted:用户账户下某一域名或特定域名启动成功 CdnDomainStopped:用户账户下某一域名或特定域名停止成功 CdnDomainCreated:用户账户下某一域名创建成功 CdnDomainDeleted:用户账户下某一域名删除成功

    {
        "events": [
            {
    		    "eventName": "CdnDomainStarted", // 事件类型
    		    "eventVersion": "1.0.0", // 事件版本
    		    "eventSource": "cdn", // 事件源
    		    "eventTime": 1551085930, // 时间戳
    		    "userId": "9b2aa05367204d9481ef29bdf5ef8243", // 用户账户ID
    		    "eventDetail": {
                    "domain": "www.test.com", // 触发动作的域名
                    "status": "started" // 取值为started、stopped、created、deleted
                }
            }
        ]
    }
    上一篇
    触发器概述
    下一篇
    百度消息服务触发器