Esecuzione di script da Amazon S3 - AWS Systems Manager

Esecuzione di script da Amazon S3

Questa sezione illustra come scaricare ed eseguire script da Amazon Simple Storage Service (Amazon S3). Il seguente argomento include informazioni e terminologia relative ad Amazon S3. Per maggiori informazioni su Amazon S3, consulta la pagina Cos'è Amazon S3? È possibile eseguire diversi tipi di script, tra i quali Python, Ruby, Shell e PowerShell e playbook Ansible.

È anche possibile scaricare una directory che includa più script. Quando si esegue lo script principale nella directory, AWS Systems Manager esegue anche eventuali script di riferimento inclusi nella directory.

Tieni presenti le informazioni importanti sull'esecuzione di script da Amazon S3:, riportate di seguito:

  • Systems Manager non verifica che lo script possa essere eseguito su un nodo. Prima di scaricare ed eseguire lo script, verifica che il software necessario sia installato sul nodo. In alternativa, è possibile creare un documento composito che installi il software utilizzando Run Command o State Manager, una funzionalità di AWS Systems Manager, per poi scaricare ed eseguire lo script.

  • Verifica che il tuo utente, ruolo o gruppo disponga delle autorizzazioni AWS Identity and Access Management (IAM) necessarie per leggere dal bucket S3.

  • Assicurati che il profilo dell'istanza sulle istanze Amazon Elastic Compute Cloud (Amazon EC2) abbia autorizzazioni s3:ListBucket e s3:GetObject. Se il profilo dell'istanza non dispone di queste autorizzazioni, il sistema non riesce a scaricare lo script dal bucket S3. Per ulteriori informazioni, consulta Utilizzo dei profili dell'istanza in Guida per l'utente di IAM.

Esecuzione di uno script Shell da Amazon S3

Le informazioni seguenti illustrano le procedure che consentono di eseguire script da Amazon Simple Storage Service (Amazon S3) utilizzando la console AWS Systems Manager o AWS Command Line Interface (AWS CLI). Sebbene negli esempi vengano utilizzati script di shell, è possibile sostituirli con altri tipi di script.

Esecuzione di uno script di shell da Amazon S3 (console)

Esecuzione di uno script di shell da Amazon S3
  1. Aprire la console AWS Systems Manager 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-RunRemoteScript.

  5. In Command parameters (Parametri di comando), effettuare le seguenti operazioni:

    • In Source Type (Tipo di origine), selezionare S3.

    • Nella casella di testo Source Info (Informazioni origine), inserire le informazioni necessarie per accedere all'origine nel formato seguente. Sostituisci ciascun segnaposto delle risorse di esempio con le tue informazioni.

      Nota

      Sostituisci https://s3.aws-api-domain con l'URL per il tuo bucket. Puoi copiare l'URL del bucket in Amazon S3 nella scheda Objects (Oggetti).

      {"path":"https://s3.aws-api-domain/path to script"}

      Di seguito è riportato un esempio.

      {"path":"https://amzn-s3-demo-bucket.s3.us-east-2.amazonaws.com/scripts/shell/helloWorld.sh"}
    • Nel campo Command Line (Riga di comando), inserire i parametri per l'esecuzione di script. Ecco un esempio.

      helloWorld.sh argument-1 argument-2
    • (Facoltativo) Nel campo Working Directory (Directory di lavoro), inserire il nome di una directory sul nodo su cui si desidera scaricare ed eseguire lo script.

    • (Facoltativo) In Execution Timeout (Timeout di esecuzione), specificare il numero di secondi che il sistema dovrà attendere prima di interrompere l'esecuzione del comando di script.

  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 le pagine Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager oppure Creazione di un ruolo di servizio IAM per un ambiente ibrido. Inoltre, se il bucket S3 specificato si trova su un Account AWS diverso, assicurarsi che il profilo dell'istanza o il ruolo di 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.

Esecuzione di uno script di shell da Amazon S3 (riga di comando)

  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. Esegui il comando seguente. Sostituisci ciascun segnaposto delle risorse di esempio con le tue informazioni.

    Nota

    Sostituisci https://s3.aws-api-domain/script path con l'URL per il bucket. Puoi copiare l'URL del bucket in Amazon S3 nella scheda Objects (Oggetti).

    Linux & macOS
    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --output-s3-bucket-name "bucket-name" \ --output-s3-key-prefix "key-prefix" \ --targets "Key=InstanceIds,Values=instance-id" \ --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/script path\"}"],"commandLine":["script name and arguments"]}'
    Windows
    aws ssm send-command ^ --document-name "AWS-RunRemoteScript" ^ --output-s3-bucket-name "bucket-name" ^ --output-s3-key-prefix "key-prefix" ^ --targets "Key=InstanceIds,Values=instance-id" ^ --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.aws-api-domain/script path\"}',"commandLine"="script name and arguments"
    PowerShell
    Send-SSMCommand ` -DocumentName "AWS-RunRemoteScript" ` -OutputS3BucketName "bucket-name" ` -OutputS3KeyPrefix "key-prefix" ` -Target @{Key="InstanceIds";Values=@("instance-id")} ` -Parameter @{ sourceType = "S3"; sourceInfo = '{"path": "s3://bucket-name/path/to/script"}'; commandLine = "script name and arguments" }