ShellCommandActivity - AWS Data Pipeline

ShellCommandActivity

Ejecuta un comando o script. Puede usar ShellCommandActivity para ejecutar tareas programadas de serie temporal o similar a Cron.

Cuando el campo stage se establece en true (verdadero) y se utiliza con un S3DataNode, ShellCommandActivity admite el concepto de datos transitorios, lo que significa que puede mover datos de Amazon S3 a una ubicación de uso transitorio, como Amazon EC2 o su entorno local, trabajar en los datos mediante scripts y ShellCommandActivity, y volver a llevarlos a Amazon S3.

En este caso, cuando su comando de shell está conectado a un nodo S3DataNode de entrada, sus scripts de shell operan directamente en los datos mediante ${INPUT1_STAGING_DIR}, ${INPUT2_STAGING_DIR} y otros campos, que hacen referencia a los campos de entrada ShellCommandActivity.

De forma similar, la salida del comando de shell se puede almacenar de modo transitorio en un directorio de salida que se va a insertar automáticamente en Amazon S3, al que hacen referencia ${OUTPUT1_STAGING_DIR}, ${OUTPUT2_STAGING_DIR}, etc.

Estas expresiones pueden pasar como argumentos de línea de comandos al comando de shell para su uso en la lógica de transformación de datos.

ShellCommandActivity devuelve cadenas y códigos de error estilo Linux. Si ShellCommandActivity genera un error, el error devuelto es un valor distinto de cero.

Ejemplo

A continuación se muestra un ejemplo de este tipo de objeto.

{ "id" : "CreateDirectory", "type" : "ShellCommandActivity", "command" : "mkdir new-directory" }

Sintaxis

Campos de invocación de objetos Descripción Tipo de slot
schedule

Este objeto se invoca dentro de la ejecución de un intervalo de schedule.

Para establecer el orden de ejecución de dependencia de este objeto, especifique una referencia schedule a otro objeto.

Para cumplir este requisito, establezca de forma explícita un schedule en el objeto, por ejemplo, especificando "schedule": {"ref": "DefaultSchedule"}.

En la mayoría de los casos, es mejor poner la referencia de schedule en el objeto de la canalización predeterminado de modo que todos los objetos hereden ese programa. Si la canalización consta un árbol de programas (programas dentro del programa maestro), cree un objeto principal que tenga una referencia de programa.

Para distribuir la carga, AWS Data Pipeline crea los objetos físicos ligeramente antes del programa, pero los ejecuta en el programa.

Para obtener más información acerca de las configuraciones de programación opcionales de ejemplo, consulte https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html

Objeto de referencia, por ejemplo, "schedule":{"ref":"myScheduleId"}

Grupo obligatorio (se requiere uno de los siguientes) Descripción Tipo de slot
comando El comando que se va a ejecutar. Utilice $ para hacer referencia a parámetros posicionales y scriptArgument para especificar los parámetros para el comando. Este valor y cualquier parámetro asociado debe funcionar en el entorno desde el que se está ejecutando Task Runner. Cadena
scriptUri Una ruta del URI de Amazon S3 para que se descargue un archivo y se ejecute como comando de shell. Especifique solo un campo scriptUri o command. scriptUri no puede utilizar parámetros; utilice command en su lugar. Cadena

Grupo obligatorio (se requiere uno de los siguientes) Descripción Tipo de slot
runsOn Los recursos informáticos para ejecutar la actividad o el comando, por ejemplo, una instancia Amazon EC2 o un clúster de Amazon EMR. Objeto de referencia, por ejemplo, "runsOn":{"ref":"myResourceId"}
workerGroup Utilizado para dirigir tareas. Si proporciona un valor runsOn y existe workerGroup, workerGroup se ignora. Cadena

Campos opcionales Descripción Tipo de slot
attemptStatus El estado más reciente notificado por la actividad remota. Cadena
attemptTimeout El tiempo de espera para que se complete el trabajo remoto. Si se establece, se puede reintentar una actividad remota que no se complete dentro del tiempo de inicio especificado. Período
dependsOn Especifica una dependencia de otro objeto ejecutable. Objeto de referencia, por ejemplo, "dependsOn":{"ref":"myActivityId"}
failureAndRerunMode failureAndRerunMode. Enumeración
input La ubicación de los datos de entrada. Objeto de referencia, por ejemplo, "input":{"ref":"myDataNodeId"}
lateAfterTimeout El tiempo transcurrido desde el inicio de la canalización dentro del cual el objeto debe completarse. Solo se activa cuando el tipo de programación no está establecido en ondemand. Período
maxActiveInstances El número máximo de instancias activas simultáneas de un componente. Las nuevas ejecuciones no cuentan para el número de instancias activas. Entero
maximumRetries El número máximo de intentos en caso de error. Entero
onFail Acción que se debe ejecutar cuando el objeto actual produzca un error. Objeto de referencia, por ejemplo, "onFail":{"ref":"myActionId"}
onLateAction Acciones que deben iniciarse si un objeto no se ha programado o no se ha completado. Objeto de referencia, por ejemplo, "onLateAction":{"ref":"myActionId"}
onSuccess Acción que se debe ejecutar cuando el objeto actual se complete correctamente. Objeto de referencia, por ejemplo, "onSuccess":{"ref":"myActionId"}
salida La ubicación de los datos de salida. Objeto de referencia, por ejemplo, "output":{"ref":"myDataNodeId"}
parent El elemento principal del objeto actual del que se heredarán los slots. Objeto de referencia, por ejemplo, "parent":{"ref":"myBaseObjectId"}
pipelineLogUri El URI de Amazon S3, como 's3://BucketName/Key/' para cargar registros para la canalización. Cadena
precondition Opcionalmente define una condición previa. Un nodo de datos no se marca como "READY" hasta que se han cumplido todas las condiciones previas. Objeto de referencia, por ejemplo, "precondition":{"ref":"myPreconditionId"}
reportProgressTimeout El tiempo de espera para llamadas sucesivas a reportProgress por parte de actividades remotas. Si se establece, las actividades remotas que no informen de su progreso durante el período especificado pueden considerarse estancadas y reintentarse. Período
retryDelay Duración del tiempo de espera entre dos reintentos. Período
scheduleType

Le permite especificar si los objetos de la definición de la canalización deben programarse al principio del intervalo o al final de este.

Los valores posibles son: cron, ondemand y timeseries.

Si se establece en timeseries, las instancias se programan al final de cada intervalo.

Si se establece en Cron, las instancias se programan al inicio de cada intervalo.

Si se establece en ondemand, puede ejecutar una canalización una vez por activación. Esto significa que no tiene que clonar o recrear la canalización para ejecutarla de nuevo. Si usa un programa ondemand, especifíquelo en el objeto predeterminado como scheduleType único para los objetos de la canalización. Para usar canalizaciones ondemand, solo tiene que llamar a la operación ActivatePipeline para cada ejecución posterior.

Enumeración
scriptArgument Una serie de cadenas con formato JSON que se pasan al comando especificado por el comando. Por ejemplo, si el comando es echo $1 $2, especifique scriptArgument como "param1", "param2". Para varios argumentos y parámetros, pase el scriptArgument del siguiente modo: "scriptArgument":"arg1","scriptArgument":"param1","scriptArgument":"arg2","scriptArgument":"param2". El scriptArgument solo se puede utilizar con command; si se utiliza con scriptUri produce un error. Cadena
stage Determina si está habilitado el espacio transitorio y permite que los comandos de shell tengan acceso a las variables de datos en el espacio transitorio, como ${INPUT1_STAGING_DIR} y ${OUTPUT1_STAGING_DIR}. Booleano
stderr La ruta que recibe los mensajes de error del sistema redirigidos desde el comando. Si utiliza el campo runsOn, esta debe ser una ruta de Amazon S3 debido a la naturaleza transitoria del recurso que ejecuta su actividad. No obstante, si especifica el campo workerGroup, se permite una ruta de archivo local. Cadena
stdout La ruta de Amazon S3 que recibe la salida redirigida del comando. Si utiliza el campo runsOn, esta debe ser una ruta de Amazon S3 debido a la naturaleza transitoria del recurso que ejecuta su actividad. No obstante, si especifica el campo workerGroup, se permite una ruta de archivo local. Cadena

Campos de tiempo de ejecución Descripción Tipo de slot
@activeInstances La lista de los objetos de instancias activas programados actualmente. Objeto de referencia, por ejemplo, "activeInstances":{"ref":"myRunnableObjectId"}
@actualEndTime La hora a la que finalizó la ejecución de este objeto. DateTime
@actualStartTime La hora a la que comenzó la ejecución de este objeto. DateTime
cancellationReason El cancellationReason de este objeto se ha cancelado. Cadena
@cascadeFailedOn La descripción de la cadena de dependencias que provocó el error del objeto. Objeto de referencia, por ejemplo, "cascadeFailedOn":{"ref":"myRunnableObjectId"}
emrStepLog Registros de pasos de Amazon EMR disponibles únicamente sobre intentos de actividad de Amazon EMR. Cadena
errorId El errorId si este objeto ha fallado. Cadena
errorMessage El errorMessage si este objeto ha fallado. Cadena
errorStackTrace El seguimiento de la pila de error si este objeto ha fallado. Cadena
@finishedTime La hora a la que el objeto finalizó su ejecución. DateTime
hadoopJobLog Los registros de trabajo de Hadoop disponibles sobre intentos de actividades basadas en Amazon EMR. Cadena
@healthStatus El estado de salud del objeto que refleja el éxito o el fracaso de la última instancia de objeto que alcanzó un estado terminado. Cadena
@healthStatusFromInstanceId El ID del último objeto de instancia que alcanzó un estado terminado. Cadena
@healthStatusUpdatedTime La hora a la que el estado de salud se actualizó la última vez. DateTime
hostname El nombre de host del cliente que recogió el intento de tarea. Cadena
@lastDeactivatedTime La hora a la que este objeto se desactivó la última vez. DateTime
@latestCompletedRunTime La hora de la última ejecución para la que se completó la ejecución. DateTime
@latestRunTime La hora de la última ejecución para la que se programó la ejecución. DateTime
@nextRunTime La hora de la ejecución que se va a programar a continuación. DateTime
reportProgressTime La hora más reciente a la que la actividad remota notificó algún progreso. DateTime
@scheduledEndTime La hora de finalización programada para el objeto. DateTime
@scheduledStartTime La hora de comienzo programada para el objeto. DateTime
@status El estado del objeto. Cadena
@version La versión de AWS Data Pipeline utilizada para crear el objeto. Cadena
@waitingOn La descripción de la lista de dependencias para la que este objeto está a la espera. Objeto de referencia, por ejemplo, "waitingOn":{"ref":"myRunnableObjectId"}

Campos del sistema Descripción Tipo de slot
@error El error al describir el objeto mal estructurado. Cadena
@pipelineId El ID de la canalización a la que pertenece este objeto. Cadena
@sphere El lugar de un objeto en el ciclo de vida. Los objetos de componente dan lugar a objetos de instancia, que ejecutan objetos de intento. Cadena

Véase también