Estoy probando mi puerta de enlace api para llamar a la función lambda. tuve éxito en la prueba.
entonces estaba tratando de hacer una conexión con postgresql a través de la misma lambda
import json import psycopg2 db_host = "hostname" db_port = 5432 db_name ="db name" db_user ="user" db_pass ="password" def connect(): conn = None try : conn = psycopg2.connect("dbname={} user={} host={} password={}".format(db_name,db_user,db_host,db_pass)) except : print("connetion error") return conn print("Loading function") def lambda_handler(event, context): # paring query from the string name = event['queryStringParameters']['name'] action = event['queryStringParameters']['action'] print('name = '+name ) print('action = '+action) # body of the response object transactionResponse = {} transactionResponse['name'] = name transactionResponse['action'] = action transactionResponse['message'] = 'Lambda called from api_gateway' # construting Http response responseObject = {} responseObject['statusCode'] = 200 responseObject['headers'] {} responseObject['headers']['Content-Type'] = 'application/json' responseObject['body'] = json.dumps(transactionResponse) # return the response object return responseObjectcuando traté de activarlo a través del punto final de la API, obtuve
Unable to import module 'lambda_function': No module named 'psycopg2'luego seguí adelante y construí mi función lambda descargando el paquete requerido y luego cargué un archivo zip.
cuando trato de llamar, intente lo mismo para activar el lambda que estoy recibiendo
Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'lambda_function'no sé qué es lamda_function.
¿Alguien podría sugerirme salir de esta depresión? o proporcione una forma de conectarme a RDS a través de lambda desde el disparador de puerta de enlace API
Debe verificar el nombre del controlador lambda desde la consola. Es probable que esto se deba a que el nombre del controlador hace referencia a lambda_function.foobar pero el nombre de archivo de Lambda dentro del zip no se llamaría lambda_function.py .
Asegúrese de que el nombre tenga el formato filename.function_name .
En este ejemplo, si el archivo se llamó lambda_function , el valor del controlador debería ser lambda_function.lambda_handler .
La estructura de directorios no incluye actualmente el módulo psycopg2 , por lo que aún no se podrá cargar.
Para solucionar esto se aplican las siguientes soluciones:
el tema ya no esta. Obtenga la biblioteca de compilación psycopg2 de https://github.com/jkehler/awslambda-psycopg2 se creó para python 3.6 y asegúrese de cambiar el nombre a psycopg2 mientras carga su código en AWS lambda, seleccione el entorno Python Runtime como 3.6, y Deberia trabajar.
¿Puede verificar la configuración de lambda_handler y asegurarse de que esté configurada correctamente para representar su función?