Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

291
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!