View a markdown version of this page

Solución de problemas de entrega de datos - Amazon Kinesis Data Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solución de problemas de entrega de datos

Utilice esta sección para resolver problemas comunes relacionados con la entrega de datos.

La entrega se ha quedado atascada en estado de CREACIÓN

Al crear una entrega, esta pasa al estado DE CREACIÓN mientras se aprovisionan los recursos. El aprovisionamiento normalmente se completa en unos minutos. Si la entrega permanece en CREATING durante un período prolongado o pasa a ser FALLIDA, es probable que la causa sea un error de configuración.

Llama DescribeChannel para comprobar el estado actual y el motivo del estado. Entre las causas comunes, se incluyen las siguientes:

  • El ARN del rol de IAM no es válido o los permisos son insuficientes en la política de roles.

  • El bucket de Amazon S3 de destino no existe o se encuentra en una región diferente.

  • El ARN del esquema en el registro AWS Glue de esquemas no se puede resolver.

Entrega en estado fallido

No puedes recuperar un envío que ChannelStatus esté FAILED (tal y como lo devolvióDescribeChannel). Lee el ChannelStatusReason campo de DescribeChannel para identificar la causa principal. Corrija el problema subyacente, elimine la entrega fallida y vuelva a crearla con la configuración corregida.

Alta frescura de los datos

La DataFreshness métrica mide la antigüedad del registro no entregado más antiguo. Los valores altos indican que el envío está retrasado con respecto a la ingesta. Causas habituales:

  • El alto número de particiones en la tabla de destino aumenta la sobrecarga de metadatos.

  • El aumento de los metadatos de la tabla a partir de muchas confirmaciones pequeñas reduce el rendimiento de las confirmaciones.

  • El bajo rendimiento del flujo, combinado con una configuración de baja frescura, provoca que las entregas sean pequeñas y frecuentes.

Solución: en el caso de las tablas de streaming en Apache Iceberg, habilite el mantenimiento de las tablas de Amazon S3 (compactación y caducidad de las instantáneas) para gestionar el crecimiento de los metadatos. En el caso de las transmisiones de bajo rendimiento, aumente el DataFreshnessInSeconds valor para permitir la distribución por lotes de más datos para cada ciclo de entrega.

La configuración de actualización de datos más estricta requiere un rendimiento mínimo y sostenido de la transmisión, de modo que se acumulen suficientes datos para una entrega eficiente y una compactación en línea en cada ciclo. Si su transmisión produce un rendimiento inferior a ese, utilice un valor más alto. DataFreshnessInSeconds

Registros fallidos superiores a cero

Cuando la métrica de registros fallidos es distinta de cero (en el caso DeliveryToS3.FailedRecordCount de las entregas de Amazon S3 o DeliveryToIceberg.FailedRowCount de las entregas en tablas de streaming), los registros se envían a la cola de espera en lugar de al destino.

Para tablas de streaming en Apache Iceberg:

  • Discordancia de esquema: el registro no se ajusta al esquema registrado.

  • Falta un campo obligatorio: una columna que no admite valores NULL no tiene ningún valor en el registro.

  • No se usa el serializador de AWS Glue Schema Registry para el formato GSR_JSON; los productores deben usar la biblioteca de productores de Schema Registry. AWS Glue

Para cubos de Amazon S3 de uso general:

  • Discordancia de formato: el formato del registro no coincide con el formato de entrada configurado.

Solución: inspeccione las entradas de la cola de mensajes muertos para obtener información detallada sobre los errores. Consulta CloudWatch los registros de la entrega para ver los errores específicos de análisis o validación. Corrija el productor para que envíe registros conformes.

No aparecen datos en el destino

Si el envío está en estado ACTIVO pero no aparecen datos en el destino, las causas más comunes son:

  • Problemas con los permisos: el rol de IAM no puede escribir en el destino. Compruebe si hay AccessDenied errores en los CloudWatch registros.

  • No coinciden los prefijos de la clave de salida (cubos de Amazon S3 de uso general). Si su s3:PutObject permiso se limita a un prefijo comoarn:aws:s3:::my-bucket/data*, por ejemplo, las claves generadas por la plantilla de claves de salida deben empezar por. data/ Una falta de coincidencia hace que se denieguen todas las escrituras.

  • Falta el permiso de tabla (tablas de streaming): cuando cifre la tabla de destino con una AWS KMS clave gestionada por el cliente, compruebe que la función de ejecución del servicio incluye, s3tables:PutTableEncryption además de las demás s3tables acciones. Sin él, se CreateTable ejecuta correctamente, pero el cifrado de la tabla falla, la tabla nunca se crea y no se entrega ningún dato.

  • Faltan los permisos de registro: si la función de ejecución del servicio no se cumple logs:CreateLogStream y logs:PutLogEvents los errores de entrega no se registran en CloudWatch los registros, lo que puede hacer que un problema de permisos aparezca como un error silencioso. Compruebe primero los permisos de registro cuando no haya ningún registro.

  • No hay datos nuevos después de la creación: la entrega no rellena los datos existentes de la transmisión. Solo se entregan los registros escritos después de que la entrega esté ACTIVA.

Entrega suspendida

Una entrega entra en estado suspendido cuando el destino deja de estar disponible o es incompatible. Causas habituales:

  • Se eliminaron las tablas de streaming de la tabla de destino de Apache Iceberg.

  • El propietario del bucket de Amazon S3 no coincide con la cuenta esperada (no coincide la propiedad).

  • Se detectó una columna de partición incompatible en la tabla de destino.

No se puede reanudar una entrega suspendida. Debes crear un nuevo envío con una configuración de destino válida.

Errores de permiso denegado en CloudWatch los registros

AccessDeniedlos errores en los CloudWatch registros de la entrega indican un problema de permisos. Causas habituales:

  • La política de roles de IAM se modificó una vez creada la entrega.

  • La política de cubos de Amazon S3 se modificó para denegar el acceso del rol.

  • La política de confianza del rol no permite que el servicio Kinesis Data Streams lo asuma.

  • La política de AWS KMS claves niega el acceso de cifrado o descifrado a la función de la entrega.

Revisa y corrige la política correspondiente y, a continuación, verifica que se reanude la entrega.

La entrega no está disponible para mi transmisión

Las tablas de streaming y la entrega de Amazon S3 requieren que la transmisión de Kinesis Data Streams esté en modo de capacidad On-Demand Standard o On-Demand Advantage. Si su transmisión usa el modo aprovisionado, debe cambiarlo al On-Demand modo antes de poder crear una entrega.

La entrega se detiene después de un cambio de esquema

Las entregas no admiten la evolución del esquema. Si actualizas el AWS Glue esquema en Schema Registry después de crear una entrega, es posible que los registros generados con la nueva versión del esquema no se validen y pasen a la cola de mensajes sin procesar.

Para solucionarlo: anule el cambio de esquema en el productor o elimine la entrega existente y vuelva a crearla con el esquema actualizado.

No se puede eliminar una transmisión

Una DeleteStream solicitud falla ResourceInUseException cuando la transmisión tiene una o más entregas activas. No se puede eliminar una transmisión mientras las entregas estén adjuntas a ella.

Para solucionarlo, haz una lista de las entregas de la transmisión con ListChannels (mediante un filtro de transmisión), elimina cada entrega con yDeleteChannel, a continuación, elimina la transmisión.