es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy intentando configurar un AWS Lambda que reinicie un RDS. Aquí está mi función lambda:

import sys
import botocore
import boto3
from botocore.exceptions import ClientError

def lambda_handler(event, context):
    rds = boto3.client('rds')
    lambdaFunc = boto3.client('lambda')

print('Intentando obtener la variable de entorno')
try:
    funcResponse = lambdaFunc.get_function_configuration(
        FunctionName='RDSInstanceReboot'
    )

    DBinstance = funcResponse['Environment']['Variables']['DBInstanceName']
    print('Deteniendo el servicio de RDS para DBInstance:', DBinstance)

except ClientError as e:
    print(e)

try:
    response = rds.reboot_db_instance(
        DBInstanceIdentifier=DBinstance
    )
    print('Éxito ::')
    return response

except ClientError as e:
    print(e)

return
{
'message': 'La ejecución del script se completó. Consulta los registros de Cloudwatch para obtener la salida completa'
}

Sin embargo, cuando lo ejecuto, obtengo la siguiente salida:

[ERROR] Runtime.MarshalError: No se puede convertir en serie JSON: datetime.datetime(2021, 12, 5, 1, 45, 5, 506000, tzinfo=tzlocal())
Traza de error (última llamada):

“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que hubo un problema al intentar serializar un objeto datetime en formato JSON. Parece que la función lambda está devolviendo un objeto datetime como respuesta, lo cual no puede ser procesado por la función de serialización.

    Para solucionar este problema, una opción sería convertir el objeto datetime en un formato de cadena antes de devolver la respuesta desde la función lambda. Otra opción podría ser utilizar un codificador o serializador JSON personalizado que pueda manejar los objetos datetime.

Comments are closed.