此插件可以帮你在 Serverless-Devs 运行过程中刷新指定 URL 上的 CDN 缓存.
在 s.yaml 文件的 post-deploy
插槽中声明该插件即可:
services:
default:
actions:
post-deploy:
- plugin: refresh-cdn-cache
args:
cdn: aliyun
access: cdn
accessKeyId: ${env(CDN_ACCESS_KEY_ID)}
accessKeySecret: ${env(CDN_ACCESS_KEY_SECRET)}
paths:
# 刷新单个 URL
- https://blog.dengchao.fun/index.html
# 刷新单个目录
- https://blog.dengchao.fun/tag/
# 使用 ^ 开头 $ 结尾的表达式进行匹配
- ^https://blog.dengchao.fun/2022/.*$
component: devsapp/fc
props:
region: cn-shenzhen
service:
name: dummy-service
function:
name: dummy-function
handler: dummy-handler
runtime: custom
codeUri: ./
- paths: 待刷新的 URL.
- 说明: 必填, 可填写单个字符串或者字符串数组.
当以/
结尾时, 刷新整个目录. 当以^
开头并以$
结尾时刷新匹配表达式的全部 URL. - 示例值:
https://example.com/
- 说明: 必填, 可填写单个字符串或者字符串数组.
- cdn: CDN 服务供应商标识.
- 说明: 选填, 当该参数未填写时, 将通过 service.component 来推断对应的取值. 不区分大小写.
- 示例值:
aliyun
alibaba
- access: @serverless-devs/s 配置列表中的其中一个配置别名.
- 说明: 选填, 当填写该参数时, 插件将尝试加载对应的配置作为操作 CDN 时的密钥. 区分大小写.
- 示例值:
default
- accessKeyId: 选填, 访问密钥 ID.
- accessKeySecret: 选填, 访问密钥密码.
该插件将按下列优先级顺序, 由高到底依次尝试加载用于操作 CDN 的密钥:
- args 中显式提供的
accessKeyId
,accessKeySecret
等参数. - args 中
access
参数对应的 @serverless-devs/s 配置项. - 环境变量中的
ALIYUN_CDN_ACCESS_KEY_ID
等参数. - 当前正在操作 @serverless-devs/s 命令行工具的密钥.
- s.yaml 文档的 service 对象中
access
参数对应的 @serverless-devs/s 配置项. - s.yaml 文档根对象中
access
参数对应的 @serverless-devs/s 配置项.
- s.yaml 文档的 service 对象中
当使用环境变量来提供操作 CDN 所需的密钥时, 应当按 ${CDN}_CDN_${密钥字段}
或 CDN_${密钥字段}
的格式对环境变量进行命名.
以阿里云 CDN 为例: CDN
的值 ALIYUN
, 密钥字段包括 ACCESS_KEY_ID
与 ACCESS_KEY_SECRET
两部分.
因此完整的环境变量名为: ALIYUN_CDN_ACCESS_KEY_ID
或 CDN_ACCESS_KEY_ID
, 以及 ALIYUN_CDN_ACCESS_KEY_SECRET
或 CDN_ACCESS_KEY_SECRET
.