Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

192
Vistas
La función de AWS Lambda se agota cuando necesito el módulo aws-sdk

Estoy tratando de consultar una tabla de DynamoDB desde una función Lambda (para una habilidad de Alexa), pero cuando envío la intención de que las llamadas require('aws-sdk') , la habilidad parece bloquearse y expirar. La página de prueba de Alexa solo dice "Hubo un problema con la respuesta de la habilidad solicitada", y no veo ningún error en los registros de CloudWatch. Tengo la habilidad configurada para detectar cualquier error y devolverlo como una respuesta hablada, por lo que estoy seguro de que no es una excepción no detectada. También intenté envolver el require en un bloque try/catch , pero tampoco funcionó.

Este es el módulo que se carga con require si se recibe la solicitud de intención de la base de datos de prueba:

 const AWS = require('aws-sdk'); module.exports = () => { return 'Success!'; };

Si comento require('aws-sdk') , la función funciona correctamente y Alexa responde con "Éxito".

¿Por qué mi habilidad falla cuando todo lo que hago es requerir el módulo aws-sdk ?

Soy muy nuevo en AWS y esta es mi primera experiencia al intentar acceder a una tabla de DynamoDB en una función Lambda.

La función Lambda se carga como un zip que contiene mi código fuente, package.json (que incluye aws-sdk como dependencia) y la carpeta node_modules .

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Después de horas de depuración, descubrí que cambiar import * as AWS from 'aws-sdk'; para import {DynamoDB} from 'aws-sdk'; (o {CloudFront} o lo que realmente use) hizo desaparecer el problema del tiempo de espera. Eso sí, el tiempo para conectarse realmente a DynamoDB nunca fue un problema para mí, siempre fue la línea de import donde ocurrió el tiempo de espera.

over 4 years ago · Santiago Trujillo Denunciar

0

Esto se puede solucionar aumentando el tiempo de espera o la memoria asignada a la función lambda.

Esto probablemente se deba a que el SDK es demasiado grande para importarlo con el valor de tiempo de espera predeterminado de 3 segundos y el valor de memoria predeterminado de 128 MB. Es por eso que probablemente funcionará si intenta importar componentes más pequeños como solo DynamoDB.

over 4 years ago · Santiago Trujillo Denunciar

0

Lambda, cuando usa NodeJS, usa un modelo de continuación de devolución de llamada. Su módulo debe exportar una función que tome tres parámetros: evento, contexto y devolución de llamada.

Event proporciona parámetros de entrada.

Los otros dos se usan para devolver el control desde su función de controlador, según la versión de NodeJS que esté usando.

Intente agregar los tres parámetros que mencioné y, desde su función de controlador exportado, llame a:

 module.export = function(event, context, callback) { callback('success'); }

Tenga en cuenta que escribí esto en el móvil sin pensarlo, por lo que es posible que deba hacer pequeños ajustes en el código, pero la idea es la misma. No regrese directamente desde la función, pero llame a la devolución de llamada para proporcionar la respuesta como una continuación. Y tenga en cuenta que en versiones anteriores de NodeJS, antes de la versión 4, tendría que usar el contexto para establecer el éxito o el fracaso, en lugar de llamar a la devolución de llamada.

Para obtener más detalles, consulte los documentos técnicos de Lambda con NodeJS en AWS.

La otra cosa a tener en cuenta es que para Alexa específicamente, la respuesta debe estar en el formato correcto. Esa es una respuesta JSON que contiene todos los elementos necesarios como se explica en los documentos técnicos de Alexa Skills Kit .

El sdk de Alexa ASK que ha incluido genera esas respuestas, pero pensé que debería indicarle los documentos reales en caso de que intentara crear la respuesta a mano para comprender cómo funciona.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda