Conexión a Oracle RDS

Estoy intentando conectarme a Oracle utilizando AWS lambda y python.

Estos son los pasos que seguí. (Todo ha hecho la instancia de EC2)

  1. Descargó el cliente instantáneo-basic-linux.x64-12.2.0.1.0.zip y
    instantclient-sdk-linux.x64-12.2.0.1.0.zip
  2. Creado esta estructura de carpetas ~/lambda/lib/
  3. Extrajo los archivos zip en ~/lambda/lib/
  4. copió el libaio.so.1.0.1 de /lib64/ en ~/lambda/lib/
  5. Se creó un enlace simbólico de libaio.so.1.0.1 como libaio.so en ~/lambda
  6. usando pip instalado cx_Oracle en ~/lambda
  7. escrito debajo del script index.py en ~lambda

`

 import cx_Oracle def handler(event, context): message = "" cursor = None connection = None try: connection = cx_Oracle.connect("USERNAME", "PASSWORD", "DOMAIN/orcl") cursor = connection.cursor() cursor.execute("""QUERY""") except Exception as e: message += " {Error in connection} " + str(e) finally: if cursor: cursor.close() if connection: connection.close() return {'message' : message} 

`

  1. Luego lo comprimió usando zip -r9 ~/upload.zip *

Después de ejecutar el código en AWS lambda da el siguiente error.

Error while trying to retrieve text for error ORA-01804

Intenté configurar ENV ORACLE_HOME = / var / task y / var / task / lib pero no funcionó

Busqué debajo de las respuestas pero no encontré ayuda todavía.

Error al intentar recuperar texto para error ORA-01019

Oracle con node-oracle: Error al intentar recuperar texto para error ORA-01804

Esta publicación me ayudó mucho a usar cx_Oracle utilizando las funciones de Lambda. Funcionó como se esperaba. Gracias por crear este post @Sayed Zainul Abideen

Pero recibí otro error de lambda que dice ‘cx_Oracle.DatabaseError: ORA-24454: el nombre de host del cliente no está configurado’

Lo resolví agregando las siguientes líneas en mi código de Python:

 import os with open('/tmp/HOSTALIASES', 'w') as hosts_file: hosts_file.write('{} localhost\n'.format(os.uname()[1])) 

Después de lo cual agregué a continuación la VARIABLE AMBIENTAL a mi función Lambda:

 HOSTALIASES = /tmp/HOSTALIASES 

Espero que ayude a alguien.

Por favor, agregue comentarios si hay algún problema relacionado con cx_Oracle. Estaré encantado de ayudar ya que luché mucho para solucionar esto.

Resolví esto simplemente comprimiendo los archivos correctamente con los enlaces simbólicos

Primero creé tres enlaces simbólicos (con respecto a la estructura de directorio anterior):

ln -s ./lib/libaio.so.1.0.1 ./lib/libaio.so.1

ln -s ./lib/libaio.so.1.0.1 ./lib/libaio.so

ln -s ./lib/libaio.so.1.0.1 ./libaio.so.1.0.1

ln -s ./lib/libclntsh.so.12.1 ./lib/libclntsh.so

entonces lo estaba comprimiendo de manera incorretica lo hice así:

zip --symlinks -r9 ~/lamda.zip *

¡funcionó! correctamente entonces. Espero que ayude a alguien.