使用阿里云API刷新CDN缓存

本时工作中经常需要向阿里云环境部署新的版本,部署完毕之后需要到阿里云管理控制台刷新页面的CDN缓存。这个过程中部署部分我现在是使用bash脚本完成的,很方便。但刷新页面CDN缓存一直是手工操作的,每次都要登录进入阿里云管理控制台,很是麻烦。今天突然想到是否可以调用阿里云API完成这个动作了,查一查还真查到了,链接在这里。下面就想办法调用一下这个API。正好最近在学python,而且阿里云API也有python的SDK,就拿到使使。

编译python

由于SLES11SP2系统本身所带的python版本比较低,而阿里云依赖的python版本至少要2.7。时为了不影响系统自带的python,这个手工编译python。

zypper install -y -t pattern Basis-Devel
zypper install -y libbz2-devel readline-devel ncurses-devel libopenssl-devel libxslt-devel
wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz
tar zxvf Python-2.7.12.tgz
cd Python-2.7.12
./configure --prefix=/opt/python2.7
make && make installl

创建virtualenv环境

为了不在全局安装第三方python模块,这里使用virtaulenv构建出一个虚拟环境

wget https://pypi.python.org/packages/8b/2c/c0d3e47709d0458816167002e1aa3d64d03bdeb2a9d57c5bd18448fd24cd/virtualenv-15.0.3.tar.gz#md5=a5a061ad8a37d973d27eb197d05d99bf
tar zxvf virtualenv-15.0.3.tar.gz
cd virtualenv-15.0.3
/opt/python2.7/bin/python setup.py install
/opt/python2.7/bin/virtualenv /opt/refresh_cdn_cache
source /opt/refresh_cdn_cache/bin/activate
pip install aliyun-python-sdk-cdn
deactivate

编写调用阿里云API的脚本

将调用api的python脚本放到这个目录

/opt/refresh_cdn_cache/refresh_cdn_cache.py

#!/usr/bin/env python

from aliyunsdkcore import client
Client=client.AcsClient('${AccessKey}','${AccessSecret}','cn-hangzhou')

from aliyunsdkcdn.request.v20141111 import RefreshObjectCachesRequest
request = RefreshObjectCachesRequest.RefreshObjectCachesRequest()
request.set_accept_format('json')
request.set_ObjectPath('https://yun.cloudbility.com/\nhttp://yun.cloudbility.com/')
request.set_ObjectType("Directory")

result=Client.do_action(request)

print result

改造原来的部署脚本

最后在原来的bash部署脚本最后添加一小段脚本如下:

......
#部署完毕之后,稍等一会儿,然后调用python脚本完成CDN页面缓存的刷新
sleep 15
source /opt/refresh_cdn_cache/bin/activate
python /opt/refresh_cdn_cache/refresh_cdn_cache.py
deactivate

总结

python配合virtualenv、pip等工具搭建一个独立不受干扰的环境确实很方便。另外这种第三方的API还是使用python这种脚本语言去调用更方便,调试起来还很方便。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏冷冷

tomcat不能运行或共存多个项目

我在Tomcat下部署了两个项目,但是一个可以运行,另一个不可以,第一感觉是内存问题,给tomcat多分配了内存.但是没有作用. 原因是少了webAppRoot...

2099
来自专栏性能与架构

高级的 Redis Java客户端 - Lettuce

1.5K4
来自专栏WindCoder

Eclipse创建AIDL文件

在学习Android的Service时,需要用到个AIDL文件,Eclipse中Android Tools并没有Create Aidl preprocess f...

1311
来自专栏DT乱“码”

gitHub基本命令

一.要提交文件到github 必须配置本地配置文件 .git文件夹的 config ? 在config文件末尾加上 [user]     name=XXX ...

3686
来自专栏linux驱动个人学习

Linux下的进程类别(内核线程、轻量级进程和用户进程)--Linux进程的管理与调度(四)

虽然我们在区分Linux进程类别, 但是我还是想说Linux下只有一种类型的进程,那就是task_struct,当然我也想说linux其实也没有线程的概念, 只...

1852
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装Redis

Redis是一个内存中的键值存储器,以其灵活性,性能和广泛的语言支持而闻名。它通常用作数据库,缓存和消息代理,并支持各种数据结构。

3282
来自专栏Pythonista

mysql+centos7+主从复制

1343
来自专栏安全运维

Windows MySQL服务配置、重置密码

1120
来自专栏玄魂工作室

Hacker基础之Linux篇:基础Linux命令二

1. mv mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files)。 是Linux系统下常用的命令,经常用来备份文...

35910
来自专栏Java架构师历程

Centos6.5下docker 环境搭建

一.运行docker Linux内核版本需要在3.8以上,针对centos6.5 内核为2.6的系统需要先升级内核.不然会特别卡,退出容器.

5404

扫码关注云+社区