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

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

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

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

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

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

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

  • 크로스 어카운트 — 크로스 어카운트 처리는 EventBridge 지원하지 않습니다. 다른 AWS 계정에 있는 Amazon MQ 메시지 브로커의 레코드를 처리하는 EventBridge 데는 사용할 수 없습니다.

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

    • RabbitMQ 통합의 경우 AMQP 0-9-1 프로토콜을 EventBridge 사용하여 메시지를 사용합니다. 메시지 소비를 위한 다른 프로토콜은 지원되지 않습니다. 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.rproxy.goskope.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.rproxy.goskope.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와 상호 작용하려면 Amazon MQ 브로커로부터 읽을 수 있는 소비자 그룹을 EventBridge 생성하십시오. 소비자 그룹은 파이프 UUID와 동일한 ID를 사용하여 생성됩니다.

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

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

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

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

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

네트워크 구성

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

Amazon MQ 브로커에 공개적으로 액세스할 수 없는 경우 브로커와 연결된 Amazon VPC (가상 사설 클라우드) 리소스에 액세스할 수 EventBridge 있어야 합니다.

  • Amazon MQ 브로커의 EventBridge VPC에 액세스하려면 소스의 서브넷에 대한 아웃바운드 인터넷 액세스를 사용할 수 있습니다. 퍼블릭 서브넷의 경우 이는 관리형 NAT 게이트웨이여야 합니다. 프라이빗 서브넷의 경우 이는 NAT 게이트웨이 또는 자체 NAT일 수 있습니다. NAT에 퍼블릭 IP 주소가 있고 인터넷에 연결할 수 있는지 확인합니다.

  • EventBridge 또한 Pipes는 이벤트 전송을 지원하므로 퍼블릭 인터넷을 AWS PrivateLink거치지 않고도 Amazon Virtual Private Cloud (Amazon VPC) 에 있는 이벤트 소스에서 Pipes 대상으로 이벤트를 보낼 수 있습니다. 인터넷 게이트웨이를 배포하거나, 방화벽 규칙을 구성하거나, 프록시 서버를 설정할 필요 없이 Pipes를 사용하여 Amazon Managed Streaming for Apache Kafka (Amazon MSK), 자체 관리형 Apache Kafka 및 프라이빗 서브넷에 있는 Amazon MQ 소스에서 폴링할 수 있습니다.

    VPC 엔드포인트를 설정하려면 사용 설명서의 VPC 엔드포인트 생성을 참조하십시오.AWS PrivateLink 서비스 이름에서 을 선택합니다. com.amazonaws.region.pipes-data

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

  • 인바운드 규칙 — Amazon MQ 브로커 포트에서 소스에 지정된 보안 그룹에 대한 모든 트래픽을 허용합니다.

  • 아웃바운드 규칙 - 모든 대상에 대해 포트 443의 모든 트래픽을 허용합니다. Amazon MQ 브로커 포트에서 소스에 지정된 보안 그룹에 대한 모든 트래픽을 허용합니다.

    브로커 포트에는 다음이 포함됩니다.

    • 일반 텍스트의 경우 9092

    • TLS의 경우 9094

    • SASL의 경우 9096

    • IAM의 경우 9098

참고

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