Procédure pas à pas : utilisez le AWS CLIRun Command - AWS Systems Manager

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.

Procédure pas à pas : utilisez le AWS CLIRun Command

L'exemple de procédure pas à pas suivant vous montre comment utiliser le AWS Command Line Interface (AWS CLI) pour afficher des informations sur les commandes et leurs paramètres, comment exécuter des commandes et comment afficher le statut de ces commandes.

Important

Seuls les administrateurs fiables devraient être autorisés à utiliser les documents AWS Systems Manager préconfigurés présentés dans cette rubrique. Les commandes ou scripts spécifiés dans des documents Systems Manager sont exécutés avec des autorisations administratives sur vos nœuds gérés. Si un utilisateur a l'autorisation d'exécuter l'un des documents Systems Manager prédéfinis (tout document qui commence par AWS-), cet utilisateur dispose d'un accès administrateur au nœud. Pour tous les autres utilisateurs, vous devez créer des documents restrictifs et les partager avec des utilisateurs spécifiques.

Étape 1 : Démarrage

Vous devez disposer de autorisations administrateur sur les nœuds gérés que vous souhaitez configurer ou vous devez bénéficier de l'autorisation appropriée dans AWS Identity and Access Management (IAM). Notez également que cet exemple utilise la région USA Est (Ohio) (us-east-2). Run Command est disponible dans les points de terminaison du service Systems Manager Régions AWS répertoriés dans le Référence générale d'Amazon Web Services. Pour de plus amples informations, veuillez consulter Configuration de nœuds gérés pour AWS Systems Manager.

Pour exécuter des commandes à l'aide du AWS CLI
  1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

    Pour de plus amples informations, consultez Installation ou mise à jour de la version la plus récente de l' AWS CLI.

  2. Répertoriez tous les documents disponibles.

    Cette commande répertorie tous les documents disponibles pour votre compte en fonction des autorisations IAM.

    aws ssm list-documents
  3. Vérifier qu'un nœud géré est prêt à recevoir les commandes.

    La sortie de la commande suivante indique si les nœuds gérés sont en ligne.

    Linux & macOS
    aws ssm describe-instance-information \ --output text --query "InstanceInformationList[*]"
    Windows
    aws ssm describe-instance-information ^ --output text --query "InstanceInformationList[*]"
  4. Exécutez la commande suivante pour afficher les détails sur un nœud géré spécifique.

    Note

    Pour exécuter les commandes de cette procédure pas à pas, remplacez l'instance et la commande IDs. Pour les appareils AWS IoT Greengrass principaux gérés, utilisez le mi- par ID_number exemple ID. L'ID de commande est renvoyé en réponse à send-command. IDs Les instances sont disponibles auprès de Fleet Manager, un outil dans AWS Systems Manager...

    Linux & macOS
    aws ssm describe-instance-information \ --instance-information-filter-list key=InstanceIds,valueSet=instance-ID
    Windows
    aws ssm describe-instance-information ^ --instance-information-filter-list key=InstanceIds,valueSet=instance-ID

Étape 2 : Exécuter des scripts shell pour afficher les détails des ressources

Utilisation Run Command et le AWS-RunShellScript document, vous pouvez exécuter n'importe quelle commande ou script sur un nœud géré comme si vous étiez connecté localement.

Afficher la description et les paramètres disponibles

Exécutez la commande suivante pour afficher la description du document JSON Systems Manager.

Linux & macOS
aws ssm describe-document \ --name "AWS-RunShellScript" \ --query "[Document.Name,Document.Description]"
Windows
aws ssm describe-document ^ --name "AWS-RunShellScript" ^ --query "[Document.Name,Document.Description]"

Utilisez la commande suivante afin d'afficher les paramètres disponibles et les détails les concernant.

Linux & macOS
aws ssm describe-document \ --name "AWS-RunShellScript" \ --query "Document.Parameters[*]"
Windows
aws ssm describe-document ^ --name "AWS-RunShellScript" ^ --query "Document.Parameters[*]"

Étape 3 : Envoyer des commandes simples à l'aide du document AWS-RunShellScript

Utilisez la commande suivante afin d'obtenir des informations IP pour un nœud géré Linux.

Si vous ciblez un Windows Server nœud géré, modifiez le document-name point de AWS-RunPowerShellScript et le command point ifconfig deipconfig.

Linux & macOS
aws ssm send-command \ --instance-ids "instance-ID" \ --document-name "AWS-RunShellScript" \ --comment "IP config" \ --parameters commands=ifconfig \ --output text
Windows
aws ssm send-command ^ --instance-ids "instance-ID" ^ --document-name "AWS-RunShellScript" ^ --comment "IP config" ^ --parameters commands=ifconfig ^ --output text
Obtenir des informations sur la commande avec des données de réponse

La commande suivante utilise l'ID de commande qui a été retourné par la commande précédente afin d'obtenir les détails et les données de réponse de l'exécution de la commande. Le système renvoie les données de réponse si la commande a été exécutée. Si l'exécution de la commande indique "Pending" ou "InProgress", vous devrez l'exécuter à nouveau pour consulter les données de réponse.

Linux & macOS
aws ssm list-command-invocations \ --command-id $sh-command-id \ --details
Windows
aws ssm list-command-invocations ^ --command-id $sh-command-id ^ --details

Identification de l'utilisateur

La commande suivante affiche l'utilisateur par défaut qui exécute les commandes.

Linux & macOS
sh_command_id=$(aws ssm send-command \ --instance-ids "instance-ID" \ --document-name "AWS-RunShellScript" \ --comment "Demo run shell script on Linux managed node" \ --parameters commands=whoami \ --output text \ --query "Command.CommandId")
Obtenir le statut de la commande

La commande suivante utilise l'ID de commande afin d'obtenir le statut de l'exécution de la commande sur le nœud géré. Cet exemple utilise l'ID de commande qui a été renvoyé lors de la commande précédente.

Linux & macOS
aws ssm list-commands \ --command-id "command-ID"
Windows
aws ssm list-commands ^ --command-id "command-ID"
Obtenir les détails de la commande

La commande suivante utilise l'ID de la commande précédente afin d'obtenir le statut de l'exécution de la commande par nœud géré.

Linux & macOS
aws ssm list-command-invocations \ --command-id "command-ID" \ --details
Windows
aws ssm list-command-invocations ^ --command-id "command-ID" ^ --details
Obtention d'informations sur la commande avec des données de réponse pour un nœud géré

La commande suivante renvoie la sortie de la demande aws ssm send-command initiale pour un nœud géré spécifique.

Linux & macOS
aws ssm list-command-invocations \ --instance-id instance-ID \ --command-id "command-ID" \ --details
Windows
aws ssm list-command-invocations ^ --instance-id instance-ID ^ --command-id "command-ID" ^ --details

Afficher la version Python

La commande suivante retourne la version de Python exécutée sur un nœud.

Linux & macOS
sh_command_id=$(aws ssm send-command \ --instance-ids "instance-ID" \ --document-name "AWS-RunShellScript" \ --comment "Demo run shell script on Linux Instances" \ --parameters commands='python -V' \ --output text --query "Command.CommandId") \ sh -c 'aws ssm list-command-invocations \ --command-id "$sh_command_id" \ --details \ --query "CommandInvocations[].CommandPlugins[].{Status:Status,Output:Output}"'

Étape 4 : Exécutez un script Python simple en utilisant Run Command

La commande suivante exécute un simple script Python « Hello World » en utilisant Run Command.

Linux & macOS
sh_command_id=$(aws ssm send-command \ --instance-ids "instance-ID" \ --document-name "AWS-RunShellScript" \ --comment "Demo run shell script on Linux Instances" \ --parameters '{"commands":["#!/usr/bin/python","print \"Hello World from python\""]}' \ --output text \ --query "Command.CommandId") \ sh -c 'aws ssm list-command-invocations \ --command-id "$sh_command_id" \ --details \ --query "CommandInvocations[].CommandPlugins[].{Status:Status,Output:Output}"'

Étape 5 : Exécuter un script Bash en utilisant Run Command

Les exemples de cette section montrent comment exécuter le script bash suivant en utilisant Run Command.

Pour des exemples d'utilisation Run Command pour exécuter des scripts stockés sur des sites distants, reportez-vous aux Exécution de scripts à partir d'Amazon S3 sections etExécution de scripts à partir de GitHub.

#!/bin/bash yum -y update yum install -y ruby cd /home/ec2-user curl -O https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/install chmod +x ./install ./install auto

Ce script installe l' AWS CodeDeploy agent sur Amazon Linux et Red Hat Enterprise Linux (RHEL), comme décrit dans la section Créer une EC2 instance Amazon pour CodeDeploy dans le Guide de AWS CodeDeploy l'utilisateur.

Le script installe l' CodeDeploy agent à partir d'un compartiment S3 AWS géré dans la région USA Est (Ohio) (us-east-2),. aws-codedeploy-us-east-2

Exécuter un script bash dans une commande AWS CLI

L'exemple suivant montre comment inclure le script bash dans une commande CLI en utilisant l'option --parameters.

Linux & macOS
aws ssm send-command \ --document-name "AWS-RunShellScript" \ --targets '[{"Key":"InstanceIds","Values":["instance-id"]}]' \ --parameters '{"commands":["#!/bin/bash","yum -y update","yum install -y ruby","cd /home/ec2-user","curl -O https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/install","chmod +x ./install","./install auto"]}'

Exécuter un script bash dans un fichier JSON

Dans l'exemple suivant, le contenu du script bash est stocké dans un fichier JSON, et le fichier est inclus dans la commande en utilisant l'option --cli-input-json.

Linux & macOS
aws ssm send-command \ --document-name "AWS-RunShellScript" \ --targets "Key=InstanceIds,Values=instance-id" \ --cli-input-json file://installCodeDeployAgent.json
Windows
aws ssm send-command ^ --document-name "AWS-RunShellScript" ^ --targets "Key=InstanceIds,Values=instance-id" ^ --cli-input-json file://installCodeDeployAgent.json

L'exemple suivant montre le contenu du fichier installCodeDeployAgent.json référencé.

{ "Parameters": { "commands": [ "#!/bin/bash", "yum -y update", "yum install -y ruby", "cd /home/ec2-user", "curl -O https://aws-codedeploy-us-east-2.s3.amazonaws.com/latest/install", "chmod +x ./install", "./install auto" ] } }