Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

290
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda