AWS CodeBuild 无法与 RDS 实例交互
AWS CodeBuild fails to interact with RDS instance
我在 AWS 中进行了最基本的设置:
- 一个可公开访问的 RDS 实例(PostgreSQL 9.6.6 - 与我的开发实例相同)
- 一个 CodeBuild 项目
都在默认 VPC 中。
我的应用程序是用 Laravel 5.5 编写的,buildspec.yml
在某些时候运行 ./artisan migrate --force
并且 CodeBuild 输出以下错误:
[Container] 2018/03/10 19:41:36 Running command php artisan migrate --force
[Illuminate\Database\QueryException]
SQLSTATE[08006] [7] timeout expired (SQL: select * from information_schema.
tables where table_schema = public and table_name = migrations)
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[08006] [7] timeout expired
[PDOException]
SQLSTATE[08006] [7] timeout expired
我应该从哪里开始查找错误?
您需要确保 RDS 安全组允许来自 Code Build 的入站流量。
- 转到https://ip-ranges.amazonaws.com/ip-ranges.json
- 搜索
CODEBUILD
并选择您所在的地区。
- 将 IP 添加到 RDS 安全组中的入站规则。
为代码构建创建一个安全组并将其作为 DBSecurity 组中的源进行引用。
我在 AWS 中进行了最基本的设置:
- 一个可公开访问的 RDS 实例(PostgreSQL 9.6.6 - 与我的开发实例相同)
- 一个 CodeBuild 项目
都在默认 VPC 中。
我的应用程序是用 Laravel 5.5 编写的,buildspec.yml
在某些时候运行 ./artisan migrate --force
并且 CodeBuild 输出以下错误:
[Container] 2018/03/10 19:41:36 Running command php artisan migrate --force
[Illuminate\Database\QueryException]
SQLSTATE[08006] [7] timeout expired (SQL: select * from information_schema.
tables where table_schema = public and table_name = migrations)
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[08006] [7] timeout expired
[PDOException]
SQLSTATE[08006] [7] timeout expired
我应该从哪里开始查找错误?
您需要确保 RDS 安全组允许来自 Code Build 的入站流量。
- 转到https://ip-ranges.amazonaws.com/ip-ranges.json
- 搜索
CODEBUILD
并选择您所在的地区。 - 将 IP 添加到 RDS 安全组中的入站规则。
为代码构建创建一个安全组并将其作为 DBSecurity 组中的源进行引用。