Ejecuta un comando de shell, PowerShell o por lotes en instancias de Elastic Compute Service (ECS).
Notas de uso
A diferencia de las operaciones CreateCommand y InvokeCommand, RunCommand permite crear y ejecutar un comando en una sola solicitud.
Tome en cuenta los puntos a continuación:
Las instancias donde desea ejecutar el comando deben estar en estado Running. Puede llamar a la operación DescribeInstances para consultar el estado de las instancias.
Cloud Assistant Agent está preinstalado en las instancias.
Antes de ejecutar un comando de PowerShell en una instancia Windows, asegúrese de que el módulo de PowerShell esté instalado en la instancia.
Al usar una expresión CRON para especificar una programación, puede definir una zona horaria según sus necesidades empresariales. Si no especifica una zona horaria, la programación se determina según la hora del sistema de la instancia. Asegúrese de que la hora o la zona horaria de la instancia cumpla con sus requisitos. Para obtener más información sobre zonas horarias, consulte Configure the NTP service for ECS instances that run CentOS 6 o Configure the NTP service for Windows instances.
-
Configure el parámetro Timeout para especificar el tiempo de espera máximo para la ejecución del comando en las instancias ECS. Si una ejecución excede este límite, Cloud Assistant Agent finaliza forzosamente el proceso del comando.
Si la ejecución única de un comando supera el tiempo de espera, su estado cambia a Failed. Llame a la operación InvokeRecordStatus para consultar el estado de ejecución del comando.
-
En una tarea programada, el tiempo de espera aplica a cada ejecución del comando. Cuando una ejecución supera el límite, las ejecuciones posteriores no se ven afectadas. Si una ejecución programada supera el tiempo de espera, el estado de ejecución del comando cambia a Failed. Llame a la operación InvokeRecordStatus para consultar el estado de ejecución del comando.
Para garantizar que las tareas programadas se ejecuten correctamente, la versión de Cloud Assistant Agent no debe ser anterior a las siguientes. Una tarea programada puede ejecutar un comando a intervalos específicos, una sola vez en un momento determinado o en momentos designados mediante una expresión CRON con un año o zona horaria específicos. Si se devuelve el código de error ClientNeedUpgrade, actualice Cloud Assistant Agent a la versión más reciente. Para obtener más información, consulte Update or disable updates for Cloud Assistant Agent.
Linux: 2.2.3.282
Windows: 2.1.3.282
Las ejecuciones de comandos pueden fallar debido a excepciones en el estado de la instancia, problemas de red o errores en Cloud Assistant Agent. Si falla la ejecución de un comando, no se genera información de ejecución. Para obtener más información, consulte Check execution results and troubleshoot common issues.
Si establece el parámetro EnableParameter en true, se habilita la función de parámetros personalizados. Al configurar el parámetro CommandContent, defina parámetros personalizados con el formato {{parameter}}. Posteriormente, al ejecutar el comando, se pasan los pares clave-valor de los parámetros personalizados.
Puede conservar entre 500 y 10,000 comandos de Cloud Assistant en cada región, según su uso de ECS. Realice las operaciones descritas en el tema View and increase resource quotas o llame a la operación DescribeAccountAttribute para consultar las cuotas de recursos.
Antes de ejecutar un comando en las instancias, especialmente en instancias nuevas, se recomienda llamar a la operación DescribeCloudAssistantStatus para consultar el estado de Cloud Assistant Agent en dichas instancias. Ejecute el comando únicamente cuando el valor del parámetro CloudAssistantStatus en la respuesta sea true para las instancias correspondientes.
Depuración
Parámetros de solicitud
Parámetro | Tipo | Obligatorio | Ejemplo | Descripción |
Action | String | Sí | RunCommand | La operación que desea realizar. Establezca el valor en RunCommand. |
RegionId | String | Sí | cn-hangzhou | El ID de la región. Puede llamar a la operación DescribeRegions para consultar la lista de regiones más reciente. |
ResourceGroupId | String | No | rg-bp67acfmxazb4p**** | El ID del resource group donde desea ejecutar el comando. Al configurar este parámetro, tome en cuenta lo siguiente:
|
Name | String | No | testName | El nombre del comando. El nombre admite todos los conjuntos de caracteres y puede tener hasta 128 caracteres de longitud. |
Description | String | No | testDescription | La descripción del comando. La descripción admite todos los conjuntos de caracteres y puede tener hasta 512 caracteres de longitud. |
Type | String | Sí | RunShellScript | El tipo de lenguaje del comando. Valores válidos:
|
CommandContent | String | Sí | ZWNobyAxMjM= | El contenido del comando. El contenido puede ser texto sin formato o estar codificado en Base64. Tome en cuenta lo siguiente:
|
WorkingDir | String | No | /home/user | El directorio de trabajo del comando en la instancia. El valor puede tener hasta 200 caracteres de longitud. Valor predeterminado:
|
Timeout | Long | No | 3600 | El tiempo de espera máximo para la ejecución del comando. Unidad: segundos. Se produce un error de tiempo de espera si el comando no se puede ejecutar porque el proceso se ralentiza o porque falta un módulo específico o Cloud Assistant Agent. Cuando una ejecución supera el tiempo de espera, el proceso del comando finaliza forzosamente. Valor predeterminado: 60. |
EnableParameter | Boolean | No | false | Especifica si se incluyen parámetros personalizados en el comando. Valor predeterminado: false. |
RepeatMode | String | No | Once | El modo en el que desea ejecutar el comando. Valores válidos:
Valor predeterminado:
Tome en cuenta lo siguiente:
|
Timed | Boolean | No | true | Nota Este parámetro está obsoleto y no surte efecto. |
Frequency | String | No | 0 /20 ? | La programación con la que desea ejecutar el comando. Configure un comando para que se ejecute a intervalos fijos mediante una expresión rate, una sola vez en un momento específico o en momentos designados mediante una expresión CRON.
|
Parameters | Map | No | {"name":"Jack", "accessKey":"LTAIdyvdIqaRY****"} | Los pares clave-valor de los parámetros personalizados que se pasan al ejecutar el comando que admite parámetros personalizados. Por ejemplo, si el contenido del comando es Puede especificar hasta 10 parámetros personalizados. Tome en cuenta lo siguiente:
Este parámetro está vacío de forma predeterminada. Deje este parámetro vacío para deshabilitar la función de parámetros personalizados. |
KeepCommand | Boolean | No | false | Especifica si se conserva el comando después de su ejecución. Valores válidos:
Valor predeterminado: false. |
ContentEncoding | String | No | Base64 | El modo de codificación del contenido del comando especificado por el parámetro
Valor predeterminado: PlainText. Si se especifica un valor no válido para este parámetro, se usa PlainText. |
Username | String | No | test | El nombre de usuario que se usará para ejecutar el comando en las instancias. El nombre de usuario no puede exceder los 255 caracteres de longitud.
También puede especificar otros nombres de usuario que ya existan en las instancias para ejecutar el comando. Por motivos de seguridad, se recomienda ejecutar los comandos de Cloud Assistant como un usuario estándar. Para obtener más información, consulte Run Cloud Assistant commands as a regular user. |
WindowsPasswordName | String | No | axtSecretPassword | El nombre de la contraseña que se usará para ejecutar el comando en instancias Windows. El nombre no puede exceder los 255 caracteres de longitud. Si no desea usar el usuario System predeterminado para ejecutar el comando en instancias Windows, configure tanto el parámetro WindowsPasswordName como el parámetro Nota Si usa el usuario root para instancias Linux o el usuario System para instancias Windows para ejecutar el comando, no necesita configurar el parámetro WindowsPasswordName. |
InstanceId.N | String | Sí | i-bp185dy2o3o6neg**** | El ID de la instancia N. Valores válidos de N: 1 a 50. Si alguna de las instancias especificadas no cumple con las condiciones para ejecutar el comando, la llamada falla. Para asegurar que la llamada sea exitosa, especifique solo los ID de instancias que cumplan con las condiciones. |
Tag.N.Key | String | No | TestKey | La clave de la etiqueta N que se agregará a la tarea del comando. Valores válidos de N: 1 a 20. La clave de la etiqueta no puede ser una cadena vacía. Si se especifica una sola etiqueta para consultar recursos, se pueden mostrar hasta 1,000 recursos con esa etiqueta en la respuesta. Si se especifican varias etiquetas para consultar recursos, se pueden mostrar hasta 1,000 recursos que tengan todas esas etiquetas en la respuesta. Para consultar más de 1,000 recursos con etiquetas específicas, llame a la operación ListTagResources. La clave de la etiqueta puede tener hasta 64 caracteres de longitud y no puede contener |
Tag.N.Value | String | No | TestValue | El valor de la etiqueta N que se agregará a la tarea del comando. Valores válidos de N: 1 a 20. El valor de la etiqueta puede ser una cadena vacía. El valor de la etiqueta puede tener hasta 128 caracteres de longitud y no puede contener |
ContainerId | String | No | ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea**** | El ID del contenedor. Solo se admiten cadenas hexadecimales de 64 bits. Se permiten ID de contenedor con prefijo Tome en cuenta lo siguiente:
|
ContainerName | String | No | test-container | El nombre del contenedor. Tome en cuenta lo siguiente:
|
ClientToken | String | No | 123e4567-e89b-12d3-a456-426655440000 | El token de cliente que se usa para garantizar la idempotencia de la solicitud. Use el cliente para generar el token, pero asegúrese de que el token sea único entre diferentes solicitudes. El token solo puede contener caracteres ASCII y no puede exceder los 64 caracteres de longitud. Para obtener más información, consulte How to ensure idempotence. |
Parámetros de respuesta
|
Parámetro |
Tipo |
Ejemplo |
Descripción |
|
RequestId |
String |
473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** |
El ID de la solicitud. |
|
CommandId |
String |
c-7d2a745b412b4601b2d47f6a768d**** |
El ID del comando. |
|
InvokeId |
String |
t-7d2a745b412b4601b2d47f6a768d**** |
El ID de la tarea del comando. |
Ejemplos
Solicitudes de ejemplo
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>
Respuestas exitosas de ejemplo
Formato XML
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>
Formato JSON
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "E69EF3CC-94CD-42E7-8926-F133B863****",
"CommandId" : "c-7d2a745b412b4601b2d47f6a768d****",
"InvokeId" : "t-7d2a745b412b4601b2d47f6a768d****"
}
Códigos de error
|
Código de estado HTTP |
Código de error |
Mensaje de error |
Descripción |
|
400 |
RegionId.ApiNotSupported |
The api is not supported in this region. |
La operación no se puede llamar en la región especificada. Compruebe si el valor del parámetro RegionId es válido. |
|
400 |
MissingParam.InstanceId |
The parameter instanceId is missing or empty. |
InstanceId.N es obligatorio. |
|
400 |
NumberExceed.Tags |
Ensure the number of tag parameters is not greater than 20. |
Se ha superado el número máximo de etiquetas. |
|
400 |
InvalidTagValue.Malformed |
The specified Tag.n.Value is not valid. |
Valor de Tag.N.Value no válido. |
|
400 |
Duplicate.TagKey |
The Tag.N.Key contain duplicate key. |
La clave de la etiqueta ya existe. Las claves de etiqueta deben ser únicas. |
|
400 |
InvalidTagKey.Malformed |
The specified Tag.n.Key is not valid. |
Valor de Tag.N.Key no válido. |
|
400 |
MissingParameter.TagKey |
You must specify Tag.N.Key. |
Tag.N.Key es obligatorio. |
|
400 |
InvalidContainerId.Malformed |
The specified parameter ContainerId is not valid. |
Valor de ContainerId no válido. |
|
400 |
InvalidContainerName.Malformed |
The specified parameter ContainerName is not valid. |
Valor de ContainerName no válido. |
|
400 |
InvalidClientToken.Malformed |
The specified parameter clientToken is not valid. |
Valor de ClientToken no válido. |
|
400 |
CmdParam.EmptyKey |
Command parameters can not be empty. |
Los parámetros personalizados son obligatorios en el comando. |
|
400 |
CmdParam.InvalidParamName |
A command parameter name is invalid. |
Nombre de parámetro personalizado no válido. |
|
400 |
CmdContent.DecodeError |
The CommandContent can not be base64 decoded. |
El contenido del comando no se puede decodificar en Base64. |
|
400 |
InvalidInstance.NotMatch |
The specified instance type does not match the command. |
El comando especificado no se puede ejecutar en la instancia indicada. Compruebe si el estado de la instancia cumple con las condiciones para ejecutar el comando de Cloud Assistant. |
|
400 |
MissingParam.Frequency |
The frequency must be specified when you create a timed task. |
Frequency es obligatorio al crear una tarea de comando programada. |
|
400 |
InvalidParam.Frequency |
The specified frequency is invalid. |
Valor de Frequency no válido. Compruebe si el valor especificado de Frequency es válido. |
|
400 |
ParameterKey.Duplicate |
The parameter may not contain duplicate keys. |
Ya existe un parámetro con el mismo nombre. Los nombres de los parámetros deben ser únicos. |
|
400 |
Parameter.NotMatched |
The parameters of creation do not match those of invocation. |
Los parámetros personalizados pasados no coinciden con los especificados al crear el comando. |
|
400 |
WindowsPasswordName.Missed |
WindowsPasswordName must be specified when you create a Windows task. |
WindowsPasswordName es obligatorio. |
|
400 |
Parameter.Disabled |
Parameters should not be passed when CreateCommand.EnableParameter is false. |
No especifique parámetros personalizados cuando deshabilite la función de parámetros personalizados. |
|
400 |
InvalidParameter.WorkingDir |
The specified parameter WorkingDir is not valid. |
Valor de WorkingDir no válido. |
|
403 |
CmdContent.ExceedLimit |
The length of the command content exceeds the upper limit. |
Se ha superado la longitud máxima del contenido del comando. |
|
403 |
CmdName.ExceedLimit |
The length of the command name exceeds the upper limit. |
Se ha superado la longitud máxima del nombre del comando. |
|
403 |
CmdDesc.ExceedLimit |
The length of the command description exceeds the upper limit. |
Se ha superado la longitud máxima de la descripción del comando. |
|
403 |
CmdCount.ExceedQuota |
The total number of commands in the current region exceeds the quota. |
Se ha superado el número máximo de comandos de Cloud Assistant en la región actual. |
|
403 |
CmdParamName.ExceedLimit |
The length of the command parameter name exceeds the limit. |
Se ha superado la longitud máxima del nombre del parámetro personalizado en el comando. |
|
403 |
InstanceIds.ExceedLimit |
The number of instance IDs exceeds the upper limit. |
Se ha superado el número máximo de ID de instancia. |
|
403 |
Invocation.ExceedQuota |
The invocation quota in the current region has been reached for today. |
Se ha superado el número máximo diario de ejecuciones de comandos en la región actual. |
|
403 |
ParameterCount.ExceedLimit |
The number of command parameters exceeds the maximum number that can be set. |
Se ha superado el número máximo de parámetros personalizados. |
|
403 |
ParameterKey.ExceedLimit |
The length of the specified parameter key exceeds the maximum length that can be set. |
La longitud de la clave de un parámetro personalizado supera el límite máximo. |
|
403 |
ParameterType.NotSupported |
The type of parameter value is not supported. |
Tipo de parámetro personalizado no válido. |
|
403 |
Username.ExceedLimit |
The length of the username exceeds the upper limit. |
Se ha superado la longitud máxima del nombre de usuario. |
|
403 |
WindowsPasswordName.ExceedLimit |
The length of the WindowsPasswordName exceeds the upper limit. |
Se ha superado la longitud máxima del nombre especificado por el parámetro WindowsPasswordName. |
|
403 |
ParameterStore.InvalidParameters |
The parameter is invalid in Parameter Store. |
No se encontró el parámetro personalizado con formato {{oos:?}}. |
|
403 |
Operation.Forbidden |
The operation is not permitted. |
La operación no es compatible. |
|
403 |
IdempotentParameterMismatch |
The specified parameter has changed while using an already used clientToken. |
El token de cliente ya está en uso. |
|
403 |
IdempotentProcessing |
The previous idempotent request(s) is still processing. |
Se está procesando una solicitud idempotente anterior. Inténtelo de nuevo más tarde. |
|
403 |
InvalidStatus.ResourceGroup |
You cannot perform an operation on a resource group that is being created or deleted. |
Esta operación no se puede realizar en un resource group que se está creando o eliminando. |
|
404 |
InvalidCmdType.NotFound |
The specified command type does not exist. |
No se encontró el tipo de comando especificado. |
|
404 |
InvalidRepeatMode.NotFound |
The specified repeat mode does not exist. |
Valor de RepeatMode no válido. |
|
404 |
InvalidInstance.NotFound |
The specified instance does not exist. |
No se encontró la instancia. |
|
404 |
InvalidCmdId.NotFound |
The specified command ID does not exist. |
Valor de CommandId no válido. Llame a la operación DescribeCommands para consultar todos los ID de comando disponibles. |
|
404 |
InvalidResourceGroup.NotFound |
The ResourceGroup provided does not exist in our records. |
No se encontró el valor de ResourceGroupId. |
|
500 |
InternalError.Dispatch |
An error occurred when you dispatched the request. |
Ocurrió un error mientras se enviaba la solicitud. Inténtelo de nuevo más tarde. |
Para obtener una lista de códigos de error, consulte Códigos de error del servicio.