Utilisation de paramètres dans Parameter Store utilisant Run Command commands - 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.

Utilisation de paramètres dans Parameter Store utilisant Run Command commands

Vous pouvez travailler avec des paramètres dans Run Command, une capacité de AWS Systems Manager. Pour de plus amples informations, veuillez consulter AWS Systems Manager Run Command.

Exécuter un paramètre String à l'aide de la console

La procédure suivante vous guide à travers le processus d'exécution d'une commande utilisant un paramètre String.

Pour exécuter un paramètre de chaîne à l'aide de Parameter Store
  1. Ouvrez la AWS Systems Manager console à l'adresse https://console.aws.amazon.com/systems-manager/.

  2. Dans le volet de navigation, choisissez Run Command.

  3. Sélectionnez Run Command (Exécuter la commande).

  4. Dans la liste Command document (Document de commande), sélectionnez AWS-RunPowerShellScript (Windows) ou AWS-RunShellScript (Linux).

  5. Pour Command parameters (Paramètres de commande), entrez echo {{ssm:parameter-name}}. olpPar exemple : echo {{ssm:/Test/helloWorld}}.

  6. Dans la section Targets (Cibles), sélectionnez les nœuds gérés sur lesquels vous souhaitez exécuter cette opération en spécifiant des balises, en sélectionnant des instances ou des appareils de périphérie manuellement ou en spécifiant un groupe de ressources.

    Astuce

    Si, contrairement à vos attentes, un nœud géré ne figure pas dans la liste, consultez Résolution des problèmes de disponibilité des nœuds gérés pour obtenir des conseils de dépannage.

  7. Pour Autres paramètres :

    • Pour Comment (Commentaire), saisissez des informations à propos de cette commande.

    • Pour Délai (secondes), précisez le nombre de secondes durant lesquelles le système doit attendre avant de mettre en échec l'exécution de la commande globale.

  8. Pour Rate control (Contrôle de débit) :

    • Dans Concurrency (Simultanéité), spécifiez un nombre ou un pourcentage de nœuds gérés sur lesquels exécuter simultanément la commande.

      Note

      Si vous avez sélectionné des cibles en spécifiant les balises appliquées aux nœuds gérés ou en spécifiant des groupes de ressources AWS , et que vous n'êtes pas certain du nombre de nœuds gérés ciblés, limitez le nombre de cibles autorisées à exécuter simultanément le document en indiquant un pourcentage.

    • Dans Error threshold (Seuil d'erreur), indiquez quand arrêter l'exécution de la commande sur les autres nœuds gérés après l'échec de celle-ci sur un certain nombre ou un certain pourcentage de nœuds. Si, par exemple, vous spécifiez trois erreurs, Systems Manager cesse d'envoyer la commande à la réception de la quatrième erreur. Les nœuds gérés sur lesquels la commande est toujours en cours de traitement peuvent également envoyer des erreurs.

  9. (Facultatif) Pour Output options (Options de sortie), pour enregistrer la sortie de la commande dans un fichier, cochez la case Write command output to an S3 bucket (Écrire la sortie de commande vers un compartiment S3). Saisissez les noms de compartiment et de préfixe (dossier) dans les zones.

    Note

    Les autorisations S3 qui permettent d'écrire les données dans un compartiment S3 sont celles du profil d'instance (pour les EC2 instances) ou du rôle de IAM service (machines activées par des hybrides) attribué à l'instance, et non celles de l'IAMutilisateur effectuant cette tâche. Pour plus d'informations, consultez Configurer les autorisations d'instance requises pour Systems Manager ou Créer un rôle de IAM service pour un environnement hybride. En outre, si le compartiment S3 spécifié se trouve dans un autre compartiment Compte AWS, assurez-vous que le profil d'instance ou le rôle de IAM service associé au nœud géré dispose des autorisations nécessaires pour écrire dans ce compartiment.

  10. Dans la section SNSdes notifications, si vous souhaitez que des notifications soient envoyées concernant le statut de l'exécution de la commande, cochez la case Activer SNS les notifications.

    Pour plus d'informations sur la configuration des SNS notifications Amazon pour Run Command, voir Surveillance des changements de statut de Systems Manager à l'aide SNS des notifications Amazon.

  11. Cliquez sur Exécuter.

  12. Sur la page Command ID (ID de commande) dans la zone Targets and outputs (Cibles et sorties) sélectionnez le bouton en regard de l'ID d'un nœud dans lequel vous avez exécuté la commande, puis sélectionnez View output (Afficher la sortie). Vérifiez que la sortie de la commande est la valeur que vous avez fournie pour le paramètre, par exemple, This is my first parameter.

Exécutez un paramètre à l'aide du AWS CLI

Exemple 1 : commande simple

L'exemple de commande suivant inclut un paramètre Systems Manager appelé DNS-IP. La valeur de ce paramètre est simplement l'adresse IP d'un nœud. Cet exemple utilise une commande AWS Command Line Interface (AWS CLI) pour faire écho à la valeur du paramètre.

Linux & macOS
aws ssm send-command \ --document-name "AWS-RunShellScript" \ --document-version "1" \ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" \ --parameters "commands='echo {{ssm:DNS-IP}}'" \ --timeout-seconds 600 \ --max-concurrency "50" \ --max-errors "0" \ --region us-east-2
Windows
aws ssm send-command ^ --document-name "AWS-RunPowerShellScript" ^ --document-version "1" ^ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" ^ --parameters "commands='echo {{ssm:DNS-IP}}'" ^ --timeout-seconds 600 ^ --max-concurrency "50" ^ --max-errors "0" ^ --region us-east-2

La commande renvoie des informations telles que les suivantes.

{
    "Command": {
        "CommandId": "c70a4671-8098-42da-b885-89716EXAMPLE",
        "DocumentName": "AWS-RunShellScript",
        "DocumentVersion": "1",
        "Comment": "",
        "ExpiresAfter": "2023-12-26T15:19:17.771000-05:00",
        "Parameters": {
            "commands": [
                "echo {{ssm:DNS-IP}}"
            ]
        },
        "InstanceIds": [],
        "Targets": [
            {
                "Key": "instanceids",
                "Values": [
                    "i-02573cafcfEXAMPLE"
                ]
            }
        ],
        "RequestedDateTime": "2023-12-26T14:09:17.771000-05:00",
        "Status": "Pending",
        "StatusDetails": "Pending",
        "OutputS3Region": "us-east-2",
        "OutputS3BucketName": "",
        "OutputS3KeyPrefix": "",
        "MaxConcurrency": "50",
        "MaxErrors": "0",
        "TargetCount": 0,
        "CompletedCount": 0,
        "ErrorCount": 0,
        "DeliveryTimedOutCount": 0,
        "ServiceRole": "",
        "NotificationConfig": {
            "NotificationArn": "",
            "NotificationEvents": [],
            "NotificationType": ""
        },
        "CloudWatchOutputConfig": {
            "CloudWatchLogGroupName": "",
            "CloudWatchOutputEnabled": false
        },
        "TimeoutSeconds": 600,
        "AlarmConfiguration": {
            "IgnorePollAlarmFailure": false,
            "Alarms": []
        },
        "TriggeredAlarms": []
    }
}

Une fois l’exécution d’une commande terminée, vous pouvez afficher plus d’informations à son sujet à l’aide des commandes suivantes :

  • get-command-invocation : affiche des informations détaillées sur l’exécution de la commande.

  • list-command-invocations : affiche l’état d’exécution des commandes sur un nœud géré spécifique.

  • list-commands : affiche l’état d’exécution des commandes sur les nœuds gérés.

Exemple 2 : déchiffrer une valeur de paramètre SecureString

L'exemple de commande suivant utilise un SecureString paramètre nommé SecurePassword. La commande utilisée dans le champ parameters récupère et déchiffre la valeur du paramètre SecureString, puis réinitialise le mot de passe administrateur local sans avoir à le transmettre en texte clair.

Linux
aws ssm send-command \ --document-name "AWS-RunShellScript" \ --document-version "1" \ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" \ --parameters '{"commands":["secure=$(aws ssm get-parameters --names SecurePassword --with-decryption --query Parameters[0].Value --output text --region us-east-2)","echo $secure | passwd myuser --stdin"]}' \ --timeout-seconds 600 \ --max-concurrency "50" \ --max-errors "0" \ --region us-east-2
Windows
aws ssm send-command ^ --document-name "AWS-RunPowerShellScript" ^ --document-version "1" ^ --targets "Key=instanceids,Values=i-02573cafcfEXAMPLE" ^ --parameters "commands=['$secure = (Get-SSMParameterValue -Names SecurePassword -WithDecryption $True).Parameters[0].Value','net user administrator $secure']" ^ --timeout-seconds 600 ^ --max-concurrency "50" ^ --max-errors "0" ^ --region us-east-2
Exemple 3 : référencer un paramètre dans un SSM document

Vous pouvez également référencer les paramètres de Systems Manager dans la section Paramètres d'un SSM document, comme illustré dans l'exemple suivant.

{ "schemaVersion":"2.0", "description":"Sample version 2.0 document v2", "parameters":{ "commands" : { "type": "StringList", "default": ["{{ssm:parameter-name}}"] } }, "mainSteps":[ { "action":"aws:runShellScript", "name":"runShellScript", "inputs":{ "runCommand": "{{commands}}" } } ] }

Ne confondez pas la syntaxe similaire pour les paramètres locaux utilisée dans la runtimeConfig section des SSM documents avec Parameter Store paramètres. Un paramètre local est différent d'un paramètre Systems Manager. Vous pouvez distinguer les paramètres locaux des paramètres Systems Manager par l'absence du préfixe ssm:.

"runtimeConfig":{ "aws:runShellScript":{ "properties":[ { "id":"0.aws:runShellScript", "runCommand":"{{ commands }}", "workingDirectory":"{{ workingDirectory }}", "timeoutSeconds":"{{ executionTimeout }}"
Note

SSMles documents ne prennent pas en charge les références aux SecureString paramètres. Cela signifie que pour utiliser SecureString des paramètres avec, par exemple, Run Command, vous devez récupérer la valeur du paramètre avant de la transmettre à Run Command, comme le montrent les exemples suivants.

Linux & macOS
value=$(aws ssm get-parameters --names parameter-name --with-decryption)
aws ssm send-command \ --name AWS-JoinDomain \ --parameters password=$value \ --instance-id instance-id
Windows
aws ssm send-command ^ --name AWS-JoinDomain ^ --parameters password=$value ^ --instance-id instance-id
Powershell
$secure = (Get-SSMParameterValue -Names parameter-name -WithDecryption $True).Parameters[0].Value | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -argumentlist user-name,$secure