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 d’AWS Systems Manager, pour exécuter des commandes sur une flotte de nœuds gérés à l’aide des targets. 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, veuillez consulter la rubrique Balisage de vos ressources AWS dans le Guide de l'utilisateur du balisage des ressources AWS. Pour plus d'informations sur le balisage des appareils IoT gérés, consultez.Baliser vos ressources AWS IoT Greengrass Version 2 dans le Guide du développeur AWS IoT Greengrass Version 2.
Vous pouvez aussi utiliser le paramètre targets pour cibler une liste d'ID de nœud géré spécifiques, tel que décrit dans la section suivante.
Pour contrôler l'exécution d'une commande sur des centaines de milliers de nœuds gérés, la fonctionnalité Run Command inclut également des paramètres pour limiter le nombre de nœuds gérés pouvant traiter simultanément une demande et le nombre d'erreurs pouvant être émises par une commande avant que la commande ne prenne fin.
Table des matières
Ciblage de plusieurs nœuds gérés
Vous pouvez exécuter une commande et cibler des nœuds gérés en spécifiant des balises, des noms de groupes de ressources AWS ou des ID de nœud géré.
Les exemples suivants montrent le format de commande lorsque vous utilisez Run Command depuis la AWS Command Line Interface (AWS CLI). Remplacez chaque example resource placeholder (espace réservé pour les ressources) avec vos propres informations. Les exemples de commandes de cette section sont tronqués à l'aide de [...].
Exemple 1 : ciblage de balises
Exemple 2 : ciblage d'un groupe de ressources AWS par 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 pouvoir envoyer des commandes qui ciblent un groupe de ressources, vous devez avoir reçu des autorisations AWS Identity and Access Management (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 3 : ciblage d'un groupe de ressources AWS 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 : ciblage des ID d'instance
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 appareils Core AWS IoT Greengrass gérés car chaque appareil se voit affecter un mi-ID_number. Vous pouvez voir les ID des appareils dans Fleet Manager, un outil d’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 :