Configuration d'Amazon CloudWatch Logs pour Run 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.

Configuration d'Amazon CloudWatch Logs pour Run Command

Lorsque vous envoyez une commande à l'aide Run Command d'une fonctionnalité de AWS Systems Manager, vous pouvez spécifier où vous souhaitez envoyer le résultat de la commande. Par défaut, Systems Manager renvoie uniquement les 24 000 premiers caractères de la sortie de commande. Si vous souhaitez afficher les détails de la sortie de la commande, vous pouvez spécifier un compartiment Amazon Simple Storage Service (Amazon S3). Vous pouvez également spécifier Amazon CloudWatch Logs. Si vous spécifiez CloudWatch Logs, envoie Run Command régulièrement toutes les sorties de commande et tous les journaux d'erreurs à CloudWatch Logs. Vous pouvez surveiller les journaux de sortie quasiment en temps réel, rechercher des phrases, valeurs ou modèles spécifiques, et créer des alarmes sur la base de la recherche.

Si vous avez configuré votre nœud géré pour utiliser les politiques AmazonSSMManagedInstanceCore gérées AWS Identity and Access Management (IAM)CloudWatchAgentServerPolicy, votre nœud ne nécessite aucune configuration supplémentaire pour envoyer des résultats à CloudWatch Logs. Choisissez cette option si vous envoyez des commandes depuis la console, ou ajoutez la cloud-watch-output-config section et le CloudWatchOutputEnabled paramètre si vous utilisez le AWS Command Line Interface (AWS CLI) ou une opération d'API. AWS Tools for Windows PowerShell La section cloud-watch-output-config et le paramètre CloudWatchOutputEnabled sont décrits plus en détail ultérieurement dans cette rubrique.

Pour plus d'informations sur l'ajout de politiques à un profil d'instance pour les instances EC2, consultez Configurer les autorisations d'instance requises pour Systems Manager. Pour plus d'informations sur l'ajout de politiques à un rôle de service pour les serveurs locaux et les machines virtuelles que vous prévoyez d'utiliser en tant que nœuds gérés, consultez la section Créer le rôle de service IAM requis pour Systems Manager dans les environnements hybrides et multicloud.

Si vous utilisez une politique personnalisée sur vos nœuds, mettez-la à jour pour chaque nœud afin de permettre à Systems Manager d'envoyer des résultats et des CloudWatch journaux à Logs. Ajoutez les objets de politique suivants à votre politique personnalisée. Pour de plus amples informations sur la mise à jour d'une politique IAM, consultez Modification de politiques IAM dans le Guide de l'utilisateur IAM.

{ "Effect": "Allow", "Action": "logs:DescribeLogGroups", "Resource": "*" }, { "Effect":"Allow", "Action":[ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource":"arn:aws:logs:*:*:log-group:/aws/ssm/*" },

Spécification CloudWatch des journaux lorsque vous envoyez des commandes

Pour spécifier CloudWatch les journaux comme sortie lorsque vous envoyez une commande depuis le AWS Management Console, choisissez CloudWatch Sortie dans la section Options de sortie. Vous pouvez éventuellement spécifier le nom du groupe CloudWatch Logs dans lequel vous souhaitez envoyer la sortie de commande. Si vous ne spécifiez pas de nom de groupe, Systems Manager crée automatiquement un groupe de journaux pour vous. Le groupe de journaux est nommé selon le format : /aws/ssm/SystemsManagerDocumentName.

Si vous exécutez des commandes à l'aide du AWS CLI, spécifiez la cloud-watch-output-config section dans votre commande. Cette section vous permet de spécifier le paramètre CloudWatchOutputEnabled, et éventuellement le paramètre CloudWatchLogGroupName. Voici un exemple.

Linux & macOS
aws ssm send-command \ --instance-ids "instance ID" \ --document-name "AWS-RunShellScript" \ --parameters "commands=echo helloWorld" \ --cloud-watch-output-config "CloudWatchOutputEnabled=true,CloudWatchLogGroupName=log group name"
Windows
aws ssm send-command ^ --document-name "AWS-RunPowerShellScript" ^ --parameters commands=["echo helloWorld"] ^ --targets "Key=instanceids,Values=an instance ID” ^ --cloud-watch-output-config '{"CloudWatchLogGroupName":"log group name","CloudWatchOutputEnabled":true}'

Affichage de la sortie des commandes dans CloudWatch les journaux

Dès que la commande commence à s'exécuter, Systems Manager envoie des résultats à CloudWatch Logs en temps quasi réel. La sortie dans CloudWatch Logs utilise le format suivant :

CommandID/InstanceID/PluginID/stdout

CommandID/InstanceID/PluginID/stderr

Le résultat de l'exécution est chargé toutes les 30 secondes ou lorsque le tampon dépasse 200 Ko, selon la situation qui survient en premier.

Note

Les flux de journaux sont uniquement créés lorsque les données de sortie sont disponibles. Par exemple, s'il n'y a pas de données d'erreur pour une exécution, le flux stderr n'est pas créé.

Voici un exemple de la sortie de commande telle qu'elle est affichée dans CloudWatch Logs.

Group - /aws/ssm/AWS-RunShellScript
Streams – 
1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stdout
24/1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stderr