Utilisation d’Amazon EventBridge avec le streaming en temps réel IVS
Vous pouvez utiliser Amazon EventBridge pour contrôler vos flux Amazon Interactive Video Service (IVS).
Amazon IVS envoie des événements de modification sur l’état de vos flux à Amazon EventBridge. Tous les événements fournis sont valides. Cependant, les événements sont envoyés sur la base du meilleur effort, ce qui signifie qu’il n’y a aucune garantie que :
-
Les événements sont livrés : un événement désigné peut se produire (par exemple, un participant a publié), mais il est possible qu’Amazon IVS n’envoie pas d’événement correspondant à EventBridge. Amazon IVS essaie de livrer des événements pendant plusieurs heures avant d’abandonner.
-
Les événements qui sont livrés arriveront dans un délai spécifié : vous pouvez recevoir des événements datant de quelques heures.
-
Les événements sont livrés dans l’ordre : les événements peuvent être envoyés dans le désordre, surtout s’ils sont envoyés à peu de temps d’intervalle. Par exemple, vous pouvez voir un participant dépublié avant qu’il ne soit diffusé.
Bien qu’il soit rare que des événements soient manquants, en retard ou en désordre, vous devez prendre en compte ces éventualités si vous écrivez des programmes stratégiques qui dépendent de l’ordre ou de l’existence des événements de notification.
Vous pouvez créer des règles EventBridge pour tous les événements suivants.
| Type d’événement | Événement | Envoyé lorsque … |
|---|---|---|
| Changements d’état de montage IVS | Échec de la destination | Une tentative de sortie vers une destination a échoué (par exemple, le compartiment S3 est introuvable, l’accès au compartiment S3 a été refusé ou le flux existe déjà pour une destination RTMP). |
| Changements d’état de montage IVS | Début de la destination | La sortie vers une destination a démarré avec succès. |
| Changements d’état de montage IVS | Fin de la destination | La sortie vers une destination est terminée. |
| Changements d’état de montage IVS | Reconnexion à une destination | La sortie vers une destination a été interrompue et une tentative de reconnexion est en cours. |
| Changements d’état de montage IVS | Début de la session | Une session de montage a été créée. Cet événement se déclenche lorsqu’un pipeline de processus de montage s’initialise avec succès. À ce stade, le pipeline de montage s’est inscrit avec succès à une scène, reçoit du contenu multimédia et est en mesure de composer une vidéo. |
| Changements d’état de montage IVS | Fin de la session | Une session de montage terminée. |
| Changements d’état de montage IVS | Échec de la session | Un pipeline de montage n’a pas pu être initialisé en raison de la suppression d’une étape, de l’échec d’une ou plusieurs sorties ou d’une autre erreur interne. |
| État de changement de l’enregistrement des participants IVS | Recording Start | Un diffuseur de publication s’est connecté à la scène et est en cours d’enregistrement sur S3. |
| État de changement de l’enregistrement des participants IVS | Recording End | Un diffuseur de publication s’est déconnecté de la scène et tous les fichiers restants ont été enregistrés sur S3. |
| État de changement de l’enregistrement des participants IVS | Recording Start Failure | Un diffuseur de publication se connecte à la scène, mais l’enregistrement ne démarre pas en raison d’erreurs (par exemple, si un compartiment S3 est introuvable ou inaccessible). Le flux en direct de ce diffuseur de publication n’est pas enregistré. |
| État de changement de l’enregistrement des participants IVS | Recording End Failure | L’enregistrement se termine par un échec, en raison d’erreurs rencontrées pendant l’enregistrement (par exemple, si le compartiment S3 est introuvable ou inaccessible). Certains objets peuvent toujours être écrits dans l’emplacement de stockage configuré. |
| Mise à jour d'étape IVS | Participant diffusé | Un participant commence à être diffusé sur une étape. |
| Mise à jour de scène IVS | Participant non diffusé | Un participant a cessé d’être diffusé sur une scène. |
| Mise à jour de scène IVS | Erreur de publication du participant | La tentative d’un participant de publier sur une scène a échoué. |
| Mise à jour de scène IVS | Début de la réplication du participant | La réplication d’un participant démarre. |
| Mise à jour de scène IVS | Fin de la réplication du participant | La réplication d’un participant prend fin. Une réplication peut prendre fin en raison d’une opération d’API StopParticipantReplication, si le diffuseur de publication a arrêté d’être diffusé ou si le diffuseur de publication a arrêté d’être diffusé et que la fenêtre de reconnexion a expiré. |
| Mise à jour de scène IVS | Jeton échangé | Un jeton de participant existant est échangé contre un nouveau. Cet échange entraîne une mise à niveau ou une rétrogradation des capacités du jeton et/ou une mise à jour des attributs du jeton. |
Création de règles Amazon EventBridge pour Amazon IVS
Vous pouvez créer une règle qui se déclenche sur un événement émis par Amazon IVS. Suivez les étapes décrites dans Create a rule in Amazon EventBridge dans le Guide de l’utilisateur d’Amazon EventBridge. Lorsque vous devez sélectionner un service, choisissez Interactive Video Service (IVS).
Exemples : changements d’état de montage
Échec de destination : cet événement est envoyé lorsqu’une tentative de sortie vers une destination a échoué (par exemple, le compartiment S3 est introuvable, l’accès au compartiment S3 a été refusé ou le flux existe déjà pour une destination 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" } }
Le tableau suivant répertorie les valeurs error_code et reason des événements d’échec de destination, ainsi que des conseils de dépannage :
| error_code | raison | Directives de dépannage |
|---|---|---|
| ResourceNotFoundException | Compartiment S3 introuvable. Vérifiez que votre compartiment existe. | Vérifiez que votre compartiment S3 existe et se trouve dans la bonne région. |
| AccessDeniedException | Accès refusé au compartiment S3. Vérifiez votre stratégie de compartiment. | Vérifiez que votre stratégie de compartiment S3 accorde au service IVS les autorisations nécessaires. |
| ConflictException | Le flux existe déjà | Vérifiez qu’aucune autre diffusion n’est active sur le même canal de destination RTMP. |
| InternalServerException | Erreur interne du service | Réessayez. Si le problème persiste, contactez AWS Support. |
Début de la destination : cet événement est envoyé lorsque la sortie vers une destination démarre avec succès.
{ "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>", } }
Fin de la destination : cet événement est envoyé lorsque la sortie vers une destination est terminée.
{ "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>", } }
Reconnexion de la destination : cet événement est envoyé lorsque la sortie vers une destination a été interrompue et qu’une tentative de reconnexion est en cours.
{ "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>", } }
Début de session : cet événement est envoyé lors de la création d’une session de montage. Cet événement se déclenche lorsqu’un pipeline de processus de montage s’initialise avec succès. À ce stade, le pipeline de montage s’est inscrit avec succès à une scène, reçoit du contenu multimédia et est en mesure de composer une vidéo.
{ "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 session : cet événement est envoyé lorsqu’une session de montage est terminée et que toutes les ressources ont été supprimées.
{ "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>" } }
Échec de fin de la session : cet événement est envoyé lorsqu’un pipeline de montage n’a pas pu être initialisé en raison de la suppression d’une étape, de l’échec d’une ou plusieurs sorties ou d’une autre erreur interne.
{ "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" } }
Le tableau suivant répertorie les valeurs error_code et reason des événements d’échec de session, ainsi que des conseils de dépannage :
| error_code | raison | Directives de dépannage |
|---|---|---|
| StageDeleted | L’étape a été supprimée. | Vérifiez que l’étape existe avant de commencer une composition. |
| DestinationFailure | Une ou plusieurs sorties ont échoué | Vérifiez les erreurs de destination individuelles. |
| InternalServerException | Erreur interne du service | Réessayez. Si le problème persiste, contactez AWS Support. |
Exemple : changements d’état d’enregistrement pour un participant individuel
Démarrage de l’enregistrement : cet événement est envoyé lorsqu’un diffuseur de publication se connecte à la scène et que son enregistrement sur S3 commence.
{ "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 d’enregistrement : cet événement est envoyé lorsqu’un diffuseur de publication se déconnecte de la scène et que tous les fichiers restants ont été enregistrés sur 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 } }
Échec du démarrage de l’enregistrement : cet événement est envoyé lorsqu’un diffuseur de publication se connecte à la scène, mais que l’enregistrement ne démarre pas en raison d’erreurs (par exemple, si un compartiment S3 est introuvable ou inaccessible). Le flux en direct du diffuseur de publication n’est pas enregistré.
{ "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" } }
Le tableau suivant répertorie les valeurs error_code et reason des événements d’échec de démarrage de l’enregistrement, ainsi que des conseils de dépannage :
| error_code | raison | Directives de dépannage |
|---|---|---|
| ResourceNotFoundException | Compartiment S3 introuvable. Vérifiez que votre compartiment existe. | Vérifiez que votre compartiment S3 existe et se trouve dans la bonne région. |
| AccessDeniedException | Accès refusé au compartiment S3. Vérifiez votre stratégie de compartiment. | Vérifiez que votre stratégie de compartiment S3 accorde au service IVS les autorisations nécessaires. |
| ValidationException | Le codec vidéo n’est pas pris en charge pour l’enregistrement | Vérifiez que le diffuseur de publication utilise un codec vidéo compatible. |
| InternalServerException | Erreur interne du service | Réessayez. Si le problème persiste, contactez AWS Support. |
Échec de l’arrêt de l’enregistrement : cet événement est envoyé lorsque l’enregistrement se termine par un échec, en raison d’erreurs rencontrées pendant l’enregistrement (par exemple, si le compartiment S3 est introuvable ou inaccessible). Certains objets peuvent toujours être écrits dans l’emplacement de stockage configuré.
{ "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" } }
Le tableau suivant répertorie les valeurs error_code et reason des événements d’échec de fin de l’enregistrement, ainsi que des conseils de dépannage :
| error_code | raison | Directives de dépannage |
|---|---|---|
| ResourceNotFoundException | Compartiment S3 introuvable. Vérifiez que votre compartiment existe. | Vérifiez que votre compartiment S3 existe et se trouve dans la bonne région. |
| AccessDeniedException | Accès refusé au compartiment S3. Vérifiez votre stratégie de compartiment. | Vérifiez que votre stratégie de compartiment S3 accorde au service IVS les autorisations nécessaires. |
| InternalServerException | Erreur interne du service | Réessayez. Si le problème persiste, contactez AWS Support. |
Notez que si la fusion des enregistrements des participants individuels est activée et si un éditeur d'étape se déconnecte d'une étape puis se reconnecte, IVS essaie d'enregistrer sur le même préfixe S3 que lors de la session précédente. Par conséquent, dans les exemples ci-dessus, le session_id composant du recording_s3_key_prefix peut avoir une valeur différente du champ session_id dans detail. Consultez Fusionner les enregistrements fragmentés de participants individuels.
Exemples : mise à jour d’étape
Les événements de mise à jour d’étape incluent un nom d’événement (qui classe l’événement) et des métadonnées relatives à l’événement. Les métadonnées incluent l’ID du participant qui a déclenché l’événement, les ID d’étape et de session associés, ainsi que l’ID utilisateur.
Participant diffusé : cet événement est envoyé lorsqu’un participant commence à être diffusé sur une étape.
{ "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" } }
Participant non diffusé : cet événement est envoyé lorsqu’un participant a cessé d’être diffusé sur une étape.
{ "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" } }
Erreur de publication du participant : cet événement est envoyé lorsqu’une tentative de publication d’un participant sur une scène échoue.
{ "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" } }
Début de la réplication du participant : cet événement est envoyé lorsque la réplication d’un participant démarre.
{ "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 réplication du participant : cet événement est envoyé lorsque la réplication d’un participant prend fin. Une réplication peut prendre fin en raison d’une opération d’API StopParticipantReplication, si le diffuseur de publication a arrêté d’être diffusé ou si le diffuseur de publication a arrêté d’être diffusé et que la fenêtre de reconnexion a expiré.
{ "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" } }
Jeton échangé : cet événement est envoyé lorsqu’un jeton de participant existant est échangé contre un nouveau, ce qui entraîne des capacités de jeton mises à niveau ou rétrogradées et/ou des attributs de jeton mis à jour.
{ "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" } } }