Я пытаюсь подключиться к mysql из своего сценария AWS Lambda.
Я установил pip install --allow-external mysql-connector-python mysql-connector-python -t <dir>
для установки mysql-connector-python в локальном каталоге.
Я закрепил файл и загрузил его в AWS Lambda, где исполняются мои файлы python.
Мои скрипты выполняются правильно до той точки, где я инициализирую соединение mysql.
я это
AWS Lambda Python с MySQL
log('about to set connection for db')
connection = mysql.connector.connect(user=DB_USER, password=DB_PASSWORD, host=DB_HOST, database=DB_DATABASE)
query = "SELECT * FROM customers WHERE customer_email LIKE '%s' LIMIT 1"
log('set connection for DB')
«о, чтобы установить соединение для БД» в настоящее время регистрируется, но «установить соединение для БД» никогда не регистрируется, и моя программа попадает тайм-аут и прекращает выполнение.
Что я могу делать неправильно?
EDIT: Это мой класс, я звоню из lambda_function.py
import mysql.connector
import logging
from mysql.connector import errorcode
class MySql(object):
USER =None
PASSWORD=None
HOST =None
DATABASE=None
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def __init__(self, user, password, host, database):
global USER, PASSWORD, HOST, DATABASE
USER = user
PASSWORD = password
HOST = host
DATABASE = database
def getId(self, customer_email):
email_exists = False
connection = mysql.connector.connect(user=USER, password=PASSWORD, host=HOST, database=DATABASE)
query = "SELECT * FROM customers WHERE customer_email LIKE '%s' LIMIT 1"
cursor = connection.cursor()
cursor.execute(query % customer_email)
data = cursor.fetchall()
id = None
for row in data :
id = row[1]
break
cursor.close()
connection.close()
return id
def insertCustomer(self, customer_email, id):
log('about to set connection for db')
connection = mysql.connector.connect(user=USER, password=PASSWORD, host=HOST, database=DATABASE)
log('set connection for DB')
cursor = connection.cursor()
try:
cursor.execute("INSERT INTO customers VALUES (%s,%s)",(customer_email, id))
connection.commit()
except:
connection.rollback()
connection.close()
def log(logStr):
logger.info(logStr)
def main():
user = 'xxx'
password = 'xxx'
host = ' xxx'
database = 'xxx'
mysql = MySql(user, password, host, database)
id = mysql.getId('testing')
if id == None:
mysql.insertCustomer('blah','blahblah')
print id
if __name__ == "__main__":
main()
Когда я исполняю MySql.py локально мой код работает отлично.
Моя база данных обновляется, но ничего не происходит, когда я запускаю ее из AWS.
Возможно, ваш 'значение host' неправильно, что может привести к сети тайм-аут. – 101
Кроме того, что делает функция 'log', вы можете показать код для нее? Это может быть проблема. – 101
Проверьте группы безопасности –