Exécute une commande Shell, PowerShell ou batch sur des instances Elastic Compute Service (ECS).
Remarques relatives à l'utilisation
Contrairement aux opérations CreateCommand et InvokeCommand, l'opération RunCommand permet de créer et d'exécuter une commande en une seule requête.
Tenez compte des points suivants :
Les instances sur lesquelles vous souhaitez exécuter une commande doivent être dans l'état Running. Vous pouvez appeler l'opération DescribeInstances pour consulter le statut des instances.
L'agent Cloud Assistant Agent est préinstallé sur les instances.
Avant d'exécuter une commande PowerShell sur une instance Windows, assurez-vous que le module PowerShell est installé sur l'instance.
Lorsque vous utilisez une expression CRON pour spécifier une planification, vous pouvez définir un fuseau horaire en fonction de vos besoins métier. Si aucun fuseau horaire n'est spécifié, la planification est déterminée par l'heure système de l'instance. Assurez-vous que l'heure ou le fuseau horaire de l'instance répond à vos exigences. Pour plus d'informations sur les fuseaux horaires, consultez les rubriques Configurer le service NTP pour les instances ECS exécutant CentOS 6 ou Configurer le service NTP pour les instances Windows.
-
Vous pouvez configurer le paramètre Timeout pour spécifier le délai d'expiration de l'exécution de la commande sur les instances ECS. En cas de dépassement du délai, Cloud Assistant Agent met fin de force au processus de commande.
Si l'exécution unique d'une commande expire, son état d'exécution passe à Failed. Vous pouvez appeler l'opération InvokeRecordStatus pour interroger l'état d'exécution de la commande.
-
Pour une tâche planifiée, le délai d'expiration s'applique à chaque exécution de la commande. Lorsqu'une exécution de commande expire, les exécutions suivantes ne sont pas affectées. Si une exécution planifiée d'une commande expire, l'état d'exécution de la commande passe à Failed. Vous pouvez appeler l'opération InvokeRecordStatus pour interroger l'état d'exécution de la commande.
Afin de garantir le bon fonctionnement des tâches planifiées, la version de Cloud Assistant Agent ne doit pas être antérieure aux versions indiquées ci-dessous. Une tâche planifiée peut exécuter une commande à intervalles réguliers, une seule fois à un moment donné, ou à des heures désignées selon une expression CRON avec une année ou un fuseau horaire spécifié. Si le code d'erreur ClientNeedUpgrade est renvoyé, vous devez mettre à jour Cloud Assistant Agent vers la dernière version. Pour plus d'informations, consultez la rubrique Mettre à jour ou désactiver les mises à jour de Cloud Assistant Agent.
Linux : 2.2.3.282
Windows : 2.1.3.282
Les exécutions de commandes peuvent échouer en raison d'anomalies liées au statut de l'instance, à des problèmes réseau ou à des exceptions sur Cloud Assistant Agent. En cas d'échec d'exécution d'une commande, aucune information d'exécution n'est générée. Pour plus d'informations, consultez la rubrique Vérifier les résultats d'exécution et résoudre les problèmes courants.
Si vous définissez le paramètre EnableParameter sur true, la fonctionnalité de paramètres personnalisés est activée. Lors de la configuration du paramètre CommandContent, vous pouvez définir des paramètres personnalisés au format {{parameter}}. Ensuite, lors de l'exécution de la commande, les paires clé-valeur des paramètres personnalisés sont transmises.
Vous pouvez conserver entre 500 et 10 000 commandes Cloud Assistant par région, en fonction de votre utilisation d'ECS. Vous pouvez effectuer les opérations décrites dans la rubrique Afficher et augmenter les quotas de resources ou appeler l'opération DescribeAccountAttribute pour consulter les quotas de resources.
Avant d'exécuter une commande sur des instances, notamment de nouvelles instances, nous vous recommandons d'appeler l'opération DescribeCloudAssistantStatus pour vérifier le statut de Cloud Assistant Agent sur les instances, puis d'exécuter la commande lorsque la valeur du paramètre CloudAssistantStatus dans la réponse est true pour ces instances.
Débogage
Paramètres de la requête
Parameter | Type | Required | Example | Description |
Action | String | Yes | RunCommand | Opération à exécuter. Définissez la valeur sur RunCommand. |
RegionId | String | Yes | cn-hangzhou | ID de la région. Appelez l’opération DescribeRegions pour obtenir la liste des régions les plus récentes. |
ResourceGroupId | String | No | rg-bp67acfmxazb4p**** | ID du groupe de ressources dans lequel vous souhaitez exécuter la commande. Lors de la configuration de ce paramètre, tenez compte des éléments suivants :
|
Name | String | No | testName | Nom de la commande. Le nom prend en charge tous les jeux de caractères et peut comporter jusqu’à 128 caractères. |
Description | String | No | testDescription | Description de la commande. La description prend en charge tous les jeux de caractères et peut comporter jusqu’à 512 caractères. |
Type | String | Yes | RunShellScript | Type de langage de la commande. Valeurs possibles :
|
CommandContent | String | Yes | ZWNobyAxMjM= | Contenu de la commande. Le contenu peut être en texte brut ou encodé en Base64. Tenez compte des éléments suivants :
|
WorkingDir | String | No | /home/user | Répertoire de travail de la commande sur l’instance. La valeur peut comporter jusqu’à 200 caractères. Valeur par défaut :
|
Timeout | Long | No | 3600 | Délai d’expiration de l’exécution de la commande. Unité : secondes. Une erreur de délai d’expiration se produit si la commande ne peut pas être exécutée en raison d’un ralentissement du processus ou de l’absence d’un module spécifique ou de Cloud Assistant Agent. En cas d’expiration du délai, le processus de commande est arrêté de force. Valeur par défaut : 60. |
EnableParameter | Boolean | No | false | Indique s’il faut inclure des paramètres personnalisés dans la commande. Valeur par défaut : false. |
RepeatMode | String | No | Once | Mode d’exécution de la commande. Valeurs possibles :
Valeur par défaut :
Tenez compte des éléments suivants :
|
Timed | Boolean | No | true | Remarque Ce paramètre est obsolète et n’a aucun effet. |
Fréquence | String | Non | 0 /20 ? | La planification selon laquelle vous souhaitez exécuter la commande. Vous pouvez configurer une commande pour qu'elle s'exécute à un intervalle fixe basé sur une expression de taux, une seule fois à un moment spécifié ou à des moments désignés basés sur une expression CRON.
|
Parameters | Map | Non | {"name":"Jack", "accessKey":"LTAIdyvdIqaRY****"} | Les paires clé-valeur des paramètres personnalisés transmis lors de l'exécution de la commande pouvant inclure des paramètres personnalisés. Par exemple, si le contenu de la commande est Vous pouvez spécifier jusqu'à 10 paramètres personnalisés. Tenez compte des points suivants :
Ce paramètre est vide par défaut. Vous pouvez laisser ce paramètre vide pour désactiver la fonctionnalité de paramètre personnalisé. |
KeepCommand | Boolean | Non | false | Indique s'il faut conserver la commande après son exécution. Valeurs valides :
Valeur par défaut : false. |
ContentEncoding | String | Non | Base64 | Le mode d'encodage du contenu de la commande spécifié par le paramètre
Valeur par défaut : PlainText. Si une valeur non valide est spécifiée pour ce paramètre, PlainText est utilisé. |
Username | String | Non | test | Le nom d'utilisateur à utiliser pour exécuter la commande sur les instances. La longueur du nom d'utilisateur ne peut pas dépasser 255 caractères.
Vous pouvez également spécifier d'autres noms d'utilisateurs existant déjà dans les instances pour exécuter la commande. Pour des raisons de sécurité, nous vous recommandons d'exécuter les commandes Cloud Assistant en tant qu'utilisateur standard. Pour plus d'informations, consultez la rubrique Exécuter des commandes Cloud Assistant en tant qu'utilisateur standard. |
WindowsPasswordName | String | Non | axtSecretPassword | Le nom du mot de passe à utiliser pour exécuter la commande sur les instances Windows. La longueur du nom ne peut pas dépasser 255 caractères. Si vous ne souhaitez pas utiliser l'utilisateur System par défaut pour exécuter la commande sur les instances Windows, configurez les paramètres WindowsPasswordName et Remarque Si vous utilisez l'utilisateur root pour les instances Linux ou l'utilisateur System pour les instances Windows afin d'exécuter la commande, vous n'avez pas besoin de configurer le paramètre WindowsPasswordName. |
InstanceId.N | String | Oui | i-bp185dy2o3o6neg**** | ID de l'instance N. Valeurs valides pour N : 1 à 50. Si l'une des instances spécifiées ne répond pas aux conditions requises pour l'exécution de la commande, l'appel échoue. Pour garantir la réussite de l'appel, spécifiez uniquement les ID des instances qui répondent aux conditions. |
Tag.N.Key | String | Non | TestKey | Clé du tag N à ajouter à la tâche de commande. Valeurs valides pour N : 1 à 20. La clé du tag ne peut pas être une chaîne vide. Si un seul tag est spécifié pour interroger des resources, un maximum de 1 000 resources ayant ce tag peuvent être affichées dans la réponse. Si plusieurs tags sont spécifiés pour interroger des resources, un maximum de 1 000 resources ayant tous ces tags peuvent être affichées dans la réponse. Pour interroger plus de 1 000 resources ayant des tags spécifiés, appelez l'opération ListTagResources. La longueur de la clé du tag peut atteindre 64 caractères et ne peut pas contenir |
Tag.N.Value | String | Non | TestValue | Valeur du tag N à ajouter à la tâche de commande. Valeurs valides pour N : 1 à 20. La valeur du tag peut être une chaîne vide. La longueur de la valeur du tag peut atteindre 128 caractères et ne peut pas contenir |
ContainerId | String | Non | ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea**** | ID du conteneur. Seules les chaînes hexadécimales 64 bits sont prises en charge. Les ID de conteneur préfixés par Tenez compte des points suivants :
|
ContainerName | String | No | test-container | Le nom du conteneur. Tenez compte des points suivants :
|
ClientToken | String | No | 123e4567-e89b-12d3-a456-426655440000 | Le jeton client utilisé pour garantir l'idempotence de la requête. Vous pouvez utiliser le client pour générer le jeton, mais vous devez vous assurer que le jeton est unique parmi différentes requêtes. Le jeton peut contenir uniquement des caractères ASCII et ne peut pas dépasser 64 caractères de longueur. Pour plus d'informations, consultez Comment garantir l'idempotence. |
Paramètres de réponse
|
Paramètre |
Type |
Exemple |
Description |
|
RequestId |
String |
473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** |
ID de la requête. |
|
CommandId |
String |
c-7d2a745b412b4601b2d47f6a768d**** |
ID de la commande. |
|
InvokeId |
String |
t-7d2a745b412b4601b2d47f6a768d**** |
ID de la tâche de commande. |
Exemples
Exemple de requête
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>
Exemple de réponse en cas de succès
Format 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>
Format JSON
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "E69EF3CC-94CD-42E7-8926-F133B863****",
"CommandId" : "c-7d2a745b412b4601b2d47f6a768d****",
"InvokeId" : "t-7d2a745b412b4601b2d47f6a768d****"
}
Codes d'erreur
|
Code d'état HTTP |
Code d'erreur |
Message d'erreur |
Description |
|
400 |
RegionId.ApiNotSupported |
The api is not supported in this region. |
L'opération ne peut pas être appelée dans la région spécifiée. Vérifiez que la valeur du paramètre RegionId est valide. |
|
400 |
MissingParam.InstanceId |
The parameter instanceId is missing or empty. |
Le paramètre InstanceId.N est requis. |
|
400 |
NumberExceed.Tags |
Ensure the number of tag parameters is not greater than 20. |
Le nombre maximal de tags est dépassé. |
|
400 |
InvalidTagValue.Malformed |
The specified Tag.n.Value is not valid. |
Valeur Tag.N.Value non valide. |
|
400 |
Duplicate.TagKey |
The Tag.N.Key contain duplicate key. |
La clé de tag existe déjà. Les clés de tag doivent être uniques. |
|
400 |
InvalidTagKey.Malformed |
The specified Tag.n.Key is not valid. |
Valeur Tag.N.Key non valide. |
|
400 |
MissingParameter.TagKey |
You must specify Tag.N.Key. |
Le paramètre Tag.N.Key est requis. |
|
400 |
InvalidContainerId.Malformed |
The specified parameter ContainerId is not valid. |
Valeur ContainerId non valide. |
|
400 |
InvalidContainerName.Malformed |
The specified parameter ContainerName is not valid. |
Valeur ContainerName non valide. |
|
400 |
InvalidClientToken.Malformed |
The specified parameter clientToken is not valid. |
Valeur ClientToken non valide. |
|
400 |
CmdParam.EmptyKey |
Command parameters can not be empty. |
Les paramètres personnalisés sont requis dans la commande. |
|
400 |
CmdParam.InvalidParamName |
A command parameter name is invalid. |
Nom de paramètre personnalisé non valide. |
|
400 |
CmdContent.DecodeError |
The CommandContent can not be base64 decoded. |
Le contenu de la commande ne peut pas être décodé en Base64. |
|
400 |
InvalidInstance.NotMatch |
The specified instance type does not match the command. |
La commande spécifiée ne peut pas être exécutée sur l'instance spécifiée. Vérifiez que l'état de l'instance respecte les conditions requises pour l'exécution d'une commande Cloud Assistant. |
|
400 |
MissingParam.Frequency |
The frequency must be specified when you create a timed task. |
Le paramètre Frequency est requis lors de la création d'une tâche de commande planifiée. |
|
400 |
InvalidParam.Frequency |
The specified frequency is invalid. |
Valeur Frequency non valide. Vérifiez que la valeur Frequency spécifiée est valide. |
|
400 |
ParameterKey.Duplicate |
The parameter may not contain duplicate keys. |
Un paramètre portant le même nom existe déjà. Les noms de paramètres doivent être uniques. |
|
400 |
Parameter.NotMatched |
The parameters of creation do not match those of invocation. |
Les paramètres personnalisés transmis ne correspondent pas à ceux spécifiés lors de la création de la commande. |
|
400 |
WindowsPasswordName.Missed |
WindowsPasswordName must be specified when you create a Windows task. |
Le paramètre WindowsPasswordName est requis. |
|
400 |
Parameter.Disabled |
Parameters should not be passed when CreateCommand.EnableParameter is false. |
Ne spécifiez pas de paramètres personnalisés lorsque la fonctionnalité de paramètre personnalisé est désactivée. |
|
400 |
InvalidParameter.WorkingDir |
The specified parameter WorkingDir is not valid. |
Valeur WorkingDir non valide. |
|
403 |
CmdContent.ExceedLimit |
The length of the command content exceeds the upper limit. |
La longueur maximale du contenu de la commande est dépassée. |
|
403 |
CmdName.ExceedLimit |
The length of the command name exceeds the upper limit. |
La longueur maximale du nom de la commande est dépassée. |
|
403 |
CmdDesc.ExceedLimit |
The length of the command description exceeds the upper limit. |
La longueur maximale de la description de la commande est dépassée. |
|
403 |
CmdCount.ExceedQuota |
The total number of commands in the current region exceeds the quota. |
Le nombre maximal de commandes Cloud Assistant dans la région actuelle est dépassé. |
|
403 |
CmdParamName.ExceedLimit |
The length of the command parameter name exceeds the limit. |
La longueur maximale du nom du paramètre personnalisé dans la commande est dépassée. |
|
403 |
InstanceIds.ExceedLimit |
The number of instance IDs exceeds the upper limit. |
Le nombre maximal d'ID d'instance est dépassé. |
|
403 |
Invocation.ExceedQuota |
The invocation quota in the current region has been reached for today. |
Le nombre maximal quotidien d'exécutions de commandes dans la région actuelle est dépassé. |
|
403 |
ParameterCount.ExceedLimit |
The number of command parameters exceeds the maximum number that can be set. |
Le nombre maximal de paramètres personnalisés est dépassé. |
|
403 |
ParameterKey.ExceedLimit |
The length of the specified parameter key exceeds the maximum length that can be set. |
La longueur de la clé d'un paramètre personnalisé dépasse la limite maximale. |
|
403 |
ParameterType.NotSupported |
The type of parameter value is not supported. |
Type de paramètre personnalisé non valide. |
|
403 |
Username.ExceedLimit |
The length of the username exceeds the upper limit. |
La longueur maximale du nom d'utilisateur est dépassée. |
|
403 |
WindowsPasswordName.ExceedLimit |
The length of the WindowsPasswordName exceeds the upper limit. |
La longueur maximale du nom spécifié par le paramètre WindowsPasswordName est dépassée. |
|
403 |
ParameterStore.InvalidParameters |
The parameter is invalid in Parameter Store. |
Le paramètre personnalisé au format {{oos:?}} est introuvable. |
|
403 |
Operation.Forbidden |
The operation is not permitted. |
L'opération n'est pas prise en charge. |
|
403 |
IdempotentParameterMismatch |
The specified parameter has changed while using an already used clientToken. |
Le jeton client est déjà utilisé. |
|
403 |
IdempotentProcessing |
The previous idempotent request(s) is still processing. |
Une requête idempotente précédente est en cours de traitement. Réessayez ultérieurement. |
|
403 |
InvalidStatus.ResourceGroup |
You cannot perform an operation on a resource group that is being created or deleted. |
Cette opération ne peut pas être effectuée sur un groupe de ressources en cours de création ou de suppression. |
|
404 |
InvalidCmdType.NotFound |
The specified command type does not exist. |
Le type de commande spécifié est introuvable. |
|
404 |
InvalidRepeatMode.NotFound |
The specified repeat mode does not exist. |
Valeur RepeatMode non valide. |
|
404 |
InvalidInstance.NotFound |
The specified instance does not exist. |
L'instance est introuvable. |
|
404 |
InvalidCmdId.NotFound |
The specified command ID does not exist. |
Valeur CommandId non valide. Vous pouvez appeler l'opération DescribeCommands pour interroger tous les ID de commande disponibles. |
|
404 |
InvalidResourceGroup.NotFound |
The ResourceGroup provided does not exist in our records. |
La valeur ResourceGroupId est introuvable. |
|
500 |
InternalError.Dispatch |
An error occurred when you dispatched the request. |
Une erreur s'est produite lors de l'envoi de la requête. Réessayez ultérieurement. |
Pour obtenir la liste des codes d'erreur, consultez les Codes d'erreur de service.