CDN触发器使用示例
更新时间:2024-07-05
用户可以为新建的函数或已有函数配置CDN触发器,创建函数的流程可以具体参考 从头创建函数 这里不再赘述。
这里假设用户已完成一个名为hello-cdn的Python函数的创建,以下内容以此为前提,指引用户在CFC控制台在函数管理页面中为函数配置触发器。接下来,我们将通过三步来完成一个触发器的设置。
编写处理函数
使用CDN触发器需要用户在函数代码中作出相应的调整,按照CDN的事件格式来编写handler,具体可参考 CDN事件说明。
- 登录管理控制台,选择“产品服务>云函数计算 CFC”,进入“函数列表”页面。
- 在“函数列表”页面,点击名称为hello-cdn的函数,进入函数详情页面。
-
在函数详情页中编写函数代码,以对触发操作做出适当的处理,之后点击右下角保存按钮完成函数的修改操作。
# -*- 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触发器
- 登录管理控制台,选择“产品服务> 函数计算 CFC”,进入“函数列表”页面。
- 点击需要添加CDN触发器的函数名称(即hello-cdn),进入函数详情页面。
- 点击左侧导航栏中的“触发器”,进入函数配置页面,点击“新增触发器”。
- 在弹出框中,点击下拉框“选择事件源进行添加”,选择CDN触发器。
-
之后在弹出框中配置好域名、事件类型和触发器备注,并点击确认,完成触发器的创建。
- 事件类型:触发器需要匹配的事件类型,可以通过下拉框选择一种类型,这里我们选择“启动域名成功”
- 域名:CDN服务中管理的域名
- 备注:触发器的备注信息
- 在函数配置页面“触发器”一栏中,可以看到刚刚创建好的CDN触发器及其信息。
测试触发器
- 点击测试按钮
-
输入测试事件,并点击执行,测试内容如下
{ "events": [ { "eventName": "CdnDomainStarted", "eventVersion": "1.0.0", "eventSource": "cdn", "eventTime": 1551085929, "userId": "9b2aa05367204d9481ef29bdf5ef8243", "eventDetail": { "domain": "www.test.com", "status": "started" } } ] }
- 查看返回的结果
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
}
}
]
}