如何使用python中的aws lambda(无vpc)通过vpn和ssl访问外部mysql数据库
我想用python从aws lambda连接到外部mysql数据库(通过vpn并使用ssl) 它确实通过shell工作如何使用python中的aws lambda(无vpc)通过vpn和ssl访问外部mysql数据库,python,mysql,amazon-web-services,ssl,aws-lambda,Python,Mysql,Amazon Web Services,Ssl,Aws Lambda,我想用python从aws lambda连接到外部mysql数据库(通过vpn并使用ssl) 它确实通过shell工作 mysql--host=xxx.yyy.de--user=xxx-p--ssl mode=REQUIRED--ssl ca=/Users/../ca-cert.pem--ssl cert=/Users/../client-cert.pem--ssl key=/Users/../client key.pem 而且它确实在本地与aws SAM客户端一起工作 import mysql
mysql--host=xxx.yyy.de--user=xxx-p--ssl mode=REQUIRED--ssl ca=/Users/../ca-cert.pem--ssl cert=/Users/../client-cert.pem--ssl key=/Users/../client key.pem
而且它确实在本地与aws SAM客户端一起工作
import mysql.connector
import boto3
dynamotable_name = "testTable03"
def connect_db():
mydb = mysql.connector.connect(
host="xxx.yyy.de",
user="xxx",
password="zzz",
database="database",
ssl_ca="ca-cert.pem",
ssl_cert="client-cert.pem",
ssl_key="client-key.pem"
)
cur = mydb.cursor(buffered=True)
cur.execute("select * from measure order by measure_id desc limit 10;")
result = cur.fetchall()
return result
def fill_dynamodb(data):
for x in data:
measure_id = x[0]
sensor_id = x[1]
sensor_value = x[2]
location_id = x[3]
datetime = x[4]
# put items into an existing DynamoDB table
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(dynamotable_name)
table.put_item(
Item={
'measure_id': str(measure_id),
'sensor_id': sensor_id,
'sensor_value': sensor_value,
'location_id': location_id,
'datetime': str(datetime)
}
)
def lambda_handler(event, context):
fill_dynamodb(connect_db())
我总是犯这样的错误:
{“errorMessage”:“2003:无法连接到'xxx.yyy.de:3306'上的MySQL服务器(110连接超时)”,“errorType”:“InterfaceError”
这是互联网接入吗?还是vpn的问题?我创建了一个具有公共和私有子网以及NAT网关的VPC,因此我可以为Lambda函数提供一个静态弹性IP地址,该地址可以访问外部数据库