Skip to content

This is a @serverless-devs/s plugin to help you refresh cdn cache

License

Notifications You must be signed in to change notification settings

DevDengChao/refresh-cdn-cache

Repository files navigation

Refresh CDN cache plugin for @Serverless-Devs/s

Node.js CI

此插件可以帮你在 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 的密钥:

  1. args 中显式提供的 accessKeyId, accessKeySecret 等参数.
  2. args 中 access 参数对应的 @serverless-devs/s 配置项.
  3. 环境变量中的 ALIYUN_CDN_ACCESS_KEY_ID 等参数.
  4. 当前正在操作 @serverless-devs/s 命令行工具的密钥.
    1. s.yaml 文档的 service 对象中 access 参数对应的 @serverless-devs/s 配置项.
    2. s.yaml 文档根对象中 access 参数对应的 @serverless-devs/s 配置项.

环境变量命名规则

当使用环境变量来提供操作 CDN 所需的密钥时, 应当按 ${CDN}_CDN_${密钥字段}CDN_${密钥字段} 的格式对环境变量进行命名.

以阿里云 CDN 为例: CDN 的值 ALIYUN, 密钥字段包括 ACCESS_KEY_IDACCESS_KEY_SECRET 两部分. 因此完整的环境变量名为: ALIYUN_CDN_ACCESS_KEY_IDCDN_ACCESS_KEY_ID, 以及 ALIYUN_CDN_ACCESS_KEY_SECRETCDN_ACCESS_KEY_SECRET.

License

MIT