Procedura guidata: usare l'AWS CLI con 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à.

Procedura guidata: usare l'AWS CLI con Run Command

La seguente spiegazione passo per passo di esempio ti illustra come usare l'AWS Command Line Interface (AWS CLI) per visualizzare informazioni sui comandi e sui parametri dei comandi, come eseguire comandi e come visualizzare lo stato di tali comandi.

Importante

Solo gli amministratori fidati dovrebbero essere autorizzati a usare i documenti AWS Systems Manager preconfigurati mostrati in questo argomento. I comandi o gli script specificati nei documenti Systems Manager vengono eseguiti con privilegi amministrativi sui nodi gestiti. Se un utente è autorizzato a eseguire uno dei documenti Systems Manager predefiniti (qualsiasi documento che inizia con AWS-), lo stesso utente avrà anche accesso al nodo come amministratore. Per tutti gli altri utenti, è consigliabile creare documenti restrittivi e condividerli con utenti specifici.

Fase 1. Nozioni di base

Devi disporre dei privilegi di amministratore sui nodi gestiti da configurare oppure delle autorizzazioni appropriate in AWS Identity and Access Management (IAM). Tieni anche presente che questo esempio utilizza la regione Stati Uniti orientali (Ohio) (us-east-2). Run Command è disponibile nelle Regioni AWS elencate in Endpoint del servizio di System Manager nella Riferimenti generali di Amazon Web Services. Per ulteriori informazioni, consulta Configurazione AWS Systems Manager.

Per eseguire comandi utilizzando AWS CLI
  1. Se non lo hai ancora fatto, installa e configura AWS Command Line Interface (AWS CLI).

    Per informazioni, consulta la pagina Installazione o aggiornamento della versione più recente di AWS CLI.

  2. Creare un elenco di tutti i documenti disponibili

    Questo comando elenca tutti i documenti disponibili per il tuo account in base alle (IAM) autorizzazioni.

    aws ssm list-documents
  3. Verificare che un nodo gestito sia pronto a ricevere comandi

    L'output del comando seguente mostra se i nodi gestiti sono online.

    Linux & macOS
    aws ssm describe-instance-information \ --output text --query "InstanceInformationList[*]"
    Windows
    aws ssm describe-instance-information ^ --output text --query "InstanceInformationList[*]"
  4. Utilizzare il comando seguente per visualizzare i dettagli su uno determinato nodo gestito.

    Nota

    Per eseguire i comandi in questa procedura guidata, è necessario sostituire gli ID delle istanze e dei comandi. Per gestite da dispositivi coreAWS IoT Greengrass, usa il mi-ID_numero per ID istanza. L'ID comando viene restituito come risposta a send-command. Gli ID di istanza sono disponibili da Fleet Manager, una funzionalità di 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

Fase 2: esecuzione di script di shell per visualizzare i dettagli delle risorse

Se usi Run Command e il documento AWS-RunShellScript, puoi eseguire qualsiasi comando o script su un nodo gestito come se fossi connesso localmente.

Visualizzare la descrizione e i parametri disponibili

Usa il comando seguente per visualizzare una descrizione del documento JSON .

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

Usa il comando seguente per visualizzare i parametri disponibili e i dettagli su tali parametri.

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

Fase 3: invio di comandi semplici utilizzando il documento AWS-RunShellScript

Usa il comando seguente per ottenere le informazioni IP per un nodo gestito.

Se prendi come target un nodo gestito Windows Server, cambia il document-name a AWS-RunPowerShellScript e cambia il command da ifconfig a ipconfig.

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
Ottenere informazioni sul comando con i dati di risposta

Il comando seguente usa l'ID comando restituito dal comando precedente per ottenere i dettagli e i dati di risposta dell'esecuzione del comando. Il sistema restituisce i dati di risposta se il comando è stato completato. Se l'esecuzione del comando mostra "Pending" o "InProgress", esegui di nuovo il comando per visualizzare i dati di risposta.

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

Identificazione dell'utente

Il comando seguente mostra l'utente predefinito che esegue i comandi.

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")
Ottenere lo stato del comando

Il comando seguente usa l'ID comando per ottenere lo stato di esecuzione del comando sul nodo gestito. Questo esempio usa l'ID di comando restituito nel comando precedente.

Linux & macOS
aws ssm list-commands \ --command-id "command-ID"
Windows
aws ssm list-commands ^ --command-id "command-ID"
Ottenere i dettagli del comando

Il comando seguente usa l'ID comando del comando precedente per ottenere lo stato di esecuzione del comando per singoli nodo gestito.

Linux & macOS
aws ssm list-command-invocations \ --command-id "command-ID" \ --details
Windows
aws ssm list-command-invocations ^ --command-id "command-ID" ^ --details
Ottenere informazioni sul comando con i dati di risposta per un nodo gestito specifico

Il comando seguente restituisce l'output della richiesta aws ssm send-command originale per un nodo gestito specifico.

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

Visualizzare la versione Python

Il comando seguente restituisce la versione di Python in esecuzione su un nodo.

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}"'

Fase 4: esecuzione di un semplice script Python usando Run Command

Il seguente comando esegue un semplice script Python "Hello World" utilizzando 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}"'

Fase 5: esecuzione di uno script Bash usandoRun Command

Gli esempi in questa sezione mostrano come eseguire il seguente script bash usandoRun Command.

Per esempi di utilizzo diRun Commandper eseguire script archiviati in posizioni remote, vedereEsecuzione di script da Amazon S3eEsecuzione di script da 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

Questo script installa ilAWS CodeDeployAgente di Amazon Linux eRed Hat Enterprise Linux(RHEL), come descritto inCreare un'istanza Amazon EC2 per CodeDeploynellaAWS CodeDeployGuida per l'utente di.

Lo script installa l'agente CodeDeploy da un bucket S3 gestito da AWS nella Regione Stati Uniti orientali (Ohio) (us-east-2), aws-codedeploy-us-east-2.

Esegui uno script bash in unAWS CLIComando

Nell'esempio seguente viene illustrato come includere lo script bash in un comando CLI utilizzando il comando--parametersopzione.

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

Esegui uno script bash in un file JSON

Nell'esempio seguente, il contenuto dello script bash viene archiviato in un file JSON e il file viene incluso nel comando usando l'--cli-input-jsonopzione.

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

Il comando installCodeDeployAgent.json che fa riferimento al file JSON viene visualizzato nell'esempio seguente.

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