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.

AWS Step Functions Consumiendo mensajes de SQS

Estoy consumiendo mensajes de SQS para activar consultas.
Cuando normalmente consumo un mensaje de SQS en Python, necesito eliminar el mensaje de SQS.
¿Tengo que eliminar manualmente el mensaje de SQS en una Step Function?
¿Cuál es la mejor/manera más sencilla de hacerlo?

Creo que SQS ha realizado la integración:

{
  "Comment": "Ejecutar consultas en Redshift",
  "StartAt": "ReceiveMessage desde SQS",
  "States": {
    "ReceiveMessage desde SQS": {
      "Type": "Task",
      "Parameters": {
        "QueueUrl": "******"
      },
      "Resource": "arn:aws:states:::aws-sdk:sqs:receiveMessage",
      "Next": "Ejecutar consultas de análisis",
      "ResultSelector": {
        "body.$": "States.StringToJson($.Messages[0].Body)"
      }
    },
    "Ejecutar consultas de análisis": {
      "Type": "Task",
      "Parameters": {
        "ClusterIdentifier": "******",
        "Database": "prod",
        "Sql": "select * from ******"
      },
      "Resource": "arn:aws:states:::aws-sdk:redshiftdata:executeStatement",
      "End": true
    }
  },
  "TimeoutSeconds": 3600
}

Acabo de hacer una prueba y parece que los mensajes bajan temporalmente, pero luego vuelven a subir.

¿Es la mejor manera de insertar una Lambda entre la etapa “ReceiveMessage desde SQS” y la etapa de Redshift?

Esto planteó otra pregunta. Hasta ahora solo lo he ejecutado manualmente. ¿Cómo activo esta Step Function eventualmente para ejecutarse en cualquier mensaje?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según el código de la función Step proporcionada, la eliminación del mensaje de SQS no se maneja automáticamente. Deberías eliminar manualmente el mensaje utilizando una función Lambda separada para asegurarte de que el mensaje se consuma solo una vez.

    La mejor/forma más sencilla de eliminar el mensaje de SQS es agregar una función Lambda después del paso “Ejecutar consultas de análisis”. La función Lambda puede encargarse de eliminar el mensaje de SQS.

    Para activar la ejecución de la función Step en cualquier mensaje, puedes configurar la cola de SQS para que desencadene la función Step cada vez que se agregue un nuevo mensaje a la cola. Esto se puede lograr configurando la cola de SQS para que notifique a la función Step mediante un evento cuando haya un nuevo mensaje disponible. Luego, la función Step se ejecutará automáticamente al recibir un nuevo mensaje en la cola de SQS.

Comments are closed.