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à.
La procedura dettagliata di esempio seguente mostra come utilizzare il comando AWS Command Line Interface (AWS CLI) per visualizzare informazioni su comandi e parametri dei comandi, come eseguire comandi e come visualizzare lo stato di tali comandi.
Importante
Solo gli amministratori affidabili dovrebbero essere autorizzati a utilizzare 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.
Argomenti
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). 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
Installa e configura AWS Command Line Interface (AWS CLI), se non l'hai già fatto.
Per informazioni, consulta la pagina Installazione o aggiornamento della versione più recente di AWS CLI.
-
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
-
Verificare che un nodo gestito sia pronto a ricevere comandi
L'output del comando seguente mostra se i nodi gestiti sono online.
aws ssm describe-instance-information \ --output text --query "InstanceInformationList[*]"
-
Utilizzare il comando seguente per visualizzare i dettagli su uno determinato nodo gestito.
Nota
Per eseguire i comandi in questa procedura dettagliata, sostituisci l'istanza e il comando. IDs Per i dispositivi AWS IoT Greengrass core gestiti, utilizzate l'ID mi-
ID_number
for instance. L'ID comando viene restituito come risposta a send-command. IDs Le istanze sono disponibili presso Fleet Manager, uno strumento in AWS Systems Manager..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
Usa il comando seguente per visualizzare una descrizione del documento JSON .
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.
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
.
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.
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.
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.
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.
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.
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.
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}"'
Passaggio 4: Esegui un semplice script Python usando Run Command
Il comando seguente esegue un semplice script Python «Hello World» usando Run Command.
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}"'
Passo 5: Esegui uno script Bash usando Run Command
Gli esempi in questa sezione mostrano come eseguire il seguente script di bash usando Run Command.
Per esempi di utilizzo Run Command per eseguire script archiviati in postazioni 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 nella regione Stati Uniti orientali (Ohio) (us-east-2),. aws-codedeploy-us-east-2
Esegui uno script bash in un comando AWS CLI
Nell'esempio seguente viene illustrato come includere lo script bash in un comando CLI utilizzando l'opzione --parameters
.
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-json
opzione.
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"
]
}
}