AWS

AWS SQS의 Lambda를 호출 예제

쿠카이든 2022. 2. 15. 11:57
728x90

SQS - Lambda 구성도

  • 대략적인 SQS가 Lambda를 호출하는 구성도
    • 이를 바탕으로 SQS에서 메시지를 읽어들이는 코드(Node.js 기반)를 작성
    • QueueUrl은 이전에 생성한 SQS의 url을 넣어줌
    • AWS의 Console에서 결과를 확인
const AWS = require("aws-sdk");
const sqs = new AWS.SQS();
const lambda = new AWS.Lambda();

exports.handler = (event, context, callback) => {
  const params = {
    QueueUrl: 'https://sqs.ap-northeast-2.amazonaws.com/XXXXXX/MyFirstQueue',
    MaxNumberOfMessages: 10,
    MessageAttributeNames: ['All']
  };
  //SQS의 receiveMessage는 큐에 포함된 메시지를 1~10개까지 반환
  sqs.receiveMessage(params).promise()
    .then((data) => {
      if (data.Messages && data.Messages.length > 0) {
        // 큐에 데이터가 있을시 람다를 통해 데이터를 처리(DB에 저장할지 파일로 저장할지 등등)
      }
    })
    .then(() => {
      //성공시 콜백함수 호출
      callback();
    })
    .catch((err) => {
      //실패시 콜백함수 호출
      callback(err);
    });
};

SQS의 receiveMessage는 큐에 포함된 메시지를 1~10개까지 반환하고, 반환되는 메시지는 아래와 같은 내용을 포함함

  • Message body
  • Message body의 MD5 digest
  • 메시지 전송시 사용된 MessageId
  • Receipt handle. message삭제시 identifier로 사용됩니다.
  • Message attributes.
  • Message attributes의 MD5 digest

- 반환되는 메시지 관련 참고자료https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#receiveMessage-property

728x90

'AWS' 카테고리의 다른 글

AWS 요금 폭탄 피하기  (0) 2023.01.31
(Amazon AWS ELB 관련) 로드 밸런싱이란  (2) 2022.10.01
Docker 로그보는 방법(log)  (0) 2022.03.09