AfterPack API 密钥

创建、限定范围、使用和撤销将本地构建变为 Pro Cloud 构建的密钥。

API 密钥会把本地构建变成 Pro Cloud 构建。没有密钥时,npx afterpack@latest 和每个插件都在本地以 Free 保护运行,不上报任何内容。有了密钥,构建的文件会发送到 AfterPack 的云端引擎,按你的工作区计量并记录在控制台中。

密钥存放在哪里

密钥存放在项目下的 Keys 页面:一个密钥绑定到一个项目,它产生的构建也归属该项目,把构建、Protection Map和用量都分组在其下。除此之外,密钥是工作区级别的凭据:它消耗工作区的额度,并受工作区角色限制。

创建密钥

只有工作区所有者和管理员可以创建密钥,且只能从控制台创建。密钥不能创建另一个密钥。创建对话框会要求填写:

  • 名称(必填,最多 100 个字符):说明用途,例如 CI 流水线。这是之后区分各行的唯一依据,所以要按用途命名。
  • 到期时间(可选,位于 高级 选项下):一个日期,以当地时间当天结束为准。过去的日期会返回错误。
  • 允许的 IP(可选,位于 高级 选项下):以逗号分隔的列表,例如 10.0.0.0/8, 203.0.113.7。
密钥只会显示一次

原始密钥只会返回一次,且从不存储;系统只保留哈希值和一小段非敏感前缀。关闭对话框前请先复制它。如果丢失了,请撤销它并创建一个新的。它无法再次显示。

密钥的形式是 ap_v1_ 后跟 40 个随机的 base62 字符,列表中只显示存储的前缀(ap_v1_ 加六个字符)并附一个 *。密钥会把构建归属到它所在的项目,但不会限制构建可以面向哪个项目。scope.allowedProjects 会返回错误。

使用密钥

引擎解析 key 的顺序依次是:先看 --key=,再看环境变量,最后看 afterpack.json。在 CI 中把 AFTERPACK_key 设为密钥,或者把它写进 afterpack.json 做本地试用:

{ "key": "ap_v1_..." }

两处都没有密钥,构建就会在本地运行:这是默认情况,也是完整的 Free 版路径。

密钥应该放在 CI 里,而不是代码仓库里

afterpack.json 适合本地试用,但提交它会把一个能消耗你工作区额度的凭据公开出去。共享场景下请使用 AFTERPACK_key。参见构建与 CI。

密钥列表

列含义
名称你为它起的名字。
密钥存储的显示前缀,ap_v1_xxxxxx*。
创建时间密钥的创建时间。
过期时间到期日期,或者从未。
最后使用某次构建最后一次用它认证的时间,可用来找出已经没有构建在用的密钥。
状态已启用或已撤销。

轮换

没有原地轮换这回事。轮换始终是先创建新密钥,再撤销旧密钥,而且只要创建时没有设置到期时间,密钥就不会自行过期,所以这两步可以在整个上线过程中并存:

  1. 创建新密钥。
  2. 把它部署到旧密钥曾经使用的每一处(CI 密钥、部署配置)。
  3. 通过最后使用列确认构建正在用它认证。
  4. 撤销旧密钥。

撤销

撤销是立即生效且不可撤回的:密钥会在下一次请求时失效。该行会保留可见,标记为已撤销,而不是消失,方便你了解它曾经的用途。创建者可以撤销自己的密钥,其所在工作区的任何管理员或所有者也可以,所以即使创建者已经离开,密钥依然可以被撤销。撤销是一个控制台操作:API 密钥本身无法撤销任何密钥,包括它自己。构建过程中被撤销的密钥会导致 CLI 的下一次请求随之失败。

密钥泄露时,立即撤销它

撤销会在几秒内全局生效,也是完整的解决办法:AfterPack 创建密钥后从不存储原始密钥,只保留一个不透明的 id、非敏感前缀和加盐哈希,所以事后不存在需要清理的缓存或日志。如果无法访问控制台,请发邮件到 security@afterpack.dev。

使用密钥的构建所受的限制

限制
每个密钥每分钟的请求数Free 版 10 次,付费套餐 100 次
每个 IP 每分钟的请求数100 次
单文件字节数50 MB
每批文件数200
每批字节数500 MB

超出限制的构建会直接失败,而不会回退到未混淆的输出。协议细节和错误码参见 Cloud API。

构建没有出现时

几乎总是以下情况之一:

  1. 没有解析到密钥:构建在本地运行。检查运行构建的地方是否设置了 AFTERPACK_key。
  2. 密钥已撤销或已过期:列表会告诉你是哪一种。
  3. 你打开的项目不对:构建会归属到密钥所在的项目,这可能和你当前打开的项目不同。

下一步