Подключение к локальной базе данных с помощью лямбда-функций AWS

#python #database #amazon-web-services #aws-lambda #pymysql

#python #База данных #amazon-веб-сервисы #aws-lambda #pymysql

Вопрос:

Я пытаюсь подключиться к локальному экземпляру MYSQL с помощью лямбда-функций AWS. Есть ли что-то, чего мне не хватает? Я хочу, чтобы любой, кто обращается к конечной точке API, запускал эту лямбда-функцию и показывал им все записи в базе данных. Пожалуйста, дайте мне знать, если я делаю что-то не так!

Это моя лямбда-функция

 import pymysql
import json
# TO zzip code all up after it is finished, Use
# zip -r9 ${PWD}/function.zip


# Lambda Permissions:
# AWSLambdaVPCAccessExecutionRole

# Config values
endpoint = 'localhost'
username = 'root'
password = ''
database_name = 'test'

# Connection
conn = pymysql.connect(host=endpoint, user=username,
                       passwd=password, db=database_name)

def lambda_handler(event, context):
    cursor = conn.cursor()
    cursor.execute('SELECT * from i5')

    rows = cursor.fetchall()

    # 2. Construct body of the response object
    transactionResponse = {}
    transactionResponse['message'] = 'Hello From Jareds lambda function'
    transactionResponse['tickets'] = json.dumps(rows)

    # 3. Construct HTTP response object
    responseObject = {}
    responseObject['statusCode'] = 200
    responseObject['headers'] = {}
    responseObject['headers']['Content-Type'] = 'application/json'
    responseObject['body'] = json.dumps(transactionResponse)

    return responseObject

 

Ошибки от cloudwatch

 [ERROR] OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 97] Address family not supported by protocol)")
File "/var/task/handler.py", line 18, in <module>
    passwd=password, db=database_name)
  File "/var/task/pymysql/connections.py", line 353, in __init__
    self.connect()
  File "/var/task/pymysql/connections.py", line 664, in connect
    raise exc
 

Комментарии:

1. На вашем локальном ноутбуке / ПК запущен MySQL, и вы хотите, чтобы AWS Lambda подключалась к этой базе данных?

2. Если вы хотите подключиться к базе данных из Lambda — вам следует рассмотреть возможность использования экземпляра Amazon RDS.

Ответ №1:

localhost выполняется на локальном компьютере. Функции AWS Lambda выполняются в некоторой управляемой серверной среде внутри центра обработки данных Amazon. В среде Lambda localhost будет выполняться разрешение на этот сервер (или, фактически, контейнер Docker, в котором находится лямбда-функция). Когда вы запускаете вызов лямбда-функции, этот код не выполняется на вашем локальном компьютере, так как же он будет подключаться к вашей локальной базе данных?