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.

Función Lambda siendo invocada pero el payload no está siendo enviado.

Tengo una función en una API que llama a una función lambda para enviar un correo electrónico.

Sin embargo, aunque la respuesta está devolviendo 200, nunca recibo el correo electrónico. Una implementación anterior de esta función que utilizaba una versión anterior de aws-sdk ha funcionado, así que no tengo motivos para creer que es la propia función lambda, sino más bien la implementación de la invocación de la lambda.

export const DispathResetPasswordEmail = async (user: any, token: string) => {
    const payload = {
        to: user.email,
        subject: "Solicitud de restablecimiento de contraseña",
        templateName: "reset-password",
        templateObject: {
            name: user.display_name,
            link: `some_link.com/${token}`,
        },
    };

    const client = new LambdaClient({ region: Config.aws.region });

    const params: InvokeCommandInput = {
        FunctionName: (Config.aws.email_service as string) || "",
        InvocationType: InvocationType.RequestResponse,
        Payload: Buffer.from(JSON.stringify(payload)),
    };
    const command = new InvokeCommand(params);

    try {
        const response = await client.send(command);
        return [response, null];
    } catch (err) {
        return [null, err];
    }
};

Una cosa de la que no estoy seguro es el payload Payload:Buffer.from(JSON.stringify(payload)), ¿no estoy seguro de que esté correcto?

console.log de params

{
FunctionName: 'email-service-dev-main',
InvocationType: 'RequestResponse',
Payload: <buffer 7b="" 22="" 74="" 6f="" 22="" 3a="" 22="" 6b="" 61="" 79="" 40="" 67="" 65="" 65="" 69="" 71="" 2e="" 63="" 6f="" 6d="" 22="" 2c="" 22="" 73="" 75="" 62="" 6a="" 65="" 63="" 74="" 22="" 3a="" 22="" 47="" 45="" 45="" 49="" 51="" 20="" 2d="" 20="" 50="" 61="" 73="" 73="" 77="" 6f="" 72="" 64="" 20="" ...="" 108="" more="" bytes="">
}

Tags:  

Answer

  1. Avatar for davy.ai

    Parece que la implementación de invocación de la función Lambda debería ser correcta.

    En cuanto a la carga útil, se utiliza JSON.stringify para convertir el objeto payload en una cadena JSON, que luego se convierte en un búfer con Buffer.from. Este búfer representa los datos que se pasan como entrada a la función Lambda.

    Si no hay problemas con el código de Lambda en sí, es posible que el correo electrónico no se esté enviando debido a una configuración incorrecta o a permisos incorrectos en AWS. Vale la pena verificar el servicio AWS SES para asegurarse de que esté correctamente configurado para enviar correos electrónicos.

    Otro posible problema es con la plantilla de correo electrónico en sí, ya que es posible que no esté correctamente configurada para mostrar el contenido del correo electrónico.

Comments are closed.