AWS CodeBuild 由于 UNAUTHORIZED_OPERATION_DELETE_NETWORK_INTERFACE 错误而失败

AWS CodeBuild failing due to UNAUTHORIZED_OPERATION_DELETE_NETWORK_INTERFACE error

我的 CodeBuild 服务收到此错误

UNAUTHORIZED_OPERATION_DELETE_NETWORK_INTERFACE: The service role is not authorized to perform ec2:DeleteNetworkInterface

我正在使用的服务角色具有 ec2:DeleteNetworkInterface 的必要权限,但它被全局拒绝策略阻止 - 直到最近一直很好,因为以前的 CodeBuild 运行 DeleteNetworkInterface--dry-run 标志。它只是检查我是否拥有权限,而不是实际执行它。这是期望的行为,因为它不应该删除任何网络接口。这已经工作了几个月。

但是,现在它失败了,因为不再设置 --dry-run 标志。我真的很困惑为什么,因为管道没有更新,直到现在它都运行良好。

我们还检测到运行命令序列与失败命令序列之间的这些差异:

** Working sequence: "DescribeVpcs" is presented
DescribeSubnets
DescribeVpcs
DescribeNetworkInterfaces
DeleteNetworkInterface (Client.DryRunOperation)

** Failed sequence: DescribeVpcs is missed
DescribeSubnets
DescribeNetworkInterfaces
DeleteNetworkInterface (Client.UnauthorizedOperation)

我已检查我的服务角色是否具有上述所有权限。

有人能告诉我这可能是什么原因吗?我真的很感激。谢谢。

And this is the desired behaviour because it shouldn't delete any network interfaces.

这是一个错误的假设。如果您的构建项目使用 VPC 配置,CodeBuild 将在您的帐户中创建一个网络接口并将其附加到构建容器,以便构建容器可以访问 VPC 资源,例如数据库。构建完成后,CodeBuild 将删除此网络接口。 "ec2:DeleteNetworkInterface" 的要求在 CodeBuild 文档中有明确记录:

我同意枯燥的 运行 行为可能已经改变,但它不会改变您每次项目使用 VPC 配置时都​​需要 'DeleteNetworkInterface' 权限的事实。