지연 시간이 짧은 IVS EventBridge 스트리밍과 함께 Amazon 사용하기 - Amazon Interactive Video Service

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

지연 시간이 짧은 IVS EventBridge 스트리밍과 함께 Amazon 사용하기

EventBridge Amazon을 사용하여 Amazon 대화형 비디오 서비스 (IVS) 스트림을 모니터링할 수 있습니다.

Amazon IVS는 스트림 상태에 대한 변경 이벤트를 EventBridge Amazon에 보냅니다. 전송되는 모든 이벤트가 유효합니다. 다만 이벤트는 '최선의 노력'을 기준으로 전송됩니다. 즉, 다음을 보장하지 않습니다.

  • 이벤트 전송 — 지정된 이벤트가 발생할 수 있지만 (예: 스트림 시작) Amazon IVS에서 해당 변경 이벤트를 보내지 않을 수 있습니다. EventBridge 이벤트가 전송이 될 때까지 Amazon IVS는 수 시간동안 이벤트 전송을 시도합니다.

  • 전송되는 이벤트는 지정된 기간에 도착합니다. 최대 몇 시간 이전의 이벤트도 수신할 수 있습니다.

  • 순서대로 이벤트 전송 - 특히, 이벤트가 서로 짧은 간격 안에 전송되는 경우 이벤트 순서가 잘못될 수 있습니다. 예를 들어, 스트림 업을 보기 전에 스트림 다운이 나타날 수 있습니다.

이벤트가 누락되거나 늦거나 순서가 맞지 않는 경우는 드물지만 알림 이벤트의 순서나 존재 여부에 종속되는 비즈니스에 중요한 프로그램을 작성하는 경우 이러한 가능성을 염두에 두고 처리해야 합니다.

다음 이벤트에 대한 EventBridge 규칙을 생성할 수 있습니다.

이벤트 유형 이벤트 전송된 시간
IVS 스트림 상태 변경 세션 생성 채널 스트림 키를 성공적으로 사용하여 스트림 세션을 생성했습니다. 이 이벤트는 동영상이 처리되거나 뷰어에게 전달되기 전에 스트림을 초기화할 때 발생합니다. 이 이벤트는 스트림이 초기화되었지만 잘못된 구성이나 제한 위반 등으로 인해 라이브 스트리밍에 실패했는지 여부를 판단하는 데 도움이 될 수 있습니다.
IVS 스트림 상태 변경 세션 종료

인코더의 연결이 끊어지고 Amazon IVS가 더 이상 비디오를 수신하지 않습니다. 이 이벤트는 인코더가 미디어 전송을 중지한 시기를 결정하는 데 도움이 될 수 있습니다.

참고: 인코더의 연결이 끊어지면 스트림 종료 이벤트 전에 세션 종료 이벤트가 올 수 있습니다. 이는 Amazon IVS가 여전히 비디오를 처리 중일 때 세션 종료 이벤트 후 시간이 약간 걸릴 수 있기 때문입니다.

IVS 스트림 상태 변경 스트림 시작 스트림이 처리 중이며 시청자가 세그먼트를 볼 수 있습니다. 이 이벤트는 비디오 스트림이 처리되고 있으며 뷰어가 볼 수 있음을 나타냅니다. 이 이벤트는 스트림이 성공적으로 라이브 스트리밍되었는지 여부를 판단하는 데 도움이 될 수 있습니다.
IVS 스트림 상태 변경 스트림 종료 스트림 처리가 중지되고 더 이상 시청자에 대한 비디오 세그먼트가 생성되지 않습니다. 이 이벤트는 스트림이 종료되고 시청자가 새로운 비디오 세그먼트를 사용할 수 없는 시기를 결정하는 데 도움이 될 수 있습니다. (세션 종료의 참고 사항도 참조하세요.)
IVS 스트림 상태 변경 스트림 실패 처리 용량이 초과되었기 때문에 스트림이 처리되지 않고 사용할 수 없습니다.
IVS 스트림 상태 변경 결핍 시작 스트림이 스트리머로부터 데이터를 수신하지 않습니다. 이때 스트림을 '결핍' 상태라고 합니다.
IVS 스트림 상태 변경 결핍 종료 결핍 상태의 스트림이 스트리머로부터 데이터를 수신하기 시작하고 스트림은 다시 정상 상태가 됩니다.
IVS 한도 위반 수집 비트 전송률 수신 스트림의 비트 전송률이 Amazon IVS 한도를 초과합니다.
IVS 한도 위반 수집 해상도 수신 스트림의 해상도가 Amazon IVS 한도를 초과합니다.
IVS 한도 위반 동시 브로드캐스트 동시에 스트리밍되는 총 채널 수가 Amazon IVS 한도를 초과합니다.
IVS 한도 위반 동시 시청자 동시에 채널을 보는 총 시청자 수가 Amazon IVS 한도를 초과합니다.
IVS 레코딩 상태 변경 레코딩 시작

스트림이 처리되기 시작하고 레코딩 접두사가 생성되고 검증됩니다. 세그먼트가 채널에 대해 구성된 스토리지 위치에 기록됩니다.

라이브 스트림이 시작되고 레코딩 시작 이벤트가 생성된 후 매니페스트 파일과 비디오 세그먼트가 채널에 구성된 S3 버킷에 기록되기까지 약간의 시간이 걸립니다. 레코딩 종료 이벤트가 전송된 후에만 레코딩된 스트림을 재생하거나 처리하는 것이 좋습니다.

IVS 레코딩 상태 변경 레코딩 종료 이 채널에 대한 스트림이 종료되고 레코딩이 중지됩니다.
IVS 레코딩 상태 변경 레코딩 시작 실패 스트림이 시작되지만 오류로 인해 레코딩이 시작되지 않습니다(예: S3 버킷이 없거나 올바른 리전에 없는 경우). 이 라이브 스트림은 레코딩되지 않습니다.
IVS 레코딩 상태 변경 레코딩 종료 실패 레코딩 중에 발생한 오류로 인해 레코딩이 실패하고 종료됩니다(예: 마스터 재생 목록 작성 시도가 실패하는 경우). 일부 객체는 여전히 구성된 스토리지 위치에 기록될 수 있습니다.

스트림 ID에 대한 참고 사항: 많은 이벤트에서 stream_id 필드는 채널이 라이브로 방송될 때마다 지정되는 고유한 스트림 식별자입니다. 지정된 채널에서 각 라이브 스트림에는 새 stream_id가 있습니다. 따라서, 각 채널 ARN에는 대응하는 많은 스트림 ID가 있을 수 있습니다. 고객은 스트림 ID를 통해 동일한 채널에서 서로 다른 스트림 세션을 구분할 수 있습니다.

일부 이벤트의 대기 시간에 대한 참고 사항: 인코더 구성 설정, 특히 IDR/키프레임 간격은 스트림 시작 타이밍과 관련 이벤트의 지연 시간(스트림 시작 및 레코딩 시작)에 영향을 줍니다. 키프레임 간격이 짧을수록 이 지연 시간이 줄어듭니다. IDR/Keyframe 설정에 대한 자세한 내용은 Amazon IVS 스트리밍 구성'지연 시간 단축'을 참조하세요.

아마존 EventBridge IVS를 위한 아마존 규칙 생성

Amazon IVS에서 생성되는 이벤트에서 트리거되는 규칙을 생성할 수 있습니다. Amazon EventBridge 사용 설명서의 EventBridge Amazon에서 규칙 생성의 단계를 따르십시오. 서비스를 선택할 때 Interactive Video Service(IVS)를 선택합니다.

예제: 스트림 상태 변경

스트림 시작: 이 이벤트는 스트림이 처리 중이며 시청자가 세그먼트를 볼 수 있는 경우 전송됩니다.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Stream 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:channel/12345678-1a23-4567-a1bc-1a2b34567890" ], "detail": { "event_name": "Stream Start", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn" } }

스트림 종료: 이 이벤트는 스트림 처리가 중지되고 더 이상 시청자에 대한 비디오 세그먼트가 생성되지 않는 경우 전송됩니다.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Stream 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:channel/12345678-1a23-4567-a1bc-1a2b34567890" ], "detail": { "event_name": "Stream End", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn" } }

스트림 실패: 이 이벤트는 처리 용량이 초과되었기 때문에 스트림이 처리되지 않고 사용할 수 없는 경우 전송됩니다.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Stream 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:channel/12345678-1a23-4567-a1bc-1a2b34567890" ], "detail": { "event_name": "Stream Failure", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn", "reason": "Transcode capacity exceeded. Please try again." } }

예제: 스트림 상태 변경

결핍 시작: 이 이벤트는 스트림이 스트리머로부터 데이터를 수신하지 않는 경우 전송됩니다. 이때 스트림을 '결핍' 상태라고 합니다.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Stream Health 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:channel/12345678-1a23-4567-a1bc-1a2b34567890" ], "detail": { "event_name": "Starvation Start", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn" } }

결핍 종료: 이 이벤트는 결핍 상태의 스트림이 스트리머로부터 데이터를 수신하기 시작하고 스트림은 다시 정상 상태가 되는 경우 전송됩니다.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Stream Health 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:channel/12345678-1a23-4567-a1bc-1a2b34567890" ], "detail": { "event_name": "Starvation End", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn" } }

예제: 한도 위반

모든 한도 위반 이벤트는 위반된 한도 이름, 한도 값 및 한도를 초과한 정도(위반 시 한도에 의해 차감된 값)가 포함됩니다.

수집 비트 전송률: 이 이벤트는 수신 스트림의 비트 전송률이 Amazon IVS 한도를 초과하는 경우 전송됩니다.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Limit Breach", "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:channel/12345678-1a23-4567-a1bc-1a2b34567890" ], "detail": { "limit_name": "Ingest Bitrate", "limit_value": 1234, "exceeded_by": 3, "limit_unit": "bits per second", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn" } }

수집 해상도: 이 이벤트는 수신 스트림의 해상도(총 픽셀 수 또는 엣지당 픽셀 수)가 Amazon IVS 한도를 초과하는 경우 전송됩니다.

최대 총 픽셀 수 초과됨:

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Limit Breach", "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:channel/12345678-1a23-4567-a1bc-1a2b34567890" ], "detail": { "limit_name": "Ingest Resolution", "limit_value": 495000, "exceeded_by": 426600, "limit_unit": "total pixels", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn" } }

엣지당 최대 픽셀 수 초과됨:

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Limit Breach", "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:channel/12345678-1a23-4567-a1bc-1a2b34567890"TBD ], "detail": { "limit_name": "Ingest Resolution", "limit_value": 855, "exceeded_by": 45, "limit_unit": "pixels per edge", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn" } }

동시 브로드캐스트: 이 이벤트는 동시에 스트리밍되는 총 채널 수가 Amazon IVS 한도를 초과하는 경우 전송됩니다.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Limit Breach", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [], "detail": { "limit_name": "Concurrent Broadcasts", "limit_value": 2, "exceeded_by": 3, "limit_unit": "active streams" } }

동시 시청자: 이 이벤트는 동시에 채널을 보는 총 시청자 수가 Amazon IVS 한도를 초과하는 경우 전송됩니다.

{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Limit Breach", "source": "aws.ivs", "account": "aws_account_id", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": [], "detail": { "limit_name": "Concurrent Viewers", "limit_value": 10, "exceeded_by": 11, "limit_unit": "viewers" } }

예제: 레코딩 상태 변경

모든 녹화 상태 변경 이벤트의 경우 이 라이브 스트림의 모든 객체가 저장되는 최상위 경로는 입니다. recording_s3_key_prefix 실패하는 경우 실패의 원인은 recording_status_reason입니다. recording_duration_ms 필드는 레코딩 지속 시간(밀리초)입니다.

레코딩 시작: 이 이벤트는 스트림이 처리되기 시작하고 세그먼트가 채널에 대해 구성된 스토리지 위치에 기록될 때 전송됩니다.

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:channel/AbCdef1G2hij" ], "detail": { "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn", "recording_status": "Recording Start", "recording_status_reason": "", "recording_s3_bucket_name": "r2s3-dev-channel-1-recordings", "recording_s3_key_prefix": "ivs/v1/123456789012/AbCdef1G2hij/2020/6/23/20/12/j8Z9O91ndcVs", "recording_duration_ms": 0, "recording_session_id": "a6RfV23ES97iyfoQ" } }

레코딩 종료: 이 이벤트는 이 채널에 대한 스트림이 종료되고 레코딩이 중지되는 경우 전송됩니다.

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-24T07:51:32Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:channel/AbCdef1G2hij" ], "detail": { "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn", "recording_status": "Recording End", "recording_status_reason": "", "recording_s3_bucket_name": "r2s3-dev-channel-1-recordings", "recording_s3_key_prefix": "ivs/v1/123456789012/AbCdef1G2hij/2020/6/23/20/12/j8Z9O91ndcVs", "recording_duration_ms": 99370264, "recording_session_id": "a6RfV23ES97iyfoQ", "recording_session_stream_ids": ["st-254sopYUvi6F78ghpO9vn0A", "st-1A2b3c4D5e6F78ghij9Klmn"] } }

레코딩 시작 실패: 이 이벤트는 스트림이 시작되지만 오류로 인해 레코딩이 시작되지 않는 경우(예: S3 버킷이 없거나 올바른 리전에 없는 경우) 전송됩니다. 이 라이브 스트림은 레코딩되지 않습니다.

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-23T20:12:36Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456789012:channel/AbCdef1G2hij" ], "detail": { "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn", "recording_status": "Recording Start Failure", "recording_status_reason": "ValidationException", "recording_s3_bucket_name": "r2s3-dev-channel-1-recordings", "recording_s3_key_prefix": "", "recording_duration_ms": 0, "recording_session_id": "a6RfV23ES97iyfoQ" } }

레코딩 종료 실패: 이 이벤트는 레코딩 중에 발생한 오류로 인해 레코딩이 실패하고 종료되는 경우 전송됩니다. 일부 객체는 여전히 구성된 스토리지 위치에 기록될 수 있습니다.

{ "version": "0", "id": "12345678-1a23-4567-a1bc-1a2b34567890", "detail-type": "IVS Recording State Change", "source": "aws.ivs", "account": "123456789012", "time": "2020-06-24T07:51:32Z", "region": "us-west-2", "resources": [ "arn:aws:ivs:us-west-2:123456a7-ab1c-2d34-e5f6-1a2b3c4d5678" ], "detail": { "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn", "recording_status": "Recording End Failure", "recording_status_reason": "InternalServerException", "recording_s3_bucket_name": "r2s3-dev-channel-1-recordings", "recording_s3_key_prefix": "ivs/v1/123456789012/AbCdef1G2hij/2020/6/23/20/12/j8Z9O91ndcVs", "recording_duration_ms": 0, "recording_session_id": "a6RfV23ES97iyfoQ" } }