Изначально у меня была простая установка CodePipeline, запускаемая коммитами в репозиторий CodeCommit, с «Stage», выводящей исходный код в виде артефакта, и другой «Stage», использующей CodeBuild для запуска некоторого кода из этого исходного вывода. Теперь я хочу получить доступ к RDS на этой «стадии» CodeBuild, поэтому я добавил настройки VPC RDS в свой проект 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
Удаляет ли добавление VPC в проект CodeBuild любые настройки по умолчанию? (может быть, изначально использовался VPC по умолчанию?)
Как я могу разрешить CodeBuild доступ к RDS и CodeCommit?
Доступ к CodeBuild на основе VPC зависит от конфигурации подсети, которую вы используете для контейнера CodeBuild.
Если вы помещаете его в Частная подсеть убедитесь, что подсеть настроена для доступа в Интернет через NAT-шлюз.
Если вы запускаете его в Публичная подсеть убедитесь, что он настроен на назначить публичный IP по умолчанию.
Обратитесь к этому ответу для получения дополнительной информации: Публичная и частная подсеть в VPC
А также убедитесь, что нет других ограничений, например Группа безопасности разрешает исходящий доступ в Интернет, нет NACL и т. д.
Простой тест: состоит в том, чтобы развернуть крошечный экземпляр EC2 в той же подсети, где вы запускаете свои контейнеры CodeBuild, и проверить оттуда, может ли он достичь конечной точки сборки кода (например, curl https://mypipeline-artifactstorebucket.../PKGw3xs
).
Другими словами: Да, CodeBuild можно запускать в VPC и при этом иметь доступ к CodeCommit, но конфигурация сети вашей подсети должна быть правильной.
Надеюсь, это поможет :)
У меня была такая же проблема, когда я пытался заставить CodeBuild получить код из CodeDeploy, чтобы он мог развернуть код в RDS в VPC. Когда CodeBuild находился за пределами VPC, он мог нормально подключиться к CodeCommit, но как только я поместил CodeDeploy в VPC, сообщение об ошибке было
CLIENT_ERROR: Get https://git-codecommit.ap-southeast-2.amazonaws.com/v1/repos/repo-name/info/refs?service=name: dial tcp 1.2.3.4:443: i/o timeout for primary source and source version refs/heads/master
Мне не удалось найти никакой документации по этому поводу, поэтому я прибегал к методам проб и ошибок, основываясь на том, что написано выше. Я прошел через несколько комбинаций вещей, чтобы понять, что работает, а что нет. Вот что я нашел:
Надеюсь, это поможет кому-то еще подключить CodeBuild или CodePipeline к VPC для развертывания в EC2, RDS, ECS или других сервисах.
У меня была такая ошибка, когда я настраивал
Type: AWS::CodeBuild::Project
Properties:
Source:
BuildSpec: buildspec-ProdCf.yml
....
но на самом деле файл yml находился в подкаталоге.