postgresql AWS ECS计划任务与RDS的连接错误

8fq7wneg  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(2)|浏览(169)

我目前在使用AWS Copilot CLI部署的ECS任务连接到RDS时遇到问题。尽管已确保ECS任务和RDS具有相同的VPC和适当的安全组进行连接。
有趣的是,当我在EC2和Lambda上使用相同的配置进行部署时,连接的建立没有任何问题。这与我在API和Bastion服务器上使用的方法相同,它们一直工作得很好。
以下是预期和实际结果:

  • 预期结果:ECS任务和RDS之间成功连接。
  • 实际结果:如下所述的连接错误。

错误消息:

'{'S': 'FATAL', 'V': 'FATAL', 'C': '28000', 'M': 'no pg_hba. conf entry for host "x.x.x.x", user "x", database "x", no encryption', 'F': 'auth.c', 'L': '543', 'R': 'ClientAuthentication'}.

字符串
到目前为止我尝试过的:
1.已确保ECS任务和RDS具有相同的VPC。
1.请检查两侧的安全组以进行适当的连接。
由于安全原因,我无法分享确切的代码,但该过程涉及通过AWS Copilot CLI在ECS中部署群集和任务,并尝试建立与RDS的连接。
我不确定为什么相同的配置在EC2和Lambda上有效,但在ECS上无效。任何关于这个问题的见解或潜在的解决方案都将非常感谢。

mzsu5hc0

mzsu5hc01#

这不是网络连接错误。该错误是从数据库服务器返回的,因此网络连接已建立。该错误是Postgres身份验证错误。数据库连接设置中存在错误,例如用户名或密码。
我注意到错误状态为no encryption,这意味着你在试图连接的客户端上禁用了加密。数据库可能会因此拒绝你的请求。

ckx4rj1h

ckx4rj1h2#

来自AWS RDS页面的证书用作Python PostgreSQL驱动程序库中的SSL上下文连接方法参数:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.CertificatesAllRegions
来自AWS支持的参考:
1.错误代码postgres → https://www.postgresql.org/docs/16/errcodes-appendix.html

  1. SSL选项→ https://pypi.org/project/pg8000/#pg8000-native-connection-user-host-localhost-database-none-port-5432-password-none-source-address-none-unix-sock-none-ssl-context-none-timeout-none-tcp-keepalive-true-application-name-none-replication-none-sock-none
  2. SSL上下文→ https://docs.python.org/3/library/ssl.html#ssl.SSLContext
  3. Postgres RDS参数→ https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Parameters.html#Appendix.PostgreSQL.CommonDBATasks.Parameters.parameters-list

相关问题