上云无忧 > 文档中心 > 百度智能云函数计算 CFC CDN触发器
函数计算CFC
百度智能云函数计算 CFC CDN触发器

文档简介:
用户可以为新建的函数或已有函数配置CDN触发器,创建函数的流程可以具体参考 创建函数 这里不再赘述。 这里假设用户已完成一个名为hello-cdn的Python函数的创建,以下内容以此为前提,指引用户在CFC控制台在函数管理页面中为函数配置触发器。接下来,我们将通过三步来完成一个触发器的设置。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

用户可以为新建的函数或已有函数配置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. 点击左侧导航栏中的“触发器”,进入函数配置页面,点击“新增触发器”。

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

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

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

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

测试触发器

  1. 点击测试按钮

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

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

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
            }
        }
    ]
}
相似文档
  • 百度消息服务是全兼容 Apache Kafka 的分布式、高可扩展、高通量的消息托管服务。 如果在百度消息服务的 Topic 上检测到记录,您可以使用 CFC 函数从此 Topic 读取成批的数据来处理,并且 CFC 会定期轮询(每秒一次)Topic 中的新记录。
  • 函数计算支持定时触发器,即在指定的时间点触发函数的执行。触发的时间使用 UTC 时区,计划的最小精度为 1 分钟。 登录管理控制台,选择“产品服务> 函数计算 CFC”,进入“函数列表”页面。 点击需要添加定时触发器的函数名称(即 crontabtrigger),进入函数详情页面。 点击左侧导航栏中的“触发器”,进入函数配置页面。
  • 用户可以使用 cron 或 rate 表达式在函数计算中创建按计划自行触发的规则。所有表达式都使用 UTC 时区,计划的最小精度为 1 分钟。 CFC提供支持 cron 表达式和 rate 表达式。cron 表达式支持的具体的执行您可以定义具体的那一天的那一分钟。 而Rate 表达式更容易定义,它以一定的间隔触发规则,例如每小时一次或每天一次。
  • HTTP触发器实现了将某个函数关联到一个 URL 上(包含相应的 CRUD 操作),它可以接收 HTTP 请求,根据 HTTP 方法、URL,找到匹配的函数将 HTTP 相关信息传入并执行函数,获取执行结果,将函数执行结果包装为 HTTP 返回响应。创建HTTP触发器的核心步骤包括HTTP触发器配置和用户代码配置,以下将为您分别介绍。
  • 用户可以为新建的函数或已有函数配置HTTP触发器,创建函数的流程可以具体参考 创建函数 这里不再赘述。 这里假设用户已完成一个名为httptrigger-helloworld的Nodejs函数的创建,以下内容以此为前提,指引用户在CFC控制台在函数管理页面中为函数配置触发器。接下来,我们将通过三步来完成一个触发器的设置。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部