使用函数工作流服务实现定时刷新缓存功能
方案概述
定时刷新功能是华为云CDN配合函数工作流,在函数工作流服务创建定时刷新函数,从而实现定时刷新功能。如果您的业务需要定时刷新CDN节点缓存,以保证用户能获取到最新的资源,您可以通过本方案实现
本文以Python3.9为例,为您介绍通过控制台创建FunctionGraph函数和Timer触发器,实现定时刷新CDN缓存的功能。
资源与成本规划
本实践所需资源请见下表。
实施步骤
- 创建委托
- 登录华为云控制台,在左侧导航栏,选择“管理与监管>统一身份认证服务”。
- 在左侧导航栏,选择“委托”页签,单击右上方的“创建委托”。
- 在创建委托页面,按照如下参数设置委托。
- 委托名称:FG_TO_CDN001。
- 委托类型:云服务。
- 云服务:函数工作流FunctionGraph。
- 持续时间:永久。
- 单击“下一步”,在“选择策略”页面勾选“CDN RefreshAndPreheatAccess”策略。
- 单击“下一步”,选择授权范围。可根据业务需求选择“所有资源”或“全局服务资源”。
- 单击“确定”,完成委托创建。
- 创建事件函数
- 创建触发器。在函数界面,单击“创建触发器”,设置相关参数。
- 触发器类型:定时触发器 (TIMER)。
- 定时器名称:自定义的定时器名称,例如:Timer-0001。
- 触发规则:固定频率或Cron表达式。
- 固定频率:固定时间间隔触发函数,该类型下支持配置单位为分、时、天,每种类型仅支持整数配置,其中分钟支持范围(0,60],小时支持范围(0,24],天支持范围(0,30]。
- Cron表达式:设置更为复杂的函数执行计划,例如:周一到周五上午08:30:00执行函数等,具体请参见函数定时触发器Cron表达式规则。
- 是否开启:开启。
- 配置完成后,将根据触发器设置的频率定时执行刷新任务。
代码示例
使用代码示例时请根据需要调整刷新类型(type)及需要刷新的URL(urls)。
# -*- coding:utf-8 -*- import json import requests def handler (event, context): header = {"x-auth-token":context.getToken(),'content-type':'application/json;charset=utf-8'} data = { "refresh_task":{ "type":"file", "urls":["https://example.com/1.txt"] } } url = 'https://cdn.myhuaweicloud.com/v1.0/cdn/content/refresh-tasks' result = requests.post(url=url,headers=header,data=json.dumps(data)) context.getLogger().info(result.text) return { 'statusCode': 200, 'body': result.text, 'isBase64Encoded': False, 'headers': { 'Content-Type': 'application/json' } }