我有一个使用 Laravel Vapor 部署到 AWS Lambda 的 Laravel 应用程序。我想使用 RDS 代理而不是直接连接到 RDS 实例。
Laravel Vapor 允许您从仪表板和 CLI 管理数据库和代理。但是,我没有使用 Vapor 来管理我的数据库。我正在通过云形成模板管理它们。
我没有找到将非托管 RDS 代理与 Laravel Vapor 或 Laravel 集成的文档。
我尝试了几件事,但我总是收到以下错误:
Illuminate\Database\QueryException SQLSTATE[HY000] [1045] Access denied for user 'gxadmin'@'%' (using password: NO)
以下是我尝试过的事情。
- 我已将环境中的直接 RDS 端点替换为代理端点。
- 我已授予 Lambda 角色必要的权限。以下是政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:GetMetricStatistics",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:FilterLogEvents",
"logs:PutLogEvents",
"kms:Decrypt",
"secretsmanager:GetResourcePolicy",
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret",
"secretsmanager:ListSecretVersionIds",
"secretsmanager:GetRandomPassword",
"secretsmanager:ListSecrets",
"ssm:GetParameters",
"ssm:GetParameter",
"lambda:invokeFunction",
"s3:*",
"ses:*",
"sqs:*",
"dynamodb:*",
"route53domains:*",
"es:*",
"rds-db:connect"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
- 我尝试从 Vapor YAML 文件中添加或删除“database-proxy: true”,但错误仍然相同。
我在这里找到了一个 PHP 示例来连接到 RDS 代理。
Laravel Vapor 或 Laravel 一般是否支持 RDS 代理?还是我必须使用服务容器覆盖数据库连接逻辑?
请指导。