Utilizzo di Amazon EventBridge con lo streaming in tempo reale IVS - Amazon IVS

Utilizzo di Amazon EventBridge con lo streaming in tempo reale 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, un partecipante ha pubblicato qualcosa), 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, potresti vedere il partecipante non pubblicato prima della pubblicazione effettiva del partecipante.

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 di composizione dell'IVS Errore destinazione Un tentativo di output verso una destinazione non è riuscito (ad esempio, il bucket S3 non è stato trovato, l'accesso al bucket S3 è stato negato o lo stream esiste già per una destinazione RTMP).
Modifica dello stato di composizione dell'IVS Inizio destinazione L'output verso una destinazione è stato avviato correttamente.
Modifica dello stato di composizione dell'IVS Fine destinazione L'output verso una destinazione è terminato.
Modifica dello stato di composizione dell'IVS Riconnessione della destinazione L'output verso una destinazione è stato interrotto ed è in corso un tentativo di riconnessione.
Modifica dello stato di composizione dell'IVS Inizio sessione È stata creata una sessione di composizione. Questo evento si attiva quando una pipeline del processo di composizione viene inizializzata correttamente. A questo punto, la pipeline di composizione è stata registrata correttamente per una fase, riceve contenuti multimediali ed è in grado di comporre video.
Modifica dello stato di composizione dell'IVS Fine sessione Una sessione di composizione è stata completata.
Modifica dello stato di composizione dell'IVS Errore sessione Impossibile inizializzare una pipeline di composizione a causa della mancata disponibilità delle risorse della fase o di qualsiasi altro errore interno.
Modifica dello stato di registrazione dei partecipanti in IVS Avvio della registrazione Un publisher si è collegato alla fase e viene registrato su S3.
Modifica dello stato di registrazione dei partecipanti in IVS Fine della registrazione Un publisher si è disconnesso dalla fase e tutti i file rimanenti sono stati scritti su S3.
Modifica dello stato di registrazione dei partecipanti in IVS Errore di avvio della registrazione Un publisher si connette alla fase ma la registrazione non viene avviata a causa di errori (ad esempio, il bucket S3 non esiste o non è possibile accedervi). Lo streaming della diretta di questo publisher non viene registrato.
Modifica dello stato di registrazione dei partecipanti in IVS Errore di fine della registrazione La registrazione non viene completata a causa di errori riscontrati durante la registrazione (ad esempio, se il bucket S3 non esiste o non è possibile accedervi). Alcuni oggetti possono ancora essere scritti nel percorso di storage configurato.
Aggiornamento della fase IVS Partecipante pubblicato Un partecipante inizia a pubblicare in una fase.
Aggiornamento della fase IVS Partecipante non pubblicato Un partecipante ha interrotto la pubblicazione in una fase.
Aggiornamento della fase IVS Errore di pubblicazione del partecipante Il tentativo di pubblicazione su una fase da parte di un partecipante non è riuscito.
Aggiornamento della fase IVS Avvio della replica dei partecipanti Viene avviata la replica dei partecipanti.
Aggiornamento della fase IVS Fine della replica dei partecipanti Termina la replica dei partecipanti. Una replica può terminare a causa di un'operazione dell'API StopParticipantReplication, se il publisher ha interrotto la pubblicazione o se il publisher ha interrotto la pubblicazione e la finestra di riconnessione è scaduta.
Aggiornamento della fase IVS Token scambiato Un token di un partecipante esistente viene sostituito con uno nuovo. Questo scambio comporta l'aggiornamento o il downgrade delle funzionalità dei token e/o degli attributi dei token aggiornati.

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 di composizione

Errore di destinazione: questo evento viene inviato quando si verifica un tentativo di output verso una destinazione non è riuscito (ad esempio, il bucket S3 non è stato trovato, l'accesso al bucket S3 è stato negato o lo stream esiste già per una destinazione RTMP).

{ "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>", "error_code": "e.g., AccessDeniedException", "reason": "e.g., Access denied to S3 bucket. Please verify your bucket policy" } }

La tabella seguente elenca error_code e reason valori per gli eventi Errore di destinazione, insieme alle indicazioni per la risoluzione dei problemi:

error_code motivo Guida alla risoluzione dei problemi
ResourceNotFoundException Bucket S3 non trovato. Verifica che il tuo bucket esista. Verifica che il bucket S3 esiste e si trova nella regione corretta.
AccessDeniedException Accesso negato al bucket S3. Verifica la tua policy di bucket. Verifica che la tua policy di bucket S3 conceda al servizio IVS le autorizzazioni necessarie.
ConflictException Il flusso esiste già Verifica che nessun'altra trasmissione sia attiva sullo stesso canale di destinazione RTMP.
InternalServerException Errore interno del servizio Riprova l’operazione. Se il problema persiste, contatta AWS Support.

Inizio destinazione: questo evento viene inviato quando l'output verso una destinazione è stato avviato correttamente.

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

Fine destinazione: questo evento viene inviato quando l'output verso una destinazione è terminato.

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

Riconnessione della destinazione: questo evento viene inviato quando l'output verso una destinazione è stato interrotto e viene tentata una riconnessione.

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

Inizio sessione: questo evento viene inviato quando è stata creata una sessione di composizione. Questo evento si attiva quando una pipeline del processo di composizione viene inizializzata correttamente. A questo punto, la pipeline di composizione è stata registrata correttamente per una fase, riceve contenuti multimediali ed è in grado di comporre video.

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

Fine sessione: questo evento viene inviato quando viene completata una sessione di composizione e tutte le risorse sono state eliminate.

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

Errore della sessione: questo evento viene inviato quando non è possibile inizializzare una pipeline di composizione a causa della mancata disponibilità delle risorse della fase o di qualsiasi altro errore interno.

{ "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>", "error_code": "e.g., DestinationFailure", "reason": "e.g. One or more outputs failed" } }

La tabella seguente elenca i valori error_code e reason per gli eventi di Errore della sessione, insieme alle indicazioni per la risoluzione dei problemi:

error_code motivo Guida alla risoluzione dei problemi
StageDeleted La fase è stata eliminata. Verifica che la fase esista prima di iniziare una composizione.
DestinationFailure Uno o più output non riusciti Controlla gli errori delle singole destinazioni.
InternalServerException Errore interno del servizio Riprova l’operazione. Se il problema persiste, contatta AWS Support.

Esempi: modifica dello stato di registrazione di singoli partecipanti

Avvio della registrazione: questo evento viene inviato quando un publisher si è collegato alla fase e viene registrato su 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" } }

Fine della registrazione: questo evento viene inviato quando un publisher si è disconnesso dalla fase e tutti i file rimanenti sono stati scritti su 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 } }

Errore durante l'avvio della registrazione: questo evento viene inviato quando un publisher si connette alla fase ma la registrazione non viene avviata a causa di errori (ad esempio, il bucket S3 non esiste o non è possibile accedervi). Lo streaming in diretta di questo publisher non viene registrato.

{ "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", "error_code": "e.g., AccessDeniedException", "reason": "e.g., Access denied to S3 bucket. Please verify your bucket policy" } }

La tabella seguente elenca i valori error_code e reason per gli eventi di Errore durante l'avvio della registrazione, insieme alle indicazioni per la risoluzione dei problemi:

error_code motivo Guida alla risoluzione dei problemi
ResourceNotFoundException Bucket S3 non trovato. Verifica che il tuo bucket esista. Verifica che il bucket S3 esiste e si trova nella regione corretta.
AccessDeniedException Accesso negato al bucket S3. Verifica la tua policy di bucket. Verifica che la tua policy di bucket S3 conceda al servizio IVS le autorizzazioni necessarie.
ValidationException Il codec video non è supportato per la registrazione Verifica che il publisher utilizzi un codec video supportato.
InternalServerException Errore interno del servizio Riprova l’operazione. Se il problema persiste, contatta AWS Support.

Errore di completamento della registrazione: questo evento viene inviato quando la registrazione non viene completata a causa di errori riscontrati durante la registrazione (ad esempio, se il bucket S3 non esiste o non è possibile accedervi). Alcuni oggetti possono ancora essere scritti nel percorso di storage configurato.

{ "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, "error_code": "e.g., AccessDeniedException", "reason": "e.g., Access denied to S3 bucket. Please verify your bucket policy" } }

La tabella seguente elenca i valori error_code e reason per gli eventi di Errore di completamento della registrazione, insieme alle indicazioni per la risoluzione dei problemi:

error_code motivo Guida alla risoluzione dei problemi
ResourceNotFoundException Bucket S3 non trovato. Verifica che il tuo bucket esista. Verifica che il bucket S3 esiste e si trova nella regione corretta.
AccessDeniedException Accesso negato al bucket S3. Verifica la tua policy di bucket. Verifica che la tua policy di bucket S3 conceda al servizio IVS le autorizzazioni necessarie.
InternalServerException Errore interno del servizio Riprova l’operazione. Se il problema persiste, contatta AWS Support.

Se l'unione di registrazioni di singoli partecipanti è abilitata, e se un publisher di fase si disconnette da una fase e poi si riconnette, IVS tenta di registrarsi allo stesso prefisso S3 della sessione precedente. Di conseguenza, negli esempi precedenti, il componente session_id di recording_s3_key_prefix può avere un valore diverso dal campo session_id in detail. Vedere Unire le registrazioni frammentate dei singoli partecipanti.

Esempi: aggiornamenti della fase

Gli eventi di aggiornamento della fase includono un nome dell'evento (che classifica l'evento) e i metadati relativi all'evento. I metadati includono l'ID del partecipante che ha attivato l'evento, gli ID di fase e sessione associati e l'ID utente.

Partecipante pubblicato: questo evento viene inviato quando un partecipante inizia la pubblicazione in una fase.

{ "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", "event_time": "2025-11-18T16:40:32Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "replica": true, "source_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij", "source_session_id": "st-sdfdfdfgdfgh" } }

Partecipante non pubblicato: questo evento viene inviato quando un partecipante ha interrotto la pubblicazione in una fase.

{ "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", "event_time": "2025-11-18T16:40:32Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "replica": true, "source_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij", "source_session_id": "st-sdfdfdfgdfgh" } }

Errore di pubblicazione del partecipante: questo evento viene inviato quando il tentativo di un partecipante di pubblicare in una fase ha esito negativo.

{ "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", "replica": true, "source_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij", "source_session_id": "st-sdfdfdfgdfgh" } }

Avvio della replica dei partecipanti: questo evento viene inviato quando inizia la replica di un partecipante.

{ "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 Replication Start", "event_time": "2025-11-18T16:40:32Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "destination_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/XYZdef1G2hij", "destination_session_id": "aBC1c2d3e4f" } }

Fine della replica dei partecipanti: questo evento viene inviato quando termina la replica di un partecipante. Una replica può terminare a causa di un'operazione dell'API StopParticipantReplication, se il publisher ha interrotto la pubblicazione o se il publisher ha interrotto la pubblicazione e la finestra di riconnessione è scaduta.

{ "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 Replication End", "event_time": "2025-11-18T16:40:32Z", "user_id": "Your User Id", "participant_id": "xYz1c2d3e4f", "destination_stage_arn": "arn:aws:ivs:us-west-2:123456789012:stage/XYZdef1G2hij", "destination_session_id": "aBC1c2d3e4f" } }

Token scambiato: questo evento viene inviato quando un token di un partecipante esistente viene scambiato con uno nuovo, con conseguente aggiornamento o downgrade delle funzionalità del token e/o degli attributi del token aggiornati.

{ "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": "Token Exchanged", "event_time": "2025-11-12T20:54:53Z", "user_id": "UpdatedUser", "participant_id": "xYz1c2d3e4f", "previous_token": { "capabilities": ["SUBSCRIBE"], "attributes": { "role": "viewer" }, "user_id": "InitialUser", "expiration_time": "2025-11-12T21:54:52Z" }, "new_token": { "capabilities": ["SUBSCRIBE", "PUBLISH"], "attributes": { "role": "moderator" }, "user_id": "UpdatedUser", "expiration_time": "2025-11-12T22:54:52Z" } } }