带有 VPC 设置的 CodeBuild 无法下载 CodeCommit 源

twi*_*wiz 7 amazon-web-services amazon-vpc aws-codecommit

我最初有一个由提交到 CodeCommit 存储库触发的简单 CodePipeline 设置,其中一个“Stage”将源代码输出为工件,另一个“Stage”使用 CodeBuild 从该源输出运行一些代码。现在我想在那个 CodeBuild“阶段”中访问 RDS,所以我将我的 RDS 的 VPC 设置添加到我的 CodeBuild 项目中。

问题是现在 CodeBuild 无法再访问 CodeCommit 源。我收到以下错误:

CLIENT_ERROR: RequestError: send request failed caused by: Get https://mypipeline-artifactstorebucket-twlrq7tj45fq.s3.amazonaws.com/MYPipeline-data-pipe/RepoSource/PKGw3xs: dial tcp 52.216.160.35:443: i/o timeout for primary source and source version arn:aws:s3:::mypipeline-artifactstorebucket-twlrq7tj45fq/MYPipeline-data-pipe/RepoSource/PKGw3xs

向 CodeBuild 项目添加 VPC 是否也会删除默认设置?(也许它最初使用的是默认 VPC?)

如何允许 CodeBuild 访问 RDS 和 CodeCommit?

MLu*_*MLu 4

基于 VPC 的 CodeBuild 可以访问的内容取决于您用于 CodeBuild 容器的子网配置。

如果您将其放置在专用子网中,请确保该子网配置为通过NAT 网关访问互联网。

如果您在公共子网中运行它,请确保将其配置为默认分配公共 IP

有关更多信息,请参阅此答案:VPC 中的公共和私有子网

还要确保没有其他限制,例如安全组允许对互联网的出站访问、没有 NACL 等。


简单测试:是在运行 CodeBuild 容器的同一子网中启动一个小型 EC2 实例,并从那里测试它是否可以到达 codebuild 端点(例如curl https://mypipeline-artifactstorebucket.../PKGw3xs)。

换句话说:是的,CodeBuild 可以在 VPC 中运行,并且仍然可以访问 CodeCommit,但您的子网网络配置必须正确。

希望有帮助:)