Npgsql с netcoreapp2.0 на AWS Lambda не может подключиться (имеет тайм-аут) - как я могу решить? - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь развернуть приложение netcoreapp2.0 в AWS Lambda, которое подключается к Postgres по RDS.Сбой следующего кода:

    let testConn = "Host=hostNameHere;Username=userNameHere;Password=passwordHere;Database=postgres";
    let conn = new NpgsqlConnection(testConn)
    try
        printfn "Trying to open a connection"
        conn.Open()
    with ex ->
        printfn "Exception trying to open conn:\n%O" ex

Я получаю следующую трассировку стека:

System.TimeoutException: The operation has timed out.
at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
at Npgsql.NpgsqlConnector.<RawOpen>d__153.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Npgsql.NpgsqlConnector.<Open>d__149.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Npgsql.ConnectorPool.<AllocateLong>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Npgsql.NpgsqlConnection.Open()
at Masse.Common.SQL.query[T](String connectString, SqlQuery q) in /home/nat/Projects/shopmasse-backend/fsharp/src/Masse.Common/Sql.fs:line 40

Кто-нибудь знает, почему это может произойти сбой при развертывании на AWS лямбда, но работать локально на моем компьютере?

Вот некоторые проблемы GitHub, которые могут предоставить дополнительный контекст:

Некоторые дополнительные сведения: - Механизм БД: PostgreSQL 9.6.6 - Версия Npgsql: 4.0 - Версия .NET: netcoreapp2.0

Пожалуйста, дайте мне знать, если я могу предоставить какую-либо дополнительную информацию.Спасибо!

1 Ответ

0 голосов
/ 07 июня 2018

Тайм-аут соединения обычно указывает на проблему с брандмауэром.

Ваш запрос на соединение заблокирован группой безопасности вашего экземпляра RDS.

Когда вы создали экземпляр, IP-адрескомпьютер с консолью AWS автоматически заносится в белый список.

Любые другие внешние или внутренние ресурсы, обращающиеся к PostgreSQL, также должны быть включены в белый список.

Надеюсь, вам понравится AWS RDS с PostgreSQL, я нахожу его потрясающим.

...