首页 > 解决方案 > Lambda 将文件从 S3 加载到 SQL Server

问题描述

我是 AWS 新手,在将 lambda 连接到部署在 EC2 上的 SQL 服务器时遇到问题。以下是我已经采取的步骤。

  1. SQL server 目前部署在 EC2 实例上,
  2. Lambda 函数配置在与 EC2 实例相同的 VPC(虚拟私有服务器)中,
  3. 我正在使用 SQL Alchemy 从 SQL 服务器读取数据,但无法成功连接。
    import json
    from sqlalchemy import create_engine
    import boto3
    import pandas as pd
    import pyodbc

    server = 'SERVERIP'
    database = 'DBName'
    user = 'USER'
    password = 'PWD'
    driver = 'ODBC Driver 17 for SQL Server'
    
    connection_string = f"mssql+pyodbc://{server}/{database}?driver={driver}?trusted_connection=yes? UID={user}?PWD={password}"

    engine = create_engine(connection_string)
    connection = engine.connect()
    df = pd.read_sql_query("Select * from dbo.SampleTable",connection)
    print(df)
    engine.close()

现在我遇到以下错误:

"errorMessage": "(pyodbc.Error) ('01000', \"[01000] [unixODBC][Driver Manager]Can't open lib 
'ODBC Driver 17 for SQL Server?trusted_connection=yes?UID=xxxxxx?PWD=xxxxxx' : file not found 
(0) (SQLDriverConnect)\")\n(Background on this error at: https://sqlalche.me/e/14/dbapi)",
"errorType": "DBAPIError",
"stackTrace": [

标签: pythonsql-serveramazon-web-servicesaws-lambda

解决方案


错误跟踪表明 lambda 无法连接到 EC2 实例内的数据库。可能是 Lambda 和 EC2 之间的一些连接问题(即使它们在同一个 VPC 上,请检查安全组)

AWS 文档:https ://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html

还要检查您的 lambda 执行角色是否有权访问 EC2 以创建网络接口。


推荐阅读