EventBridge Pipes의 소스로 사용되는 Amazon Simple Queue Service - Amazon EventBridge

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

EventBridge Pipes의 소스로 사용되는 Amazon Simple Queue Service

EventBridge 파이프를 사용하여 Amazon SQS 대기열로부터 레코드를 수신할 수 있습니다. 그런 다음, 해당 레코드를 처리를 위해 사용 가능한 대상으로 보내기 전에 선택적으로 필터링하거나 개선할 수 있습니다.

파이프를 사용하여 Amazon Simple Queue Service(Amazon SQS) 대기열의 메시지를 처리할 수 있습니다. EventBridge 파이프는 표준 대기열선입선출(FIFO) 대기열을 지원합니다. Amazon SQS를 사용하면 작업을 대기열로 전송하고 비동기식으로 처리하여 애플리케이션의 구성 요소 중 하나에서 작업을 오프로드할 수 있습니다.

EventBridge는 대기열을 폴링하고 대기열 메시지를 포함한 이벤트와 동기적으로 파이프를 간접 호출합니다. EventBridge는 메시지를 배치 단위로 읽고 각 배치에 대해 한 번씩 파이프를 간접 호출합니다. 파이프가 배치를 성공적으로 처리하면 EventBridge는 대기열에서 메시지를 삭제합니다.

기본적으로 EventBridge는 대기열에서 최대 10개의 메시지를 동시에 폴링하고 해당 배치를 파이프로 보냅니다. 적은 수의 레코드로 파이프를 간접 호출하는 것을 피하려면 배치 기간을 구성하여 이벤트 소스가 최대 5분 동안 레코드를 버퍼링하도록 지정할 수 있습니다. 파이프를 간접 호출하기 전에 EventBridge는 다음 중 하나가 발생할 때까지 Amazon SQS 표준 대기열에서 메시지를 계속 폴링합니다.

  • 일괄 처리 기간이 만료됩니다.

  • 간접 호출 페이로드 크기 할당량에 도달했습니다.

  • 구성된 최대 배치 크기에 도달했습니다.

참고

배치 기간을 사용하고 Amazon SQS 대기열에 트래픽이 적은 경우, EventBridge는 파이프를 간접 호출하기 전에 최대 20초까지 기다릴 수 있습니다. 이는 배치 기간을 20초 미만으로 설정한 경우에도 마찬가지입니다. FIFO 대기열의 경우 레코드에는 중복 제거 및 시퀀싱과 관련된 추가 속성이 포함되어 있습니다.

EventBridge가 배치를 읽으면 메시지는 대기열에 머무르지만 대기열의 가시성 시간제한 동안 숨겨집니다. 파이프가 배치를 성공적으로 처리하면 EventBridge는 대기열에서 메시지를 삭제합니다. 기본적으로 배치를 처리하는 동안 파이프에 오류가 발생하면 해당 배치의 모든 메시지가 대기열에 다시 표시됩니다. 이러한 이유로 파이프 코드는 의도하지 않은 부작용 없이 동일한 메시지를 여러 번 처리할 수 있어야 합니다. 파이프 응답에 배치 항목 실패를 포함시켜 이 재처리 동작을 수정할 수 있습니다. 다음 예제에서는 메시지 두 개의 배치에 대한 이벤트를 보여 줍니다.

이벤트 예제

다음 샘플 이벤트는 파이프가 수신한 정보를 보여줍니다. 이 이벤트를 사용하여 이벤트 패턴을 생성 및 필터링하거나 입력 변환을 정의할 수 있습니다. 모든 필드를 필터링할 수 있는 것은 아닙니다. 필터링할 수 있는 필드에 대한 자세한 내용은 Amazon EventBridge Pipes의 이벤트 필터링 섹션을 참조하세요.

표준 대기열

[ { "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", "awsRegion": "us-east-2" }, { "messageId": "2e1424d4-f796-459a-8184-9c92662be6da", "receiptHandle": "AQEBzWwaftRI0KuVm4tP+/7q1rGgNqicHq...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082650636", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082650649" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", "awsRegion": "us-east-2" } ]

FIFO 대기열

[ { "messageId": "11d6ee51-4cc7-4302-9e22-7cd8afdaadf5", "receiptHandle": "AQEBBX8nesZEXmkhsmZeyIE8iQAMig7qw...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1573251510774", "SequenceNumber": "18849496460467696128", "MessageGroupId": "1", "SenderId": "AIDAIO23YVJENQZJOL4VO", "MessageDeduplicationId": "1", "ApproximateFirstReceiveTimestamp": "1573251510774" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:fifo.fifo", "awsRegion": "us-east-2" } ]

조정 및 처리

표준 대기열의 경우 EventBridge는 긴 폴링을 사용하여 대기열이 활성화될 때까지 대기열을 폴링합니다. 메시지를 사용할 수 있는 경우 EventBridge는 최대 5개의 배치를 읽고 파이프로 보냅니다. 메시지를 계속 사용할 수 있는 경우 EventBridge는 배치를 읽는 프로세스의 수를 분당 최대 300개의 추가 인스턴스까지 증가시킵니다. 파이프가 동시에 처리할 수 있는 최대 배치 수는 1,000개입니다.

FIFO 대기열의 경우 EventBridge는 메시지를 수신한 순서대로 파이프에 메시지를 보냅니다. FIFO 대기열에 메시지를 전송할 때 메시지 그룹 ID를 지정합니다. Amazon SQS는 동일한 그룹의 메시지를 순서대로 EventBridge에 쉽게 전송할 수 있도록 합니다. EventBridge는 수신된 메시지를 그룹으로 분류하고 그룹에 대해 한 번에 한 배치만 보냅니다. 파이프가 오류를 반환하는 경우 파이프는 EventBridge가 동일한 그룹에서 추가 메시지를 수신하기 전에 영향을 받는 메시지에 대해 모든 재시도를 시도합니다.

EventBridge 파이프에서 사용할 대기열 구성

파이프의 소스로 제공할 Amazon SQS 대기열을 생성합니다. 그런 다음 파이프가 각 이벤트 배치를 처리하고 EventBridge가 확장 시 제한 오류에 응답해 다시 시도할 수 있는 시간을 허용하도록 대기열을 구성합니다.

각 레코드 배치를 처리하는 파이프 시간을 허용하려면 소스 대기열의 가시성 제한 시간을 파이프 강화 및 대상 구성 요소의 총 런타임의 6배 이상으로 설정합니다. 이전 배치를 처리하는 동안 파이프가 제한되는 경우 추가 시간을 통해 EventBridge가 재시도할 수 있습니다.

파이프가 메시지를 여러 번 처리하지 못하면 Amazon SQS에서 메시지를 DLQ(Dead Letter Queue)로 보낼 수 있습니다. 파이프가 오류를 반환하면 EventBridge는 해당 오류를 대기열에 남깁니다. 가시성 시간 초과가 발생하면 EventBridge는 메시지를 다시 수신합니다. 여러 번 수신한 후 메시지를 두 번째 대기열로 보내려면 소스 대기열에 DLQ(Dead Letter Queue)를 구성합니다.

참고

파이프가 아닌 소스 대기열에서 DLQ(Dead Letter Queue)를 구성해야 합니다. 파이프에 구성한 DLQ(Dead Letter Queue)는 소스 대기열이 아닌 파이프의 비동기 간접 호출 대기열에 사용됩니다.

파이프가 오류를 반환하거나 최대 동시성 상태이기 때문에 간접 호출할 수 없는 경우에는 추가 시도로 처리에 성공할 수 있습니다. 메시지를 DLQ(Dead Letter Queue)로 보내기 전에 메시지를 처리할 수 있는 기회를 더 많이 제공하려면 원본 대기열의 리드라이브 정책에서 maxReceiveCount5이상으로 설정합니다.

배치 항목 실패 보고

EventBridge가 소스의 스트리밍 데이터를 소비하고 처리할 때 기본적으로 배치가 완전히 성공한 경우에만 배치의 가장 높은 시퀀스 번호로 체크포인트를 수행합니다. 실패한 배치에서 정상 처리된 메시지를 재처리하지 않으려면 성공한 메시지와 실패한 메시지를 나타내는 객체를 반환하도록 보강 또는 대상을 구성하면 됩니다. 이를 부분 일괄 응답이라고 합니다.

자세한 내용은 부분적 배치 실패 단원을 참조하십시오.

성공 및 실패 조건

다음 중 하나를 반환할 경우 EventBridge는 배치를 완전한 성공으로 처리합니다.

  • 비어 있는 batchItemFailure 목록

  • null batchItemFailure 목록

  • 비어 있는 EventResponse

  • null EventResponse

다음 중 하나를 반환할 경우 EventBridge는 배치를 완전한 실패로 처리합니다.

  • 빈 문자열 itemIdentifier

  • null itemIdentifier

  • 키 이름이 잘못된 itemIdentifier

EventBridge는 재시도 전략에 따라 실패를 재시도합니다.