AWS의 Lambda를 사용하여 간단한 분산 처리

8546 단어 AWSlambda

이게 뭐야?


분산 처리는 AWS의 Lambda를 사용합니다.
이번에는 AWS SNS의 subscribe를 S3에 대한 업로드의 촉발로 추가하고 싶습니다.

구조

  • s3에서subscribe에 로그인하고 싶은 정보를 높입니다
  • Lambda로 이 정보를 해석합니다
  • 분석한 정보에 따라 SNS에 로그인합니다
  • 이 구성의 이점


    흔히 볼 수 있는 모델로 AWS SNS의 로그인은 시간이 걸리고 전자 잡지와 트위터 알림을 하는 데는 시간이 걸린다.
    이 구성의 경우 여러 서버가 SNS 등록을 하기 때문에 속도가 빨라집니다.

    등록하고 싶은 내용


    protocol: http
    endpoint: http://example.com/임의의 문자

    s3에 올라온 내용입니다.

    1
    b1
    bb1
    bbb1
    bbbb1
    bbbbb1
    bbbbbb1
    bbbbbbb1
    bbbbbbbb1
    bbbbbbbbb1
    bbbbbbbbbb1
    bbbbbbbbbbb1
    

    람다 준비.


    sample.js
    var AWS = require('aws-sdk');
    
    var sns = new AWS.SNS({
      apiVersion: '2010-03-31',
      region: 'ap-northeast-1'
    });
    var s3 = new AWS.S3({
      apiVersion: '2006-03-01',
      region: 'ap-northeast-1'
    });
    
    exports.handler = function(event, context) {
      var bucket = event.Records[0].s3.bucket.name;
      var key = event.Records[0].s3.object.key;
      var params = {
        Bucket: bucket,
        Key: key
      };
    
      s3.getObject(params, function(err, data) {
        if (err) {
          context.fail("Error getting file: " + err);
        } else {
          var objectBody = data.Body.toString();
          var lines = objectBody.split(/\r\n|\r|\n/);
          for (var i = 0; i < lines.length; i++) {
            var params = {
              Protocol: 'http',
              TopicArn: 'arn:aws:sns:ap-northeast-1:*************:lambda_to_sns',
              Endpoint: 'http://example.com/' + lines[i]
            };
            sns.subscribe(params, function(err, data) {
              console.log(data);
            });
          }
        }
      });
    
      // 終了条件若干適当なので、運用する場合はちゃんとするように
      setTimeout(function(){
        context.succeed();
      }, 10000);
    };
    

    파일 만들기


    1000개 정도의 파일을 만들어보도록 하겠습니다.
    for i in {1..1000} ; do echo "$i\nb$inb$i\nbb$i\nbbb$i\nbbbb$i\nbbbbb$i\nbbbbbb$i\nbbbbbbb$i\nbbbbbbbb$i\nbbbbbbbbb$i\nbbbbbbbbbb$i\nbbbbbbbbbbb$i" > ./hoge$i.txt ; done
    

    S3에 업로드


    방금 만든 파일을 모두 버킷에 던져주세요.

    결과



    주의할 점


    이 근처에 있는 람다의 상한선을 주의하세요.
    http://aws.amazon.com/jp/lambda/faqs/
    Q. 한 번에 실행할 수 있는 AWS Lambda 함수의 수가 제한됩니까?
    AWS Lambda에서 기본적으로 특정 영역에서 계정당 동시 실행 가능 수는 100으로 제한됩니다.
    또 이번에는 IAM 등록을 생략했기 때문에 잘 설정해야 한다

    마지막


    만약 네가 행운을 잘 쓸 수 있다면, 너도 잘못을 처리할 수 있다

    좋은 웹페이지 즐겨찾기