IVS 실시간 스트리밍과 함께 Amazon EventBridge 사용 - Amazon IVS

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" } }