Uso de Amazon EventBridge con la transmisión en tiempo real de IVS
Puede utilizar Amazon EventBridge para monitorear sus transmisiones de Amazon Interactive Video Service (IVS).
Amazon IVS envía eventos de cambio sobre el estado de sus transmisiones a Amazon EventBridge. Todos los eventos que se entregan son válidos. Sin embargo, los eventos se envían en la medida de lo posible, lo que significa que no hay garantía de que:
-
Los eventos se entregan: puede producirse un evento designado (por ejemplo, se publica un participante), pero es posible que Amazon IVS no envíe un evento correspondiente a EventBridge. Amazon IVS intenta entregar eventos durante varias horas antes de darse por vencido.
-
Los eventos que se entregan llegarán en un periodo de tiempo especificado: es posible que reciba eventos de hasta unas pocas horas de antigüedad.
-
Los eventos se entregan en orden: los eventos pueden estar desordenados, especialmente si se envían con poco tiempo de diferencia. Por ejemplo, puede ver un participante no publicado antes que un participante publicado.
Si bien es raro que los eventos falten, se retrasen o estén fuera de secuencia, debe gestionar estas posibilidades si escribe programas críticos para el negocio que dependen del orden o la existencia de los eventos de notificación.
Puede crear reglas de EventBridge para cualquiera de los siguientes eventos.
| Tipo de evento | Evento | Enviado cuando… |
|---|---|---|
| Cambio de estado de composición del IVS | Error en el destino | Se produjo un error al intentar enviar la salida a un destino (por ejemplo, no se encontró el bucket de S3, se denegó el acceso al bucket de S3 o la transmisión ya existe para un destino de RTMP). |
| Cambio de estado de composición del IVS | Inicio de destino | La salida a un destino se inició correctamente. |
| Cambio de estado de composición del IVS | Fin de destino | La salida a un destino ha finalizado. |
| Cambio de estado de composición del IVS | Reconexión de destino | Se interrumpió la salida a un destino y se está intentando volver a conectar. |
| Cambio de estado de composición del IVS | Inicio de la sesión | Se creó una sesión de Composición. Este evento se desencadena cuando una canalización de un proceso de Composición se inicializa correctamente. En este momento, el proceso de composición se ha suscrito correctamente a un Escenario y recibe contenido multimedia y puede componer vídeo. |
| Cambio de estado de composición del IVS | Fin de la sesión | Se ha completado una sesión de composición. |
| Cambio de estado de composición del IVS | Error de sesión | No se pudo inicializar una canalización de composición debido a la eliminación de un escenario, al funcionamiento incorrecto de una o más salidas o a algún otro error interno. |
| Cambio en el estado de la grabación del participante de IVS | Inicio de la grabación | Un publicador se ha conectado a la fase y se está grabando en S3. |
| Cambio en el estado de la grabación del participante de IVS | Fin de la grabación | Un publicador se ha desconectado de la fase y todos los archivos restantes se han escrito en S3. |
| Cambio en el estado de la grabación del participante de IVS | Error al iniciar la grabación | Error al iniciar la grabación: este evento se envía cuando un publicador se conecta al escenario, pero la grabación no se inicia como consecuencia de errores (por ejemplo, el bucket de S3 no existe o no se puede acceder). La transmisión en directo de este publicador no se graba. |
| Cambio en el estado de la grabación del participante de IVS | Error al finalizar la grabación | La grabación termina de forma incorrecta como consecuencia de errores detectados durante el proceso (por ejemplo, el bucket de S3 no existe o no se puede acceder). Aún pueden escribirse algunos objetos en la ubicación de almacenamiento configurada. |
| Actualización de una fase de IVS | Participante publicado | Un participante comienza a publicar en una fase. |
| Actualización de una fase de IVS | Participante no publicado | Un participante ha dejado de publicar en una fase. |
| Actualización de una fase de IVS | Error de publicación del participante | El intento de un participante de publicar en una fase dio error. |
| Actualización de una fase de IVS | Inicio de la replicación del participante | Se inicia la replicación de un participante. |
| Actualización de una fase de IVS | Fin de la replicación del participante | Finaliza la replicación de un participante. La replicación puede finalizar debido a una operación de la API StopParticipantReplication, si el publicador ha dejado de publicar o si el publicador ha dejado de publicar y la ventana de reconexión ha expirado. |
| Actualización de una fase de IVS | Token intercambiado | Un token de participante existente se cambia por uno nuevo. Este intercambio da como resultado una mejora o reducción de las capacidades del token o atributos de token actualizados. |
Creación de reglas de Amazon EventBridge para Amazon IVS
Puede crear una regla que se active en función de un evento que emita Amazon IVS. Siga los pasos que se indican en Crear una regla en Amazon EventBridge en la Guía del usuario de Amazon EventBridge. Cuando seleccione un servicio, elija Interactive Video Service (IVS).
Ejemplos: cambio del estado de la composición
Error en el destino: este evento se envía al intentar enviar la salida a un destino, por ejemplo, no se encontró el bucket de S3, se denegó el acceso al bucket de S3 o la transmisión ya existe para un destino de 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" } }
En la siguiente tabla se muestran error_code y los valores de reason para los eventos de error de destino, junto con una guía para la solución de problemas:
| error_code | razón | Guía de solución de problemas |
|---|---|---|
| ResourceNotFoundException | Bucket de S3 no encontrado. Compruebe que exista su bucket. | Compruebe que su bucket de S3 exista y se encuentre en la región correcta. |
| AccessDeniedException | Acceso denegado al bucket de S3. Compruebe su política de bucket. | Compruebe que su política de bucket de S3 otorgue al servicio IVS los permisos necesarios. |
| ConflictException | La transmisión ya existe | Compruebe que no haya ninguna otra transmisión activa en el mismo canal de destino de RTMP. |
| InternalServerException | Error interno del servicio | Vuelva a intentar la operación. Si el problema continúa, póngase en contacto con AWS Support. |
Inicio de destino: este evento se envía cuando la salida a un destino se inicia correctamente.
{ "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>", } }
Final de destino: este evento se envía cuando finaliza la salida a un destino.
{ "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>", } }
Reconexión de destino: este evento se envía cuando se interrumpe la salida a un destino y se intenta volver a conectar.
{ "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>", } }
Inicio de sesión: este evento se envía cuando se crea una sesión de composición. Este evento se desencadena cuando una canalización de un proceso de composición se inicializa correctamente. En este momento, el proceso de composición se ha suscrito correctamente a un escenario y recibe contenido multimedia y puede componer vídeo.
{ "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>" } }
Fin de sesión: este evento se envía cuando se completa una sesión de composición y se eliminan todos los recursos.
{ "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>" } }
Error de sesión: este evento se envía cuando no se puede inicializar una canalización de composición debido a la eliminación de un escenario, al funcionamiento incorrecto de una o más salidas o a algún otro error 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" } }
En la siguiente tabla se muestran error_code y los valores de reason para los eventos de error de sesión, junto con una guía para la solución de problemas:
| error_code | razón | Guía de solución de problemas |
|---|---|---|
| StageDeleted | El escenario se ha eliminado | Compruebe que el escenario existe antes de iniciar una composición. |
| DestinationFailure | Error en una o más salidas | Compruebe los errores de destino individuales. |
| InternalServerException | Error interno del servicio | Vuelva a intentar la operación. Si el problema continúa, póngase en contacto con AWS Support. |
Ejemplos: cambio en el estado de grabación de un participante individual
Inicio de la grabación: este evento se envía cuando un publicador se ha conectado a la fase y se está grabando en 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" } }
Fin de la grabación: este evento se envía cuando un publicador se ha desconectado de la fase y todos los archivos restantes se han escrito en 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 } }
Error al iniciar la grabación: este evento se envía cuando un publicador se conecta a la fase, pero la grabación no se inicia debido a errores (por ejemplo, en caso de que no se encuentre un bucket de S3 o no pueda accederse). La transmisión en directo del publicador no se graba.
{ "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" } }
En la siguiente tabla se muestran error_code y los valores de reason para los eventos de error al iniciar la grabación, junto con una guía para la solución de problemas:
| error_code | razón | Guía de solución de problemas |
|---|---|---|
| ResourceNotFoundException | Bucket de S3 no encontrado. Compruebe que exista su bucket. | Compruebe que su bucket de S3 exista y se encuentre en la región correcta. |
| AccessDeniedException | Acceso denegado al bucket de S3. Compruebe su política de bucket. | Compruebe que su política de bucket de S3 otorgue al servicio IVS los permisos necesarios. |
| ValidationException | El códec de vídeo no es compatible con la grabación | Compruebe que el publicador utilice un códec de vídeo compatible. |
| InternalServerException | Error interno del servicio | Vuelva a intentar la operación. Si el problema continúa, póngase en contacto con AWS Support. |
Error al finalizar la grabación: este evento se envía cuando la grabación termina de forma incorrecta, como consecuencia de errores detectados durante el proceso (por ejemplo, el bucket de S3 no existe o no se puede acceder). Aún pueden escribirse algunos objetos en la ubicación de almacenamiento configurada.
{ "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" } }
En la siguiente tabla se muestran error_code y los valores de reason para los eventos de error al finalizar la grabación, junto con una guía para la solución de problemas:
| error_code | razón | Guía de solución de problemas |
|---|---|---|
| ResourceNotFoundException | Bucket de S3 no encontrado. Compruebe que exista su bucket. | Compruebe que su bucket de S3 exista y se encuentre en la región correcta. |
| AccessDeniedException | Acceso denegado al bucket de S3. Compruebe su política de bucket. | Compruebe que su política de bucket de S3 otorgue al servicio IVS los permisos necesarios. |
| InternalServerException | Error interno del servicio | Vuelva a intentar la operación. Si el problema continúa, póngase en contacto con AWS Support. |
Tenga en cuenta que, si habilitó la combinación de grabaciones de participantes individuales y si un publicador de fases se desconecta de una fase y después se vuelve a conectar, IVS intenta grabar con el mismo prefijo de S3 que la sesión anterior. Como consecuencia, en los ejemplos anteriores, el componente session_id de recording_s3_key_prefix puede tener un valor diferente al del campo session_id en detail. Consulte Combinación de grabaciones fragmentadas de participantes individuales.
Ejemplos: actualización de una fase
Los eventos de actualización de fases incluyen un nombre de evento (que clasifica el evento) y metadatos sobre el evento. Los metadatos incluyen el ID del participante que activó el evento, los ID de fase y sesión asociados y el ID de usuario.
Participante publicado: este evento se envía cuando un participante comienza a publicar en 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" } }
Participante no publicado: este evento se envía cuando un participante ha dejado de publicar en 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" } }
Error de publicación del participante: este evento se envía cuando el intento de un participante de publicar en una fase falla.
{ "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" } }
Inicio de la replicación del participante: este evento se envía cuando se inicia la replicación de un participante.
{ "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" } }
Fin de la replicación del participante: este evento se envía cuando se inicia la replicación de un participante. La replicación puede finalizar debido a una operación de la API StopParticipantReplication, si el publicador ha dejado de publicar o si el publicador ha dejado de publicar y la ventana de reconexión ha expirado.
{ "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 intercambiado: este evento se envía cuando un token de un participante existente se intercambia por uno nuevo, lo que da como resultado una mejora o reducción de las capacidades del token o atributos de token actualizados.
{ "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" } } }