Amazon MQ 메시지 브로커를 소스로 사용 - 아마존 EventBridge

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

Amazon MQ 메시지 브로커를 소스로 사용

EventBridge 파이프를 사용하여 Amazon MQ 메시지 브로커의 레코드를 수신할 수 있습니다. 그런 다음, 해당 레코드를 처리를 위해 사용 가능한 대상 중 하나로 보내기 전에 선택적으로 필터링하거나 개선할 수 있습니다. 파이프를 설정할 때 선택할 수 있는 Amazon MQ 관련 설정이 있습니다. EventBridge 파이프는 메시지 브로커의 레코드 순서를 유지하여 데이터를 대상으로 보냅니다.

Amazon MQ는 Apache ActiveMQRabbitMQ를 위한 관리형 메시지 브로커 서비스입니다. 메시지 브로커를 사용하면 소프트웨어 애플리케이션 및 구성 요소가 다양한 프로그래밍 언어, 운영 체제 및 공식 메시징 프로토콜을 사용하여 이벤트 대상인 토픽 또는 대기열과 통신할 수 있습니다.

Amazon MQ는 ActiveMQ 또는 RabbitMQ 브로커를 설치하여 사용자 대신 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 관리할 수도 있습니다. 브로커가 설치되면 다양한 네트워크 토폴로지와 기타 인프라 요구 사항을 인스턴스에 제공합니다.

Amazon MQ 소스에는 다음과 같은 구성 제한 사항이 있습니다.

  • 교차 계정 - EventBridge는 교차 계정 처리를 지원하지 않습니다. EventBridge를 사용하여 다른 AWS 계정에 있는 Amazon MQ 메시지 브로커의 레코드를 처리할 수 없습니다.

  • 인증 - ActiveMQ의 경우 ActiveMQ SimpleAuthenticationPlugin만 지원됩니다. RabbitMQ의 경우 PLAIN 인증 메커니즘만 지원됩니다. 보안 인증 정보를 관리하려면 AWS Secrets Manager를 사용하십시오. ActiveMQ 인증에 대한 자세한 내용은 Amazon MQ 개발자 안내서의 ActiveMQ 브로커와 LDAP 통합을 참조하세요.

  • 연결 할당량 - 브로커에는 와이어 레벨 프로토콜당 허용되는 최대 연결 수가 있습니다. 이 할당량은 브로커 인스턴스 유형에 따라 결정됩니다. 자세한 내용은 Amazon MQ 개발자 안내서에서 *Amazon MQ의 할당량*브로커 섹션을 참조하세요.

  • 연결성 - 퍼블릭 또는 프라이빗 Virtual Private Cloud(VPC)에서 브로커를 생성할 수 있습니다. 프라이빗 VPC의 경우 메시지를 수신하려면 파이프가 VPC에 대한 액세스 권한이 있어야 합니다.

  • 이벤트 대상 - 대기열 대상만 지원됩니다. 그러나 파이프와 상호 작용하는 동안 내부적으로는 토픽으로 작동하고 외부에서는 대기열로 작동하는 가상 토픽을 사용할 수 있습니다. 자세한 내용은 Apache ActiveMQ 웹사이트의 가상 대상과 RabbitMQ 웹사이트의 가상 호스트를 참조하세요.

  • 네트워크 토폴로지 - ActiveMQ의 경우 파이프당 하나의 단일 인스턴스 또는 대기 브로커만 지원됩니다. RabbitMQ의 경우 파이프당 하나의 단일 인스턴스 브로커 또는 클러스터 배포만 지원됩니다. 단일 인스턴스 브로커에는 장애 조치 엔드포인트가 필요합니다. 이러한 브로커 배포 모드에 대한 자세한 내용은 Amazon MQ 개발자 안내서에서 Active MQ 브로커 아키텍처Rabbit MQ 브로커 아키텍처를 참조하세요.

  • 프로토콜 - 지원되는 프로토콜은 사용하는 Amazon MQ 통합에 따라 다릅니다.

    • ActiveMQ 통합의 경우 EventBridge는 OpenWire/Java 메시지 서비스(JMS) 프로토콜을 사용하여 메시지를 소비합니다. 다른 프로토콜에서는 메시지 소비가 지원되지 않습니다. EventBridge는 JMS 프로토콜 내에서TextMessageBytesMessage 작업만 지원합니다. OpenWire 프로토콜에 대한 자세한 내용은 Apache ActiveMQ 웹 사이트에서 OpenWire를 참조하세요.

    • RabbitMQ 통합의 경우 EventBridge는 AMQP 0-9-1 프로토콜을 사용하여 메시지를 소비합니다. 메시지 소비를 위한 다른 프로토콜은 지원되지 않습니다. RabbitMQ의 AMQP 0-9-1 프로토콜 구현에 대한 자세한 내용은 RabbitMQ 웹사이트의 AMQP 0-9-1 전체 참조 가이드를 참조하세요.

EventBridge는 Amazon MQ가 지원하는 최신 버전의 ActiveMQ 및 RabbitMQ를 자동으로 지원합니다. 지원되는 최신 버전은 Amazon MQ 개발자 가이드의 Amazon MQ 릴리스 노트를 참조하세요

참고

기본적으로 Amazon MQ에는 브로커에 대한 주별 유지 관리 기간이 있습니다. 해당 기간 동안에는 브로커를 사용할 수 없습니다. 대기가 없는 브로커의 경우 EventBridge는 기간이 끝날 때까지 메시지를 처리하지 않습니다.

이벤트 예제

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

ActiveMQ

[ { "eventSource": "aws:amq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1.mq.us-west-2.amazonaws.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/text-message", "data": "QUJDOkFBQUE=", "connectionId": "myJMSCoID", "redelivered": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 }, { "eventSource": "aws:amq", "eventSourceArn": "arn:aws:mq:us-west-2:112556298976:broker:test:b-9bcfa592-423a-4942-879d-eb284b418fc8", "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1.mq.us-west-2.amazonaws.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/bytes-message", "data": "3DTOOW7crj51prgVLQaGQ82S48k=", "connectionId": "myJMSCoID1", "persistent": false, "destination": { "physicalname": "testQueue" }, "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959 } ]

RabbitMQ

[ { "eventSource": "aws:rmq", "eventSourceArn": "arn:aws:mq:us-west-2:111122223333:broker:pizzaBroker:b-9bcfa592-423a-4942-879d-eb284b418fc8", "eventSourceKey": "pizzaQueue::/", "basicProperties": { "contentType": "text/plain", "contentEncoding": null, "headers": { "header1": { "bytes": [ 118, 97, 108, 117, 101, 49 ] }, "header2": { "bytes": [ 118, 97, 108, 117, 101, 50 ] }, "numberInHeader": 10 }, "deliveryMode": 1, "priority": 34, "correlationId": null, "replyTo": null, "expiration": "60000", "messageId": null, "timestamp": "Jan 1, 1970, 12:33:41 AM", "type": null, "userId": "AIDACKCEVSQ6C2EXAMPLE", "appId": null, "clusterId": null, "bodySize": 80 }, "redelivered": false, "data": "eyJ0aW1lb3V0IjowLCJkYXRhIjoiQ1pybWYwR3c4T3Y0YnFMUXhENEUifQ==" } ]

소비자 그룹

Amazon MQ와 상호 작용하기 위해 EventBridge는 Amazon MQ 브로커에서 읽을 수 있는 소비자 그룹을 생성합니다. 소비자 그룹은 파이프 UUID와 동일한 ID를 사용하여 생성됩니다.

Amazon MQ 소스의 경우 EventBridge는 레코드를 일괄 처리하여 단일 페이로드로 함수에 전송합니다. 동작을 제어하려면 일괄 처리 기간 및 배치 크기를 구성할 수 있습니다. EventBridge는 다음 중 한 가지가 발생할 때까지 메시지를 가져옵니다.

  • 처리된 레코드의 페이로드 크기는 최대 6MB에 이릅니다.

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

  • 레코드 수가 전체 배치 크기에 도달했습니다.

EventBridge는 배치를 단일 페이로드로 변환한 다음 함수를 간접 호출합니다. 메시지는 지속되거나 역직렬화되지 않습니다. 대신 소비자 그룹은 메시지를 바이트의 BLOB로 검색합니다. 그런 다음 JSON 페이로드에 base64로 인코딩합니다. 함수가 배치의 어떤 메시지에 대해 오류를 반환하면 EventBridge는 처리가 성공하거나 메시지가 만료될 때까지 전체 메시지 배치를 다시 시도합니다.

네트워크 구성

기본적으로 Amazon MQ 브로커는 PubliclyAccessible 플래그가 false로 설정되어 생성됩니다. 브로커가 퍼블릭 IP 주소를 수신하는 경우에만 PubliclyAccessible이 true로 설정됩니다. 파이프의 전체 액세스를 위해 브로커는 퍼블릭 엔드포인트를 사용하거나 VPC에 대한 액세스를 제공해야 합니다.

Amazon MQ 브로커에 공개적으로 액세스할 수 없는 경우 EventBridge는 브로커와 연결된 Amazon Virtual Private Cloud(VPC) 리소스에 대한 액세스 권한이 있어야 합니다. Amazon MQ 브로커의 VPC에 액세스하려면 EventBridge에 소스의 서브넷에 대한 아웃바운드 인터넷 액세스가 필요합니다. 퍼블릭 서브넷의 경우 이는 관리형 NAT 게이트웨이여야 합니다. 프라이빗 서브넷의 경우 이는 NAT 게이트웨이 또는 자체 NAT일 수 있습니다. NAT에 퍼블릭 IP 주소가 있고 인터넷에 연결할 수 있는지 확인합니다.

다음 규칙(최소)으로 Amazon VPC 보안 그룹을 구성합니다.

  • 인바운드 규칙 - 퍼블릭 액세스 가능성이 없는 브로커의 경우 소스로 지정된 보안 그룹의 모든 포트에서 모든 트래픽을 허용합니다. 퍼블릭 액세스 가능성이 있는 브로커의 경우 모든 대상의 모든 포트에서 모든 트래픽을 허용합니다.

  • 아웃바운드 규칙 - 모든 대상에 대해 모든 포트의 모든 트래픽을 허용합니다.

참고

Amazon VPC 구성은 Amazon MQ API를 통해 검색할 수 있습니다. 설정하는 동안 이 옵션을 구성할 필요가 없습니다.