RDS 代理:PENDING_PROXY_CAPACITY 和“由于内部错误,DBProxy 目标不可用”

问题描述 投票:0回答:2

通过 Terraform 部署 RDS 数据库时,我的默认目标不可用。 运行以下命令: aws rds 描述-db-proxy-targets --db-proxy-name

我收到两个错误: 最初处于状态:PENDING_PROXY_CAPACITY 最终超时并出现以下错误:由于内部错误,DBProxy 目标不可用

amazon-web-services terraform amazon-rds
2个回答
10
投票

经过广泛的研究,与 AWS 支持人员进行了两个小时的通话,但错误的搜索结果很少:PENDING_PROXY_CAPACITY

我偶然发现了以下讨论:https://github.com/hashicorp/terraform-provider-aws/issues/16379

我的配置有几个问题:

  1. 我的 RDS 代理安全组的出站规则仅限于内部流量。这会导致问题,因为您需要公共互联网访问才能访问 AWS Secrets Manager!

  2. 在此处编写 Terraform 文档时,建议您可以将“用户名”选项传递给 rds_proxy 资源的 Auth 块(请参阅:https://registry.terraform.io/providers/hashicorp/aws/4.26)。 0/docs/resources/db_proxy)。这不起作用,并返回一个错误,指出不需要用户名选项。这是因为 rds_proxy 希望 Auth 的所有信息都包含在所提供的 Secret arn 内的一个 json 对象中。因此,我创建了第二个秘密,其中包含所有身份验证信息,如下所示:

resource "aws_secretsmanager_secret_version" "lambda_rds_test_proxy_creds" {
  secret_id     = aws_secretsmanager_secret.lambda_rds_test_proxy_creds.id
  secret_string = jsonencode({
    "username"             = aws_db_instance.lambda_rds_test.username
    "password"             = module.lambda_rds_secret.secret
    "engine"               = "postgres"
    "host"                 = aws_db_instance.lambda_rds_test.address
    "port"                 = 5432
    "dbInstanceIdentifier" = aws_db_instance.lambda_rds_test.id
  })
}
  1. 修复这两个问题仍然给我带来了凭据的身份验证错误,这需要修复 IAM 权限(这在上面的 github 问题中进行了讨论)。但是,通过创建新的 Secret 来包含代理所需的所有信息,它不再能够访问新的 Secret,因此我为新创建的资源更新了我的 IAM 角色

我在这里发布此问题是因为 Github 问题已存档,并且我无法更新评论以包含一些搜索词,以帮助那些搜索相同问题的人更快地遇到该问题,因为关于该问题的信息很少此处遇到 RDS_PROXY 错误。


0
投票

我也遇到这个问题了。我的问题是我将集群配置为使用 TLSv1.3。但是,截至撰写本文时,代理最高仅支持 TLSv1.2。

© www.soinside.com 2019 - 2024. All rights reserved.