Utilizzo dei parametri tamite i comandi Run Command - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo dei parametri tamite i comandi Run Command

È possibile lavorare con i parametri inRun Command, una capacità di AWS Systems Manager. Per ulteriori informazioni, consulta AWS Systems Manager Run Command.

Eseguire un parametro String (console)

La procedura seguente ti guiderà nel processo di creazione di un parametro in String e quindi nell'esecuzione di un comando che utilizza tale parametro.

Per creare un parametro stringa utilizzando Parameter Store
  1. Apri la AWS Systems Manager console all'indirizzo https://console.aws.amazon.com/systems-manager/.

  2. Nel riquadro di navigazione, scegli Run Command.

  3. Seleziona Run command (Esegui comando).

  4. Nell'elenco Command document (Documento comando) scegliere AWS-RunPowerShellScript (Windows) o AWS-RunShellScript (Linux).

  5. In Command parameters (Parametri comando), immettere echo {{ssm:parameter-name}} Ad esempio: echo {{ssm:/Test/helloWorld}}.

  6. Nella sezione Targets (Destinazioni), identificare i nodi in cui si desidera eseguire questa operazione specificando i tag, selezionando manualmente le istanze, i dispositivi edge o indicando un gruppo di risorse.

    Suggerimento

    Se un nodo gestito che ti aspetti di vedere non è presente nell'elenco, consulta Risoluzione dei problemi relativi alla disponibilità dei nodi gestiti per suggerimenti sulla risoluzione dei problemi.

  7. In Other parameters (Altri parametri):

    • In Comment (Commento) digitare le informazioni su questo comando.

    • In Timeout (seconds) (Timeout [secondi]), specificare il numero di secondi che il sistema dovrà attendere prima di generare un errore per l'intera esecuzione del comando.

  8. Per Rate control (Controllo velocità):

    • In Concurrency (Simultaneità), specificare un numero o una percentuale di nodi gestiti su cui eseguire contemporaneamente il comando.

      Nota

      Se sono state selezionate le destinazioni specificando i tag applicati ai nodi gestiti o specificando gruppi di risorse AWS , e non si conosce con certezza il numero di nodi gestiti di destinazione, limitare il numero di destinazioni che possono eseguire il documento contemporaneamente specificando una percentuale.

    • Per Error threshold (Soglia di errore) specificare quando interrompere l'esecuzione del comando sulle altri nodi gestiti dopo un errore su un numero o una percentuale di nodi. Se ad esempio si specificano 3 errori, Systems Manager interrompe l'invio del comando quando riceve il quarto errore. Anche i nodi gestiti che stanno ancora elaborando il comando potrebbero inviare errori.

  9. (Opzionale) Nella sezione Output options (Opzioni di output), per salvare l'output del comando in un file, selezionare la casella Write command output to an S3 bucket (Scrivi l'output del comando in un bucket S3). Digita i nomi del bucket e del prefisso (cartella) nelle caselle.

    Nota

    Le autorizzazioni S3 che assegnano la possibilità di scrivere dati in un bucket S3 sono quelle del profilo dell'istanza (per istanze EC2) o ruoli di servizio IAM (in macchine attivate da sistemi ibridi) assegnate all'istanza, non quelle dell'utente IAM che esegue questo processo. Per ulteriori informazioni, consulta Configurare le autorizzazioni di istanza richieste per Systems Manager o Creare un ruolo di servizio IAM per un ambiente ibrido. Inoltre, se il bucket S3 specificato si trova in un altro bucket Account AWS, assicurati che il profilo di istanza o il ruolo del servizio IAM associato al nodo gestito disponga delle autorizzazioni necessarie per scrivere su quel bucket.

  10. Se si desidera che vengano inviate notifiche sullo stato dell'esecuzione del comando, nella sezione SNS notifications (Notifiche SNS) selezionare la casella di controllo Enable SNS notifications (Abilita notifiche SNS).

    Per ulteriori informazioni sulla configurazione delle notifiche Amazon SNS per Run Command, consulta Monitoraggio delle modifiche di stato di Systems Manager utilizzando le notifiche Amazon SNS.

  11. Seleziona Esegui.

  12. Nella pagina Command ID (ID comando), nell'area Targets and outputs (Destinazioni e uscite), seleziona il pulsante accanto all'ID di un nodo in cui è stato eseguito il comando, quindi scegliere View output (Visualizza output). Verificare che l'output del comando sia il valore fornito per il parametro, ad esempio This is my first parameter.

Eseguire un parametro (AWS CLI)

Esempio 1: comando semplice

Il comando di esempio seguente include un parametro Systems Manager denominato DNS-IP. Il valore di questo parametro è semplicemente l'indirizzo IP di un nodo. Questo esempio utilizza un comando AWS Command Line Interface (AWS CLI) per fare eco al valore del parametro.

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

Il comando restituisce informazioni simili alle seguenti.

{
    "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": []
    }
}

Una volta completata l'esecuzione di un comando, è possibile visualizzare ulteriori informazioni su tale esecuzione utilizzando i comandi seguenti:

Esempio 2: decriptazione del valore di un parametro SecureString

Il comando di esempio successivo utilizza un SecureString parametro denominato SecurePassword. Il comando utilizzato nel campo parameters recupera e decritta il valore del parametro SecureString, quindi reimposta la password dell'amministratore locale senza doverla passare in formato di testo non criptato.

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

Esempio 3: riferimento a un parametro in un documento SSM

Puoi fare riferimento ai parametri di Systems Manager anche nella sezione Parameters (Parametri) di un documento SSM, come illustrato nell'esempio seguente.

{ "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}}" } } ] }

Non confondere la sintassi simile per i parametri locali utilizzati nella sezione runtimeConfig dei documenti SSM con i parametri Parameter Store. Un parametro locale è diverso da un parametro di Systems Manager. I parametri locali si differenziano dai parametri di Systems Manager per l'assenza del prefisso ssm:.

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

I documenti SSM non supportano i riferimenti ai parametri SecureString. Ciò significa che se vuoi usare i parametri SecureString con, ad esempio, Run Command, devi recuperare il valore del parametro prima di passarlo a Run Command, come illustrato negli esempi seguenti.

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