DynamoDB에 트리거가 있나요?

네. DynamoDB 트리거는 DynamoDB Streams에 AWS Lambda를 더해 만듭니다. 스트림이 항목 수준의 모든 변경을 포착하고, 스트림을 구독하는 Lambda 함수가 그에 응답해 자동으로 실행됩니다. CREATE TRIGGER 문은 없습니다. 트리거 코드는 데이터베이스 바깥의 Lambda에 있습니다.

트리거가 동작하는 방식

테이블에 DynamoDB Streams를 켠 다음, 스트림의 ARN을 Lambda 함수와 연결합니다. 모든 생성, 업데이트, 삭제가 스트림 레코드로 포착되며, Lambda 서비스는 초당 네 번 스트림을 폴링해 새 레코드 배치와 함께 함수를 동기적으로 호출합니다. 관심 있는 변경에 대해서만 함수가 실행되도록 이벤트를 필터링할 수도 있습니다.

함수가 실제로 받는 것

StreamViewType: NEW_AND_OLD_IMAGES로 스트림을 켜고 주문 하나를 쓴 뒤 상태를 바꾸고 삭제한 다음, GetRecords로 샤드를 되읽었습니다. 레코드가 셋 나왔습니다. INSERT, MODIFY, REMOVE입니다. 가운데 것을 그대로 옮기면 이렇습니다:

{
  "eventID": "77dabd57-20e1-4827-83e9-0fa20153adb0",
  "eventName": "MODIFY",
  "eventVersion": "1.1",
  "eventSource": "aws:dynamodb",
  "awsRegion": "ddblocal",
  "dynamodb": {
    "ApproximateCreationDateTime": 1785266820,
    "Keys": {"pk": {"S": "ORDER#1"}},
    "NewImage": {
      "total": {"N": "42"},
      "pk": {"S": "ORDER#1"},
      "status": {"S": "SHIPPED"}
    },
    "OldImage": {
      "total": {"N": "42"},
      "pk": {"S": "ORDER#1"},
      "status": {"S": "PENDING"}
    },
    "SequenceNumber": "000000000000000019180",
    "SizeBytes": 67,
    "StreamViewType": "NEW_AND_OLD_IMAGES"
  }
}

두 이미지가 모두 레코드에 들어 있습니다. PENDING에서 SHIPPED로의 질문은 테이블을 다시 조회하지 않고 함수 안에서 답할 수 있습니다. 트리거 안의 GetItem은 읽기 비용이 들고 다음 쓰기와 경합하므로, 어느 이미지도 설명하지 않는 세 번째 상태를 넘겨줄 수 있습니다.

뷰 타입은 스트림을 켤 때 고르며, 이미 쓰인 레코드는 그때 요청한 내용만 가집니다. KEYS_ONLYNEW_IMAGE를 고르면 나중에 diff 할 OldImage가 없습니다.

Lambda는 같은 레코드를 Records 배열에 넣어 함수에 넘기고 eventSourceARN 필드를 추가합니다. 위의 awsRegionddblocal인 이유는 이 실행이 DynamoDB Local을 썼기 때문입니다. 서비스에 대해 돌리면 Region이 들어갑니다.

트리거의 용도

전형적인 용도에는 값이 바뀔 때 알림 보내기, 워크플로 시작하기, 집계와 카운터 유지하기, 영구 감사 추적을 위해 각 변경을 S3 같은 내구성 있는 저장소로 복사하기가 포함됩니다. 함수가 오류를 내면 Lambda는 성공할 때까지, 또는 레코드가 만료될 때까지 배치를 재시도하며, 재시도와 배치 동작은 설정할 수 있습니다.

알아 두면 좋은 제한 사항

AWS는 한 스트림에 구독하는 Lambda 함수를 최대 두 개까지로 권장합니다. 그 이상이면 읽기 스로틀링이 날 수 있습니다. 트리거 함수는 짧게 끝나야 합니다. 무거운 처리는 인라인에서 긴 로직을 돌리지 말고 비동기 워크플로로 넘기세요.

더 알아보기

스트림 모델 자체는 DynamoDB Streams 가이드로 시작하고, 트리거가 반응할 쓰기를 만들려면 expression builder를 쓰며, 스트림에 흘러드는 항목 변경을 보려면 DynoTable을 다운로드하세요.

참고 자료

위에 링크된 공식 AWS 문서를 기준으로 2026-07-13에 마지막으로 확인했습니다.

이 스트림 레코드는 2026-07-28에 Node v24.18.0의 @aws-sdk/client-dynamodb 3.1095.0으로 DynamoDB Local 3.3.0에 대해 캡처했으며, 들여쓰기 외에는 손대지 않고 그대로 옮겼습니다.

Console 없이 DynamoDB 작업하기

DynamoDB로는 실행할 수 없는 진짜 SQL(JOINs, GROUP BY, 집계)을 실행하는 빠른 DynamoDB 데스크톱 클라이언트. 시각적 편집과 여러분 자신의 Bedrock 키로 동작하는 AI 에이전트를 제공합니다.

30일 무료 체험, 신용카드 불필요 — 이후 기간 제한 없는 무료 요금제.