我目前在使用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上无效。任何关于这个问题的见解或潜在的解决方案都将非常感谢。
2条答案
按热度按时间mzsu5hc01#
这不是网络连接错误。该错误是从数据库服务器返回的,因此网络连接已建立。该错误是Postgres身份验证错误。数据库连接设置中存在错误,例如用户名或密码。
我注意到错误状态为
no encryption
,这意味着你在试图连接的客户端上禁用了加密。数据库可能会因此拒绝你的请求。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