Descripción de los estados del comando - AWS Systems Manager

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.

Descripción de los estados del comando

Run Command, una capacidad de AWS Systems Manager, brinda información detallada sobre los diferentes estados que experimenta un comando durante el procesamiento y para cada nodo administrado que procesó el comando. Puede monitorear los estados del comando con los siguientes métodos:

  • Seleccione el icono Refresh (actualizar) en la pestaña Commands (comandos) de la interfaz de la consola de Run Command.

  • Llame a list-commands o list-command-invocations con la AWS Command Line Interface (AWS CLI). O llame a Get-SSMCommand o Get-SSMCommandInvocation con AWS Tools for Windows PowerShell.

  • Configure Amazon EventBridge para que responda a los cambios de estado.

  • Configure Amazon Simple Notification Service (Amazon SNS) para enviar notificaciones de todos los cambios de estado o de estados específicos, como Failed o TimedOut.

Estado de Run Command

Run Command notifica los detalles de estado de tres áreas: complementos, invocaciones y un estado general del comando. Un complemento es un bloque de ejecución de códigos definido en el documento de SSM del comando. Para obtener más información acerca de los complementos, consulte Referencia de complementos del documento de comandos.

Al enviar un comando para varios nodos administrados al mismo tiempo, cada copia del comando dirigida a cada nodo es una invocación de comandos. Por ejemplo, si utiliza el documento AWS-RunShellScript y envía un comando ifconfig a 20 instancias de Linux, dicho comando tendrá 20 invocaciones. Cada invocación de comandos notifica el estado individualmente. Los complementos para una invocación de comandos determinada también notifican el estado de forma individual.

Por último, Run Command contiene un estado agregado del comando para todos los complementos y las invocaciones. El estado agregado del comando puede ser diferente del estado notificado por los complementos o las invocaciones, como se describe en las siguientes tablas.

nota

Si ejecuta comandos para un gran número de nodos administrados utilizando los parámetros max-concurrency o max-errors, el estado del comando refleja las limitaciones impuestas por esos parámetros, tal y como se describe en las siguientes tablas. Para obtener más información sobre estos parámetros, consulte Ejecución de comandos a escala.

Estado detallado de los complementos y las invocaciones de comandos
Estado Detalles
Pendiente El comando aún no se ha enviado al nodo administrado o no ha sido recibido por el SSM Agent. Si el agente no recibe el comando antes de que pase el tiempo que es igual a la suma del parámetro Timeout (seconds) (Tiempo de espera [en segundos]) y del parámetro Execution timeout (Tiempo de espera de ejecución), el estado cambia a Delivery Timed Out.
InProgress Systems Manager está intentando enviar el comando al nodo administrado, o el comando fue recibido por SSM Agent y ha comenzado a ejecutarse en la instancia. En función del resultado de todos los complementos del comando, el estado cambiará a Success, Failed, Delivery Timed Out o Execution Timed Out. Excepción: si el agente no está en ejecución o no está disponible en el nodo, el estado del comando permanece en In Progress hasta que el agente está disponible de nuevo o hasta que se alcanza el límite de tiempo de espera de ejecución. A continuación, el estado cambiará a un estado terminal.
Delayed El sistema intentó enviar el comando al nodo administrado, pero no se envió correctamente. El sistema volverá a intentarlo.
Correcto El comando llegó al SSM Agent del nodo administrado y devolvió el código de salida cero. Este estado no significa que el comando se procesó en el nodo. Se trata de un estado terminal.
nota

Para solucionar los problemas con los errores u obtener más información acerca de la ejecución del comando, envíe un comando que administre los errores o las excepciones devolviendo códigos de salida adecuados (códigos de salida que no sean cero para los errores del comando).

DeliveryTimedOut El comando no se entregó al nodo administrado antes de que se agotara el tiempo de espera total. Los tiempos de espera totales no cuentan para el límite de max-errors del comando principal, pero sí contribuyen a que el estado del comando principal sea Success, Incomplete o Delivery Timed Out. Se trata de un estado terminal.
ExecutionTimedOut La automatización de comandos se inició en el nodo administrado, pero el comando no se completó antes de que se agotara el tiempo de espera de la ejecución. Agotar los tiempos de espera de las ejecuciones cuenta como un error, que enviará una respuesta distinta de cero, y Systems Manager dejará de intentar ejecutar la automatización de comandos e informará de un estado de error.
Con error El comando no se ejecutó correctamente en el nodo administrado. Para un complemento, esto indica que el código de resultado no era cero. Para una invocación de comando, esto indica que el código de resultado de uno o más complementos no era cero. Los errores de invocación cuentan para el max-errors límite del comando principal. Se trata de un estado terminal.
Cancelled El comando se canceló antes de completarse. Se trata de un estado terminal.
Undeliverable El comando no se puede entregar al nodo administrado. Puede que no exista el nodo o que no responda. Las invocaciones no disponibles para entrega no cuentan para el límite de max-errors del comando principal, pero sí contribuyen a que el estado del comando principal sea Success o Incomplete. Por ejemplo, si todas las invocaciones de un comando tienen el estado Undeliverable, el estado del comando que se devuelve es Failed. Sin embargo, si un comando tiene cinco invocaciones, cuatro de las cuales devuelven el estado Undeliverable y una devuelve el estado Success, el estado del comando principal será Success. Se trata de un estado terminal.
Terminated El comando principal supera su max-errors límite y el sistema ha cancelado las posteriores invocaciones de comandos. Se trata de un estado terminal.
InvalidPlatform El comando se envió a un nodo administrado que no coincidía con las plataformas necesarias especificadas por el documento seleccionado. Invalid Platform no cuenta para el límite de máximo de errores del comando principal, pero sí contribuye a que el estado del comando principal sea Success (Correcto) o Failed (Fallido). Por ejemplo, si todas las invocaciones de un comando tienen el estado Invalid Platform, el estado del comando que se devuelve es Failed. Sin embargo, si un comando tiene cinco invocaciones, cuatro de las cuales devuelven el estado Invalid Platform y una devuelve el estado Success, el estado del comando principal será Success. Se trata de un estado terminal.
AccessDenied El usuario o el rol de AWS Identity and Access Management (IAM) que inicia el comando no tiene acceso al nodo administrado de destino. Access Denied no cuenta para el límite de max-errors del comando principal, pero sí contribuye a que el estado del comando principal sea Success o Failed. Por ejemplo, si todas las invocaciones de un comando tienen el estado Access Denied, el estado del comando que se devuelve es Failed. Sin embargo, si un comando tiene cinco invocaciones, cuatro de las cuales devuelven el estado Access Denied y una devuelve el estado Success, el estado del comando principal será Success. Se trata de un estado terminal.
Estado detallado de un comando
Estado Detalles
Pendiente Los agentes de los nodos administrados todavía no reciben el comando.
InProgress El comando se ha enviado al menos a un nodo administrado, pero no ha alcanzado un estado definitivo en ninguno de los nodos.
Delayed El sistema intentó enviar el comando al nodo, pero no se envió correctamente. El sistema volverá a intentarlo.
Correcto El comando llegó al SSM Agent de todos los nodos administrados especificados o de destino y devolvió el código de salida cero. Todas las invocaciones de comandos han alcanzado un estado terminal y no se alcanzó el valor de max-errors. Este estado no significa que el comando se haya procesado correctamente en todos los nodos administrados especificados o de destino. Se trata de un estado terminal.
nota

Para solucionar los problemas con los errores u obtener más información acerca de la ejecución del comando, envíe un comando que administre los errores o las excepciones devolviendo códigos de salida adecuados (códigos de salida que no sean cero para los errores del comando).

DeliveryTimedOut El comando no se entregó al nodo administrado antes de que se agotara el tiempo de espera total. El valor de max-errors o más invocaciones de comandos muestra el estado Delivery Timed Out. Se trata de un estado terminal.
Con error

El comando no se ejecutó correctamente en el nodo administrado. El valor de max-errors o más invocaciones de comandos muestra el estado Failed. Se trata de un estado terminal.

Incomplete El comando se intentó en todos los nodos administrados y una o más de las invocaciones no tiene el valor Success. Sin embargo, no se ha producido error en suficientes invocaciones para que el estado sea Failed. Se trata de un estado terminal.
Cancelled El comando se canceló antes de completarse. Se trata de un estado terminal.
RateExceeded El número de nodos administrados de destino del comando ha superado la cuota de cuenta para las invocaciones pendientes. El sistema ha cancelado el comando antes de ejecutarlo en ningún nodo. Se trata de un estado terminal.
AccessDenied El usuario o el rol que inicia el comando no tiene acceso al grupo de recursos de destino. AccessDenied no cuenta para el límite de max-errors del comando principal, pero sí contribuye a que el estado del comando principal sea Success o Failed. (Por ejemplo, si todas las invocaciones de un comando tienen el estado AccessDenied, entonces el estado del comando que se devuelve es Failed. Sin embargo, si un comando tiene 5 invocaciones, 4 de las cuales devuelven el estado AccessDenied y 1 devuelve el estado Success, entonces el estado del comando principal será Success). Se trata de un estado terminal.
No hay instancias en la etiqueta El grupo de recursos o el valor del par de claves de etiqueta seleccionado por el comando no coincide con ningún nodo administrado. Se trata de un estado terminal.

Descripción de los valores de tiempo de espera de los comandos

Systems Manager aplica los siguientes valores de tiempo de espera cuando ejecuta comandos.

Tiempo de espera total

En la consola de Systems Manager, especifique el valor del tiempo de espera en el campo Timeout (seconds) (Tiempo de espera [segundos]). Después de enviar un comando, Run Command verifica si el comando ha vencido o no. Si un comando alcanza el límite de vencimiento del comando (tiempo de espera total), cambia su estado a DeliveryTimedOut para todas las invocaciones que tienen el estado InProgress, Pending o Delayed.


                    Campo Timeout (seconds) (Tiempo de espera [en segundos]) de la consola de Systems Manager

En un nivel más técnico, el tiempo de espera total —Timeout (seconds) (Tiempo de espera [segundos])— es una combinación de dos valores de tiempo de espera, como se muestra aquí:

Total timeout = "Timeout(seconds)" from the console + "timeoutSeconds": "{{ executionTimeout }}" from your SSM document

Por ejemplo, el valor predeterminado de Timeout (seconds) (Tiempo de espera [en segundos]) en la consola de Systems Manager es de 600 segundos. Si ejecuta un comando mediante el documento AWS-RunShellScript de SSM, el valor predeterminado de "timeoutSeconds": "{{ executionTimeout }}" es de 3600 segundos, como se muestra en el siguiente ejemplo de documento:

"executionTimeout": { "type": "String", "default": "3600", "runtimeConfig": { "aws:runShellScript": { "properties": [ { "timeoutSeconds": "{{ executionTimeout }}"

Esto significa que el comando se ejecuta durante 4200 segundos (70 minutos) antes de que el sistema establezca el estado del comando como DeliveryTimedOut.

Execution Timeout (Tiempo de espera hasta ejecución)

En la consola de Systems Manager, especifique el valor del tiempo de espera de la ejecución en el campo Execution Timeout (Tiempo de espera de ejecución), si está disponible. No todos los documentos de SSM requieren que especifique un tiempo de espera de ejecución. El campo Execution Timeout (Tiempo de espera hasta ejecución) solo se muestra cuando se ha definido un parámetro de entrada correspondiente en el documento de SSM. Si se especifica, el comando debe completarse dentro de este período de tiempo.

nota

Run Command se basa en la respuesta terminal del documento del SSM Agent para determinar si el comando se entregó al agente o no. SSM Agent debe enviar una señal de ExecutionTimedOut para que una invocación o un comando se marquen como ExecutionTimedOut.


                    Campo Execution Timeout (Tiempo de espera de ejecución) de la consola de Systems Manager
Tiempo de espera de ejecución predeterminado

Si un documento de SSM no requiere que especifique explícitamente un valor de tiempo de espera de ejecución, entonces Systems Manager aplica el tiempo de espera de ejecución de codificación rígida predeterminado.

Cómo informa Systems Manager los tiempos de espera

Si Systems Manager recibe una respuesta de execution timeout del SSM Agent de un destino, Systems Manager marca la invocación del comando como executionTimeout.

Si Run Command no recibe una respuesta de terminal del documento de SSM Agent, la invocación del comando se marca como deliveryTimeout.

Para determinar el estado del tiempo de espera en un destino, SSM Agent combina todos los parámetros y el contenido del documento de SSM para calcular el executionTimeout. Cuando SSM Agent determina que se ha agotado el tiempo de espera para un comando, se envía executionTimeout al servicio.

El valor predeterminado de Timeout (seconds) (Tiempo de espera [en segundos]) es de 3600 segundos. El valor predeterminado de Execution Timeout (Tiempo de espera de ejecución) también es de 3600 segundos. Por lo tanto, el tiempo de espera predeterminado total de un comando es de 7200 segundos.

nota

SSM Agent procesa el executionTimeout de manera diferente según el tipo de documento de SSM y la versión de este último.