Esecuzione di comandi su vasta scala - 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à.

Esecuzione di comandi su vasta scala

Puoi utilizzare Run Command, uno strumento di AWS Systems Manager, per eseguire comandi su un parco istanze di nodi gestiti utilizzando targets. Il parametro targets accetta una combinazione Key,Value in base ai tag specificati per i nodi gestiti. Quando si esegue il comando, il sistema individua e tenta di eseguire il comando su tutti i nodi gestiti che corrispondono ai tag specificati. Per ulteriori informazioni sull'assegnazione di tag alle istanze gestite, consulta Assegnazione di tag alle risorse AWS nella Guida per l'utente per l’assegnazione di tag alle risorse AWS. Per informazioni sull'assegnazione di tag ai dispositivi IoT gestiti, consulta Aggiunta di tag alle risorse AWS IoT Greengrass Version 2 nella AWS IoT Greengrass Version 2Guida per gli sviluppatori.

È anche possibile utilizzare il parametro targets per impostare come destinazione un elenco di ID di nodi gestiti specifici, come descritto nella sezione successiva.

Per controllare l'esecuzione del comando su centinaia o migliaia di nodi gestiti, Run Command include anche i parametri per limitare il numero di nodi che possono elaborare contemporaneamente una richiesta e il numero di errori che possono essere generati da un comando prima che venga terminato.

Impostare come destinazione più nodi gestiti

Puoi eseguire un comando e definire come destinazione i nodi gestiti specificando tag,nomi di gruppi di risorse AWS o ID nodi gestiti.

Gli esempi seguenti mostrano il formato dei comandi durante l'utilizzo di Run Command dagli AWS Command Line Interface (AWS CLI). Sostituisci ciascun segnaposto delle risorse di esempio con le tue informazioni. I comandi di esempio in questa sezione sono troncati utilizzando [...].

Esempio 1: definizione di tag come target

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=tag:tag-name,Values=tag-value \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=tag:tag-name,Values=tag-value ^ [...]

Esempio 2: definizione di tag come un gruppo di risorse AWS

Puoi specificare un massimo di un nome del gruppo di risorse per comando. Quando crei un gruppo di risorse, ti consigliamo di includere AWS::SSM:ManagedInstance e AWS::EC2::Instance come tipi di risorse nei criteri di raggruppamento.

Nota

Per inviare comandi destinati a un gruppo di risorse, è necessario disporre di autorizzazioni AWS Identity and Access Management (IAM) per elencare o visualizzare le risorse che appartengono a tale gruppo. Per ulteriori informazioni, consulta Impostazione delle autorizzazioni nella Guida per l'utente di AWS Resource Groups.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=resource-groups:Name,Values=resource-group-name \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=resource-groups:Name,Values=resource-group-name ^ [...]

Esempio 3: come target unAWSgruppo di risorse per tipo di risorsa

Puoi specificare un massimo di un nome del gruppo di risorse per comando. Quando crei un gruppo di risorse, ti consigliamo di includere AWS::SSM:ManagedInstance e AWS::EC2::Instance come tipi di risorse nei criteri di raggruppamento.

Nota

Per inviare comandi destinati a un gruppo di risorse, è necessario disporre di autorizzazioni IAM per elencare o visualizzare le risorse che appartengono a tale gruppo. Per ulteriori informazioni, consulta Impostazione delle autorizzazioni nella Guida per l'utente di AWS Resource Groups.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=resource-groups:ResourceTypeFilters,Values=resource-type-1,resource-type-2 \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=resource-groups:ResourceTypeFilters,Values=resource-type-1,resource-type-2 ^ [...]

Esempio 4: definizione di ID di istanze come target

Gli esempi seguenti mostrano come destinazione i nodi gestiti utilizzando il instanceids Chiave con il parametro targets. È possibile utilizzare questa chiave per gestire il target dispositivi core AWS IoT Greengrass perché a ogni dispositivo viene assegnato un mi-ID_numero. Puoi visualizzare gli ID dei dispositivi inFleet Manager, uno strumento inAWS Systems Manager.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=instanceids,Values=instance-ID-1,instance-ID-2,instance-ID-3 \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=instanceids,Values=instance-ID-1,instance-ID-2,instance-ID-3 ^ [...]

Se hai aggiunto tag ai nodi gestiti per diversi ambienti usando una Key denominata Environment e Values pari a Development, Test, Pre-production e Production, puoi inviare un comando a tutti i nodi gestiti in uno degli ambienti utilizzando il parametro targets con la seguente sintassi.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=tag:Environment,Values=Development \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=tag:Environment,Values=Development ^ [...]

Puoi definire altri nodi gestiti come destinazione in altri ambienti aggiungendo voci all'elenco Values. Separa gli elementi con le virgole.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=tag:Environment,Values=Development,Test,Pre-production \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=tag:Environment,Values=Development,Test,Pre-production ^ [...]

Variazione: perfezionamento dei target utilizzando più criteri Key

È possibile perfezionare il numero di target per il comando includendo più criteri Key. Se si includono più criteri Key, vengono definite come destinazioni i nodi gestiti che soddisfano tutti i criteri. Il comando seguente definisce come destinazione tutti i nodi gestiti taggati per il reparto finanze e taggati per il ruolo server di database.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=tag:Department,Values=Finance Key=tag:ServerRole,Values=Database \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=tag:Department,Values=Finance Key=tag:ServerRole,Values=Database ^ [...]

Variazione: utilizzo di più criteri Key e Value

Espandendo l'esempio precedente, è possibile definire più reparti e più ruoli server come target includendo altri elementi nei criteri Values.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=tag:Department,Values=Finance,Marketing Key=tag:ServerRole,Values=WebServer,Database \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=tag:Department,Values=Finance,Marketing Key=tag:ServerRole,Values=WebServer,Database ^ [...]

Variazione: definizione di nodi gestiti con tag come destinazione utilizzando più criteri Values

Se hai applicato tag a nodi gestiti per diversi ambienti usando un oggetto Key denominato Department e Values corrispondente a Sales e Finance, puoi inviare un comando a tutti i nodi gestiti in questi ambienti utilizzando il parametro targets con la sintassi seguente.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=tag:Department,Values=Sales,Finance \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=tag:Department,Values=Sales,Finance ^ [...]

È possibile specificare un massimo di cinque chiavi e cinque valori per ogni chiave.

Se una chiave tag (il nome del tag) o un valore tag include spazi, devi racchiudere tra virgolette la chiave o il valore tag, come mostrato nei seguenti esempi.

Esempio: spazi nel tag Value

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=tag:OS,Values="Windows Server 2016" \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=tag:OS,Values="Windows Server 2016" ^ [...]

Esempio: spazi nella chiave tag e Value

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key="tag:Operating System",Values="Windows Server 2016" \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key="tag:Operating System",Values="Windows Server 2016" ^ [...]

Esempio: spazi in un elemento in un elenco di Values

Linux & macOS
aws ssm send-command \ --document-name document-name \ --targets Key=tag:Department,Values="Sales","Finance","Systems Mgmt" \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --targets Key=tag:Department,Values="Sales","Finance","Systems Mgmt" ^ [...]

Utilizzo dei controlli di velocità

Puoi controllare la velocità con cui i comandi vengono inviati ai nodi gestiti di un gruppo utilizzando controlli di concorrenza e controlli di errore.

Utilizzo di controlli di concorrenza

Puoi controllare il numero di nodi gestiti che eseguono il comando contemporaneamente utilizzando il parametro max-concurrency (le opzioni Concurrency (Simultaneità) nella pagina Run a command (Esegui un comando)). Puoi specificare un numero assoluto di nodi gestiti, ad esempio 10, oppure una percentuale del set di target, ad esempio 10%. Il sistema di accodamento invia il comando a un singolo nodo e attende il completamento dell'invocazione iniziale prima di inviare il comando ad altri due nodi. Il sistema invia comandi ad altri nodi in modo esponenziale fino al raggiungimento del valore max-concurrency. Il valore predefinito per max-concurrency è 50. Gli esempi seguenti mostrano come specificare valori per il parametro max-concurrency.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --max-concurrency 10 \ --targets Key=tag:Environment,Values=Development \ [...]
aws ssm send-command \ --document-name document-name \ --max-concurrency 10% \ --targets Key=tag:Department,Values=Finance,Marketing Key=tag:ServerRole,Values=WebServer,Database \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --max-concurrency 10 ^ --targets Key=tag:Environment,Values=Development ^ [...]
aws ssm send-command ^ --document-name document-name ^ --max-concurrency 10% ^ --targets Key=tag:Department,Values=Finance,Marketing Key=tag:ServerRole,Values=WebServer,Database ^ [...]

Utilizzo dei controlli degli errori

Puoi anche controllare l'esecuzione di un comando su centinaia o migliaia di nodi gestiti impostando un limite di errori usando i parametri max-errors (il campo Error threshold (Soglia di errore) nella pagina Run a command (Esegui un comando)). Il parametro specifica il numero di errori consentiti prima che il sistema smetta di inviare il comando ad altri nodi gestiti. Puoi specificare un numero assoluto di errori, ad esempio 10, oppure una percentuale della serie di target, ad esempio 10%. Se ad esempio specifichi 3, il sistema smette di inviare il comando quando riceve il quarto errore. Se specifichi 0, il sistema smette di inviare il comando ad altri nodi gestiti non appena viene restituito il primo risultato di errore. Se invii un comando a 50 nodi gestiti e imposti max-errors su 10%, il sistema smette di inviare il comando ad altri nodi quando riceve il sesto errore.

Per le invocazioni che stanno già eseguendo un comando quando viene raggiunto il valore max-errors, viene consentito il completamento dell'operazione, ma alcune di queste invocazioni potrebbero non riuscire. Per evitare che si verifichino più di max-errors invocazioni non riuscite, imposta max-concurrency su 1 in modo che le invocazioni procedano una alla volta. Il valore predefinito per max-errors è 0. Gli esempi seguenti mostrano come specificare valori per il parametro max-errors.

Linux & macOS
aws ssm send-command \ --document-name document-name \ --max-errors 10 \ --targets Key=tag:Database,Values=Development \ [...]
aws ssm send-command \ --document-name document-name \ --max-errors 10% \ --targets Key=tag:Environment,Values=Development \ [...]
aws ssm send-command \ --document-name document-name \ --max-concurrency 1 \ --max-errors 1 \ --targets Key=tag:Environment,Values=Production \ [...]
Windows
aws ssm send-command ^ --document-name document-name ^ --max-errors 10 ^ --targets Key=tag:Database,Values=Development ^ [...]
aws ssm send-command ^ --document-name document-name ^ --max-errors 10% ^ --targets Key=tag:Environment,Values=Development ^ [...]
aws ssm send-command ^ --document-name document-name ^ --max-concurrency 1 ^ --max-errors 1 ^ --targets Key=tag:Environment,Values=Production ^ [...]