Skip to content

Aliyun Cdn Sdk

Actions
supports all standard aliyun cdn apis for easy use in github actions
v1.0.2
Latest
Star (3)

Aliyun Cdn Sdk Github Action

language-typescript aliyun-cdn-api-github-action

简介

一款基于阿里云 CDN API 的 Github Action,几乎支持所有的官方 API 调用,具体的细节请结合CDN API 参考

关于如何使用该 action,你可以参考以下,例如:

aliyun-cdn-sdk基于官方仓库官方模板仓库进行创建

使用步骤

1.明确意图

明确你想要用该 Action 来对你的 CDN 做些什么配置。然后去官方 API 文档找到对应的方法,这里以最简单的DescribeCdnDomainConfigs进行演示

DescribeCdnDomainConfigs

2.使用 Action

在你的 yml 文件中,使用该 Action 并传入正确的配置项即可

- name: DescribeCdnDomainConfigs
  id: getDescribeCdnDomainConfigsConfig
  uses: weirui88888/[email protected]
  with:
    accessKeyId: ${{secrets.ALI_ACCESS_KEY_ID}}
    accessKeySecret: ${{secrets.ALI_ACCESS_KEY_SECRET}}
    parameters: '{"action": "DescribeCdnDomainConfigs", "domainName": "your domain name", "functionNames": "filetype_based_ttl_set,set_req_host_header" }'

3.获取 API 返回结果

该 Action 只有一个输出项responseBody,应该也够用了。主要根据该配置项能够获取两个有效信息

  • 1.调用 cdn api 是否成功
  • 2.能够根据responseBody获取一些有用的信息,比如获取配置项的的configId,通过 configId 可以在接下来的步骤中,实现对指定配置的更新和删除

参数说明

入参
  • accessKeyId
  • accessKeySecret
  • parameters

对于前两个参数,直接在阿里云控制台AccessKey管理中获取即可。而parameters参数比较重要,它的类型是字符串对象。形如:

下面的例子是以DescribeCdnDomainConfigs方法做比喻,具体的配置项还需要结合你的使用场景做变更

'{"action": "DescribeCdnDomainConfigs", "domainName": "your domain name", "functionNames": "filetype_based_ttl_set,set_req_host_header" }'

一切配置的信息都在该参数重配置,常见的有

  • action
    • api 方法名,比如上述配置中的DescribeCdnDomainConfigs
  • domainName
    • cdn 域名
  • functionNames
    • 功能函数名称
出参
  • responseBody
    • 调用该 api 的返回结果作为输出项
- name: DescribeCdnDomainConfigs
  # 该步骤的id,后续的步骤可以通过steps.yourid.outputs.responseBody拿到域名配置信息
  id: getDescribeCdnDomainConfigsConfig
  uses: weirui88888/[email protected]
  with:
    accessKeyId: ${{secrets.ALI_ACCESS_KEY_ID}}
    accessKeySecret: ${{secrets.ALI_ACCESS_KEY_SECRET}}
    parameters: '{"action": "DescribeCdnDomainConfigs", "domainName": "your domain name", "functionNames": "filetype_based_ttl_set,set_req_host_header" }'

- name: View My Cdn Domain config
  run: |
    echo ${{steps.getDescribeCdnDomainConfigsConfig.outputs.responseBody}}

调试信息

同时为了能够方便使用者知道自己使用该 Action 的操作行为路径,在应用程序中,我对关键步骤进行了日志输出,方便用户明确自己的入参实际调用CDN方法api调用结果

LOG-MESSAGE

对于 parameters 格式的阐述(拓展)

一般开发者不需要过多关注该部分内容,因为大多数使用场景下,我们并不需要高级配置,也就是parameters.runtimeOptions,除非你有一些高级配置需要配置,具体的配置项请参考aliyun/tea-util

对于基本的参数,只用放到字符串对象顶层即可,比如actiondomainNamefunctionNames等,但是对于一些高级的配置项,需要放置于runtimeOptions字段中,且runtimeOptions字段名是不可修改的

'{
  "action": "DescribeCdnDomainConfigs",
  "domainName": "your domain name",
  "functionNames": "filetype_based_ttl_set,set_req_host_header",
  "runtimeOptions": {
    autoretry?: boolean;
    ignoreSSL?: boolean;
    maxAttempts?: number;
    backoffPolicy?: string;
    backoffPeriod?: number;
    readTimeout?: number;
    connectTimeout?: number;
    httpProxy?: string;
    httpsProxy?: string;
    noProxy?: string;
    ...
  }
}'

另外除了runtimeOptions字段,其他项的 value,在我的程序中都会进行判断,如果typeof value === 'object',我都会调用JSON.stringify进行干涉

let {action, runtimeOptions, ...requestOptions} = JSON.parse(parameters)

for (let [optionsKey, optionValue] of Object.entries(requestOptions)) {
  if (typeof optionValue === 'object') {
    requestOptions[optionsKey] = Util.toJSONString(optionValue)
  }
}

这么做的目的是因为据我了解,大部分的配置项类型都是字符串,如果不做任何处理的话,在经过程序中的 JSON.parse(parameters)解析参数过后,可能因为配置字段类型的问题致使运行程序失败

对于我这么做的方式,我也不确定它到底对不对,但是至少看起来能够保证程序正常的运行。

Contributing

Feel free to submit issues or prs to me.

Aliyun Cdn Sdk is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

supports all standard aliyun cdn apis for easy use in github actions
v1.0.2
Latest

Aliyun Cdn Sdk is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.