Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exécuter des commandes à grande échelle
Vous pouvez utiliser … Run Command, un outil dans AWS Systems Manager, permettant d'exécuter des commandes sur un parc de nœuds gérés à l'aide dutargets
. Le paramètre targets
accepte une combinaison Key,Value
basée sur les balises que vous avez spécifiées pour vos nœuds gérés. Lorsque vous exécutez la commande, le système recherche les fichiers et tente d'exécuter la commande sur tous les nœuds gérés qui correspondent aux balises spécifiées. Pour plus d'informations sur le balisage des instances gérées, consultez la section Marquage de vos AWS
ressources dans le Guide de l'utilisateur des AWS ressources de balisage. Pour plus d'informations sur le balisage de vos appareils IoT gérés, consultez la section Marquer vos AWS IoT Greengrass Version 2 ressources dans le guide du AWS IoT Greengrass Version 2 développeur.
Vous pouvez également utiliser le targets
paramètre pour cibler une liste de nœuds gérés spécifiques IDs, comme décrit dans la section suivante.
Pour contrôler le mode d'exécution des commandes sur des centaines ou des milliers de nœuds gérés, Run Command inclut également des paramètres permettant de limiter le nombre de nœuds pouvant traiter simultanément une demande et le nombre d'erreurs pouvant être générées par une commande avant son annulation.
Table des matières
Ciblage de plusieurs nœuds gérés
Vous pouvez exécuter une commande et cibler les nœuds gérés en spécifiant des balises, AWS des noms de groupes de ressources ou des nœuds gérés IDs.
Les exemples suivants montrent le format de commande lors de l'utilisation Run Command depuis le AWS Command Line Interface (AWS CLI ). Remplacez chaque example resource
placeholder
par vos propres informations. Les exemples de commandes de cette section sont tronqués à l'aide de [...]
.
Exemple 1 : ciblage de balises
Exemple 2 : Cibler un groupe de AWS ressources par son nom
Vous pouvez spécifier au maximum un nom de groupe de ressources par commande. Lorsque vous créez un groupe de ressources, nous vous recommandons d'inclure AWS::SSM:ManagedInstance
et AWS::EC2::Instance
comme types de ressource dans vos critères de regroupement.
Note
Pour envoyer des commandes ciblant un groupe de ressources, vous devez avoir obtenu des autorisations AWS Identity and Access Management (IAM) pour répertorier ou afficher les ressources appartenant à ce groupe. Pour plus d'informations, consultez Configuration d'autorisations dans le Guide de l'utilisateur AWS Resource Groups .
Exemple 3 : Cibler un groupe de AWS ressources par type de ressource
Vous pouvez spécifier au maximum cinq types de groupe de ressources par commande. Lorsque vous créez un groupe de ressources, nous vous recommandons d'inclure AWS::SSM:ManagedInstance
et AWS::EC2::Instance
comme types de ressource dans vos critères de regroupement.
Note
Pour pouvoir envoyer des commandes qui ciblent un groupe de ressources, vous devez avoir reçu des autorisations IAM pour répertorier, ou afficher, les ressources qui appartiennent à ce groupe. Pour plus d'informations, consultez Configuration d'autorisations dans le Guide de l'utilisateur AWS Resource Groups .
Exemple 4 : instance de ciblage IDs
Les exemples suivants montrent comment cibler les nœuds gérés à l'aide de la clé instanceids
avec le paramètre targets
. Vous pouvez utiliser cette clé pour cibler les AWS IoT Greengrass principaux appareils gérés, car un mi- est attribué à chaque appareilID_number
. Vous pouvez voir l'appareil IDs dans Fleet Manager, un outil dans AWS Systems Manager.
Si vous avez balisé des nœuds gérés pour différents environnements à l'aide d'une Key
nommée Environment
et des Values
de Development
, Test
, Pre-production
et Production
, vous pourrez donc envoyer une commande à tous les nœuds gérés dans l'un de ces environnements à l'aide du paramètre targets
avec la syntaxe suivante.
Vous pouvez cibler des nœuds gérés supplémentaires dans d'autres environnements en ajoutant un élément à la liste Values
. Séparez les éléments avec des virgules.
Variation : affiner vos cibles à l'aide de plusieurs critères Key
Vous pouvez affiner le nombre de cibles pour votre commande en incluant plusieurs critères Key
. Si vous incluez plusieurs critères Key
, le système cible les nœuds gérés qui répondent à tous les critères. La commande suivante cible tous les nœuds gérés balisés pour le service financier et balisés pour le rôle de serveur de base de données.
Variation : utilisation de plusieurs critères Key
et Value
En reprenant l'exemple précédent, vous pouvez cibler plusieurs services et plusieurs rôles de serveur en incluant des éléments supplémentaires dans les critères Values
.
Variation : ciblage de nœuds gérés balisés à l'aide de plusieurs critères Values
Si vous avez balisé des nœuds gérés pour différents environnements à l'aide d'une Key
nommée Department
et Values
de Sales
et Finance
, vous pouvez envoyer une commande à tous les nœuds gérés dans l'un de ces environnements à l'aide du paramètre targets
avec la syntaxe suivante.
Vous pouvez spécifier un maximum de cinq clés et cinq valeurs pour chaque clé.
Si une clé de balise (le nom de la balise) ou une valeur de balise inclut des espaces, placez la clé ou la valeur de balise entre guillemets, comme illustré dans les exemples suivants.
Exemple : espaces dans la balise Value
Exemple : espaces dans la clé tag
et dans Value
Exemple : espaces dans un élément d'une liste de Values
Utilisation des contrôles de taux
Vous pouvez contrôler le taux d'envoi des commandes aux nœuds gérés d'un groupe à l'aide des contrôles de concurrence et des contrôles d'erreur.
Utilisation de contrôles d'accès simultanés
Le contrôle de nombre de nœuds gérés exécutant une commande simultanément est possible à l'aide du max-concurrency
paramètre des options ( Simultanéité de la page Exécuter une commande ). Vous pouvez spécifier un nombre absolu de nœuds géré, par exemple, 10
, ou un pourcentage de l'ensemble de la cible, par exemple, 10%
. Le système de mise en file d'attente transmet la commande à un seul nœud et attend jusqu'à ce que le système reconnaisse l'appel initial avant d'envoyer la commande à deux autres nœuds. Le système envoie de façon exponentielle des commandes à plusieurs nœuds jusqu'à ce que la valeur max-concurrency
soit atteinte. La valeur par défaut de max-concurrency
est 50. Les exemples suivants vous montrent comment spécifier des valeurs pour le paramètre max-concurrency
:
Utilisation de contrôles d'erreur
Vous pouvez également contrôler l'exécution d'une commande sur des centaines ou des milliers de nœuds gérés en définissant une limite d'erreurs à l'aide des paramètres max-errors
(champ Error threshold (Seuil d'erreur) de la page Exécuter une commande). Le paramètre spécifie le nombre d'erreurs autorisées avant que le système cesse d'envoyer la commande d'autres nœuds gérés. Vous pouvez spécifier un nombre absolu d'erreurs (par exemple, 10
) ou un pourcentage de l'ensemble de la cible (par exemple, 10%
). Si, par exemple, vous spécifiez 3
, le système cesse d'envoyer la commande à la réception de la quatrième erreur. Si vous spécifiez 0
, le système cesse d'envoyer la commande à des nœuds gérés supplémentaires une fois que le premier résultat d'erreur est renvoyé. Si vous envoyez une commande à 50 nœuds gérés et que vous définissez max-errors
avec la valeur 10%
, le système arrête d'envoyer la commande aux nœuds gérés supplémentaires à la réception de la sixième erreur.
Les appels qui exécutent déjà une commande lorsque max-errors
est atteint sont autorisés à se terminer, mais certains de ces appels pourraient également échouer. Si vous devez vous assurer que le nombre d'appels ayant échoué ne dépassera pas la valeur de max-errors
, définissez max-concurrency
sur 1
pour que les appels soit exécutés un par un. La valeur par défaut pour max-errors est 0. Les exemples suivants vous montrent comment spécifier des valeurs pour le paramètre max-errors
: