Resolución de problemas comunes - AWS Data Pipeline

AWS Data Pipeline ya no está disponible para nuevos clientes. Los clientes actuales de AWS Data Pipeline pueden seguir utilizando el servicio con normalidad. Más información

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.

Resolución de problemas comunes

En este tema, se ofrecen diversos síntomas de los problemas de AWS Data Pipeline y los pasos recomendados para solucionarlos.

Canalización bloqueada en estado pendiente

Si una canalización aparece en el estado PENDING, indica que una canalización aún no se ha activado o la activación ha fallado debido a un error en su definición. Asegúrese de que no ha recibido ningún error al enviar la canalización mediante la CLI de AWS Data Pipeline o al intentar guardar o activar la canalización mediante la consola de AWS Data Pipeline. Además, compruebe que la canalización tiene una definición válida.

Para ver la definición de la canalización en la pantalla mediante la CLI:

aws datapipeline --get-pipeline-definition --pipeline-id df-EXAMPLE_PIPELINE_ID

Asegúrese de que la definición de la canalización está completa, compruebe las llaves de cierre, verifique las comas necesarias, compruebe si faltan referencias y si hay otros errores de sintaxis. Lo mejor es utilizar un editor de texto que permita validar visualmente la sintaxis de los archivos JSON.

Componente de la canalización bloqueado en el estado Waiting for Runner

Si la canalización se encuentra en el estado SCHEDULED y una o varias tareas aparecen atascadas en el estado WAITING_FOR_RUNNER, asegúrese de que ha establecido un valor válido en los campos runsOn o workerGroup para esas tareas. Si ambos valores están vacíos o no existen, la tarea no se puede iniciar, ya que no existe una asociación entre la tarea y un trabajador para llevar a cabo las tareas. En esta situación, se ha definido el trabajo, pero no se ha definido qué equipo realiza dicho trabajo. Si procede, compruebe que el valor de workerGroup asignado al componente de la canalización sea exactamente el mismo nombre, con las mismas mayúsculas y minúsculas, que el valor de workerGroup que ha configurado para Task Runner.

nota

Si proporciona un valor runsOn y workerGroup existe, se hace caso omiso de workerGroup.

Otra posible causa de este problema es que el punto de conexión y la clave de acceso proporcionados a Task Runner no sean los mismos que los de la consola de AWS Data Pipeline o el equipo en el que están instaladas las herramientas de la CLI de AWS Data Pipeline. Es posible que haya creado nuevas canalizaciones sin errores visibles, pero Task Runner sondea la posición errónea debido a la diferencia de credenciales o sondea la ubicación correcta con permisos insuficientes para identificar y ejecutar el trabajo especificado en la definición de la canalización.

Componente de la canalización bloqueado en el estado WAITING_ON_DEPENDENCIES

Si la canalización se encuentra en el estado SCHEDULED y una o varias tareas aparecen atascadas en el estado WAITING_ON_DEPENDENCIES, asegúrese de que se han cumplido las condiciones previas iniciales de la canalización. Si las condiciones previas del primer objeto de la cadena de lógica no se cumplen, ninguno de los objetos que dependen de ese primer objeto podrá salir del estado WAITING_ON_DEPENDENCIES.

Por ejemplo, tenga en cuenta el siguiente fragmento de una definición de canalización. En este caso, el objeto InputData tiene la condición previa 'Ready', que especifica que los datos deben existir antes de que el objeto InputData se haya completado. Si los datos no existen, el objeto InputData permanece en el estado WAITING_ON_DEPENDENCIES, esperando a que estén disponibles los datos especificados por el campo de la ruta. Los objetos que dependen de InputData también permanecen en un estado WAITING_ON_DEPENDENCIES esperando a que el objeto InputData alcance el estado FINISHED.

{ "id": "InputData", "type": "S3DataNode", "filePath": "s3://elasticmapreduce/samples/wordcount/wordSplitter.py", "schedule":{"ref":"MySchedule"}, "precondition": "Ready" }, { "id": "Ready", "type": "Exists" ...

Además, compruebe que los objetos tengan los permisos adecuados para acceder a los datos. En el ejemplo anterior, si la información del campo de las credenciales no tuviera permisos para acceder a los datos especificados en el campo de la ruta, el objeto InputData se bloquearía en el estado WAITING_ON_DEPENDENCIES, ya que no puede obtener acceso a los datos especificados por el campo de la ruta, aunque esos datos existan.

También es posible que un recurso que se comunica con Amazon S3 no tenga asociada una dirección IP pública. Por ejemplo, un Ec2Resource en una subred pública debe tener asociada una dirección IP pública.

Por último, en determinadas condiciones, las instancias de recursos pueden alcanzar el estado WAITING_ON_DEPENDENCIES mucho antes del inicio programado de sus actividades asociadas, lo que puede dar la impresión de que el recurso o la actividad fallan.

No se ejecuta cuando está programada

Compruebe que ha elegido el tipo de programación correcta que determina si su tarea comienza al principio del intervalo de programación (tipo de programación de estilo cron) o al final del intervalo de programación (tipo de programación de serie temporal).

Además, compruebe que ha especificado correctamente las fechas en los objetos de la programación y que los valores de endDateTime y startDateTime están en formato UTC, como en el siguiente ejemplo:

{ "id": "MySchedule", "startDateTime": "2012-11-12T19:30:00", "endDateTime":"2012-11-12T20:30:00", "period": "1 Hour", "type": "Schedule" },

Los componentes de la canalización se ejecutan en el orden incorrecto

Es posible que se haya dado cuenta de que las horas de inicio y finalización de la ejecución de los componentes de la canalización están en el orden incorrecto o en una secuencia que no es la esperada. Es importante entender que los componentes de la canalización pueden comenzar a ejecutarse simultáneamente si se cumplen las condiciones previas en el momento del arranque. En otras palabras, los componentes de canalización no se ejecutan de forma secuencial de forma predeterminada; si necesita una orden de ejecución específica, debe controlar el orden de ejecución con condiciones previas y campos dependsOn.

Compruebe que está utilizando el campo dependsOn que se ha rellenado con una referencia a los componentes de la canalización con los requisitos previos correctos y que todos los indicadores necesarios entre los componentes están presentes para lograr el orden que necesita.

El clúster de EMR falla con un error: el token de seguridad que se incluye en la solicitud no es válido

Verifique sus roles de IAM, políticas y relaciones de confianza, tal y como se describe en Roles de IAM para AWS Data Pipeline.

Permisos insuficientes para obtener acceso a los recursos

Los permisos que ha establecido en los roles de IAM determinan si puede tener acceso a los clústeres de EMR y las instancias EC2 para ejecutar sus canalizaciones. Además, IAM proporciona el concepto de las relaciones de confianza que van más allá para permitir la creación de recursos en su nombre. Por ejemplo, al crear una canalización que utiliza una instancia EC2 para ejecutar un comando para trasladar datos, AWS Data Pipeline puede aprovisionar esta instancia EC2 automáticamente. Si tiene problemas, en particular con recursos a los que usted puede tener acceso manualmente, pero no AWS Data Pipeline, verifique sus roles de IAM, políticas y relaciones de confianza, tal y como se describe en Roles de IAM para AWS Data Pipeline.

Status Code: 400 Error Code: PipelineNotFoundException

Este error significa que los roles predeterminados de IAM podrían no tener los permisos necesarios para que AWS Data Pipeline funcione correctamente. Para obtener más información, consulte Roles de IAM para AWS Data Pipeline.

La creación de una canalización produce un error del token de seguridad

Recibe el siguiente mensaje de error cuando intenta crear una canalización:

Failed to create pipeline with 'pipeline_name'. Error: UnrecognizedClientException - The security token included in the request is invalid.

No se pueden ver los detalles de la canalización en la consola

El filtro de la canalización de la consola de AWS Data Pipeline se aplica a la fecha de inicio programada de una canalización, sin tener en cuenta la hora a la que se envió la canalización. Es posible enviar una nueva canalización utilizando una fecha de inicio programada que está en el pasado, que es posible que no muestre el filtro de fecha predeterminado. Para ver los detalles de la canalización, cambie el filtro de fecha para asegurarse de que la fecha de inicio de la canalización programada se ajusta al filtro de intervalos de fechas.

Error in remote runner Status Code: 404, AWS Service: Amazon S3

Este error significa que Task Runner no ha podido tener acceso a los archivos en Amazon S3. Verifique lo siguiente:

  • Si se han establecido correctamente las credenciales.

  • Si el bucket de Amazon S3 al que está intentando acceder existe

  • Si está autorizado a acceder al bucket de Amazon S3

Acceso denegado: no está autorizado a realizar la función datapipeline:

En los registros de Task Runner, es posible que vea un error que es similar a lo siguiente:

  • ERROR Status Code: 403

  • AWS Service: DataPipeline

  • AWS Error Code: AccessDenied

  • Mensaje de error de AWS: User: arn:aws:sts::XXXXXXXXXXXX:federated-user/i-XXXXXXXX is not authorized to perform: datapipeline:PollForTask.

nota

En este mensaje de error, PollForTask podría sustituirse por nombres de otros permisos de AWS Data Pipeline.

Este mensaje de error indica que el rol de IAM especificado necesita permisos adicionales necesarios para interactuar con AWS Data Pipeline. Asegúrese de que la política de roles de IAM contiene las siguientes líneas, donde PollForTask se sustituye por el nombre del permiso que desea añadir (use * para conceder todos los permisos). Para obtener más información acerca de cómo crear un nuevo rol de IAM; y aplicarle una política, consulte la Administración de políticas de IAM en la guía de Uso de IAM.

{ "Action": [ "datapipeline:PollForTask" ], "Effect": "Allow", "Resource": ["*"] }

Las AMI de Amazon EMR más antiguas pueden crear datos falsos para archivos CSV de gran tamaño

En las AMI de Amazon EMR anteriores a la versión a 3.9 (3.8 y anteriores), AWS Data Pipeline utiliza un InputFormat personalizado para leer y escribir archivos CSV para su uso con trabajos de MapReduce. Esto se utiliza cuando el servicio utiliza tablas provisionales para enviar y recibir datos de Amazon S3. Se descubrió un problema con este InputFormat. Este problema consistía en que, al leer registros de archivos CSV de gran tamaño, se podían producir tablas que no se copiaban correctamente. Este problema se solucionó en las versiones de Amazon EMR posteriores. Utilice la AMI 3.9 de Amazon EMR o la versión 4.0.0 o superior de Amazon EMR.

Aumento de los límites de AWS Data Pipeline

Ocasionalmente, es posible que exceda los límites del sistema específicos de AWS Data Pipeline. Por ejemplo, el límite de canalización predeterminado es de 20 canalizaciones con 50 objetos en cada una de ellas. Si descubre que necesita más canalizaciones de las que marca el límite, considere la posibilidad de combinar varias canalizaciones para crear menos con más objetos en cada una de ellas. Para obtener más información sobre los límites de AWS Data Pipeline, consulte Límites de AWS Data Pipeline. Sin embargo, si no puede solucionar el problema de los límites utilizando la técnica de la combinación de canalizaciones, aumente su capacidad utilizando el siguiente formulario: Data Pipeline Limit Increase.