Executa um comando de shell, PowerShell ou batch em instâncias do Elastic Compute Service (ECS).
Observações de uso
Diferentemente das operações CreateCommand e InvokeCommand, a operação RunCommand permite criar e executar um comando em uma única solicitação.
Observe os seguintes pontos:
As instâncias onde você deseja executar o comando devem estar no estado Running. Chame a operação DescribeInstances para consultar o status das instâncias.
O Cloud Assistant Agent deve estar pré-instalado nas instâncias.
Antes de executar um comando PowerShell em uma instância Windows, verifique se o módulo PowerShell está instalado na instância.
Ao usar uma expressão CRON para definir um agendamento, especifique um fuso horário conforme suas necessidades de negócio. Caso nenhum fuso horário seja especificado, o agendamento seguirá o horário do sistema da instância. Certifique-se de que o horário ou fuso horário da instância atenda aos seus requisitos. Para mais informações sobre fusos horários, consulte Configurar o serviço NTP para instâncias ECS com CentOS 6 ou Configurar o serviço NTP para instâncias Windows.
-
Configure o parâmetro Timeout para definir o tempo limite de execução do comando nas instâncias ECS. Se a execução exceder esse tempo, o Cloud Assistant Agent encerrará forçosamente o processo do comando.
Se uma execução única do comando atingir o tempo limite, o estado da execução mudará para Failed. Chame a operação InvokeRecordStatus para consultar o estado de execução do comando.
-
Em tarefas agendadas, o tempo limite aplica-se a cada execução individual do comando. Quando uma execução atinge o tempo limite, as execuções subsequentes não são afetadas. Se uma execução agendada atingir o tempo limite, seu estado mudará para Failed. Chame a operação InvokeRecordStatus para consultar o estado de execução do comando.
Para garantir que as tarefas agendadas funcionem conforme esperado, a versão do Cloud Assistant Agent não pode ser anterior às listadas abaixo. Uma tarefa agendada pode executar um comando em intervalos específicos, apenas uma vez em um momento definido ou em horários designados com base em uma expressão CRON com ano ou fuso horário especificado. Se o código de erro ClientNeedUpgrade for retornado, atualize o Cloud Assistant Agent para a versão mais recente. Para mais informações, consulte Atualizar ou desativar atualizações do Cloud Assistant Agent.
Linux: 2.2.3.282
Windows: 2.1.3.282
Falhas na execução de comandos podem ocorrer devido a exceções no status da instância, problemas de rede ou falhas no Cloud Assistant Agent. Se a execução falhar, nenhuma informação será gerada. Para mais detalhes, consulte Verificar resultados de execução e solucionar problemas comuns.
Se você definir o parâmetro EnableParameter como true, o recurso de parâmetros personalizados será ativado. Ao configurar o parâmetro CommandContent, defina parâmetros personalizados no formato {{parameter}}. Durante a execução do comando, os pares chave-valor dos parâmetros personalizados serão transmitidos.
É possível manter de 500 a 10.000 comandos do Cloud Assistant em cada região, dependendo do uso do ECS. Execute as operações descritas no tópico Visualizar e aumentar cotas de recursos ou chame a operação DescribeAccountAttribute para consultar as cotas de recursos.
Antes de executar um comando nas instâncias, especialmente em novas instâncias, recomendamos chamar a operação DescribeCloudAssistantStatus para verificar o status do Cloud Assistant Agent. Execute o comando somente quando o valor do parâmetro CloudAssistantStatus na resposta for true para as instâncias desejadas.
Depuração
Parâmetros da solicitação
Parâmetro | Tipo | Obrigatório | Exemplo | Descrição |
Action | String | Sim | RunCommand | A operação a ser executada. Defina o valor como RunCommand. |
RegionId | String | Sim | cn-hangzhou | O ID da região. Chame a operação DescribeRegions para obter a lista de regiões mais recente. |
ResourceGroupId | String | Não | rg-bp67acfmxazb4p**** | O ID do grupo de recursos onde o comando será executado. Ao configurar este parâmetro, observe o seguinte:
|
Name | String | Não | testName | O nome do comando. O nome aceita todos os conjuntos de caracteres e pode ter até 128 caracteres. |
Description | String | Não | testDescription | A descrição do comando. A descrição aceita todos os conjuntos de caracteres e pode ter até 512 caracteres. |
Type | String | Sim | RunShellScript | O tipo de linguagem do comando. Valores válidos:
|
CommandContent | String | Sim | ZWNobyAxMjM= | O conteúdo do comando. O conteúdo pode ser texto simples ou codificado em Base64. Observe os seguintes pontos:
|
WorkingDir | String | Não | /home/user | O diretório de trabalho do comando na instância. O valor pode ter até 200 caracteres. Valor padrão:
|
Timeout | Long | Não | 3600 | O tempo limite para a execução do comando. Unidade: segundos. Um erro de tempo limite ocorre se o comando não puder ser executado devido à lentidão do processo ou à ausência de um módulo específico ou do Cloud Assistant Agent. Quando a execução atinge o tempo limite, o processo do comando é encerrado forçosamente. Valor padrão: 60. |
EnableParameter | Boolean | Não | false | Especifica se parâmetros personalizados devem ser incluídos no comando. Valor padrão: false. |
RepeatMode | String | Não | Once | O modo de execução do comando. Valores válidos:
Valor padrão:
Observe os seguintes pontos:
|
Timed | Boolean | Não | true | Nota Este parâmetro foi descontinuado e não tem efeito. |
Frequency | String | Não | 0 /20 ? | O agendamento para execução do comando. Configure o comando para ser executado em intervalos fixos usando uma expressão rate, apenas uma vez em um horário específico ou em momentos designados via expressão CRON.
|
Parameters | Map | Não | {"name":"Jack", "accessKey":"LTAIdyvdIqaRY****"} | Os pares chave-valor dos parâmetros personalizados transmitidos durante a execução de um comando que aceita parâmetros personalizados. Por exemplo, se o conteúdo do comando for É possível especificar até 10 parâmetros personalizados. Observe o seguinte:
Este parâmetro está vazio por padrão. Deixe-o vazio para desativar o recurso de parâmetros personalizados. |
KeepCommand | Boolean | Não | false | Especifica se o comando deve ser retido após a execução. Valores válidos:
Valor padrão: false. |
ContentEncoding | String | Não | Base64 | O modo de codificação do conteúdo especificado pelo parâmetro
Valor padrão: PlainText. Se um valor inválido for especificado, PlainText será usado. |
Username | String | Não | test | O nome de usuário para executar o comando nas instâncias. O nome de usuário pode ter até 255 caracteres.
Outros nomes de usuário existentes nas instâncias também podem ser especificados. Por motivos de segurança, recomendamos executar comandos do Cloud Assistant como um usuário comum. Para mais informações, consulte Executar comandos do Cloud Assistant como um usuário comum. |
WindowsPasswordName | String | Não | axtSecretPassword | O nome da senha usada para executar o comando em instâncias Windows. O nome pode ter até 255 caracteres. Se não quiser usar o usuário System padrão em instâncias Windows, configure ambos os parâmetros WindowsPasswordName e Nota Se usar o usuário root em instâncias Linux ou o usuário System em instâncias Windows, não é necessário configurar o parâmetro WindowsPasswordName. |
InstanceId.N | String | Sim | i-bp185dy2o3o6neg**** | O ID da instância N. Valores válidos de N: 1 a 50. Se alguma das instâncias especificadas não atender às condições de execução, a chamada falhará. Para garantir o sucesso, especifique apenas IDs de instâncias que atendam aos requisitos. |
Tag.N.Key | String | Não | TestKey | A chave da tag N a ser adicionada à tarefa de comando. Valores válidos de N: 1 a 20. A chave da tag não pode ser uma string vazia. Ao consultar recursos com uma única tag, até 1.000 recursos com essa tag podem ser exibidos na resposta. Com múltiplas tags, até 1.000 recursos contendo todas as tags especificadas podem ser retornados. Para consultar mais de 1.000 recursos com tags específicas, chame a operação ListTagResources. A chave da tag pode ter até 64 caracteres e não pode conter |
Tag.N.Value | String | Não | TestValue | O valor da tag N a ser adicionada à tarefa de comando. Valores válidos de N: 1 a 20. O valor da tag pode ser uma string vazia. O valor da tag pode ter até 128 caracteres e não pode conter |
ContainerId | String | Não | ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea**** | O ID do contêiner. Apenas strings hexadecimais de 64 bits são suportadas. IDs prefixados com Observe os seguintes pontos:
|
ContainerName | String | Não | test-container | O nome do contêiner. Observe os seguintes pontos:
|
ClientToken | String | Não | 123e4567-e89b-12d3-a456-426655440000 | O token de cliente usado para garantir a idempotência da solicitação. Gere o token no cliente, garantindo que seja único para cada solicitação. O token pode conter apenas caracteres ASCII e ter até 64 caracteres. Para mais informações, consulte Como garantir a idempotência. |
Parâmetros de resposta
|
Parâmetro |
Tipo |
Exemplo |
Descrição |
|
RequestId |
String |
473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** |
O ID da solicitação. |
|
CommandId |
String |
c-7d2a745b412b4601b2d47f6a768d**** |
O ID do comando. |
|
InvokeId |
String |
t-7d2a745b412b4601b2d47f6a768d**** |
O ID da tarefa de comando. |
Exemplos
Exemplos de solicitações
http(s)://ecs.aliyuncs.com/?Action=RunCommand
&CommandContent='echo hello'
&InstanceId.1=i-bp185dy2o3o6neg****
&InstanceId.2=i-bp541dc26ko6dd5****
&Name=Test
&RegionId=cn-hangzhou
&Type=RunShellScript
&Username=test
&<Common request parameters>
Exemplos de respostas de sucesso
XML formato
HTTP/1.1 200 OK
Content-Type:application/xml
<RunCommandResponse>
<RequestId>E69EF3CC-94CD-42E7-8926-F133B863****</RequestId>
<CommandId>c-7d2a745b412b4601b2d47f6a768d****</CommandId>
<InvokeId>t-7d2a745b412b4601b2d47f6a768d****</InvokeId>
</RunCommandResponse>
JSON formato
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "E69EF3CC-94CD-42E7-8926-F133B863****",
"CommandId" : "c-7d2a745b412b4601b2d47f6a768d****",
"InvokeId" : "t-7d2a745b412b4601b2d47f6a768d****"
}
Códigos de erro
|
Código de status HTTP |
Código de erro |
Mensagem de erro |
Descrição |
|
400 |
RegionId.ApiNotSupported |
The api is not supported in this region. |
A operação não pode ser chamada na região especificada. Verifique se o valor do parâmetro RegionId é válido. |
|
400 |
MissingParam.InstanceId |
The parameter instanceId is missing or empty. |
InstanceId.N é obrigatório. |
|
400 |
NumberExceed.Tags |
Ensure the number of tag parameters is not greater than 20. |
O número máximo de tags foi excedido. |
|
400 |
InvalidTagValue.Malformed |
The specified Tag.n.Value is not valid. |
Valor de Tag.N.Value inválido. |
|
400 |
Duplicate.TagKey |
The Tag.N.Key contain duplicate key. |
A chave da tag já existe. As chaves devem ser únicas. |
|
400 |
InvalidTagKey.Malformed |
The specified Tag.n.Key is not valid. |
Valor de Tag.N.Key inválido. |
|
400 |
MissingParameter.TagKey |
You must specify Tag.N.Key. |
Tag.N.Key é obrigatório. |
|
400 |
InvalidContainerId.Malformed |
The specified parameter ContainerId is not valid. |
Valor de ContainerId inválido. |
|
400 |
InvalidContainerName.Malformed |
The specified parameter ContainerName is not valid. |
Valor de ContainerName inválido. |
|
400 |
InvalidClientToken.Malformed |
The specified parameter clientToken is not valid. |
Valor de ClientToken inválido. |
|
400 |
CmdParam.EmptyKey |
Command parameters can not be empty. |
Os parâmetros personalizados são obrigatórios no comando. |
|
400 |
CmdParam.InvalidParamName |
A command parameter name is invalid. |
Nome de parâmetro personalizado inválido. |
|
400 |
CmdContent.DecodeError |
The CommandContent can not be base64 decoded. |
O conteúdo do comando não pôde ser decodificado em Base64. |
|
400 |
InvalidInstance.NotMatch |
The specified instance type does not match the command. |
O comando especificado não pode ser executado na instância indicada. Verifique se o estado da instância atende às condições para execução de comandos do Cloud Assistant. |
|
400 |
MissingParam.Frequency |
The frequency must be specified when you create a timed task. |
Frequency é obrigatório ao criar uma tarefa de comando agendada. |
|
400 |
InvalidParam.Frequency |
The specified frequency is invalid. |
Valor de Frequency inválido. Verifique se o valor especificado é válido. |
|
400 |
ParameterKey.Duplicate |
The parameter may not contain duplicate keys. |
Já existe um parâmetro com o mesmo nome. Os nomes devem ser únicos. |
|
400 |
Parameter.NotMatched |
The parameters of creation do not match those of invocation. |
Os parâmetros personalizados transmitidos não correspondem aos especificados na criação do comando. |
|
400 |
WindowsPasswordName.Missed |
WindowsPasswordName must be specified when you create a Windows task. |
WindowsPasswordName é obrigatório. |
|
400 |
Parameter.Disabled |
Parameters should not be passed when CreateCommand.EnableParameter is false. |
Não especifique parâmetros personalizados quando o recurso estiver desativado. |
|
400 |
InvalidParameter.WorkingDir |
The specified parameter WorkingDir is not valid. |
Valor de WorkingDir inválido. |
|
403 |
CmdContent.ExceedLimit |
The length of the command content exceeds the upper limit. |
O comprimento máximo do conteúdo do comando foi excedido. |
|
403 |
CmdName.ExceedLimit |
The length of the command name exceeds the upper limit. |
O comprimento máximo do nome do comando foi excedido. |
|
403 |
CmdDesc.ExceedLimit |
The length of the command description exceeds the upper limit. |
O comprimento máximo da descrição do comando foi excedido. |
|
403 |
CmdCount.ExceedQuota |
The total number of commands in the current region exceeds the quota. |
O número máximo de comandos do Cloud Assistant na região atual foi excedido. |
|
403 |
CmdParamName.ExceedLimit |
The length of the command parameter name exceeds the limit. |
O comprimento máximo do nome do parâmetro personalizado foi excedido. |
|
403 |
InstanceIds.ExceedLimit |
The number of instance IDs exceeds the upper limit. |
O número máximo de IDs de instância foi excedido. |
|
403 |
Invocation.ExceedQuota |
The invocation quota in the current region has been reached for today. |
O limite diário de execuções de comandos na região atual foi atingido. |
|
403 |
ParameterCount.ExceedLimit |
The number of command parameters exceeds the maximum number that can be set. |
O número máximo de parâmetros personalizados foi excedido. |
|
403 |
ParameterKey.ExceedLimit |
The length of the specified parameter key exceeds the maximum length that can be set. |
O comprimento da chave do parâmetro personalizado excede o limite máximo. |
|
403 |
ParameterType.NotSupported |
The type of parameter value is not supported. |
Tipo de parâmetro personalizado inválido. |
|
403 |
Username.ExceedLimit |
The length of the username exceeds the upper limit. |
O comprimento máximo do nome de usuário foi excedido. |
|
403 |
WindowsPasswordName.ExceedLimit |
The length of the WindowsPasswordName exceeds the upper limit. |
O comprimento máximo do nome especificado pelo parâmetro WindowsPasswordName foi excedido. |
|
403 |
ParameterStore.InvalidParameters |
The parameter is invalid in Parameter Store. |
O parâmetro personalizado no formato {{oos:?}} não foi encontrado. |
|
403 |
Operation.Forbidden |
The operation is not permitted. |
A operação não é suportada. |
|
403 |
IdempotentParameterMismatch |
The specified parameter has changed while using an already used clientToken. |
O token de cliente já está em uso. |
|
403 |
IdempotentProcessing |
The previous idempotent request(s) is still processing. |
Uma solicitação idempotente anterior ainda está sendo processada. Tente novamente mais tarde. |
|
403 |
InvalidStatus.ResourceGroup |
You cannot perform an operation on a resource group that is being created or deleted. |
Esta operação não pode ser realizada em um grupo de recursos que está sendo criado ou excluído. |
|
404 |
InvalidCmdType.NotFound |
The specified command type does not exist. |
O tipo de comando especificado não foi encontrado. |
|
404 |
InvalidRepeatMode.NotFound |
The specified repeat mode does not exist. |
Valor de RepeatMode inválido. |
|
404 |
InvalidInstance.NotFound |
The specified instance does not exist. |
A instância não foi encontrada. |
|
404 |
InvalidCmdId.NotFound |
The specified command ID does not exist. |
Valor de CommandId inválido. Chame a operação DescribeCommands para consultar todos os IDs de comando disponíveis. |
|
404 |
InvalidResourceGroup.NotFound |
The ResourceGroup provided does not exist in our records. |
O valor de ResourceGroupId não foi encontrado. |
|
500 |
InternalError.Dispatch |
An error occurred when you dispatched the request. |
Ocorreu um erro ao enviar a solicitação. Tente novamente mais tarde. |
Para obter uma lista de códigos de erro, consulte Códigos de erro do serviço.