用阿里云效+CLI实现ESA CDN缓存自动刷新

📝 背景简介

在之前的一篇文章《阿里云效静态部署 NotionNext 的完整指南》中介绍到了使用阿里云效作为CI/CD构建部署网站。

问题来了,由于网站接入了 CDN 缓存,每次部署完后并不能及时刷新内容,导致长时间内看到的都是缓存信息。

之前为了刷新缓存,还需要登录阿里云控制台,进入ESA中手动刷新缓存,这种方式太过于繁琐,还容易遗漏,因此就想要自动化的完成刷新。

本文主要介绍通过阿里云效 + 阿里CLI自动完成缓存刷新。

🛠️ 工具介绍

☁️ 什么是阿里云效?

云效是阿里云提供的一站式DevOps平台,提供涵盖软件研发全生命周期的研发工具链和研发管理服务,并支持公共云、专有云多种部署形态。

🔧 什么是阿里云CLI?

阿里云CLI(Alibaba Cloud CLI)是基于 OpenAPI 构建的通用命令行工具,您可以借助阿里云CLI在命令行界面中对阿里云资源执行增删改查等日常运维任务。

相当于通过CLI我们不用再去调 OpenAPI 了,它都帮我们封装好了。

🧩 前提条件

1、已开通 ESA (CDN) 服务,并获取加速域名。

2、拥有 阿里云 RAM 子账号,授予 AliyunCDNFullAccess 权限

PS:也可以直接用根账号不过可能存在安全风险

3、已在 阿里云效 创建项目,并启用流水线功能。

4、已安装并初始化阿里云 CLI,版本不低于 3.0.124。

🔄 自动刷新 ESA CDN 的实现步骤

1️⃣ 安装阿里云 CLI(首次使用)

在 Linux 服务器上执行以下命令:

1
/bin/bash -c "$(curl -fsSL https://aliyuncli.alicdn.com/install.sh)"

验证安装结果

1
2
3
4
aliyun version

#若打印以下内容则表示安装成功
3.0.278

2️⃣ 配置 CLI 访问凭证

在安装完成后还需要配置一下才能正常使用。

1
2
3
4
5
6
aliyun configure set \
--profile AkProfile \
--mode AK \
--access-key-id <yourAccessKeyID> \
--access-key-secret <yourAccessKeySecret> \
--region cn-hangzhou

其中的<yourAccessKeyID><yourAccessKeySecret>可以从阿里云RAM访问控制中创建获取。

3️⃣ 在云效流水线中新增“CDN刷新和预热”阶段

进入阿里云效流水线 → 打开目标流水线 ➜ 点击 编辑 ➜ 在最后面添加一个新任务

我这里是选择Docker部署(主机Docker部署)

选择安装阿里CLI的主机组

部署脚本填写以下内容:

1
2
3
4
5
6
7
8
9
10
# 刷新ESA
aliyun esa PurgeCaches \
--SiteId <站点ID> \
--Type file \
--Content '{"Files": ["https://blog.lusyoe.com/"]}'

# 预热ESA
aliyun esa PreloadCaches \
--SiteId <站点ID> \
--Content '["https://blog.lusyoe.com/"]'

其中<站点ID>即为ESA创建站点时的ID,可从ESA控制台 → 站点管理 → 站点详情 中查看,如下图:

4️⃣ 验证刷新效果

1、部署完成后查看流水线日志,确认 CLI 执行无报错。

2、登录 ESA 控制台 ➜ 站点管理 → 点击站点进入详情 → 缓存 → 刷新缓存 → 刷新记录,确认刷新任务状态为完成。

✅ 总结

借助阿里云效流水线与 CLI 工具,您可以实现:

  • 自动化部署后即时刷新 ESA 缓存
  • 避免缓存过期带来的用户访问异常
  • 提升发布效率与平台可靠性

📎 参考文章