python - Lambda 将文件从 S3 加载到 SQL Server
问题描述
我是 AWS 新手,在将 lambda 连接到部署在 EC2 上的 SQL 服务器时遇到问题。以下是我已经采取的步骤。
- SQL server 目前部署在 EC2 实例上,
- Lambda 函数配置在与 EC2 实例相同的 VPC(虚拟私有服务器)中,
- 我正在使用 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": [
解决方案
错误跟踪表明 lambda 无法连接到 EC2 实例内的数据库。可能是 Lambda 和 EC2 之间的一些连接问题(即使它们在同一个 VPC 上,请检查安全组)
AWS 文档:https ://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html
还要检查您的 lambda 执行角色是否有权访问 EC2 以创建网络接口。
推荐阅读
- python-3.x - Python 可视化 - 直方图
- javascript - 理解 Ramda 中的组合?
- swift - 在 Swift 中创建 NFCTypeNameFormat.media 类型的 NFCNDEFPayload
- ios - React-native Xcode 错误:“线程 1:信号 SIGABRT”
- html - 我在我的离子应用程序中使用了谷歌自动搜索地点 API。它开始搜索,但我的列表在选择一个地方后无法关闭
- azure - Vagrant-Azure:来宾机器无法连接到主机(无法复制 SMB 文件)
- python - 从 PyPDF2 中提取文本的问题
- python - Raspberry - 发送 CAN 消息
- jenkins - 将运行参数传递给下游作业
- jquery - 如何从复选框中删除未选中的值