PAYATHON 2026

Azure Artifact 上传失败:数量超限或支付工具无效

支付老李

结论

这类错误通常不取决于“当前已用存储空间是否显示为 0 GB”,而是 Azure DevOps 组织的 Artifacts 计费状态、消费上限或关联 Azure 订阅的支付状态未通过校验。

建议优先检查:

  1. Azure DevOps 组织是否已关联有效的 Azure subscription。
  2. Artifacts 的付费使用上限是否允许继续增长。
  3. 订阅是否被禁用、欠费,或支付方式是否失效。
  4. Feed 回收站、保留策略中的包或统计延迟,是否导致“界面显示 0 GB,但后台仍判定受限”。
  5. 上传的单个包是否触及服务端限制。

重新登录、生成新的 PAT 或重复执行上传命令,通常无法解决计费或额度问题。

原因说明

错误信息指出了两种可能:

Artifact cannot be uploaded because max quantity has been exceeded or
the payment instrument is invalid

其中:

  • max quantity has been exceeded 表示组织当前允许购买或使用的 Artifacts 容量已经达到上限。
  • payment instrument is invalid 表示关联订阅无法继续计费,例如订阅被禁用、付款失败、信用额度耗尽,或者组织没有有效的计费关联。

Artifacts 页面显示 0 GB,并不能完全排除这些情况。可能的原因有:

  • 页面按 GB 取整,少量占用仍可能显示为 0 GB。
  • 用量数据尚未刷新。
  • 已删除的包仍在 Feed 回收站中,或尚处于保留期。
  • 组织的计费上限不允许产生额外付费。
  • 当前 Azure subscription 状态异常。
  • 上传包超过服务允许的单包大小。具体限制可能随包类型和服务策略变化,应以当前 Azure DevOps 页面及官方限制说明为准。

处理步骤

1. 检查组织的计费关联

使用具有组织所有者或计费管理权限的账号进入:

Organization settings
  → Billing

确认以下事项:

  • 已关联正确的 Azure subscription。
  • 订阅状态有效。
  • 当前账号有权查看或修改该订阅的计费配置。
  • Artifacts 的计费层级和使用上限允许上传新内容。

如果组织尚未关联订阅,需要先完成关联。若已经关联,可以尝试重新选择有效订阅,但不要在不了解费用归属的情况下随意切换生产组织的订阅。

2. 检查 Azure subscription 状态

在 Azure Portal 中打开组织关联的 subscription,检查:

  • Subscription status 是否为 Active。
  • 是否存在欠费或付款失败。
  • Spending limit、信用额度或预算控制是否阻止继续消费。
  • 支付方式是否过期或被拒绝。
  • 企业协议、赞助订阅或试用订阅是否已到期。

如果没有订阅或支付管理权限,需要请 Azure 订阅管理员处理。Azure DevOps 组织管理员不一定同时拥有订阅计费权限。

3. 检查 Artifacts 用量和回收站

检查组织内的所有 Feed,不要只看当前上传目标:

Artifacts
  → Feed settings

查看是否存在:

  • 不再使用的包版本。
  • 上游源缓存的包。
  • 已删除但仍在回收站中的 Feed 或包。
  • 尚未被保留策略清理的内容。

删除普通包后,用量不一定会立即下降。必要时检查并清空确认不再需要的回收站内容,再等待后台重新统计。清空前请确认这些包不需要恢复。

4. 检查上传包的实际大小

例如,可以在上传前查看包文件大小:

ls -lh ./package/*.nupkg

对于 npm 包,可以先生成包,再查看结果:

npm pack
ls -lh ./*.tgz

如果只有某个大包上传失败,而较小的测试包可以上传,问题更可能出在单包大小或请求限制,而不是组织的总存储量。

5. 使用小型测试包判断故障范围

以 NuGet 为例:

dotnet nuget push ./Test.Package.1.0.0.nupkg \
  --source "https://pkgs.dev.azure.com/ORGANIZATION/PROJECT/_packaging/FEED/nuget/v3/index.json" \
  --api-key az

npm 示例:

npm publish --registry="https://pkgs.dev.azure.com/ORGANIZATION/PROJECT/_packaging/FEED/npm/registry/"

请将 ORGANIZATION、PROJECT 和 FEED 替换为实际值。

可以根据测试结果判断:

  • 所有包都返回相同的额度或支付错误:重点检查组织计费。
  • 只有大包失败:检查单包大小和包内容。
  • 返回 401 或 403:检查凭据和 Feed 权限。这与当前支付错误不属于同一类问题。
  • 网页上传和命令行上传都失败:问题更可能出在服务端额度或计费状态。

如果配置正常但仍然失败

如果订阅有效、Artifacts 上限允许增长、回收站已经处理,并且小型包仍返回相同错误,建议向 Azure 支持提交工单,并准备以下信息:

  • Azure DevOps organization 名称。
  • 目标 project 和 Feed 名称。
  • 失败发生时间及对应时区。
  • 完整错误信息。
  • Azure subscription ID。
  • Billing 页面和 Artifacts storage 页面的截图。
  • 上传包的类型与大小。
  • 是否能在所有 Feed、所有包类型中复现。

不要在公开问题或日志中暴露 PAT、Authorization header、订阅账单信息,或完整的 .npmrc/NuGet.Config 凭据。

注意事项

  • 0 GB 只表示页面显示的用量,不代表组织一定具备有效的付费资格。
  • 调高付费上限可能产生实际费用,应由有权限的负责人确认。
  • 删除 Feed 或清空回收站后可能无法恢复,操作前应保留需要的包。
  • 计费关联、订阅状态或存储统计的变更可能不会立即生效。
  • 如果使用的是自托管 Azure DevOps Server,而不是云端 Azure DevOps Services,上述 Azure subscription 计费路径不适用,需要根据服务器版本和许可证配置排查。

备注:内容仅供参考。