当前位置:主页 > 查看内容

基于COS日志实时自动刷新CDN缓存

发布时间:2021-04-16 00:00| 位朋友查看

简介:问题场景 背景:现在很多公司使用对象存储服务来存储静态文件/图片等,充分利用云上功能实现数据处理( 数据万象 ),如 COS 的缩放/裁剪等功能;同时通过 CDN 的加速能力,提升访问质量。 问题:文件删除,可能来自第三方的投诉;可能来自违规;可能来自公……

问题场景

  • 背景:现在很多公司使用对象存储服务来存储静态文件/图片等,充分利用云上功能实现数据处理(数据万象),如COS的缩放/裁剪等功能;同时通过CDN的加速能力,提升访问质量
  • 问题:文件删除,可能来自第三方的投诉;可能来自违规;可能来自公司本身业务需要等等;COS文件删除,CDN需要刷新缓存;如果用了数据处理能力,比如万象,可能会产生同一个key,数个URL,都需要刷新缓存
  • 解决:针对单COS文件删除,及时刷新CDN缓存的问题,目前已提供函数计算功能自动刷新的功能;但针对万象场景,目前函数计算还未覆盖此场景,需要通过COS的实时日志即CLS日志服务来自动实现刷新功能,同时支持第一种场景的覆盖。

架构拓扑

实现过程

前提条件:

  • 先开通对应cos bucket的日志检索功能
  • 获取对应的日志集和日志主题信息
  • 获取账号API密钥信息
  • 获取CLS对应不同地域的公网域名信息

可用地域链接

创建函数服务

基础配置和函数代码:

  • 创建方式:选择"自定义创建"
  • 函数名字:自定义即可,比如refresh_cdn_cache
  • 地域:需要和cos bucket同地域
  • 运行环境:选择"python3.6"
  • 函数代码:选择"本地上传zip包"

本地zip包请使用本文附件:

高级配置-环境配置:

cls_day_num=7                                   # 检索日志的周期
cls_domain=ap-shanghai.cls.tencentcs.com        # 对应区域cls日志服务的公网域名
cos_bucket_name=tinkerli-cls-1251956900         # 对应的cos bucket的名字
hosts=cls-cos.xxxxxxx.cn                        # 对应需要清楚缓存的CDN域名,支持多个,以';'分割
logset_id=49fc1a43-a340-49c8-91be-fcb4abd106a4  # 对应的日志集id
secret_id=AxxxxD7nxxxxxxxxxxLDsiN7B8p  # 对应API密钥id
secret_key=d1AHFJDtdDLjxxxxxxxx    # 对应API密钥key
topic_ids=0b82160f-9c46-4b95-a668-63874b5cf37f  # 对应的日志主题id

触发器配置:

  1. 触发方式:选择COS触发
  2. 事件类型:选择删除文件

功能验证

COS 文件删除:

  • 批量删除和单文件删除均可,比如通过cos的控制台批量删除

查看SCF运行日志:

  • 可以看到批量删除3个文件,触发了三次云函数调用,均成功。

验证CDN刷结果:

  • 到CDN的控制台-查看刷新结果

可以看到各URL均刷新成功,无论带样式的还是拼接URL的

补充说明

  • 腾讯云日志服务已逐步支持腾讯云各种云产品日志接入,如CLB,CDN,COS,TKE等等均已支持;
  • COS批量删除文件,会触发多个文件的删除事件;
  • 本文只是针对一个场景的问题解决,更多基于日志的玩法欢迎交流。

本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐