Uso do Amazon EventBridge com o streaming de baixa latência 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 stream começa), mas é possível que o Amazon IVS não envie um evento de alteração 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, será possível ver a transmissão para baixo antes da transmissão para cima.
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 do stream do IVS | Session Created | Uma chave de transmissão foi usada com êxito e uma sessão de transmissão foi criada. Esse evento é acionado quando uma transmissão é iniciada, antes que o vídeo seja processado ou entregue aos visualizadores. Este evento pode ajudar a determinar se uma transmissão foi iniciada, mas não conseguiu entrar ao vivo; por exemplo, devido a uma falha de configuração ou uma violação de limite. |
Alteração do estado do stream do IVS | Session Ended | O codificador desconectado e o Amazon IVS não estão mais recebendo vídeo. Este evento pode ajudar você a determinar quando o codificador parou de enviar mídia. Para fluxos com várias faixas, o campo Observação: quando o codificador se desconecta, o evento Session Ended (Sessão encerrada) pode vir antes do evento Stream End (Fim da transmissão). Isso ocorre porque pode haver um curto período de tempo após o evento Session Ended (Sessão encerrada) quando o Amazon IVS ainda está processando vídeo. |
Alteração do estado do stream do IVS | Início do stream | Um stream está sendo processado e segmentos estão disponíveis para o visualizador assistir. Este evento indica que a transmissão de vídeo está sendo processada e pode ser assistida pelos visualizadores. Este evento pode ajudar você a determinar se uma transmissão entrou ao vivo com êxito. |
Alteração do estado do stream do IVS | Fim do stream | Uma transmissão para de ser processada e não produz mais segmentos de vídeo para o visualizador. Este evento pode ajudar você a determinar quando a transmissão terminou e nenhum novo segmento de vídeo pode ser consumido pelos espectadores. (Consulte também a nota em Sessão encerrada.) |
Alteração do estado do stream do IVS | Falha de stream | Um stream não está sendo processado e não está disponível porque a capacidade de processamento foi excedida. |
Alteração do estado do stream do IVS | Aquisição de fluxo | Um fluxo existente foi adquirido. |
Alteração do estado do stream do IVS | Falha de aquisição de fluxo | Uma tentativa de aquisição de um fluxo existente foi rejeitada. O campo code fornece detalhes adicionais sobre o motivo pelo qual a aquisição de fluxo falhou. Há vários valores; observe que as descrições longas são fornecidas no console do IVS, mas não são fornecidas por meio da API do IVS ou do EventBridge:
|
Alteração de integridade do stream de IVS | Início da privação | Um stream não está recebendo dados do streamer; é informado que o stream está em “privação”. |
Alteração de integridade do stream de IVS | Fim da privação | Um stream em privação começa a receber dados do streamer e o stream está íntegro novamente. |
Violação de limite do IVS | Taxa de bits da ingestão | A taxa de bits do stream de entrada excede o limite do Amazon IVS. |
Violação de limite do IVS | Resolução de entrada | A resolução do stream de entrada excede o limite do Amazon IVS. |
Violação de limite do IVS | Transmissões simultâneas | O número total de canais de streaming ao mesmo tempo excede o limite do Amazon IVS. |
Violação de limite do IVS | Visualizadores simultâneos | O número total de visualizadores que assistem a seus canais ao mesmo tempo excede o limite do Amazon IVS. |
Alteração de estado de gravação de IVS | Iniciar gravação | Uma transmissão começa a ser processada e o prefixo de gravação é criado e validado. Os segmentos serão gravados no local de armazenamento configurado para o canal. Observe que depois que uma transmissão ao vivo é iniciada e o evento Recording Start do EventBridge é emitido, algum tempo é necessário antes que os arquivos de manifesto e os segmentos de vídeo sejam gravados no bucket do S3 configurado para o canal. Recomendamos que você reproduza ou processe streams gravados somente após o evento Fim da gravação ser enviado. |
Alteração de estado de gravação de IVS | Término da gravação | Um stream termina e a gravação é interrompida para este canal. |
Alteração de estado de gravação de IVS | Falha ao iniciar gravação | Um stream é iniciado, mas a gravação falha ao iniciar devido a erros (por exemplo, o bucket S3 não existe ou não está na região correta). Essa transmissão ao vivo não é gravada. |
Alteração de estado de gravação de IVS | Falha ao final do registro | A gravação é encerrada com falha devido a erros encontrados durante a gravação (por exemplo, se a tentativa de escrever uma playlist primária falhou). Alguns objetos ainda podem ser gravados no local de armazenamento configurado. |
Observação sobre IDs de transmissão: o campo stream_id
(em muitos eventos) é um identificador de transmissão exclusivo atribuído toda vez que um canal entra no ar ao vivo. Para um determinado canal, cada stream ao vivo tem um novo stream_id
. Portanto, cada ARN de canal pode ter muitos IDs de stream correspondentes. Os IDs de stream permitem que os clientes diferenciem sessões de stream diferentes no mesmo canal.
Observação sobre a latência de alguns eventos: as configurações do codificador, especialmente o intervalo IDR/quadro-chave, afetam o tempo de inicialização da transmissão e a latência dos eventos relacionados (início da transmissão e início da gravação). Um intervalo de quadro-chave mais curto diminui essa latência. Consulte “Como reduzir a latência” em Configuração de streaming do Amazon IVS para obter informações sobre como configurar o IDR/Keyframe
.
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 da transmissão
Sessão criada: este evento é enviado quando uma chave de fluxo foi usada com êxito e uma sessão de fluxo foi criada.
{ "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" } }
Sessão encerrada: este evento é enviado quando o codificador é desconectado e o IVS não está mais recebendo vídeo.
{ "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" } }
Início da transmissão: este evento é enviado quando uma transmissão está sendo processada e segmentos estão disponíveis para o espectador.
{ "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" } }
Fim da transmissão: este evento é enviado quando uma transmissão para de ser processada e não produz mais segmentos de vídeo para o espectador.
{ "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" } }
Falha na transmissão: este evento é enviado quando uma transmissão não está sendo processada e não está disponível porque a capacidade de processamento foi excedida.
{ "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." } }
Aquisição de fluxo: este evento é enviado quando uma transmissão existente foi adquirida.
{ "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" } }
Falha de aquisição de fluxo: este evento é enviado quando uma tentativa de aquisição de um fluxo existente foi rejeitada. Isso pode ser devido à incompatibilidade do tipo de codec/resolução/faixa de vídeo, a um número inteiro prioritário inválido ou à superação do número máximo de aquisições por fluxo.
{ "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" } }
Exemplo: alteração da integridade da transmissão
Início da privação: este evento é enviado quando uma transmissão não está recebendo dados do transmissor; é informado que a transmissão está em “privação”.
{ "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" } }
Fim da privação: este evento é enviado quando uma transmissão em privação começa a receber dados do transmissor e a transmissão fica íntegra novamente.
{ "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" } }
Exemplos: violação de limite
Todos os eventos de violação de limite incluem o nome do limite que é violado, o valor do limite e o número pelo qual o limite foi excedido (valor na violação subtraído pelo limite).
Ingestão de taxas de bits: este evento é enviado quando a taxa de bits da transmissão de entrada excede o limite do 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" } }
Resolução da ingestão: este evento é enviado quando a resolução da transmissão de entrada (total de pixels ou pixels por borda) excede os limites do Amazon IVS.
Total máximo de pixels excedido:
{ "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" } }
Máximo de pixels por borda excedido:
{ "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" } }
Transmissões simultâneas: este evento é enviado quando o número total de canais de fazendo transmissão ao mesmo tempo excede o limite do 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" } }
Espectadores simultâneos: este evento é enviado quando o número total de espectadores assistindo a seus canais ao mesmo tempo excede o limite do 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" } }
Exemplo: alteração do estado de gravação
Para todos os eventos de alteração de estado de gravação, o caminho de nível superior onde todos os objetos para essa transmissão ao vivo são armazenados é recording_s3_key_prefix
. No caso de falhas, o motivo da falha está em recording_status_reason
. O campo recording_duration_ms
é o número de milissegundos de duração da gravação.
Iniciar gravação: este evento é enviado quando uma transmissão começa a ser processada e segmentos estão sendo gravados no local de armazenamento configurado para o canal.
{ "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" } }
Fim da gravação: este evento é enviado quando uma transmissão termina e a gravação é interrompida para esse canal.
{ "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"] } }
Falha no início do evento: este evento é enviado quando uma transmissão é iniciada, mas a gravação falha ao iniciar devido a erros (por exemplo, o bucket S3 não existe ou não está na região correta). Essa transmissão ao vivo não é gravada.
{ "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" } }
Falha no fim da gravação: este evento é enviado quando a gravação termina com falha devido a erros encontrados durante a gravação. Alguns objetos ainda podem ser gravados no local de armazenamento configurado.
{ "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" } }