Procedura dettagliata: utilizzare con AWS CLIRun 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 dettagliata: utilizzare con AWS CLIRun 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). Si noti inoltre che questo esempio utilizza la regione Stati Uniti orientali (Ohio) (us-east-2) (us-east-2). Run Command è disponibile negli endpoint del servizio Systems Manager Regioni AWS elencati in. Riferimenti generali di Amazon Web Services Per ulteriori informazioni, consulta Configurazione di nodi gestiti per AWS Systems Manager.

Per eseguire comandi utilizzando il 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 (IAMautorizzazioni).

    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 istanza e comando. IDs Per gestite da dispositivi AWS IoT Greengrass core, usa il mi-ID_number per esempio ID. L'ID comando viene restituito come risposta a send-command. IDsLe istanze sono disponibili presso Fleet Manager, una capacità 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

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

Visualizzare la descrizione e i parametri disponibili

Esegui il comando seguente per visualizzare una descrizione del JSON documento Systems Manager.

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 hai come target un Windows Server nodo gestito, cambia document-name in AWS-RunPowerShellScript e cambia command da ifconfig aipconfig.

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: eseguire un semplice script Python usando Run Command

Il comando seguente esegue un semplice script Python «Hello World» usando 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 usando Run Command

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

Per esempi di utilizzo Run Command per eseguire script archiviati in posizioni remote, vedere Esecuzione di script da Amazon S3 eEsecuzione 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 l' AWS CodeDeploy agente su Amazon Linux e Red Hat Enterprise Linux (RHEL) istanze, come descritto in Creare un'EC2istanza Amazon CodeDeploy nella Guida per l'AWS CodeDeploy utente.

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

Esegui uno script bash in un AWS CLI Comando

Nell'esempio seguente viene illustrato come includere lo script bash in un CLI comando usando l'--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 JSON file 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" ] } }