在 VPC 中,codebuild 需要什么权限才能写入 cloudwatch 日志?

What permissions does codebuild need to write cloudwatch logs when inside a VPC?

我有一个要在 VPC 中启动的代码构建项目。在 VPC 外部时,项目运行并登录到 Cloudwatch 日志。我需要移动到 VPC 内部,以便它可以访问数据库。在 VPC 内部时,安装阶段失败并且代码构建无法将任何内容写入 Cloudwatch 日志。构建的控制台页面显示:

Error: The specified log stream does not exist.

我预计安全组是问题所在,但 flow logs 已打开,并且它们没有显示代码构建 ENI 的阻塞流量。

VPC 有一个互联网网关,子网有使用网关到互联网的路由。

codebuild项目由cloudformation构建。注释掉codebuild项目的VpcConfig时会写入日志,包含时不会写入。我相信这表明 IAM 权限不是问题。

如有任何建议,我们将不胜感激。

Codebuild VPC documentation 在最佳实践的最后隐藏了这个花絮。

When you set up your AWS CodeBuild projects to access your VPC, choose private subnets only.

他们的意思是,codebuild 只能在具有 NAT 的私有子网中工作。

将我的代码构建从 public 子网移至私有子网修复了我的错误。