Noções básicas sobre status de comando
O Run Command, um recurso do AWS Systems Manager, relata informações detalhadas de status sobre os estados diferentes pelos quais um comando passa durante o processamento e para cada nó gerenciado que processou o comando. Você pode monitorar o status de comandos usando os seguintes métodos:
-
Escolha o ícone Refresh (Atualizar) na guia Commands (Comandos) na interface do console Run Command.
-
Chame list-commands ou list-command-invocations usando a AWS Command Line Interface (AWS CLI) Ou chame Get-SSMCommand ou Get-SSMCommandInvocation usando o AWS Tools for Windows PowerShell.
-
Configure o Amazon EventBridge para responder a alterações de estado ou status.
-
Configure o Amazon Simple Notification Service (Amazon SNS) para enviar notificações para todas as alterações de status ou para status específicos, como
Failed
ouTimedOut
.
Status do Run Command
O Run Command relata detalhes de status para três áreas: plug-ins, invocações e um status de comando geral. Um plugin é um bloco de execução de código definido no documento do SSM do comando. Para obter mais informações sobre plug-ins, consulte Referência de plug-ins de documentos de comando.
Quando você envia um comando para vários nós gerenciados ao mesmo tempo, cada cópia do comando que é dirigida a cada nó é uma invocação de comando. Por exemplo, se você usar o documento AWS-RunShellScript
e enviar um comando ifconfig
para 20 instâncias Linux, esse comando terá 20 invocações. Cada invocação de comando comunica individualmente o status. Os plug-ins para uma determinada invocação de comando também comunicam individualmente o status.
Por fim, o Run Command inclui um status de comando agregado para todos os plug-ins e invocações. O status do comando agregado pode ser diferente do status relatado por plug-ins ou invocações, conforme observado nas tabelas a seguir.
nota
Se você executar comandos para vários nós gerenciados usando os parâmetros max-concurrency
ou max-errors
, o status do comando refletirá os limites impostos por esses parâmetros, conforme descrito nas tabelas a seguir. Para mais informações sobre esses parâmetros, consulte Execução de comandos em escala.
Status detalhado para plug-ins de comandos e invocações | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status | Detalhes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pendente | O comando ainda não foi enviado para o nó gerenciado ou não foi recebido pelo SSM Agent. Se o comando não for recebido pelo agente antes do período de tempo que igual à soma dos parâmetros Timeout (seconds) (Tempo limite (segundos) e Execution timeout (Tempo limite de execução), o status será alterado para Delivery Timed Out . |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InProgress | O Systems Manager está tentando enviar o comando para o nó gerenciado ou o comando foi recebido pelo SSM Agent e começou a ser executado na instância. Dependendo do resultado de todos os plugins de comando, o status mudará para Success , Failed Delivery
Timed Out ou Execution Timed Out . Exceção: se o agente não estiver em execução ou disponível em um nó, o status do comando permanecerá em In
Progress até que o agente esteja disponível novamente ou até que o limite de runtime seja atingido. O status mudará para um estado terminal. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Atrasado | O sistema tentou enviar o comando para o nó gerenciado, mas não foi bem-sucedido. O sistema tenta novamente. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bem-sucedida | Este status é retornado sob várias condições. Esse status não significa que o comando foi processado nesse nó. Por exemplo, o comando pode ser recebido pelo SSM Agent no nó gerenciado e retornar um código de saída zero porque o PowerShell ExecutionPolicy impediu a execução do comando. Este é um estado terminal. As condições que resultam em um comando retornando um status Success são:
notaAs mesmas condições se aplicam ao segmentar grupos de recursos. Para solucionar erros ou obter mais informações sobre a execução de comandos, envie um comando que manipule erros ou exceções retornando códigos de saída apropriados (códigos de saída diferentes de zero para falhas de comando). |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeliveryTimedOut | O comando não foi entregue ao nó gerenciado antes do tempo limite total expirado. Os tempos limite totais não contam para o limite de max-errors do comando pai, mas contribuem para determinar se o status do comando pai é Success , Incomplete ou Delivery Timed Out . Este é um estado terminal. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ExecutionTimedOut | A automação do comando foi iniciada no nó gerenciado, mas o comando não foi concluído antes do tempo limite de execução expirar. Os tempos limite de execução contam como uma falha, que enviará uma resposta diferente de zero e o Systems Manager encerrará a tentativa de executar a automação de comando e relatará um status de falha. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Failed (Falha) | O comando não foi bem-sucedido em seu nó gerenciado. Para um plugin, isso indica que o código do resultado não foi zero. Para uma invocação de comando, isso indica que o código de resultado para um ou mais plug-ins não foi zero. Falhas de invocação contam para o limite max-errors do comando pai. Este é um estado terminal. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Cancelado | O comando foi cancelado antes de ser concluído. Este é um estado terminal. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Não é possível entregar | O comando não pode ser entregue ao nó gerenciado. O nó pode não existir ou pode não estar respondendo. Invocações não entregues não contam para o limite de max-errors do comando pai, mas não contribuem para determinar se o status do comando pai é Success ou Incomplete . Por exemplo, se todas as invocações em um comando tiverem o status Undeliverable , o status do comando retornado será Failed . No entanto, se um comando tiver cinco invocações, quatro das quais retornarem o status Undeliverable e uma retornar o status Success , o status do comando pai será Success . Este é um estado terminal. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Terminated (Encerrado) | O comando pai excedeu o limite de max-errors e as invocações de comando subsequentes foram canceladas pelo sistema. Este é um estado terminal. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InvalidPlatform | O comando foi enviado a um nó gerenciado que não correspondeu às plataformas necessárias especificadas pelo documento escolhido. O Invalid
Platform não é considerado para o limite máximo de erros do comando pai, mas contribui para determinar se o status do comando pai é Success (Êxito) ou Failed (Falha). Por exemplo, se todas as invocações em um comando tiverem o status Invalid Platform , o status do comando retornado será Failed . No entanto, se um comando tiver cinco invocações, quatro das quais retornarem o status Invalid Platform e uma retornar o status Success , o status do comando pai será Success . Este é um estado terminal. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AccessDenied | O usuário ou a função do AWS Identity and Access Management (IAM) que inicia o comando não tem acesso ao nó gerenciado de destino. O Access Denied não é considerado no limite max-errors do comando pai, mas contribuirá se o status do comando pai for Success ou Failed . Por exemplo, se todas as invocações em um comando tiverem o status Access Denied , o status do comando retornado será Failed . No entanto, se um comando tiver cinco invocações, quatro das quais retornarem o status Access Denied e uma retornar o status Success , o status do comando pai será Success . Este é um estado terminal. |
Status detalhado de um comando | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status | Detalhes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pendente | O comando ainda não foi recebido por um agente em um nó gerenciado. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InProgress | O comando foi enviado para pelo menos um nó gerenciado, mas não chegou a um estado final em todos os nós. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Atrasado | O sistema tentou enviar o comando para o nó, mas não foi bem-sucedido. O sistema tenta novamente. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bem-sucedida | O comando foi recebido pelo SSM Agent em todos nós gerenciados especificados ou definidos como destino e retornou um código de saída igual a zero. Todas as invocações de comando atingiram um estado terminal e o valor de max-errors não foi alcançado. Esse status não significa que o comando foi processado com sucesso em todos os nós gerenciados especificados ou de destino. Este é um estado terminal. notaPara solucionar erros ou obter mais informações sobre a execução de comandos, envie um comando que manipule erros ou exceções retornando códigos de saída apropriados (códigos de saída diferentes de zero para falhas de comando). |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeliveryTimedOut | O comando não foi entregue ao nó gerenciado antes do tempo limite total expirado. O valor de max-errors ou mais invocações de comandos mostram um status de Delivery Timed
Out . Este é um estado terminal. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Failed (Falha) |
O comando não foi bem-sucedido em seu nó gerenciado. O valor de |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Incompleto | O comando foi tentado em todos os nós gerenciados, e uma ou mais das invocações não tem um valor de Success . No entanto, não houve um número suficiente de invocações com falha para que o status fosse Failed . Este é um estado terminal. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Cancelado | O comando foi cancelado antes de ser concluído. Este é um estado terminal. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RateExceeded | O número de nós gerenciados visados pelo comando excedeu o limite da conta para invocações pendentes. O sistema cancelou o comando antes de executá-lo em qualquer nó. Este é um estado terminal. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AccessDenied | O usuário ou o perfil que inicia o comando não tem acesso ao grupo de recursos de destino. O AccessDenied não é contabilizado em relação ao limite max-errors do comando pai, mas contribuirá se o status do comando pai for Success ou Failed . (Por exemplo, se todas as invocações em um comando tiverem o status AccessDenied , então o status do comando retornado será Failed . No entanto, se um comando tiver cinco invocações, quatro das quais retornarem o status AccessDenied e uma retornou o status Success , então o status do comando pai será Success .) Este é um estado terminal. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Nenhuma instância na tag | O valor do par de chaves da etiqueta ou o grupo de recursos visado pelo comando não corresponde a nenhum nó gerenciado. Este é um estado terminal. |
Noções básicas sobre valores de tempo limite de comandos
O Systems Manager impõe os seguintes valores de tempo limite ao executar comandos.
Tempo limite total
No console do Systems Manager, especifique o valor do tempo limite de entrega no campo Timeout (seconds) (Tempo limite [segundos]). Depois que um comando é enviado, o Run Command verifica se o comando expirou ou não. Se um comando atingir o limite de expiração do comando (tempo limite total), ele altera o status paraDeliveryTimedOut
para todas as invocações que têm o statusInProgress
,Pending
ouDelayed
.
Em um nível mais técnico, o Timeout (seconds) (Tempo limite [segundos]) total é uma combinação de dois valores de tempo limite, como mostrado aqui:
Total timeout = "Timeout(seconds)" from the console + "timeoutSeconds": "{{
executionTimeout }}" from your SSM document
Por exemplo, o valor padrão de Timeout (seconds) (Tempo limite em segundos) no console do Systems Manager é de 600 segundos. Se você executar um comando usando o comandoAWS-RunShellScript
Documento do SSM, o valor padrão de“TimeoutSeconds”: “{{executionTimeout}}”é 3600 segundos, como mostrado na seguinte amostra de documento:
"executionTimeout": { "type": "String", "default": "3600", "runtimeConfig": { "aws:runShellScript": { "properties": [ { "timeoutSeconds": "{{ executionTimeout }}"
Isso significa que o comando é executado por 4.200 segundos (70 minutos) antes que o sistema defina o status do comando como DeliveryTimedOut
.
Tempo limite de execução
No console do Systems Manager, especifique o valor do tempo limite de execução no campo Execution Timeout (Tempo limite de execução), se disponível. Nem todos os documentos do SSM exigem especificar um tempo limite de execução. O campo Execution Timeout (Tempo limite de execução) é exibido somente quando um parâmetro de entrada correspondente foi definido no documento SSM. Se especificado, o comando deve ser concluído dentro desse período.
nota
O Run Command depende da resposta do terminal SSM Agent para determinar se o comando foi entregue ou não ao agente. O SSM Agent deve enviar um sinal do ExecutionTimedOut
para uma invocação ou comando a ser marcado como ExecutionTimedOut
.
Tempo limite de execução padrão
Se um documento do SSM do não exigir especificar explicitamente um valor de tempo limite de execução, o Systems Manager vai impor o tempo limite de execução padrão codificado.
Como o Systems Manager relata os tempos limite
Se o Systems Manager receber uma resposta execution timeout
do SSM Agent em um destino, o Systems Manager marcará a invocação do comando como executionTimeout
.
SeRun Commandnão recebe uma resposta de terminal de documento deSSM Agent, a invocação do comando é marcada comodeliveryTimeout
.
Para determinar o status de tempo limite em um destino, o SSM Agent combina todos os parâmetros e o conteúdo do documento do SSM para o qual será calculado executionTimeout
. Quando o SSM Agent determinar que um comando expirou, ele enviará executionTimeout
para o serviço.
O padrão paraTempo limite (segundos)é de 3600 segundos. O padrão paraTempo limite de execuçãotambém é 3600 segundos. Portanto, o tempo limite padrão total para um comando é 7200 segundos.
nota
O SSM Agent processa executionTimeout
de forma diferente dependendo do tipo de documento do SSM e da versão do documento.