Crée et exécute une commande Cloud Assistant sur une ou plusieurs instances ECS. Cette opération prend en charge les scripts Shell, PowerShell et Bat, et fournit des fonctionnalités telles que l'exécution planifiée, les paramètres personnalisés et l'exécution de commandes 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, vous pouvez appeler DescribeInvocations ou DescribeInvocationResults avec l'identifiant de commande ou l'identifiant d'appel renvoyé pour interroger les résultats d'exécution.
Avant de commencer
L'instance cible doit être à l'état Running. Vous pouvez appeler DescribeInstances pour interroger l'état de l'instance.
- L'instance cible doit disposer de 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 module PowerShell est configuré sur le système d'exploitation Windows de l'instance ECS cible. Agent Cloud Assistant
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.
-
L'agent Cloud Assistant doit être à l'une des versions suivantes ou à une version ultérieure 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 spécification d'une année ou d'un fuseau horaire pour l'exécution planifiée basée sur Cron). Si le code d'erreur ClientNeedUpgrade est renvoyé, consultez Mettre à niveau ou désactiver les mises à niveau de l'agent Cloud Assistant 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.
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 obtenir 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 peut comporter jusqu'à 128 caractères. |
testName |
| Description |
string |
Non |
La description de la commande. Tous les jeux de caractères sont pris en charge. La description peut comporter jusqu'à 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 peut comporter jusqu'à 200 caractères. Valeurs par défaut :
|
/home/user |
| Timeout |
integer |
Non |
Le délai d'attente pour l'exécution de la commande. Unité : secondes. Lorsqu'une commande ne peut pas s'exécuter en raison de problèmes de processus, de modules manquants ou de l'absence de l'agent Cloud Assistant, un délai d'attente se produit. Lorsqu'un délai d'attente 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 spécification 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 une expression Rate), l'exécution unique à une heure spécifiée et l'exécution planifiée basée sur l'horloge (basée sur une expression Cron).
|
0 */20 * * * ? |
| Parameters |
object |
Non |
Les paires clé-valeur des paramètres personnalisés à transmettre lorsque la commande contient 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 son 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 (non sensibles à la casse) :
Valeur par défaut : PlainText. Si une valeur non valide est spécifiée, elle est traitée comme PlainText. |
Base64 |
| Username |
string |
Non |
Le nom d'utilisateur pour l'exécution de la commande sur l'instance ECS. La valeur peut comporter jusqu'à 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. Le nom peut comporter jusqu'à 255 caractères. Si 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 d'Operations Management dans les paramètres et spécifiez uniquement le nom du mot de passe ici. Pour plus d'informations, consultez Paramètres de chiffrement et Configurer un utilisateur standard pour exécuter des commandes Cloud Assistant. Remarque
Vous n'avez pas besoin de spécifier ce paramètre si vous exécutez la commande 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 des identifiants d'instances ECS. Longueur du tableau : de 1 à 100. Si l'une des instances spécifiées ne remplit pas les conditions pour exécuter la commande, vous devez resélectionner les instances. Vous pouvez également demander une augmentation de quota dans Quota Center (nom du quota : nombre maximum d'instances pouvant exécuter des commandes). |
i-bp185dy2o3o6neg**** |
|
string |
Non |
L'identifiant de l'instance ECS. |
i-bp185dy2o3o6neg**** |
|
| Tag |
array<object> |
Non |
Les balises. Longueur du tableau : de 0 à 20. |
|
|
object |
Non |
La balise. |
||
| Key |
string |
Non |
La clé de balise à utiliser lors 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 attachées à toutes les balises spécifié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é de balise peut comporter jusqu'à 64 caractères et ne peut pas commencer par aliyun ou acs:. Elle ne peut pas contenir http:// ou https://. |
TestKey |
| Value |
string |
Non |
La valeur de balise de l'exécution de la commande. La valeur peut être une chaîne vide. La valeur de balise peut comporter jusqu'à 128 caractères et ne peut pas contenir http:// ou https://. |
TestValue |
| ContainerId |
string |
Non |
L'identifiant du conteneur. Seules les chaînes hexadécimales de 64 bits sont prises en charge. Vous pouvez utiliser le préfixe Précautions :
Remarque
Seuls les scripts Shell sont pris en charge dans les conteneurs Linux. Vous ne pouvez pas utiliser un format tel que |
ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea**** |
| ContainerName |
string |
Non |
Le nom du conteneur. Précautions :
Remarque
Seuls les scripts Shell sont pris en charge dans les conteneurs Linux. Vous ne pouvez pas utiliser un format tel que |
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 assurez-vous 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 d'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 ayant 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 ayant les mêmes balises sans spécifier InstanceId. |
||
| Key |
string |
Non |
La clé de balise utilisée pour filtrer les instances. Précautions :
|
TestKey |
| Value |
string |
Non |
La valeur de balise utilisée pour filtrer les instances. Précautions :
|
TestValue |
| TerminationMode |
string |
Non |
Le mode d'arrêt de la tâche (arrêt manuel ou interruption par délai d'attente). 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 |
|||
| CommandId |
string |
L'identifiant de la commande. |
c-7d2a745b412b4601b2d47f6a768d**** |
| InvokeId |
string |
L'identifiant d'appel. |
t-7d2a745b412b4601b2d47f6a768d**** |
| RequestId |
string |
L'identifiant de la requête. |
473469C7-AA6F-4DC5-B3DB-A3DC0DE3**** |
Exemples
JSON format
{
"CommandId": "c-7d2a745b412b4601b2d47f6a768d****",
"InvokeId": "t-7d2a745b412b4601b2d47f6a768d****",
"RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****"
}
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. | L'opération API n'est pas prise en charge dans la région spécifiée. Vérifiez si la valeur du paramètre RegionId est correcte. |
| 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 dépasse la limite maximale. Vous pouvez spécifier jusqu'à 20 balises pour cette opération. |
| 400 | InvalidTagValue.Malformed | The specified Tag.n.Value is not valid. | Le paramètre de valeur de balise spécifié n'est pas valide. |
| 400 | Duplicate.TagKey | The Tag.N.Key contain duplicate key. | Des clés en double existent dans les balises. Assurez-vous que toutes les clés sont uniques. |
| 400 | InvalidTagKey.Malformed | The specified Tag.n.Key is not valid. | Le paramètre de clé de balise spécifié n'est pas valide. |
| 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 idempotent spécifié est invalide. |
| 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. | La valeur du paramètre CommandContent spécifié ne peut pas être décodée en Base64. Vérifiez si la valeur du paramètre est correcte. |
| 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. | Les noms de paramètres ne peuvent pas être dupliqués. Vérifiez les noms 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 la fonctionnalité de paramètres personnalisés de la commande est désactivée. |
| 400 | InvalidParameter.WorkingDir | The specified parameter WorkingDir is not valid. | Le paramètre WorkingDir spécifié est invalide. |
| 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é n'est pas valide. |
| 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 | InvalidParameterCharacter | The specified parameter %s contains illegal characters. | |
| 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. | Le contenu de votre commande est trop long. Simplifiez le contenu de votre commande. |
| 403 | CmdName.ExceedLimit | The length of the command name exceeds the upper limit. | Le nom de la commande dépasse la longueur maximale. |
| 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. | Le nom de votre paramètre personnalisé dépasse la limite de longueur. |
| 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'exécutions de commandes dans la région actuelle a atteint le quota quotidien. |
| 403 | ParameterCount.ExceedLimit | The number of command parameters exceeds the maximum number that can be set. | Le nombre de paramètres dépasse le maximum autorisé. |
| 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'opération n'est pas autorisée. |
| 403 | IdempotentParameterMismatch | The specified parameter has changed while using an already used clientToken. | Les paramètres de la requête ne correspondent pas à la requête utilisant le même ClientToken. |
| 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 ultérieurement. |
| 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. |
| 403 | InvalidParameterCharset.Parameters | The parameter Parameters contains illegal charset. | Le paramètre de commande contient des caractères invalides. |
| 403 | CreateServiceLinkedRole.NoPermission | You do not have permission to create ServiceLinkedRole for output delivery. | Vous n'avez pas l'autorisation de créer des rôles liés à un service. |
| 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. | Le paramètre RegionId spécifié n'existe pas. Vérifiez si le produit est disponible dans cette région. |
| 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 DescribeCommands pour interroger toutes les valeurs CommandId disponibles. |
| 404 | InvalidResourceGroup.NotFound | The ResourceGroup provided does not exist in our records. | Le groupe de ressources est introuvable dans les enregistrements. |
| 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.