同一个 GitHub Actions 标签,现在也可能跑在 AWS 上

Dev
浏览 3

YAML 没改,任务却在外部服务登录时失败,线索可能在执行基础设施。GitHub 于10月28日宣布,Linux 算力从 Azure 扩展到 AWS。任务标签相同,外部看到的来源地址却可能改变。

熟悉的标签背后有了更大的机器池

范围包括标准2核、4核 Linux runner,以及相同规模、无特殊配置的兼容 larger runner。不包括 Windows 和私有网络等特殊配置。Free、Pro、Team 自动适用,Enterprise Cloud 可在 Actions > Hosted compute cloud providers 中启用 AWS。

自行制作的假设连接示例:只允许 Azure 的目的地,可能因出口不同而产生不同结果。并非产品截图或事故实测。
自行制作的假设连接示例:只允许 Azure 的目的地,可能因出口不同而产生不同结果。并非产品截图或事故实测。

GitHub 保留标签和工作流语法,在可用提供商之间分配合适任务。目标是减少容量不足造成的排队并增强韧性,并非保证每个任务提速,也没有承诺在两朵云重复执行。

为什么会像间歇性故障

假设部署 API 只允许 Azure 地址,同一工作流从 Azure 可以通过,换个出口就可能被拒。GitHub 也提醒关注 Microsoft Entra Conditional Access 的网络条件。这是解释用的假设,并非我们经历的事故。

更换令牌之前,可以对照失败时间、目的地、来源 IP 和实际策略。启动前等机器与启动后认证被拒是不同阶段。算力扩容不会自动修好访问规则。

把 IP 当范围,而不是普通字符串

官方起点是 GET https://api.github.com/meta 的 actions 数组。REST 文档要求查询当前值,不要复制示例。我们本地运行 Python ipaddress,以文档专用网段192.0.2.0/24说明:.10和.200在范围内,198.51.100.10不在。这些并非真实 runner 地址。

本地 Python ipaddress 对文档专用 CIDR 192.0.2.0/24 的检查:两个地址在范围内,一个在范围外,并非 GitHub 真实 IP。
本地 Python ipaddress 对文档专用 CIDR 192.0.2.0/24 的检查:两个地址在范围内,一个在范围外,并非 GitHub 真实 IP。

允许所有网段不适合每个系统。runner 文档不建议用数量众多的标准网段作为内部资源允许列表,而是列出静态 IP 的 larger runner 或自托管方案。来源网络也不能替代身份认证与最小权限。

标签不变,前提可能已变

先判断失败发生在启动前还是启动后,再核对当前网段和实际限制。需要固定出口,就选择符合要求的 runner。不要把 runner 标签默认当成云提供商身份。

官方资料

GitHub Changelog · 2026-10-28

GitHub Docs · Hosted runners

GitHub REST · Meta