Utilizzo di Amazon EventBridge con lo streaming a bassa latenza IVS
È possibile utilizzare Amazon EventBridge per monitorare i propri flussi Amazon Interactive Video Service (IVS).
Amazon IVS invia eventi di modifica relativi allo stato dei flussi ad Amazon EventBridge. Tutti gli eventi che vengono consegnati sono validi. Tuttavia, gli eventi vengono inviati sulla base del miglior tentativo il che significa che non vi è alcuna garanzia che:
-
Gli eventi vengano consegnati: può verificarsi un determinato evento (ad esempio, l'avvio di un flusso), ma è possibile che Amazon IVS non invii un evento di modifica corrispondente a EventBridge. Amazon IVS tenta di consegnare gli eventi per diverse ore prima di smettere.
-
Gli eventi che vengono consegnati arriveranno in un periodo di tempo specificato: la ricezione di eventi è possibile fino a poche ore prima.
-
Gli eventi vengono consegnati in ordine; gli eventi possono non essere ordinati, soprattutto se vengono inviati entro un breve periodo di tempo l'uno dall'altro. Ad esempio, è possibile che sia visualizzato lo streaming verso il basso prima dello streaming verso l'alto.
Sebbene sia raro che gli eventi siano mancanti, in ritardo o fuori sequenza, è consigliabile essere pronti a queste possibilità se si scrivono programmi business-critical che dipendono dall'ordine o dall'esistenza degli eventi di notifica.
È possibile creare regole EventBridge per qualsiasi evento tra quelli riportati di seguito.
Tipo di evento | Evento | Inviato quando… |
---|---|---|
Modifica dello stato del flusso IVS | Sessione creata | Una chiave di streaming del canale è stata usata con successo ed è stata creata una sessione di streaming. Questo evento si attiva quando viene avviato uno streaming, prima che il video venga elaborato o trasmesso agli spettatori. Questo evento aiuta a determinare se uno streaming è stato avviato ma non ha funzionato, ad esempio a causa di errori di configurazione o violazione di un limite. |
Modifica dello stato del flusso IVS | Sessione terminata | L'encoder disconnesso e Amazon IVS non riceve più video. Questo evento aiuta a determinare quando il codificatore ha smesso di inviare file multimediali. Per i flussi multitraccia, il campo Nota: quando l'encoder si disconnette, l'evento Session Ended (Sessione terminata) potrebbe venire prima dell'evento Stream End (Fine dello streaming). Questo perché potrebbe esserci un breve periodo di tempo dopo l'evento Sessione terminata quando Amazon IVS sta ancora elaborando video. |
Modifica dello stato del flusso IVS | Avvio dello streaming | Un flusso è in fase di elaborazione e i segmenti sono disponibili per lo spettatore. Questo evento indica che lo streaming video è in fase di elaborazione e può essere guardato dagli spettatori. Questo evento aiuta a determinare se uno streaming è andato in diretta con successo. |
Modifica dello stato del flusso IVS | Fine dello streaming | L'elaborazione del flusso viene interrotta e non sono prodotti più segmenti video per lo spettatore. Questo evento aiuta a determinare quando lo streaming è terminato e nessun nuovo segmento video può essere utilizzato dagli spettatori. Vedere anche la nota in Session Ended (Sessione terminata). |
Modifica dello stato del flusso IVS | Errore di streaming | Un flusso non è in fase di elaborazione e non è disponibile perché è stata superata la capacità di elaborazione. |
Modifica dello stato del flusso IVS | Acquisizione del flusso | È stato acquisito un flusso esistente. |
Modifica dello stato del flusso IVS | Errore di acquisizione del flusso | Un tentativo di acquisire un flusso esistente è stato respinto. Il campo code fornisce ulteriori dettagli sul motivo per cui l'acquisizione del flusso non è riuscita. Esistono diversi valori; tieni presente che le descrizioni lunghe vengono fornite nella console IVS ma non tramite l'API IVS o EventBridge:
|
Modifica dell'integrità del flusso IVS | Avvio di un uso eccessivo | Un flusso non riceve dati dallo streamer; si dice che il flusso ha "fame". |
Modifica dell'integrità del flusso IVS | Fine dell'uso eccessivo | Un flusso affamato inizia a ricevere dati dallo streamer e quindi torna integro. |
Violazione dei limiti IVS | Bitrate di acquisizione | Il bitrate del flusso in entrata supera il limite Amazon IVS. |
Violazione dei limiti IVS | Risoluzione dell'acquisizione | La risoluzione del flusso in entrata supera il limite di Amazon IVS. |
Violazione dei limiti IVS | Trasmissioni simultanee | Il numero totale di canali in streaming allo stesso tempo supera il limite di Amazon IVS. |
Violazione dei limiti IVS | Spettatori simultanei | Il numero totale di spettatori che guardano i canali allo stesso tempo supera il limite di Amazon IVS. |
Modifica dello stato di registrazione IVS | Avvio della registrazione | Uno streaming inizia l'elaborazione e il prefisso di registrazione viene creato e convalidato. I segmenti verranno scritti nella posizione di archiviazione configurata per il canale. Tenere presente che dopo l'avvio di un live streaming e l'emissione dell'evento Avvio della registrazione, prima che vengano scritti i file manifest e i segmenti video nel bucket S3 configurato per il canale è possibile che passi del tempo. Consigliamo di riprodurre o elaborare flussi registrati solo dopo l'invio dell'evento di fine registrazione. |
Modifica dello stato di registrazione IVS | Fine della registrazione | Un flusso termina e la registrazione si interrompe per questo canale. |
Modifica dello stato di registrazione IVS | Errore di avvio della registrazione | Un flusso inizia ma la registrazione non viene avviata a causa di errori (ad esempio, il bucket S3 non esiste o non si trova nella regione corretta). Questo live streaming non viene registrato. |
Modifica dello stato di registrazione IVS | Errore di fine della registrazione | La registrazione termina con un errore, a causa di errori riscontrati durante il processo (ad esempio, se il tentativo di scrivere una playlist master non va a buon fine). Alcuni oggetti possono ancora essere scritti nel percorso di storage configurato. |
Nota sugli ID flusso: il campo stream_id
(in molti eventi) è un identificatore di flusso univoco assegnato ogni volta che un canale è in diretta. Per un determinato canale, ogni live streaming ha un nuovo stream_id
. Quindi, ogni ARN del canale può avere più ID flusso corrispondenti. Gli ID flusso consentono ai clienti di distinguere diverse sessioni di streaming sullo stesso canale.
Nota sulla latenza di alcuni eventi: le impostazioni di configurazione del codificatore, in particolare l'intervallo IDR/fotogramma, influiscono sulla tempistica di avvio del flusso e sulla latenza degli eventi correlati (avvio del flusso e avvio della registrazione). Un intervallo di fotogrammi chiave più breve riduce questa latenza. Consultare "Riduzione della latenza" in Configurazione dello streaming di Amazon IVS per informazioni sulla configurazione di IDR/Keyframe
.
Creazione delle regole Amazon EventBridge per Amazon IVS
È possibile creare una regola che si attiva con un evento generato da Amazon IVS. Completa le operazioni riportate in Crea una regola in Amazon EventBridge nella Guida per l'utente di Amazon EventBridge. Quando si seleziona un servizio, seleziona Interactive Video Service (IVS).
Esempi: modifica dello stato del flusso
Sessione creata: una chiave di flusso del canale è stata usata correttamente ed è stata creata una sessione di streaming.
{ "version": "0", "id": "aa5b7a40-36cf-8dc4-5554-32d70e047215", "detail-type": "IVS Stream State Change", "source": "aws.ivs", "account": "535011710559", "time": "2024-09-09T16:17:26Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-west-2:535011710559:channel/UCGaMPGLCbcE" ], "detail": { "event_name": "Session Created", "channel_name": "", "stream_id": "st-1AuTyMDASvHUTSb8p5PvbsO" } }
Sessione terminata: questo evento viene inviato quando il codificatore si è disconnesso e IVS non riceve più video.
{ "version": "0", "id": "6f2723f3-ee31-9e48-b030-ac865e261a8e", "detail-type": "IVS Stream State Change", "source": "aws.ivs", "account": "535011710559", "time": "2024-09-09T16:17:26Z", "region": "us-east-1", "resources": [ "arn:aws:ivs:us-west-2:535011710559:channel/UCGaMPGLCbcE" ], "detail": { "event_name": "Session Ended", "channel_name": "", "code": "MultitrackInputNotAllowed", "stream_id": "st-1AuTyMDASvHUTSb8p5PvbsO" } }
Avvio del flusso: questo evento viene inviato quando un flusso è in fase di elaborazione e i segmenti sono disponibili per il visualizzatore.
{ "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" } }
Stream End (Fine dello streaming): questo evento viene inviato quando l'elaborazione del flusso viene interrotta e non sono prodotti più segmenti video per lo spettatore.
{ "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" } }
Errore del flusso: questo evento viene inviato quando un flusso non è in fase di elaborazione e non è disponibile perché è stata superata la capacità di elaborazione.
{ "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." } }
Acquisizione del flusso: questo evento viene inviato quando un flusso esistente viene acquisito.
{ "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 Takeover", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn" } }
Errore di acquisizione del flusso: questo evento viene inviato quando il tentativo di acquisizione di un flusso esistente ha esito negativo. Ciò può essere dovuto alla mancata corrispondenza del tipo di codec, risoluzione e traccia video, a un numero intero di priorità non valido o al superamento del numero massimo di acquisizioni per il flusso.
{ "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 Takeover Failure", "channel_name": "Your Channel", "stream_id": "st-1A2b3c4D5e6F78ghij9Klmn", "code": "StreamTakeoverInvalidPriority" } }
Esempi: modifica dell'integrità del flusso
Avvio di un uso eccessivo: questo evento viene inviato quando un flusso non riceve dati dallo streamer; si dice che il flusso è "affamato".
{ "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" } }
Fine dell'uso eccessivo: questo evento viene inviato quando un flusso affamato inizia a ricevere dati dallo streamer e quindi torna integro.
{ "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" } }
Esempi: utilizzo fuori limite
Tutti gli eventi di violazione dei limiti includono il nome del limite violato, il valore del limite e il numero di quanto è stato superato il limite (valore alla violazione sottratto dal limite).
Bitrate di acquisizione: questo evento viene inviato quando il bitrate del flusso in entrata supera il limite di 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" } }
Risoluzione dell'acquisizione: questo evento viene inviato quando la risoluzione del flusso in entrata (pixel totali o pixel per edge) supera i limiti di Amazon IVS.
Numero massimo di pixel totali superato:
{ "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" } }
Numero massimo di pixel per edge superato:
{ "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" } }
Trasmissioni simultanee: questo evento viene inviato quando il numero totale di canali in streaming allo stesso tempo supera il limite di 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" } }
Visualizzatori simultanei: questo evento viene inviato quando il numero totale di spettatori che guardano i canali allo stesso tempo supera il limite di 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" } }
Esempi: modifica dello stato di registrazione
Per tutti gli eventi di modifica dello stato di registrazione, il percorso di livello superiore in cui sono memorizzati tutti gli oggetti per questa diretta streaming è recording_s3_key_prefix
. In caso di errore, il motivo dell'errore è riportato in recording_status_reason
. Il campo recording_duration_ms
è il numero di millisecondi della durata della registrazione.
Avvio della registrazione: questo evento viene inviato quando un flusso inizia a essere elaborato e i segmenti vengono scritti nella posizione di storage configurata per il canale.
{ "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" } }
Recording End (Fine della registrazione): questo evento viene inviato quando un flusso termina e la registrazione si interrompe per questo canale.
{ "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"] } }
Errore di avvio della registrazione: questo evento viene inviato quando un flusso inizia ma la registrazione non viene avviata a causa di errori (ad esempio, il bucket S3 non esiste o non si trova nella regione corretta). Questo live streaming non viene registrato.
{ "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" } }
Errore di fine della registrazione: questo evento viene inviato quando la registrazione termina con un errore, a causa di problemi riscontrati durante il processo. Alcuni oggetti possono ancora essere scritti nel percorso di storage configurato.
{ "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" } }