【问题标题】:Connecting to a local Database through Lambda functions AWS通过 Lambda 函数 AWS 连接到本地数据库
【发布时间】:2021-06-22 16:07:33
【问题描述】:

我正在尝试通过 AWS lambda 函数连接到 MYSQL 的本地实例。 有什么我想念的吗?我希望任何访问 API 端点的人都能触发这个 lambda 函数,并向他们显示数据库中的所有条目。如果我做错了什么,请告诉我!

这是我的 Lambda 函数

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

【问题讨论】:

  • 您在本地笔记本电脑/PC 上运行 MySQL,并且希望 AWS Lambda 连接到该数据库?
  • 如果您想从 Lambda 连接到数据库 - 您应该考虑使用 Amazon RDS 实例。

标签: python database amazon-web-services aws-lambda pymysql


【解决方案1】:

localhost 解析为本地计算机。 AWS Lambda 函数在 Amazon 数据中心内的一些托管服务器环境中运行。在 Lambda 环境中,localhost 将解析到该服务器(或者实际上是 Lambda 函数所在的 Docker 容器)。当您触发 Lambda 函数调用时,该代码未在您的本地计算机上运行,​​那么它将如何连接到您的本地数据库?

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 2013-01-15
    • 2021-01-03
    • 2021-09-05
    • 2017-11-26
    • 1970-01-01
    • 2019-05-27
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多