View a markdown version of this page

Solução de problemas na entrega de dados - Amazon Kinesis Data Streams

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solução de problemas na entrega de dados

Use esta seção para resolver problemas comuns com a entrega de dados.

Entrega travada no estado CREATING

Quando você cria uma entrega, ela entra no estado CREATING enquanto os recursos são provisionados. O provisionamento normalmente é concluído em alguns minutos. Se a entrega permanecer em CREATING por um longo período ou passar para FAILED, é provável que um erro de configuração seja a causa.

Ligue DescribeChannel para verificar o status atual e o motivo do status. As causas comuns incluem:

  • ARN inválido da função IAM ou permissões insuficientes na política da função.

  • O bucket Amazon S3 de destino não existe ou está em uma região diferente.

  • O ARN do esquema no AWS Glue Schema Registry não pode ser resolvido.

Entrega em estado de FALHA

Você não pode recuperar uma entrega cuja ChannelStatus é FAILED (conforme devolvida porDescribeChannel). Leia o ChannelStatusReason campo em DescribeChannel para identificar a causa raiz. Corrija o problema subjacente, exclua a falha na entrega e recrie-a com a configuração corrigida.

Alta atualização de dados

A DataFreshness métrica mede a idade do registro não entregue mais antigo. Valores altos indicam que a entrega está atrasada em relação à ingestão. Causas comuns:

  • A alta contagem de partições na tabela de destino aumenta a sobrecarga de metadados.

  • O crescimento de metadados de tabelas a partir de muitos pequenos commits reduz a taxa de transferência de commits.

  • A baixa taxa de transferência de fluxo combinada com uma configuração de baixo frescor causa pequenas entregas frequentes.

Resolução: para tabelas de streaming no Apache Iceberg, habilite a manutenção de tabelas do Amazon S3 (compactação e expiração do snapshot) para gerenciar o crescimento de metadados. Para fluxos de baixo rendimento, aumente o DataFreshnessInSeconds valor para permitir que mais dados sejam agrupados em cada ciclo de entrega.

A configuração mais rígida de atualização de dados exige uma taxa de transferência mínima de fluxo sustentada para que dados suficientes se acumulem para uma entrega eficiente e compactação em linha em cada ciclo. Se seu stream produzir menos do que essa taxa de transferência, use um DataFreshnessInSeconds valor maior.

Registros com falha maiores que zero

Quando a métrica de registro com falha é diferente de zero (DeliveryToS3.FailedRecordCountpara entregas do Amazon S3 ou DeliveryToIceberg.FailedRowCount para entregas de tabelas de streaming), os registros são enviados para a fila de mensagens mortas em vez de para o destino.

Para tabelas de streaming no Apache Iceberg:

  • Incompatibilidade de esquema — o registro não está em conformidade com o esquema registrado.

  • Campo obrigatório ausente — uma coluna não anulável não tem valor no registro.

  • Não usar o serializador AWS Glue Schema Registry para o formato GSR_JSON — os produtores devem usar a biblioteca de produtores do Schema Registry. AWS Glue

Para buckets Amazon S3 de uso geral:

  • Incompatibilidade de formato — o formato do registro não corresponde ao formato de entrada configurado.

Resolução: inspecione as entradas da fila de cartas mortas para obter informações detalhadas sobre erros. Verifique CloudWatch os registros da entrega para ver erros específicos de análise ou validação. Faça com que o produtor envie os registros em conformidade.

Nenhum dado aparece no destino

Se a entrega estiver no estado ATIVO, mas nenhum dado aparecer no destino, as causas mais comuns são:

  • Problemas de permissão — a função do IAM não pode gravar no destino. Verifique se há AccessDenied erros nos CloudWatch registros.

  • Incompatibilidade de prefixo da chave de saída (buckets Amazon S3 de uso geral) — se sua s3:PutObject permissão tiver como escopo um prefixo comoarn:aws:s3:::my-bucket/data*, por exemplo, as chaves geradas pelo seu modelo de chave de saída devem começar com. data/ Uma incompatibilidade faz com que cada gravação seja negada.

  • Permissão de tabela ausente (tabelas de streaming) — ao criptografar a tabela de destino com uma AWS KMS chave gerenciada pelo cliente, verifique se a função de execução do serviço está s3tables:PutTableEncryption incluída, além das outras s3tables ações. Sem ela, é CreateTable bem-sucedida, mas a criptografia da tabela falha, a tabela nunca é criada e nenhum dado é entregue.

  • Permissões de registro ausentes — se a função de execução do serviço faltar logs:CreateLogStream elogs:PutLogEvents, as falhas de entrega não forem registradas nos CloudWatch registros, o que pode fazer com que um problema de permissão apareça como uma falha silenciosa. Verifique as permissões de registro primeiro quando nenhum registro estiver presente.

  • Não há novos dados após a criação — a entrega não preenche os dados existentes do stream. Somente registros gravados após a entrega se tornar ATIVA são entregues.

Entrega suspensa

Uma entrega entra em estado suspenso quando o destino se torna indisponível ou incompatível. Causas comuns:

  • As tabelas de streaming na tabela de destino do Apache Iceberg foram excluídas.

  • O proprietário do bucket do Amazon S3 não corresponde à conta esperada (incompatibilidade de propriedade).

  • Uma coluna de partição incompatível foi detectada na tabela de destino.

Uma entrega suspensa não pode ser retomada. Você deve criar uma nova entrega com uma configuração de destino válida.

Erros de permissão negada nos CloudWatch registros

AccessDeniederros nos CloudWatch registros da entrega indicam um problema de permissões. Causas comuns:

  • A política de função do IAM foi modificada após a criação da entrega.

  • A política de bucket do Amazon S3 foi alterada para negar o acesso da função.

  • A política de confiança na função não permite que o serviço Kinesis Data Streams a assuma.

  • A política de AWS KMS chaves nega o acesso criptografado ou descriptografado à função da entrega.

Revise e corrija a política relevante e, em seguida, verifique se a entrega é retomada.

A entrega não está disponível para minha transmissão

As tabelas de streaming e a entrega do Amazon S3 exigem que o stream do Kinesis Data Streams esteja no modo de capacidade On-Demand Standard ou On-Demand Advantage. Se seu stream usa o modo provisionado, você deve alterná-lo para o On-Demand modo antes de criar uma entrega.

A entrega é interrompida após uma alteração no esquema

As entregas não suportam a evolução do esquema. Se você atualizar o AWS Glue esquema no Registro de Esquemas depois de criar uma entrega, os registros produzidos com a nova versão do esquema poderão falhar na validação e ser encaminhados para a fila de cartas mortas.

Para resolver: reverta a alteração do esquema no produtor ou exclua a entrega existente e recrie-a com o esquema atualizado.

Não é possível excluir um stream

Uma DeleteStream solicitação falha ResourceInUseException quando o stream tem uma ou mais entregas ativas. Um stream não pode ser excluído enquanto as entregas estiverem anexadas a ele.

Para resolver: liste as entregas no stream com ListChannels (usando um filtro de stream), exclua cada entrega com eDeleteChannel, em seguida, exclua o stream.