AWS LAMBDA使用SqlConnection连接到RDS SQL数据库

Ron*_*ing 5 .net c# amazon-web-services .net-core aws-lambda

如何在ASW Lambda函数上连接到RDS SQL Server数据库?

下面的代码在常规C#控制台应用程序项目上可以正常工作,但是一旦我将其部署到AWS并尝试调用它,就会在AWS Lambda项目上给我错误:

public static string CS = "Data Source=host-name, 1433; Initial Catalog=database-name; User ID=username; Password='password';";

    public static List<string> Get_Rule_Group()
    {
        using (SqlConnection con = new SqlConnection(CS))
        {
            string query = "SELECT abc from table where abc = xyz";
            SqlCommand cmd = new SqlCommand(query, con);
            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            List<string> Rule_Group = new List<string>();
            while (reader.Read())
            {
                Rule_Group.Add(reader["abc"].ToString());
            }
            return Rule_Group;
        }
    }
Run Code Online (Sandbox Code Playgroud)

错误:

2017-10-06 19:10:27: START RequestId: f33cf098-9360-11e7-96fb-7594ff8505a7 Version: $LATEST
2017-10-06 19:10:43: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught)
2017-10-06 19:10:44:    at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling)
2017-10-06 19:10:44:    at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
2017-10-06 19:10:44:    at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
2017-10-06 19:10:44:    at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
2017-10-06 19:10:44:    at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
2017-10-06 19:10:44:    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
2017-10-06 19:10:44:    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
2017-10-06 19:10:44:    at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
2017-10-06 19:10:44:    at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
2017-10-06 19:10:44:    at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
2017-10-06 19:10:44:    at System.Data.SqlClient.SqlConnection.Open()
2017-10-06 19:10:44:    at AWSLambdaErrorReport.DAL.Get_Rule_Group()
2017-10-06 19:10:44:    at AWSLambdaErrorReport.Function.<FunctionHandler>d__6.MoveNext()
2017-10-06 19:10:44: FAILED to proceed
2017-10-06 19:10:44: END RequestId: f33cf098-9360-11e7-96fb-7594ff8505a7
2017-10-06 19:10:44: REPORT RequestId: f33cf098-9360-11e7-96fb-7594ff8505a7 Duration: 17209.25 ms   Billed Duration: 17300 ms   Memory Size: 256 MB Max Memory Used: 40 MB
Run Code Online (Sandbox Code Playgroud)

Tom*_*elo 1

您是否在 Lambda 函数中配置了 VPC?

看一下:http://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html