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

274
Vistas
Cómo activar lambda para cada elemento en una gran tabla estática de dynamodb

Tengo una tabla de dynamodb con casi 200 000 elementos. Necesito activar una lambda para cada elemento que contiene (enviar cada elemento a lambda como entrada). Quiero realizar esto cada x horas para todos los elementos de la tabla. Los datos en la tabla cambian cada 5 días más o menos.

¿Hay alguna forma sin servidor de automatizar la obtención de todos los elementos en lambda a través de SQS, etc.?

No puedo tener un lambda para escanear toda la tabla, ya que es demasiado para que un lambda lo maneje (dado el límite de 300 segundos, etc.).

Gracias, Vinod.

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

0

Tanto escanear como cambiar todos los datos en Dynamodb no son factibles.

Puede mantener todas las claves de dynamodb en un caché como redis. Puede haber un trabajo separado que tome las claves de redis y las coloque en sqs, donde lambda está escuchando. Las claves redis se pueden mantener actualizadas mediante flujos de dynamodb.

over 4 years ago · Santiago Trujillo Denunciar

0

Dynamo no ofrece una buena manera de activar una lambda para los elementos que ya existen, pero hay algunas formas de abordar este problema:

Opción 1 (Escaneo en lambda en pequeños lotes):

Mencionó que le preocupaba que la lambda no tuviera suficientes recursos para escanear todos los elementos de la tabla; podría intentar operar con los datos en fragmentos más pequeños para evitar las limitaciones de recursos. Lambdas tiene un tiempo de ejecución máximo de 15 minutos, lo que debería ser suficiente para la mayoría de los trabajos. (Tenga en cuenta que en Lambda, la CPU se escala con la memoria, por lo que, según el trabajo, el aprovisionamiento de memoria podría ahorrarle dinero al reducir el tiempo que tarda la función en completarse).

Opción 2 (Fargate de tarea ECS programada):

En ECS con Fargate, puede crear tareas sin servidor en una programación cron. Si le preocupan los límites de recursos, puede aprovisionar hasta 4 vCPU y 32 GB de memoria por tarea, lo que hará que sea mucho menos probable que alcance el límite de recursos. Aquí hay alguna documentación sobre cómo configurar eso.

Opción 3 (Procesar elementos mediante activadores de Dynamo):

Puede configurar su tabla de dynamo para activar una lambda cada vez que se inserten , modifiquen o eliminen datos en la tabla, luego puede procesar elementos a medida que ingresan o cambian. Incluso puede configurarlo para cambios por lotes de hasta 10 elementos para reducir las invocaciones de lambda. Aquí hay un enlace a la documentación.

Nota: este método no se activa para elementos que ya están en la tabla. Sin embargo, puede evitar esto escribiendo un script para actualizar un campo arbitrario en esos elementos.
over 4 years ago · Santiago Trujillo Denunciar

0

Cuando dice que desea "disparar" para cada elemento, no está 100% claro a qué se refiere. En general, creo que DynamoDB transmite para eso, pero algo tiene que hacer que los registros sean procesados por la transmisión. Esto a menudo se hace con un elemento de UpdateItem simple para cada registro, configurando un campo, que probablemente no sea parte de sus datos, a algo como la hora actual o algo más único. A partir de ahí, obtendrá cada registro para procesar a través de un lambda activado en la transmisión.

La forma 100% sin servidor de recorrer los datos es la siguiente:

  • Función de paso que llama a una lambda para ejecutar un lote de registros.
  • La función Lambda escanea los registros, recorriendo las páginas de los registros.
    • La función debe aceptar una carga útil que opcionalmente suministre la información de paginación.
    • La función debe verificar el contexto lambda para ver cuánto tiempo queda antes de comenzar cada bucle y salir si no hay suficiente tiempo para procesar el lote.
    • Función para devolver la información de paginación (última clave evaluada)
  • La función de paso busca ver si la paginación está completa.
    • De lo contrario, se vuelve a llamar a lambda con la información de paginación pasada.
    • Si termina completo
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