gpt4 book ai didi

java - AWS Lambda 上的 "The connection attempt failed"Postgres

转载 作者:行者123 更新时间:2023-11-29 13:42:33 26 4
gpt4 key购买 nike

我在 AWS 上有一个外部可用的 Postgres 数据库。当我在本地启动我的应用程序时,连接工作正常。

当我在 AWS lambda 上启动它时,出现以下错误:

org.postgresql.util.PSQLException: The connection attempt failed.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
at org.postgresql.Driver.makeConnection(Driver.java:454)
at org.postgresql.Driver.connect(Driver.java:256)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at ninja.majewski.AmazonDbService.getRemoteConnection(AmazonDbService.java:84)
at ninja.majewski.AmazonDbService.removeOldDeals(AmazonDbService.java:63)
at ninja.majewski.ChinaStuffLambdaHandler.handleRequest(ChinaStuffLambdaHandler.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at lambdainternal.EventHandlerLoader$PojoMethodRequestHandler.handleRequest(EventHandlerLoader.java:259)
at lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:178)
at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:888)
at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:292)
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:64)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at lambdainternal.LambdaRTEn
try.main(LambdaRTEntry.java:94)

这是失败的代码:

private Connection getRemoteConnection() throws Exception {
Class.forName("org.postgresql.Driver");
String dbName = System.getenv("RDS_DB_NAME");
String userName = System.getenv("RDS_USERNAME");
String password = System.getenv("RDS_PASSWORD");
String hostname = System.getenv("RDS_HOSTNAME");
String port = System.getenv("RDS_PORT");
String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbName + "?user=" + userName + "&password=" + password;
log.info(String.format("Logging to DB: %s", jdbcUrl));
return DriverManager.getConnection(jdbcUrl);
}

这可能是什么原因?

最佳答案

在您的 lambda 中,您必须配置 Network范围。您必须添加 VPC和一个 Security Group .

将此安全组添加到您的 lambda 后,您可以在 NETWORK & SECURITY -> Security Groups EC2 管理控制台 em>。在这里,您选择 RDS 实例的安全组,然后编辑 Inbound范围。你加一个Type带有 Custom Source 的 PostgreSQL使用您刚刚添加到 Lambda 的安全组的名称。

关于java - AWS Lambda 上的 "The connection attempt failed"Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53122581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com