이벤트 필터를 사용하여 Lambda 함수 트리거

AWS Lambda functions는 최근 DynamoDB,Amazon SQS,Amazon Kinesis의 이벤트 트리거를 이벤트 원본으로 하여 이벤트 기반의 Lambda 함수 트리거를 필터 표현식만 기반으로 호출하기 쉽게 하는 강화 기능을 발표했다.
너는 이 관원에 관한 정보를 읽을 수 있다. announcement from AWS Blog post

AWS의 새로운 기능
@awswhatsnew

AWS Lambda는 현재 이벤트 원본으로 Amazon SQS, Amazon DynamoDB, Amazon Kinesis의 이벤트 필터를 지원합니다. AWS Lambda는 이벤트 원본으로 SQS, DynamoDB, Kinesis에 내용 필터 옵션을 제공합니다.이벤트 모드 내용 필터링을 통해 사용자...aws.amazon.com/about-aws/what…
2021년 11월 26일 오후 18:51
알다시피 AWS Lambda 함수는 Lambda fn을 촉발하는 각종 이벤트 원본을 지원한다. 예를 들어 - DynamoDB 촉발기, SQS 촉발기, SNS 촉발 등이다.Lambda fn 이벤트를 사용한 모든 사용자에게 Lambda 함수 코드에서 대량의 사례를 처리하여 개발자가 처리하는 사례가 되거나 실행해야 합니다.
예를 들어 DynamoDB 트리거/흐름을 사용하고 있고, 업무 논리에 Lambda 함수가 DynamoDB 테이블에 새 기록이 있을 때만 실행되어야 한다면, 삽입해야 하는 이벤트Name을 검사한 다음 계속해야 합니다. 그렇지 않으면 Lambda 함수의 실행을 끝내야 합니다.
현재, 새로운 announcement 이 생겨서, Lambda 함수는 설정된 이벤트 원본 필터에만 따라 호출될 수 있도록 더욱 쉽게 확보할 수 있습니다.개발자의 여정을 풍요롭게 할 뿐만 아니라 람바다 함수가 실행하는 밀리초수도 절약할 수 있어 장기적으로 비용 절감이다.

Lambda 함수에서 이벤트 필터링 설정


콘솔, CLI 또는 CloudFormation을 통해 Lambda Fn을 생성하거나 업데이트할 때마다 이벤트 필터링이 있는 Lambda Fn 트리거를 추가하거나 업데이트할 수 있습니다.
콘솔에서 이벤트 필터링을 추가하려는 경우 Lambda 함수 -> 구성 -> 트리거로 이동하여 새 를 추가합니다.additional settings(추가 설정) 옵션에서 Filter criteria를 선택합니다. 필터 모드/표준 유효한 JSON 객체를 입력해야 합니다.

이 프레젠테이션에서 필터만 사용하는 다이나마이트 DB 트리거 "eventName":"INSERT" 를 추가합니다.이를 위해서는 일치하는 필터링 기준에 유효한 JSON을 추가해야 합니다.
{ "eventName" : ["INSERT"] }
DynamoDB 트리거를 추가하려면 Lambda fn에 해당하는 IAM 정책이 있어야 합니다. 이 정책은 DynamoDB에 대한 접근 권한을 부여합니다.
bash 명령을 사용하여 CLI에서 동일한 작업을 수행할 수 있습니다.
aws lambda create-event-source-mapping \
--function-name DynamoDBEventFiltering \
--batch-size 100 \
--starting-position LATEST \
--event-source-arn arn:aws:dynamodb:us-east-1:XXXXXXXXXX:table/cars-demo \
--filter-criteria '{\"Filters\": [{\"Pattern\": \"{\"eventName\": [\"INSERT\"]}}]}'
CloudFormation 또는 SAM의 동등한 YAML 템플릿은 다음과 같습니다.
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An Amazon DynamoDB trigger that logs the updates made to a table.
Resources:
  DynamoDBEventFiltering:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: app.handler
      Runtime: nodejs14.x
      CodeUri: src/
      MemorySize: 128
      Timeout: 3
      Events:
        cars-demo:
          Type: DynamoDB
          Properties:
            Stream: !GetAtt CarsDemoDynamoDB.StreamArn
            StartingPosition: TRIM_HORIZON
            BatchSize: 100
            Filters: 
              - Pattern: {\"Filters\": [{\"Pattern\": \"{\"eventName\": [\"INSERT\"]}}]}

이벤트 필터링은 정의된 엄격한 JSON 형식을 따라야 합니다.너는 규칙을 찾을 수 있다here.
Lambda 함수를 테스트하려면 DynamoDB 흐름에 대해 DynamoDB 작업을 수행해야 합니다. 예를 들어 - put, delete 또는 update.같은 이벤트 JSON을 Lambda Fn invoke JSON으로 사용하면 DynamoDB, SQS, Kinesis의 통합 지원 이벤트 필터가 실행됩니다.DynamoDB에서 프로젝트를 만들고, 프로젝트를 업데이트하고, 같은 항목을 삭제하는 등 작업을 할 때, DynamoDB 흐름은 이벤트 트리거 필터 조건에 정의된 삽입/put 작업만 Lambda fn을 터치합니다.

다른 작업에서는 Lambda 함수도 호출되지 않았습니다.

값을 매기다


AWS Lambda functions는 announcement AWS Blog post에서 추가 비용이 없음을 확인했습니다.여기의takeaway cookie는 이 이벤트 필터를 가지고 있습니다. 이것은 실행하는millsesonds를 저장합니다. Lambda Fn이 심지어 호출되지 않았기 때문에 이것은 아주 좋은 저장입니다. 이것은 Lambda Fn이 생산 환경에서 수백만 번 호출될 때입니다.

결론


소스 코드(DynamoDB, SQS, Kinesis)에 대한 이벤트 필터링은 Lambda Fn 개발자와 이벤트 구동 체계 구조를 잘 통합하는 데 도움이 된다.DynamoDB, SQS, Kinesis와의 통합을 개발자가 경험하는 데 도움이 되지만, 필터 조건이 실패하면 램바다 Fn이 호출되지 않기 때문에 비용 절감에도 도움이 된다.
너도 AWS의 블로그Kinesis event filtering implementation by Ben Smith를 참고할 수 있다.
DynamoDB Streams 기반 이벤트 필터링의 작동 방식 이해

좋은 웹페이지 즐겨찾기