首页 > 解决方案 > 连接到 Laravel 中的 AWS RDS 代理

问题描述

我有一个使用 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)

以下是我尝试过的事情。

  1. 我已将环境中的直接 RDS 端点替换为代理端点。
  2. 我已授予 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": "*"
        }
    ]
}
  1. 我尝试从 Vapor YAML 文件中添加或删除“database-proxy: true”,但错误仍然相同。

我在这里找到了一个 PHP 示例连接到 RDS 代理。

Laravel Vapor 或 Laravel 一般是否支持 RDS 代理?还是我必须使用服务容器覆盖数据库连接逻辑?

请指导。

标签: laravellaravel-vaporamazon-rds-proxy

解决方案


推荐阅读