Amazon Kinesis에서 Lambda 함수 사용

AWS Kinesis서비스는 웹 사이트 클릭, 로그, 소셜 미디어 피드에서 발생하는 실시간 추적 데이터를 캡처 / 저장하는 데 사용됩니다. 이 로그에서 추가 처리를 수행하도록 AWS Lambda를 트리거 할 수 있습니다.

필요 조건

Kinesis 및 AWS Lambda를 시작하기위한 기본 요구 사항은 다음과 같습니다.

  • 필요한 권한이있는 역할 만들기
  • Kinesis에서 데이터 스트림 생성
  • AWS Lambda 함수를 생성합니다.
  • AWS Lambda에 코드 추가
  • Kinesis 데이터 스트림에 데이터 추가

Kinesis의 데이터 스트림을 처리하기 위해 AWS Lambda를 트리거하고 수신 된 데이터와 함께 메일을 보내는 예제를 살펴 보겠습니다.

프로세스를 설명하는 간단한 블록 다이어그램은 다음과 같습니다.

필요한 권한이있는 역할 만들기

AWS 콘솔로 이동하여 역할을 생성합니다.

Kinesis에서 데이터 스트림 생성

AWS 콘솔로 이동하여 kinesis에서 데이터 스트림을 생성합니다.

다음과 같이 4 가지 옵션이 있습니다. 이 예제에서는 Create data stream에 대해 작업합니다.

딸깍 하는 소리 Create data stream. 아래 주어진 Kinesis 스트림 이름에 이름을 입력합니다.

데이터 스트림의 샤드 수를 입력합니다.

샤드의 세부 사항은 다음과 같습니다.

이름을 입력하고 Create Kinesis stream 하단의 버튼.

스트림이 활성화 되려면 일정 시간이 걸립니다.

AWS Lambda 함수 생성

AWS 콘솔로 이동하여 Lambda를 클릭합니다. 다음과 같이 AWS Lambda 함수를 생성합니다.

딸깍 하는 소리 Create function화면 끝에 버튼을 클릭합니다. Kinesis를 AWS Lambda에 트리거로 추가합니다.

Kinesis 트리거에 구성 세부 정보 추가-

트리거를 추가하고 이제 AWS Lambda에 코드를 추가합니다.

AWS Lambda에 코드 추가

이를 위해 nodejs를 런타임으로 사용합니다. AWS Lambda가 kinesis 데이터 스트림으로 트리거되면 메일을 보냅니다.

const aws =  require("aws-sdk");
var ses = new aws.SES({
   region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
   let payload = "";
   event.Records.forEach(function(record) {
      // Kinesis data is base64 encoded so decode here
      payload = new Buffer(record.kinesis.data, 'base64').toString('ascii');
      console.log('Decoded payload:', payload);
   });
   var eParams = {
      Destination: {
         ToAddresses: ["[email protected]"]
      },
      Message: {
         Body: {
            Text: {
               Data:payload
            }
         },
         Subject: {
            Data: "Kinesis data stream"
         }
      },
      Source: "[email protected]"
   };    
   var email = ses.sendEmail(eParams, function(err, data) {
      if (err) console.log(err);
      else {
         console.log("===EMAIL SENT===");
         console.log("EMAIL CODE END");
         console.log('EMAIL: ', email);
         context.succeed(event);
         callback(null, "email is send");
      }
   });
};

이벤트 매개 변수에는 키네 시스 데이터 스트림에 입력 된 데이터가 있습니다. 위의 aws lambda 코드는 kinesis 데이터 스트림에 데이터가 입력되면 활성화됩니다.

Kinesis Data Stream에 데이터 추가

여기에서는 AWS CLI를 사용하여 아래와 같이 데이터 키네 시스 데이터 스트림을 추가합니다. 이를 위해 다음 명령을 사용할 수 있습니다.

aws kinesis put-record --stream-name kinesisdemo  --data "hello world" --
partition-key "789675"

그런 다음 AWS Lambda가 활성화되고 메일이 전송됩니다.