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

287
Vistas
¿Cómo procesar un mensaje SNS en AWS Lambda escrito en Java?

Tengo algunas lambdas trabajando juntas a través de SNS. Una lambda recibe una solicitud y envía datos a SNS. Otro lambda está suscrito a SNS. Fue fácil de hacer en JavaScript ya que el mensaje entrante es solo un objeto JS. Ahora estoy reescribiendo la lambda a Java. Estoy buscando el tipo para usar en el controlador.

Así es como se ve la lambda. SNSMessage es el marcador de posición para el tipo.

 public class ArchiveRequestHandler implements RequestHandler<SNSMessage?, Void> { @Override public Void handleRequest(SNSMessage? input, Context context) { // do something with the message return null; } }

Así es como se ve un mensaje de ejemplo:

 { "Records": [ { "EventVersion": "1.0", "EventSubscriptionArn": "arn:aws:sns:EXAMPLE", "EventSource": "aws:sns", "Sns": { "SignatureVersion": "1", "Timestamp": "1970-01-01T00:00:00.000Z", "Signature": "EXAMPLE", "SigningCertUrl": "EXAMPLE", "MessageId": "1234567-ee98-5cb9-9903-4c221d41eb5e", "Message": "Hello from SNS!", "MessageAttributes": { "Test": { "Type": "String", "Value": "TestString" }, "TestBinary": { "Type": "Binary", "Value": "TestBinary" } }, "Type": "Notification", "UnsubscribeUrl": "EXAMPLE", "TopicArn": "arn:aws:sns:EXAMPLE", "Subject": "TestInvoke" } } ] }

Ahora estoy seguro de que puedo crear mi propio tipo para analizar esto, pero esperaba que hubiera una forma más estándar de hacerlo. Sin embargo, no he encontrado nada en las dependencias lambda ni SNS SDK que se parezca a este objeto.

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Gracias a los comentarios de @dnault y @notionquest encontré que este objeto es parte de la biblioteca aws-lambda-java-events . Agregué la dependencia:

 compile 'com.amazonaws:aws-lambda-java-events:1.3.0'

Y ahora puedo hacer:

 public class ArchiveRequestHandler implements RequestHandler<SNSEvent, Void> { @Override public Void handleRequest(SNSEvent input, Context context) { // do something with the message return null; } }
about 4 years ago · Santiago Trujillo Denunciar

0

El siguiente código Lambda procesa los mensajes de entrada de SNS:

 import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.SNSEvent; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; public class LogEvent implements RequestHandler<SNSEvent, Object> { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); public Object handleRequest(SNSEvent request, Context context){ String timeStamp = sdf.format(new Date()); LambdaLogger logger = context.getLogger(); logger.log("-------------------------Invocation started: --------------" + timeStamp); List<SNSEvent.SNSRecord> snsRecordList = request.getRecords(); if ( snsRecordList != null ){ SNSEvent.SNS recordSNS = null; for ( SNSEvent.SNSRecord snsRecord : snsRecordList ) { recordSNS = snsRecord.getSNS(); logger.log( "Subject:[" + recordSNS.getSubject() + "]" + "Arn:[" + recordSNS.getTopicArn() + "]" + "attribs:[" + recordSNS.getMessageAttributes() + "]" + "message:[" + recordSNS.getMessage() + "]" ); }//for } timeStamp = sdf.format(new Date()); logger.log("-------------------------Invocation completed: -------------" + timeStamp); return null; } }
about 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