Crée et exécute une commande Cloud Assistant sur une ou plusieurs instances ECS. Prend en charge les types de scripts Shell, PowerShell ou Bat, et fournit des fonctionnalités telles que l'exécution planifiée, les paramètres personnalisés et l'exécution dans des conteneurs sur les instances.
Description de l'opération
Il s'agit d'une opération asynchrone. Une fois la requête envoyée avec succès, vous pouvez appeler DescribeInvocations ou DescribeInvocationResults pour interroger les résultats de l'exécution en utilisant l'identifiant de commande ou l'identifiant d'appel renvoyé.
Avant de commencer
L'instance cible doit être dans l'état Running. Vous pouvez appeler DescribeInstances pour interroger l'état de l'instance.
- L'instance cible doit avoir l'agent Cloud Assistant installé. Vous pouvez l'installer en appelant InstallCloudAssistant et vérifier l'état de l'installation en appelant DescribeCloudAssistantStatus.
Remarque
Les instances ECS créées à partir d'images publiques après le 1er décembre 2017 sont préinstallées avec l'agent Cloud Assistant par défaut.
Pour exécuter des commandes PowerShell, assurez-vous que le système d'exploitation Windows sur l'instance ECS cible a le module PowerShell configuré.
Précautions
-
Dans une même région, vous pouvez conserver de 500 à 50 000 commandes Cloud Assistant. Vous pouvez également demander une augmentation de quota. Pour plus d'informations, consultez Gestion des quotas.
-
La version de l'agent Cloud Assistant ne doit pas être antérieure aux versions suivantes pour prendre en charge les nouvelles fonctionnalités des tâches planifiées (exécution à intervalles fixes, exécution unique à une heure spécifiée et exécution planifiée basée sur Cron avec année ou fuseau horaire spécifié). Si le code d'erreur ClientNeedUpgrade est renvoyé, consultez Mettre à niveau ou désactiver les mises à niveau de Cloud Assistant Agent pour mettre à jour l'agent vers la dernière version.
- Linux : 2.2.3.282 - Windows : 2.1.3.282 -
Lorsque vous exécutez une tâche planifiée basée sur Cron avec un fuseau horaire spécifié, l'heure d'exécution planifiée est basée sur le fuseau horaire spécifié. Lorsque vous ne spécifiez pas de fuseau horaire, l'heure d'exécution planifiée est basée sur le fuseau horaire du système de l'instance ECS, et l'heure d'exécution est déterminée par l'heure système de l'instance. Assurez-vous que l'heure ou le fuseau horaire de l'instance ECS correspond à vos attentes. Pour plus d'informations sur les fuseaux horaires, consultez Configurer le fuseau horaire et le service NTP pour une instance Linux ou Configurer le service NTP pour une instance Windows.
Recommandations
- Paramètres de délai d'expiration : Vous pouvez spécifier le paramètre Timeout pour définir le délai d'expiration maximal pour l'exécution de la commande sur une instance ECS. Lorsqu'une commande expire, l'agent Cloud Assistant arrête de force le processus.
Après l'expiration d'une exécution unique, l'état d'exécution (InvokeRecordStatus) passe à échec d'exécution (Failed).
Pour les exécutions planifiées, le délai d'expiration s'applique à chaque enregistrement d'exécution. Un délai d'expiration lors de l'exécution précédente n'affecte pas l'exécution suivante. Après un délai d'expiration, l'état d'exécution (InvokeRecordStatus) passe à échec d'exécution (Failed).
Échecs d'exécution : Une commande peut échouer en raison d'un état anormal de l'instance cible, d'exceptions réseau ou d'exceptions de l'agent Cloud Assistant. Lorsqu'une commande échoue, aucune information d'exécution n'est générée. Pour plus d'informations, consultez Erreurs courantes et solutions pour les échecs d'exécution.
Paramètres personnalisés : Lorsque EnableParameter=true, la fonctionnalité de paramètres personnalisés est activée. Lors de la définition de CommandContent, vous pouvez définir des paramètres personnalisés au format {{parameter}} et transmettre des paires clé-valeur de paramètres personnalisés lors de l'exécution de la commande.
Testez maintenant
Testez cette API dans OpenAPI Explorer, sans signature manuelle. Les appels réussis génèrent automatiquement du code SDK correspondant à vos paramètres. Téléchargez-le avec une sécurité intégrée des identifiants pour une utilisation locale. Testez cette API dans OpenAPI Explorer, sans signature manuelle. Les appels réussis génèrent automatiquement du code SDK correspondant à vos paramètres. Téléchargez-le avec une sécurité intégrée des identifiants pour une utilisation locale.
Test
Autorisation RAM
|
ecs:RunCommand |
update |
*Instance.
|
|
Aucune |
Paramètres de requête
|
Paramètre |
Type |
Requis |
Description |
Exemple |
| RegionId |
string |
Oui |
L'identifiant de la région. Vous pouvez appeler DescribeRegions pour interroger la liste des régions la plus récente. |
cn-hangzhou |
| ResourceGroupId |
string |
Non |
L'identifiant du groupe de ressources pour l'exécution de la commande. Lorsque ce paramètre est spécifié :
|
rg-bp67acfmxazb4p**** |
| Name |
string |
Non |
Le nom de la commande. Tous les jeux de caractères sont pris en charge. Le nom ne peut pas dépasser 128 caractères. |
testName |
| Description |
string |
Non |
La description de la commande. Tous les jeux de caractères sont pris en charge. La description ne peut pas dépasser 512 caractères. |
testDescription |
| Type |
string |
Oui |
Le type de commande. Valeurs valides :
|
RunShellScript |
| CommandContent |
string |
Oui |
Le contenu de la commande. Le contenu de la commande peut être en texte brut ou encodé en Base64. Notez les points suivants :
|
ZWNobyAxMjM= |
| WorkingDir |
string |
Non |
Le répertoire de travail de la commande sur l'instance ECS. La valeur ne peut pas dépasser 200 caractères. Valeurs par défaut :
|
/home/user |
| Timeout |
integer |
Non |
Le délai d'expiration pour l'exécution de la commande. Unité : secondes. Un délai d'expiration se produit lorsqu'une commande ne peut pas être exécutée en raison de problèmes de processus, de modules manquants ou de l'absence de Cloud Assistant Agent. Lorsqu'un délai d'expiration se produit, le processus de commande est arrêté de force. Valeur par défaut : 60. |
3600 |
| EnableParameter |
boolean |
Non |
Indique si la commande contient des paramètres personnalisés. Valeur par défaut : false. |
false |
| RepeatMode |
string |
Non |
Le mode d'exécution de la commande. Valeurs valides :
Valeurs par défaut :
Précautions :
|
Once |
| Timed |
boolean |
Non |
[Deprecated] Ce paramètre est obsolète. La transmission de ce paramètre n'a aucun effet. |
true |
| Frequency |
string |
Non |
La planification pour l'exécution de la commande. Trois méthodes de planification sont prises en charge : l'exécution à intervalles fixes (basée sur les expressions Rate), l'exécution unique à une heure spécifiée et l'exécution planifiée basée sur l'horloge (basée sur les expressions Cron).
|
0 */20 * * * ? |
| Parameters |
object |
Non |
Les paires clé-valeur des paramètres personnalisés à transmettre lors de l'exécution d'une commande contenant des paramètres personnalisés. Par exemple, si le contenu de la commande est Le nombre de paramètres personnalisés varie de 0 à 10. Notez les points suivants :
Valeur par défaut : vide, ce qui désactive les paramètres personnalisés. |
{"name":"Jack", "accessKey":"LTAI*************"} |
| KeepCommand |
boolean |
Non |
Indique s'il faut conserver la commande après l'exécution. Valeurs valides :
Valeur par défaut : false. |
false |
| ContentEncoding |
string |
Non |
La méthode d'encodage du contenu de la commande (CommandContent). Valeurs valides (insensibles à la casse) :
Valeur par défaut : PlainText. Les valeurs non valides sont traitées comme PlainText. |
Base64 |
| Username |
string |
Non |
Le nom d'utilisateur pour l'exécution de la commande sur l'instance ECS. La valeur ne peut pas dépasser 255 caractères.
Vous pouvez également spécifier un autre utilisateur existant sur l'instance pour exécuter la commande. L'exécution des commandes Cloud Assistant en tant qu'utilisateur standard est plus sécurisée. Pour plus d'informations, consultez Configurer un utilisateur standard pour exécuter des commandes Cloud Assistant. |
test |
| WindowsPasswordName |
string |
Non |
Le nom du mot de passe de l'utilisateur qui exécute la commande sur une instance Windows. La valeur ne peut pas dépasser 255 caractères. Lorsque vous souhaitez exécuter une commande en tant qu'utilisateur non par défaut (System) sur une instance Windows, vous devez spécifier à la fois Username et ce paramètre. Pour réduire le risque de fuite de mot de passe, stockez le mot de passe en texte brut dans le référentiel de paramètres de la gestion des opérations, et ne transmettez que le nom du mot de passe ici. Pour plus d'informations, consultez Paramètres de chiffrement et Paramètres pour qu'un utilisateur standard exécute des commandes Cloud Assistant. Remarque
Ce paramètre n'est pas requis lorsque vous exécutez des commandes en tant qu'utilisateur root sur une instance Linux ou en tant qu'utilisateur System sur une instance Windows. |
axtSecretPassword |
| InstanceId |
array |
Non |
Le tableau d'identifiants d'instances ECS. Longueur du tableau : de 1 à 100. Si l'une des instances spécifiées ne remplit pas les conditions d'exécution, vous devez resélectionner les instances. Vous pouvez également demander une augmentation de quota dans le Centre de quotas (nom du quota : Nombre maximal d'instances prises en charge pour l'exécution de commandes). |
i-bp185dy2o3o6neg**** |
|
string |
Non |
L'identifiant de l'instance ECS. |
i-bp185dy2o3o6neg**** |
|
| Tag |
array<object> |
Non |
Les paires de balises. Longueur du tableau : de 0 à 20. |
|
|
object |
Non |
La paire de balises. |
||
| Value |
string |
Non |
La valeur de la balise de l'exécution de la commande. La valeur peut être une chaîne vide. La valeur peut comporter jusqu'à 128 caractères et ne peut pas contenir |
TestValue |
| Key |
string |
Non |
La clé de la balise de l'exécution de la commande. Si cette valeur est spécifiée, elle ne peut pas être une chaîne vide. Lorsque vous utilisez une seule balise pour filtrer les ressources, le nombre de ressources sous cette balise ne peut pas dépasser 1 000. Lorsque vous utilisez plusieurs balises pour filtrer les ressources, le nombre de ressources auxquelles toutes les balises spécifiées sont attachées ne peut pas dépasser 1 000. Si le nombre de ressources dépasse 1 000, utilisez l'opération ListTagResources pour interroger les ressources. La clé peut comporter jusqu'à 64 caractères et ne peut pas commencer par |
TestKey |
| ContainerId |
string |
Non |
L'identifiant du conteneur. Seules les chaînes hexadécimales de 64 bits sont prises en charge. Le préfixe Précautions :
Remarque
Seuls les scripts Shell sont pris en charge dans les conteneurs Linux. La spécification d'un interpréteur au début du script au format |
ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea**** |
| ContainerName |
string |
Non |
Le nom du conteneur. Précautions :
Remarque
Seuls les scripts Shell sont pris en charge dans les conteneurs Linux. La spécification d'un interpréteur au début du script au format |
test-container |
| ClientToken |
string |
Non |
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 les différentes requêtes. ClientToken ne peut contenir que des caractères ASCII et ne peut pas dépasser 64 caractères. Pour plus d'informations, consultez Comment garantir l'idempotence. |
123e4567-e89b-12d3-a456-426655440000 |
| OssOutputDelivery |
string |
Non |
La configuration de livraison OSS pour la sortie de l'exécution de la commande.
|
oss://testBucket/testPrefix |
| ResourceTag |
array<object> |
Non |
Les balises utilisées pour filtrer les instances. Longueur du tableau : de 0 à 20. Vous pouvez exécuter des commandes par lots sur des instances avec les mêmes balises sans spécifier InstanceId. |
|
|
object |
Non |
La balise utilisée pour filtrer les instances. Vous pouvez exécuter des commandes par lots sur des instances avec les mêmes balises sans spécifier InstanceId. |
||
| Value |
string |
Non |
La valeur de la balise utilisée pour filtrer les instances. Précautions :
|
TestValue |
| Key |
string |
Non |
La clé de la balise utilisée pour filtrer les instances. Précautions :
|
TestKey |
| TerminationMode |
string |
Non |
Le mode d'arrêt de la tâche (arrêt manuel ou interruption par délai d'expiration). Valeurs valides :
|
ProcessTree |
| Launcher |
string |
Non |
Le programme d'amorçage pour l'exécution du script. La valeur ne peut pas dépasser 1 Ko. |
python3 -u {{ACS::ScriptFileName|Ext(".py")}} |
Éléments de réponse
|
Élément |
Type |
Description |
Exemple |
|
object |
|||
| RequestId |
string |
L'identifiant de la requête. |
473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** |
| CommandId |
string |
L'identifiant de la commande. |
c-7d2a745b412b4601b2d47f6a768d**** |
| InvokeId |
string |
L'identifiant d'appel. |
t-7d2a745b412b4601b2d47f6a768d**** |
Exemples
JSON format
{
"RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
"CommandId": "c-7d2a745b412b4601b2d47f6a768d****",
"InvokeId": "t-7d2a745b412b4601b2d47f6a768d****"
}
Codes d'erreur
|
Code de statut HTTP |
Code d'erreur |
Message d'erreur |
Description |
|---|---|---|---|
| 400 | RegionId.ApiNotSupported | The api is not supported in this region. | Cette API n'est pas prise en charge dans la région actuelle. |
| 400 | ResourceBusy.SlrCreation | The ServiceLinkedRole is still being created or has not taken effect yet. Please try again later. | |
| 400 | MissingParam.InstanceId | The parameter instanceId is missing or empty. | L'identifiant de l'instance est vide. |
| 400 | NumberExceed.Tags | Ensure the number of tag parameters is not greater than 20. | Le nombre de balises spécifiées dépasse la limite. |
| 400 | InvalidTagValue.Malformed | The specified Tag.n.Value is not valid. | La valeur de balise spécifiée n'est pas valide. La valeur de balise peut contenir jusqu'à 128 caractères et ne peut pas contenir "http://" ou "https://". |
| 400 | Duplicate.TagKey | The Tag.N.Key contain duplicate key. | Des clés en double existent dans les balises. Veillez à ce que les clés soient uniques. |
| 400 | InvalidTagKey.Malformed | The specified Tag.n.Key is not valid. | La clé de balise spécifiée n'est pas valide. La clé de balise ne peut pas être vide ou nulle, peut contenir jusqu'à 128 caractères, et ne peut pas commencer par "aliyun" ou "acs:", ni contenir "http://" ou "https://". |
| 400 | MissingParameter.TagKey | You must specify Tag.N.Key. | Spécifiez une clé de balise. |
| 400 | InvalidContainerId.Malformed | The specified parameter ContainerId is not valid. | L'identifiant de conteneur spécifié n'est pas valide. |
| 400 | InvalidContainerName.Malformed | The specified parameter ContainerName is not valid. | Le nom de conteneur spécifié n'est pas valide. |
| 400 | InvalidClientToken.Malformed | The specified parameter clientToken is not valid. | Le paramètre ClientToken spécifié ne respecte pas les exigences de format. Le paramètre doit contenir uniquement des caractères ASCII et ne peut pas dépasser 64 caractères. |
| 400 | CmdParam.EmptyKey | Command parameters can not be empty. | |
| 400 | CmdParam.InvalidParamName | A command parameter name is invalid. | |
| 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. | |
| 400 | MissingParam.Frequency | The frequency must be specified when you create a timed task. | |
| 400 | InvalidParam.Frequency | The specified frequency is invalid. | |
| 400 | ParameterKey.Duplicate | The parameter may not contain duplicate keys. | Le nom du paramètre ne peut pas être dupliqué. Vérifiez le nom et réessayez. |
| 400 | Parameter.NotMatched | The parameters of creation do not match those of invocation. | Les paramètres personnalisés transmis ne correspondent pas aux paramètres personnalisés définis lors de la création de la commande. |
| 400 | WindowsPasswordName.Missed | WindowsPasswordName must be specified when you create a Windows task. | |
| 400 | Parameter.Disabled | Parameters should not be passed when CreateCommand.EnableParameter is false. | Ne transmettez pas de paramètres personnalisés lorsque vous désactivez la fonctionnalité de paramètres personnalisés pour une commande. |
| 400 | InvalidParameter.WorkingDir | The specified parameter WorkingDir is not valid. | Le paramètre WorkingDir spécifié n'est pas valide. |
| 400 | NumberExceed.ResourceTags | The maximum number of ResourceTags is exceeded. | |
| 400 | MissingParameter.ResourceTagKey | You must specify ResourceTag.N.Key. | |
| 400 | InvalidResourceTagKey.Malformed | The specified ResourceTag key is not valid. | |
| 400 | InvalidResourceTagValue.Malformed | The specified ResourceTag value is not valid. | |
| 400 | Duplicate.ResourceTagKey | The ResourceTag contains duplicate keys. | |
| 400 | InvalidResourceTag.InstanceNotFound | InstanceIds are not found by the specified ResourceTag. | |
| 400 | InvalidResourceTag.ConflictWithInstanceIds | The specified param ResourceTag conflicts with InstanceId. | |
| 400 | InvalidOssOutputDelivery.BucketInOtherRegion | The OSS bucket specified in the parameter OssOutputDelivery is in another region. | Le bucket OSS spécifié dans le paramètre OssOutputDelivery se trouve dans une région différente. |
| 400 | InvalidParameter.OssOutputDelivery | The specified parameter OssOutputDelivery is not valid. | Le paramètre OssOutputDelivery spécifié est invalide. |
| 400 | InvalidOssOutputDelivery.KeyPrefixMalformed | The prefix of the OSS key specified in the parameter OssOutputDelivery is not valid. | Le préfixe spécifié dans le paramètre OssOutputDelivery n'est pas valide. |
| 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 plus tard. |
| 403 | InvalidOssOutputDelivery.BucketAccessDenied | The error message returned by the OSS API is: %s | |
| 403 | CmdContent.ExceedLimit | The length of the command content exceeds the upper limit. | La longueur du contenu de la commande dépasse la limite supérieure. |
| 403 | CmdName.ExceedLimit | The length of the command name exceeds the upper limit. | La longueur du nom de la commande dépasse la limite supérieure. |
| 403 | CmdDesc.ExceedLimit | The length of the command description exceeds the upper limit. | La longueur de la description de la commande dépasse la limite supérieure. |
| 403 | CmdCount.ExceedQuota | The total number of commands in the current region exceeds the quota. | Le nombre de commandes Cloud Assistant dans la région actuelle a dépassé la limite. |
| 403 | CmdParamCount.ExceedLimit | You've reached the limit on the count of command parameters. | |
| 403 | CmdParamName.ExceedLimit | The length of the command parameter name exceeds the limit. | La longueur du nom du paramètre personnalisé dans la commande dépasse la limite supérieure. |
| 403 | InstanceIds.ExceedLimit | The number of instance IDs exceeds the upper limit. | Le nombre d'instances cibles dépasse la limite supérieure. |
| 403 | Invocation.ExceedQuota | The invocation quota in the current region has been reached for today. | Le nombre d'opérations d'exécution de commandes dans la région actuelle a atteint le quota du jour. |
| 403 | ParameterCount.ExceedLimit | The number of command parameters exceeds the maximum number that can be set. | Le nombre de paramètres personnalisés dépasse la limite. |
| 403 | ParameterKey.ExceedLimit | The length of the specified parameter key exceeds the maximum length that can be set. | La longueur de la clé de paramètre spécifiée dépasse la longueur maximale autorisée. |
| 403 | ParameterType.NotSupported | The type of parameter value is not supported. | |
| 403 | Username.ExceedLimit | The length of the username exceeds the upper limit. | La longueur du nom d'utilisateur dépasse la limite supérieure. |
| 403 | WindowsPasswordName.ExceedLimit | The length of the WindowsPasswordName exceeds the upper limit. | La longueur du paramètre WindowsPasswordName spécifié dépasse la limite supérieure. |
| 403 | ParameterStore.NotSupported | Parameter Store is not supported in this region. | |
| 403 | TemporaryAccessKey.Error | The temporary accessKey is invalid. | |
| 403 | ParameterStore.InvalidParameters | The parameter is invalid in Parameter Store. | Le paramètre spécifié par {{oos:?}} dans le contenu de la commande n'a pas été trouvé. |
| 403 | ParameterStore.NoPermission | You have no access to Parameter Store. | |
| 403 | OperationDenied.BidOwnResource | Bid user can not own resource. | |
| 403 | Operation.Forbidden | The operation is not permitted. | L'utilisateur RAM actuel ne dispose pas des autorisations nécessaires pour effectuer cette opération. |
| 403 | IdempotentParameterMismatch | The specified parameter has changed while using an already used clientToken. | Le jeton client spécifié a déjà été utilisé. |
| 403 | IdempotentProcessing | The previous idempotent request(s) is still processing. | La requête idempotente précédente est toujours en cours de traitement. Réessayez plus tard. |
| 403 | InvalidStatus.ResourceGroup | You cannot perform an operation on a resource group that is being created or deleted. | Les opérations ne sont pas autorisées pendant la création ou la suppression du groupe de ressources. |
| 403 | InvalidParameterCharacter.CommandName | The command Name contains illegal characters. | Le nom de la commande contient des caractères non valides. |
| 403 | InvalidParameterCharacter.CommandDescription | The command Description contains illegal characters. | La description de la commande contient des caractères non valides. |
| 403 | InvalidParameterCharacter.CommandWorkingDir | The command WorkingDir contains illegal characters. | Le chemin d'exécution de la commande contient des caractères non valides. |
| 403 | InvalidLauncher.LengthLimitExceeded | The length of the parameter Launcher exceeds the limit of 1 KB characters. | La longueur du paramètre Launcher dépasse la limite de 1 Ko de caractères. |
| 403 | InvalidParameterCharset.Parameters | The parameter Parameters contains illegal charset. | Les paramètres de la commande contiennent des jeux de caractères non valides. |
| 403 | CreateServiceLinkedRole.NoPermission | You do not have permission to create ServiceLinkedRole for output delivery. | Vous n'avez pas l'autorisation de créer un rôle lié à un service pour la fonctionnalité de remise des sorties. |
| 403 | InvalidTimeout.ExceedLimit | The specified parameter Timeout exceeds the upper limit. | |
| 404 | InvalidCmdType.NotFound | The specified command type does not exist. | |
| 404 | InvalidRepeatMode.NotFound | The specified repeat mode does not exist. | Le mode d'exécution de commande spécifié n'existe pas. |
| 404 | InvalidRegionId.NotFound | The RegionId provided does not exist in our records. | Les informations de région sont invalides. |
| 404 | InvalidInstance.NotFound | The specified instance does not exist. | L'instance spécifiée n'existe pas. |
| 404 | InvalidCmdId.NotFound | The specified command ID does not exist. | Le paramètre CommandId spécifié n'est pas valide. Vérifiez si la valeur du paramètre est correcte. Vous pouvez appeler l'opération DescribeCommands pour interroger toutes les valeurs CommandId disponibles. |
| 404 | InvalidResourceGroup.NotFound | The ResourceGroup provided does not exist in our records. | Le groupe de ressources correspondant est introuvable. |
| 404 | InvalidTerminationMode.NotFound | The specified parameter TerminationMode does not exist. | Le paramètre TerminationMode spécifié n'existe pas. |
| 404 | InvalidOssOutputDelivery.BucketNotFound | The OSS bucket specified in the parameter OssOutputDelivery does not exist. | Le bucket spécifié dans le paramètre OssOutputDelivery n'existe pas. |
Consultez Codes d'erreur pour la liste complète.
Notes de version
Consultez Notes de version pour la liste complète.