IVS 실시간 스트리밍과 함께 Amazon EventBridge 사용
Amazon EventBridge를 사용하여 Amazon Interactive Video Service(IVS) 스트림을 모니터링할 수 있습니다.
Amazon IVS는 스트림의 상태에 대한 변경 이벤트를 Amazon EventBridge로 전송합니다. 전송되는 모든 이벤트가 유효합니다. 다만 이벤트는 '최선의 노력'을 기준으로 전송됩니다. 즉, 다음을 보장하지 않습니다.
-
이벤트 전송 - 지정된 이벤트(예: 참가자가 게시함)가 발생할 수 있지만 Amazon IVS가 해당 이벤트를 EventBridge로 보내지 않을 수도 있습니다. 이벤트가 전송이 될 때까지 Amazon IVS는 수 시간동안 이벤트 전송을 시도합니다.
-
전송되는 이벤트는 지정된 기간에 도착합니다. 최대 몇 시간 이전의 이벤트도 수신할 수 있습니다.
-
순서대로 이벤트 전송 - 특히, 이벤트가 서로 짧은 간격 안에 전송되는 경우 이벤트 순서가 잘못될 수 있습니다. 예를 들어, 참가자가 게시함 전에 참가자가 게시 취소함을 볼 수 있습니다.
이벤트가 누락되거나 늦거나 순서가 맞지 않는 경우는 드물지만 알림 이벤트의 순서나 존재 여부에 종속되는 비즈니스에 중요한 프로그램을 작성하는 경우 이러한 가능성을 염두에 두고 처리해야 합니다.
다음 이벤트 중 하나에 대한 Eventbridge 규칙을 생성할 수 있습니다.
이벤트 유형 | 이벤트 | 전송된 시간 |
---|---|---|
IVS 구성 상태 변경 | 대상 실패 | 대상에 출력하려는 시도가 실패했습니다. 예를 들어 스트림 키가 없거나 다른 브로드캐스트가 진행 중이어서 채널에 브로드캐스팅이 실패했습니다. |
IVS 구성 상태 변경 | 대상 시작 | 대상에 출력이 성공적으로 시작되었습니다. |
IVS 구성 상태 변경 | 대상 종료 | 대상에 출력이 완료되었습니다. |
IVS 구성 상태 변경 | 대상 재연결 | 대상에 출력이 중단되어 재연결을 시도하고 있습니다. |
IVS 구성 상태 변경 | 세션 시작 | 구성 세션을 생성했습니다. 이 이벤트는 구성 프로세스 파이프라인이 성공적으로 초기화될 때 발생합니다. 현재 구성 파이프라인은 스테이지를 성공적으로 구독했으며 미디어를 수신하고 비디오를 작성할 수 있습니다. |
IVS 구성 상태 변경 | 세션 종료 | 구성 세션이 완료되었습니다. |
IVS 구성 상태 변경 | 세션 실패 | 스테이지 리소스를 사용할 수 없거나 기타 내부 오류로 인해 구성 파이프라인이 초기화에 실패했습니다. |
IVS 참가자 레코딩 상태 변경 | 레코딩 시작 | 게시자가 스테이지에 연결되었으며 S3에 레코딩되고 있습니다. |
IVS 참가자 레코딩 상태 변경 | 레코딩 종료 | 게시자의 스테이지 연결이 해제되었으며 남은 모든 파일이 S3에 작성되었습니다. |
IVS 참가자 레코딩 상태 변경 | 레코딩 시작 실패 | 게시자가 스테이지에 연결되지만 오류로 인해 레코딩이 시작되지 않습니다(예: S3 버킷이 존재하지 않거나 올바른 리전에 있지 않음). 이 게시자의 라이브 스트림이 레코딩되지 않음 |
IVS 참가자 레코딩 상태 변경 | 레코딩 종료 실패 | 레코딩 중에 발생한 오류로 인해 레코딩이 실패로 끝납니다(예: 재생 목록 작성 시도가 계속 실패하는 경우). 일부 객체는 여전히 구성된 스토리지 위치에 기록될 수 있습니다. |
IVS 스테이지 업데이트 | 참가자가 게시함 | 참가자가 스테이지에 게시를 시작합니다. |
IVS 스테이지 업데이트 | 참가자가 게시 취소함 | 참가자가 스테이지에 게시를 중지했습니다. |
IVS 스테이지 업데이트 | 참가자 게시 오류 | 스테이지에 게시하려는 참가자의 시도가 실패했습니다. |
Amazon IVS에 대한 Amazon EventBridge 규칙 생성
Amazon IVS에서 생성되는 이벤트에서 트리거되는 규칙을 생성할 수 있습니다. Amazon EventBridge 사용 설명서의Create a rule in Amazon EventBridge 단계를 따르세요. 서비스를 선택할 때 Interactive Video Service(IVS)를 선택합니다.
예제: 구성 상태 변경
대상 실패: 이 이벤트는 대상에 출력하려는 시도가 실패했을 때 전송됩니다. 예를 들어 스트림 키가 없거나 다른 브로드캐스트가 진행 중이어서 채널에 브로드캐스팅이 실패했습니다.
{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Destination Failure", "stage_arn": "<stage-arn>", "id": "<Destination-id>", "reason": "eg. stream key invalid" } }
대상 시작: 이 이벤트는 대상에 출력이 성공적으로 시작되었을 때 전송됩니다.
{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Destination Start", "stage_arn": "<stage-arn>", "id": "<destination-id>", } }
대상 종료: 이 이벤트는 대상에 출력이 완료되면 전송됩니다.
{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Destination End", "stage_arn": "<stage-arn>", "id": "<Destination-id>", } }
대상 재연결: 이 이벤트는 대상에 출력이 중단되어 재연결을 시도할 때 전송됩니다.
{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Destination Reconnecting", "stage_arn": "<stage-arn>", "id": "<Destination-id>", } }
세션 시작: 이 이벤트는 구성 세션이 생성될 때 전송됩니다. 이 이벤트는 구성 프로세스 파이프라인이 성공적으로 초기화될 때 발생합니다. 현재 구성 파이프라인은 스테이지를 성공적으로 구독했으며 미디어를 수신하고 비디오를 작성할 수 있습니다.
{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Session Start", "stage_arn": "<stage-arn>" } }
세션 종료: 이 이벤트는 구성 세션이 완료되고 모든 리소스가 삭제되었을 때 전송됩니다.
{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Session End", "stage_arn": "<stage-arn>" } }
세션 실패: 이 이벤트는 스테이지 리소스를 사용할 수 없거나, 스테이지에 참가자가 없거나, 기타 내부 오류로 인해 구성 파이프라인 초기화에 실패했을 때 전송됩니다.
{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Composition State Change", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-east-1:aws_account_id:composition/123456789012" ], "detail": { "event_name": "Session Failure", "stage_arn": "<stage-arn>", "reason": "eg. no participants in the stage" } }
예: 개별 참가자 레코딩 상태 변경
레코딩 시작: 이 이벤트는 게시자가 스테이지에 연결되었으며 S3에 레코딩되고 있을 때 수신됩니다.
{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Participant Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2024-03-13T22:09:58Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Recording Start", "participant_id": "xYz1c2d3e4f", "recording_s3_bucket_name": "bucket-name", "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z" } }
레코딩 종료: 이 이벤트는 게시자의 스테이지 연결이 해제되었으며 남은 모든 파일이 S3에 작성되었을 때 수신됩니다.
{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Participant Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2024-03-13T22:19:04Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Recording End", "participant_id": "xYz1c2d3e4f", "recording_s3_bucket_name": "bucket-name", "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z" "recording_duration_ms": 547327 } }
레코딩 시작 실패: 이 이벤트는 게시자가 스테이지에 연결되지만 오류로 인해 레코딩이 시작되지 않을 때 수신됩니다(예: S3 버킷이 존재하지 않거나 올바른 리전에 있지 않음). 게시자의 라이브 스트림이 레코딩되지 않습니다.
{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Participant Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2024-03-13T22:09:58Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Recording Start Failure", "participant_id": "xYz1c2d3e4f", "recording_s3_bucket_name": "bucket-name", "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z" } }
레코딩 종료 실패: 이 이벤트는 레코딩 중에 발생한 오류로 인해 레코딩이 실패로 끝날 때 수신됩니다(예: 마스터 재생 목록 작성 시도가 실패하는 경우). 일부 객체는 여전히 구성된 스토리지 위치에 기록될 수 있습니다.
{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Participant Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2024-03-13T22:19:04Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij"], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Recording End Failure", "participant_id": "xYz1c2d3e4f", "recording_s3_bucket_name": "bucket-name", "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z" "recording_duration_ms": 547327 } }
예: 스테이지 업데이트
스테이지 업데이트 이벤트에는 이벤트를 분류하는 이벤트 이름과 해당 이벤트에 대한 메타데이터가 포함됩니다. 메타데이터에는 이벤트를 트리거한 참가자 ID, 연결된 스테이지 및 세션 ID, 사용자 ID가 포함됩니다.
참가자가 게시함: 이 이벤트는 참가자가 스테이지에 게시를 시작할 때 전송됩니다.
{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Stage Update", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" ], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Participant Published", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f" } }
참가자가 게시 취소함: 이 이벤트는 참가자가 스테이지에 게시를 중지했을 때 전송됩니다.
{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Stage Update", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" ], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Participant Unpublished", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f" } }
참가자 게시 오류: 이 이벤트는 스테이지에 게시하려는 참가자의 시도가 실패했을 때 수신됩니다.
{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Stage Update", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij" ], "detail": { "session_id": "st-ZyXwvu1T2s", "event_name": "Participant Publish Error", "event_time": "2024-08-13T14:38:17.089061676Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "error_code": "BITRATE_EXCEEDED" } }