Configurer des journaux Amazon CloudWatch Logs pour Run Command - AWS Systems Manager

AWS Systems ManagerChange Managern'est plus ouvert aux nouveaux clients. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez AWS Systems ManagerChange Managerla section Modification de la disponibilité.

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.

Configurer des journaux Amazon CloudWatch Logs pour Run Command

Lorsque vous envoyez une commande à l’aide de Run Command, un des outils d’AWS Systems Manager, vous pouvez spécifier où vous souhaitez envoyer la sortie 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). Ou bien vous pouvez spécifier Amazon CloudWatch Logs. Si vous spécifiez CloudWatch Logs, Run Command envoie périodiquement toutes les sorties de commande et tous les journaux d'erreur vers 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 qu'il utilise les politiques gérées AWS Identity and Access Management (IAM) AmazonSSMManagedInstanceCore et CloudWatchAgentServerPolicy, votre nœud ne requière aucune configuration supplémentaire pour envoyer la sortie vers CloudWatch Logs. Sélectionnez cette option si vous envoyez des commandes à partir de la console, ou d'ajouter la section cloud-watch-output-config et le paramètre CloudWatchOutputEnabled si vous utilisez l'AWS Command Line Interface (AWS CLI), les AWS Tools for Windows PowerShell ou une opération d'API. La section cloud-watch-output-config et le paramètre CloudWatchOutputEnabled sont décrits plus en détail ultérieurement dans cette rubrique.

Pour obtenir des informations sur l’ajout de politiques à un profil d’instance pour des instances EC2, consultez la section Configurer des autorisations d’instance requises pour Systems Manager. Pour plus d’informations sur l’ajout de politiques à un rôle de service pour les serveurs sur site 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 à jour la politique au niveau de chaque nœud afin de permettre à Systems Manager d'envoyer les sorties et les journaux à CloudWatch 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écifier CloudWatch Logs lorsque vous envoyez des commandes

Pour spécifier CloudWatch Logs en tant que sortie lorsque vous envoyez une commande à partir d'AWS Management Console, sélectionnez CloudWatch Output (Sortie CloudWatch) dans la section Output options (Options de sortie). Si vous le souhaitez, vous pouvez 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 de l'AWS CLI, vous devez spécifier la section cloud-watch-output-config 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}'

Afficher une sortie de commande dans CloudWatch Logs

Dès que la commande s'exécute, Systems Manager envoie la sortie dans CloudWatch Logs quasiment en temps réel. Dans CloudWatch Logs, la sortie 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 sortie de la commande telle qu'elle s'affiche 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