Uso do Amazon EventBridge com o streaming em tempo real do IVS
Você pode usar o Amazon EventBridge para monitorar seus streams do Amazon Interactive Video Service (IVS).
O Amazon IVS envia eventos de alteração sobre o status de seus streams para o Amazon EventBridge. Todos os eventos que são fornecidos são válidos. No entanto, os eventos são enviados em uma base de melhor esforço, o que significa que não há garantia de que:
-
Os eventos serão entregues: um evento designado pode ocorrer (por exemplo, um participante realiza uma publicação), mas é possível que o Amazon IVS não envie um evento correspondente para o EventBridge. O Amazon IVS tenta entregar eventos por várias horas antes de desistir.
-
Os eventos que são entregues vão chegar em um período especificado: você pode receber eventos com até algumas horas de atraso.
-
Os eventos serão entregues em ordem: os eventos podem estar fora de ordem, especialmente se forem enviados com um curto intervalo de tempo. Por exemplo, você poderá ver participante não publicado antes de visualizá-lo como publicado.
Embora seja raro que os eventos estejam ausentes, atrasados ou fora de sequência, você deve lidar com essas possibilidades se você escrever programas críticos para os negócios que dependem da ordem ou da existência de eventos de notificação.
Você pode criar regras do EventBridge para qualquer um dos seguintes eventos.
| Tipo de evento | Evento | Enviado quando … |
|---|---|---|
| Alteração do estado de composição do IVS | Falha no destino | Uma tentativa de enviar para um destino falhou (por exemplo, o bucket do S3 não foi encontrado, o acesso ao bucket do S3 foi negado ou o fluxo já existe para um destino RTMP). |
| Alteração do estado de composição do IVS | Início do destino | A saída para um destino foi iniciada com sucesso. |
| Alteração do estado de composição do IVS | Fim do destino | Conclusão da saída para um destino. |
| Alteração do estado de composição do IVS | Reconexão de destino | A saída para um destino foi interrompida e há uma tentativa de reconexão em andamento. |
| Alteração do estado de composição do IVS | Início da sessão | Uma sessão de composição foi criada. Esse evento é acionado quando um pipeline de processo de composição é inicializado com sucesso. Nesse momento, o funil de composição terá feito a inscrição com sucesso em um palco, estará recebendo mídia e será capaz de compor vídeos. |
| Alteração do estado de composição do IVS | Término da sessão | Uma sessão de composição concluída. |
| Alteração do estado de composição do IVS | Falha na sessão | Um pipeline de composição falhou devido à exclusão de um estágio, à falha de uma ou mais saídas ou a qualquer outro erro interno. |
| Alteração do estado da gravação do participante do IVS | Iniciar gravação | Um publicador se conectou ao palco e está sendo gravado no S3. |
| Alteração do estado da gravação do participante do IVS | Término da gravação | Um publicador se desconectou do palco e todos os arquivos restantes foram gravados no S3. |
| Alteração do estado da gravação do participante do IVS | Falha ao iniciar gravação | Um publicador se conecta ao palco, mas a gravação não inicia devido a erros (por exemplo, se um bucket do S3 não for encontrado ou não puder ser acessado). A transmissão ao vivo do publicador não é gravada. |
| Alteração do estado da gravação do participante do IVS | Falha ao final do registro | A gravação termina com falha devido a erros encontrados durante a gravação (por exemplo, se um bucket do S3 não for encontrado ou não puder ser acessado). Alguns objetos ainda podem ser gravados no local de armazenamento configurado. |
| Atualização de palco do IVS | Publicação por participante | Um participante começa a publicar em um palco. |
| Atualização de palco do IVS | Publicação interrompida por participante | Um participante parou de publicar em um palco. |
| Atualização de palco do IVS | Erro de publicação do participante | A tentativa de um participante de publicar em um palco falhou. |
| Atualização de palco do IVS | Início da replicação do participante | Uma replicação do participante é iniciada. |
| Atualização de palco do IVS | Fim da replicação do participante | Uma replicação do participante é finalizada. Uma replicação pode ser finalizada devido a uma operação da API StopParticipantReplication, se o publicador tiver parado de publicar ou se o publicador tiver parado de publicar e a janela de reconexão tiver expirado. |
| Atualização de palco do IVS | Token trocados | Um token de participante existente é trocado por um novo. Essa troca resulta em recursos de token com upgrade ou downgrade e/ou atributos de token atualizados. |
Criação de regras do Amazon EventBridge para o Amazon IVS
Você pode criar uma regra do que é acionado em um evento emitido pelo Amazon IVS. Siga as etapas em Create a rule in Amazon EventBridge no Guia do usuário do Amazon EventBridge. Ao selecionar um serviço, escolha Interactive Video Service (IVS).
Exemplos: alteração do estado de composição do IVS
Falha do destino: esse evento é enviado quando uma tentativa de saída para um destino falha (por exemplo, o bucket S3 não foi encontrado, o acesso ao bucket S3 foi negado ou o fluxo já existe para um destino 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" } }
A tabela a seguir lista valores de error_code e reason para eventos de falha do destino, bem como orientações para solução de problemas:
| error_code | reason | Orientação para solução de problemas |
|---|---|---|
| ResourceNotFoundException | Bucket do S3 não encontrado. Verifique se o bucket existe. | Verifique se o bucket do S3 existe e está no local correto. |
| AccessDeniedException | Acesso negado ao bucket do S3. Verifique sua política de bucket. | Verifique se a política de bucket do S3 garante as permissões necessárias ao serviço IVS. |
| ConflictException | O fluxo já existe | Verifique se nenhuma outra transmissão está ativa no mesmo canal de destino RTMP. |
| InternalServerException | Erro interno do serviço | Repetir a operação. Se o problema persistir, entre em contato com AWS Support. |
Início do destino: esse evento é enviado quando a saída para um destino é iniciada com sucesso.
{ "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>", } }
Fim do destino: esse evento é enviado quando a saída para um destino é concluída.
{ "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>", } }
Reconexão de destino: esse evento é enviado quando a saída para um destino é interrompida e há uma tentativa de reconexã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": "Destination Reconnecting", "stage_arn": "<stage-arn>", "id": "<Destination-id>", } }
Início da sessão: esse evento é enviado quando uma sessão de composição foi criada. Esse evento é acionado quando um pipeline de processo de composição é inicializado com sucesso. Nesse momento, o funil de composição terá feito a inscrição com sucesso em um palco, estará recebendo mídia e será capaz de compor vídeos.
{ "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>" } }
Fim da sessão: esse evento é enviado quando uma sessão de composição é concluída e todos os recursos são excluídos.
{ "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>" } }
Falha da sessão: esse evento é enviado quando um pipeline de composição falhou devido à exclusão de um estágio, à falha de uma ou mais saídas ou a qualquer outro erro 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" } }
A tabela a seguir lista valores de error_code e reason para eventos de falha da sessão, bem como orientações para solução de problemas:
| error_code | reason | Orientação para solução de problemas |
|---|---|---|
| StageDeleted | O estágio foi excluído | Verifique se o estágio existe antes de iniciar uma composição. |
| DestinationFailure | Uma ou mais saídas falharam | Verifique os erros de destino individuais. |
| InternalServerException | Erro interno do serviço | Repetir a operação. Se o problema persistir, entre em contato com AWS Support. |
Exemplos: alteração do estado da gravação individual de participante
Início da gravação: este evento é enviado quando um publicador se conecta ao palco e está sendo gravado no 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" } }
Término da gravação: este evento é enviado quando um publicador se desconecta do palco e todos os arquivos restantes foram gravados no 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 } }
Falha de início da gravação: esse evento é enviado quando um publicador se conecta a um estágio, mas a gravação falha ao iniciar devido a erros (por exemplo, se um bucket do S3 não foi encontrado ou não pode ser acessado). A transmissão ao vivo do publicador não é gravada.
{ "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" } }
A tabela a seguir lista valores de error_code e reason para eventos de falha de início da gravação, bem como orientações para solução de problemas:
| error_code | reason | Orientação para solução de problemas |
|---|---|---|
| ResourceNotFoundException | Bucket do S3 não encontrado. Verifique se o bucket existe. | Verifique se o bucket do S3 existe e está no local correto. |
| AccessDeniedException | Acesso negado ao bucket do S3. Verifique sua política de bucket. | Verifique se a política de bucket do S3 garante as permissões necessárias ao serviço IVS. |
| ValidationException | Codec de vídeo sem suporte para gravação | Verifique se o publicador está usando um codec de vídeo compatível. |
| InternalServerException | Erro interno do serviço | Repetir a operação. Se o problema persistir, entre em contato com AWS Support. |
Falha de término da gravação: esse evento é enviado quando a gravação termina com falha devido a erros encontrados durante a gravação (por exemplo, se um bucket do S3 não foi encontrado ou não pode ser acessado). Alguns objetos ainda podem ser gravados no local de armazenamento configurado.
{ "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" } }
A tabela a seguir lista valores de error_code e reason para eventos de falha de término da gravação, bem como orientações para solução de problemas:
| error_code | reason | Orientação para solução de problemas |
|---|---|---|
| ResourceNotFoundException | Bucket do S3 não encontrado. Verifique se o bucket existe. | Verifique se o bucket do S3 existe e está no local correto. |
| AccessDeniedException | Acesso negado ao bucket do S3. Verifique sua política de bucket. | Verifique se a política de bucket do S3 garante as permissões necessárias ao serviço IVS. |
| InternalServerException | Erro interno do serviço | Repetir a operação. Se o problema persistir, entre em contato com AWS Support. |
Observe que se a mesclagem da gravação de participantes individuais estiver habilitada, o IVS tentará gravar no mesmo prefixo do S3 da sessão anterior se o publicador do palco se desconectar e então se reconectar ao palco. Como consequência, nos exemplos acima, o componente session_id de recording_s3_key_prefix pode ter um valor diferente do campo session_id em detail. Consulte Mesclar gravações fragmentadas de participantes individuais.
Exemplos: atualização de palco
Os eventos de atualização de palco incluem um nome de evento (que classifica o evento) e metadados sobre o evento. Os metadados incluem o ID do participante que acionou o evento, os IDs de sessão e palco associados e o ID do usuário.
Publicação por participante: este evento é enviado quando um participante começa a publicar em um palco.
{ "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" } }
Publicação interrompida por participante: este evento é enviado quando um participante para de publicar em um palco.
{ "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" } }
Erro de publicação do participante: este evento é enviado quando a tentativa de um participante de publicar em um palco falha.
{ "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" } }
Início da replicação do participante: este evento é enviado quando a replicação de um participante é iniciada.
{ "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" } }
Fim da replicação do participante: este evento é enviado quando a replicação de um participante é finalizada. Uma replicação pode ser finalizada devido a uma operação da API StopParticipantReplication, se o publicador tiver parado de publicar ou se o publicador tiver parado de publicar e a janela de reconexão tiver 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 trocado: esse evento é enviado quando um token de participante existente é trocado por um novo, resultando em recursos de token atualizados ou rebaixados e/ou atributos de token atualizados.
{ "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" } } }