

• La AWS Systems Manager CloudWatch dashboard non sarà più disponibile dopo il 30 aprile 2026. I clienti possono continuare a utilizzare la CloudWatch console Amazon per visualizzare, creare e gestire le proprie CloudWatch dashboard Amazon, proprio come fanno oggi. Per ulteriori informazioni, consulta la [documentazione di Amazon CloudWatch Dashboard](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

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à.

# Documenti di AWS Systems Manager
<a name="documents"></a>

Un AWS Systems Manager documento (documento SSM) definisce le azioni che Systems Manager esegue sulle istanze gestite. Systems Manager include più di 100 documenti preconfigurati che è possibile utilizzare specificando i parametri nel runtime (tempo di esecuzione). I documenti preconfigurati si possono trovare nella console Documenti di Systems Manager scegliendo la scheda **Owned by Amazon** (Di proprietà di Amazon) o specificando Amazon per il filtro `Owner` quando si chiama l'operazione dell'API `ListDocuments`. I documenti utilizzano JavaScript Object Notation (JSON) o YAML e includono passaggi e parametri specificati dall'utente. 

Per una maggiore sicurezza, a partire dal 14 luglio 2025, i documenti SSM supportano l'interpolazione delle variabili di ambiente durante l'elaborazione dei parametri. Questa funzionalità, disponibile nella versione 2.2 dello schema e nella versione 3.3.2746.0 SSM Agent o successiva, aiuta a prevenire gli attacchi di iniezione di comandi.

Per iniziare a utilizzare i documenti SSM, apri la [console di Systems Manager](https://console.aws.amazon.com/systems-manager/documents). Nel pannello di navigazione, scegli **Documenti**.

**Importante**  
In Systems Manager, un documento SSM *di proprietà di Amazon* è un documento creato e gestito dallo stesso Amazon Web Services. I documenti *di proprietà di Amazon* includono un prefisso simile a `AWS-*` nel nome del documento. Il proprietario del documento è considerato Amazon, non un account utente specifico all'interno AWS. Questi documenti sono disponibili al pubblico e possono essere utilizzati da tutti.

## Come può lo strumento Documenti essere vantaggioso per la mia organizzazione?
<a name="ssm-docs-benefits"></a>

Documents, uno strumento di cui AWS Systems Manager fa parte, offre i seguenti vantaggi:
+ **Categorie di documenti**

  Per trovare i documenti di cui hai bisogno, scegli una categoria a seconda del tipo di documento che stai cercando. Per ampliare la ricerca, è possibile scegliere più categorie dello stesso tipo di documento. La scelta di categorie di diversi tipi di documento non è supportata. Le categorie sono supportate solo per i documenti di proprietà di Amazon.
+  **Versioni dei documenti** 

  È possibile creare e salvare diverse versioni dei documenti. È quindi possibile specificare una versione predefinita per ogni documento. La versione predefinita di un documento può essere aggiornata a una versione più recente o ripristinata a una versione precedente. Quando si modificano i contenuti di un documento, Systems Manager incrementa automaticamente la versione del documento. È possibile recuperare o utilizzare qualsiasi versione di un documento specificando la versione del documento nella console, i comandi AWS Command Line Interface (AWS CLI) o le chiamate API.
+  **Personalizzazione di documenti per le proprie esigenze** 

  Se desideri personalizzare le fasi e le operazioni in un documento, puoi creare un documento tuo. Il sistema memorizza il documento con l'utente Account AWS nel momento in Regione AWS cui lo si crea. Per ulteriori informazioni su come creare un documento SSM, consultare [Creazione del contenuto del documento SSM](documents-creating-content.md).
+  **Tagging di documenti** 

  È possibile applicare tag ai documenti per consentire ai clienti di individuarli rapidamente. Ad esempio, è possibile contrassegnare mediante tag documenti per ambienti, reparti, utenti, gruppi o periodi specifici. È inoltre possibile limitare l'accesso ai documenti creando una policy AWS Identity and Access Management (IAM) che specifichi i tag a cui un utente o un gruppo può accedere.
+  **Condivisione di documenti** 

  È possibile rendere i documenti pubblici o condividerli con Account AWS specifici nella stessa Regione AWS. La condivisione di documenti tra gli account può essere utile, ad esempio, se si desidera che tutte le istanze di Amazon Elastic Compute Cloud (Amazon EC2) fornite ai clienti e ai dipendenti abbiano la stessa configurazione. Oltre a mantenere aggiornate le applicazioni o le patch sulle istanze, è possibile limitare l'accesso a determinate attività da parte delle istanze dei clienti. In alternativa, è possibile assicurare che alle istanze utilizzate dagli account dei dipendenti nell'organizzazione venga concesso l'accesso a specifiche risorse interne. Per ulteriori informazioni, consulta [Condivisione di documenti SSM](documents-ssm-sharing.md).

## Chi deve utilizzare i documenti?
<a name="documents-who"></a>
+ Qualsiasi AWS cliente che desideri utilizzare gli strumenti di Systems Manager per migliorare la propria efficienza operativa su larga scala, ridurre gli errori associati all'intervento manuale e ridurre i tempi di risoluzione dei problemi comuni.
+ Esperti di infrastruttura che desiderano automatizzare le attività di implementazione e configurazione.
+ Amministratori che desiderano risolvere in modo affidabile i problemi comuni, migliorare l'efficienza della risoluzione dei problemi e ridurre le operazioni ripetitive.
+ Utenti che desiderano automatizzare un'attività che in genere eseguono manualmente.

## Quali sono i tipi di documenti SSM?
<a name="what-are-document-types"></a>

La tabella seguente illustra i diversi tipi di documenti SSM e il loro utilizzo.


****  

| Tipo | Utilizzo con | Informazioni | 
| --- | --- | --- | 
|  ApplicationConfiguration ApplicationConfigurationSchema  |   [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html)   |  AWS AppConfig, uno strumento che consente di creare, gestire e distribuire rapidamente configurazioni di applicazioni. AWS Systems ManagerÈ possibile archiviare i dati di configurazione in un documento SSM creando un documento che utilizza il tipo di documento `ApplicationConfiguration`. Per ulteriori informazioni, consulta [Configurazioni in forma libera](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-configuration-and-profile.html#free-form-configurations) nella *Guida per l'utente di AWS AppConfig *. Se crei una configurazione in un documento SSM, devi specificare o creare uno schema JSON corrispondente. Lo schema utilizza il tipo di documento `ApplicationConfigurationSchema` e, come un insieme di regole, definisce le proprietà consentite per ogni impostazione di configurazione dell'applicazione. Per ulteriori informazioni, consulta [Informazioni sui validatori](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-configuration-and-profile-validators.html) nella *Guida per l'utente di AWS AppConfig *.  | 
|  runbook Automation  |   [Automazione](systems-manager-automation.md)   [State Manager](systems-manager-state.md)   [Maintenance Windows](maintenance-windows.md)   |  Utilizza i runbook di Automazione durante l'esecuzione di attività comuni di manutenzione e implementazione, ad esempio la creazione o l'aggiornamento di una Amazon Machine Image (AMI). State Manager utilizza i runbook di Automazione per applicare una configurazione. Queste operazioni possono essere eseguite su una o più destinazioni in qualsiasi momento durante il ciclo di vita di un'istanza. Maintenance Windows utilizza i runbook di Automazione per eseguire attività comuni di manutenzione e implementazione in base alla pianificazione specificata. Tutti i runbook Automation supportati per i sistemi operativi basati su Linux sono supportati anche sulle istanze EC2 per macOS.  | 
|  Documento Modifica calendario  |   [Change Calendar](systems-manager-change-calendar.md)   |  Change Calendar, uno strumento in AWS Systems Manager, utilizza il tipo di `ChangeCalendar` documento. Un documento Change Calendar memorizza una voce del calendario e gli eventi associati che possono consentire o impedire alle operazioni di automazione di modificare l'ambiente. In Change Calendar, un documento memorizza i dati [iCalendar 2.0](https://icalendar.org/) in formato testo normale. Change Calendar non è supportato nelle istanze EC2 per macOS.  | 
|  AWS CloudFormation modello  |   [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)   |  AWS CloudFormation i modelli descrivono le risorse che desideri inserire negli CloudFormation stack. Archiviando CloudFormation i modelli come documenti di Systems Manager, è possibile trarre vantaggio dalle funzionalità documentali di Systems Manager. Questi includono la creazione e il confronto di più versioni del modello e la condivisione del modello con altri account nella stessa Regione AWS. È possibile creare e modificare CloudFormation modelli e pile utilizzando Application Manager uno strumento in Systems Manager. Per ulteriori informazioni, consulta [Utilizzo di CloudFormation modelli e pile in Application Manager](application-manager-working-stacks.md).  | 
|  Documento di comando  |   [Run Command](run-command.md)   [State Manager](systems-manager-state.md)   [Maintenance Windows](maintenance-windows.md)   |  Run Command, uno strumento in AWS Systems Manager, utilizza i documenti di comando per eseguire comandi. State Manager, uno strumento in AWS Systems Manager, utilizza i documenti di comando per applicare una configurazione. Queste azioni possono essere eseguite su una o più destinazioni in qualsiasi momento durante il ciclo di vita di un'istanza. Maintenance Windows, uno strumento in AWS Systems Manager, utilizza i documenti di comando per applicare una configurazione basata sulla pianificazione specificata. La maggior parte dei documenti Command è supportata su tutti i sistemi operativi Linux e Windows Server compatibile con Systems Manager. I seguenti documenti Command sono supportati nelle istanze EC2 per macOS: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/documents.html)  | 
|  AWS Config modello di pacchetto di conformità  |   [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)   |  AWS Config i modelli di conformance pack sono documenti in formato YAML utilizzati per creare pacchetti di conformità che contengono l'elenco di regole gestite o personalizzate e azioni correttive. AWS Config  Per ulteriori informazioni, consulta la pagina [Pacchetti di conformità](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html).  | 
|  Documento del pacchetto  |   [Distributor](distributor.md)   |  In Distributor, uno strumento di AWS Systems Manager, un pacchetto è rappresentato da un documento SSM. Un documento di un pacchetto include file di archivio ZIP allegati che contengono software o asset da installare su istanze gestite. La creazione di un pacchetto in Distributor genera il documento del pacchetto. Distributor non è supportata da Oracle Linux e dalle Istanze gestite macOS.  | 
|  Documento di policy  |   [State Manager](systems-manager-state.md)   |  Inventory, uno strumento di AWS Systems Manager, utilizza il documento `AWS-GatherSoftwareInventory` Policy con un'State Managerassociazione per raccogliere dati di inventario dalle istanze gestite. Durante la creazione dei documenti SSM, i runbook Automation e i documenti Command sono il metodo preferito per applicare una policy su un'istanza gestita. L'inventario di Systems Manager e il documento di policy `AWS-GatherSoftwareInventory` sono supportati su tutti i sistemi operativi compatibili con Systems Manager.  | 
|  Modello di analisi post-imprevisto  |   [Analisi post-imprevisto dello Strumento·di·gestione·degli·incidenti](https://docs.aws.amazon.com/incident-manager/latest/userguide/analysis.html)   |  Incident Manager utilizza il modello di analisi post-incidente per creare un'analisi basata sulle migliori pratiche di gestione AWS delle operazioni. Usare il modello per creare un'analisi che il team può utilizzare per individuare i miglioramenti apportati alla risposta agli imprevisti.   | 
|  Documento di sessione  |   [Session Manager](session-manager.md)   |  Session Manager, uno strumento in AWS Systems Manager, utilizza i documenti di sessione per determinare il tipo di sessione da avviare, ad esempio una sessione di port forwarding, una sessione per eseguire un comando interattivo o una sessione per creare un tunnel SSH. I documenti di sessione sono supportati su tutti i sistemi operativi Linux e Windows Server compatibili con Systems Manager. I seguenti documenti Command sono supportati nelle istanze EC2 per macOS: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/documents.html)  | 

**Quote del documento SSM**  
Per informazioni sulle quote del documento SSM, consulta [Service quotas di Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm) nella *Riferimenti generali di Amazon Web Services*.

**Topics**
+ [

## Come può lo strumento Documenti essere vantaggioso per la mia organizzazione?
](#ssm-docs-benefits)
+ [

## Chi deve utilizzare i documenti?
](#documents-who)
+ [

## Quali sono i tipi di documenti SSM?
](#what-are-document-types)
+ [

# Componenti del documento
](documents-components.md)
+ [

# Creazione del contenuto del documento SSM
](documents-creating-content.md)
+ [

# Utilizzo dei documenti
](documents-using.md)
+ [

# Risoluzione dei problemi di gestione dei parametri
](parameter-troubleshooting.md)

# Componenti del documento
<a name="documents-components"></a>

In questa sezione sono incluse informazioni sui componenti che compongono i documenti SSM.

**Topics**
+ [

# Schemi, funzionalità ed esempi
](documents-schemas-features.md)
+ [

# Elementi di dati e parametri
](documents-syntax-data-elements-parameters.md)
+ [

# Documentazione di riferimento del plugin per i documenti di comando
](documents-command-ssm-plugin-reference.md)

# Schemi, funzionalità ed esempi
<a name="documents-schemas-features"></a>

AWS Systems Manager I documenti (SSM) utilizzano le seguenti versioni dello schema.
+ I documenti di tipo `Command` possono utilizzare le versione dello schema 1.2, 2.0 e 2.2. Se si utilizzano documenti con lo schema 1.2, consigliamo di creare documenti con la versione 2.2 dello schema.
+ I documenti di tipo `Policy` devono utilizzare la versione dello schema 2.0 o una versione successiva.
+ I documenti di tipo `Automation` devono utilizzare la versione dello schema 0.3.
+ I documenti di tipo `Session` devono utilizzare la versione dello schema 1.0.
+ Puoi creare documenti in formato JSON o YAML.

Per ulteriori informazioni sull'utilizzo del documento schema `Session`, consulta [Schema documento di sessione](session-manager-schema.md).

Utilizzando la versione più recente dello schema per documenti `Command` e `Policy`, puoi sfruttare le seguenti funzionalità.


**Funzionalità dei documenti con versione dello schema 2.2**  

| Funzionalità | Informazioni | 
| --- | --- | 
|  Modifica dei documenti  |  Ora i documenti possono essere aggiornati. Con la versione 1.2, qualsiasi aggiornamento a un documento doveva essere salvato con un nome diverso.  | 
|  Controllo delle versioni automatico  |  Qualsiasi aggiornamento a un documento crea una nuova versione. Non si tratta di una versione dello schema, ma di una versione del documento.  | 
|  Versione predefinita  |  Se disponi di più versioni di un documento, puoi specificare quale versione è il documento predefinito.  | 
|  Sequenziamento  |  I plugin o le *fasi* in un documento vengono eseguiti nell'ordine specificato.  | 
|  Supporto multipiattaforma  |  Il supporto multipiattaforma consente di specificare sistemi operativi differenti per plugin differenti all'interno dello stesso documento SSM. Il supporto multipiattaforma utilizza il parametro `precondition` all'interno di una fase.   | 
| Interpolazione dei parametri | Interpolazione significa inserire o sostituire un valore variabile in una stringa. Immagina che sia come riempire uno spazio vuoto con valori effettivi, prima che la stringa venga utilizzata. Nel contesto dei documenti SSM, l'interpolazione dei parametri consente di interpolare i parametri delle stringhe in variabili di ambiente prima dell'esecuzione del comando, offrendo una maggiore sicurezza contro le iniezioni di comandi. Se impostato su `ENV_VAR`, l'agente crea una variabile di ambiente denominata `SSM_parameter-name`, che contiene il valore del parametro. | 

**Nota**  
È necessario mantenere AWS Systems Manager SSM Agent le istanze aggiornate alla versione più recente per utilizzare le nuove funzionalità di Systems Manager e le funzionalità dei documenti SSM. Per ulteriori informazioni, consulta [Aggiornamento di SSM Agent utilizzando Run Command](run-command-tutorial-update-software.md#rc-console-agentexample).

Nella tabella seguente vengono elencate le differenze tra le versioni principali dello schema.


****  

| Versione 1.2 | Versione 2.2 (versione più recente) | Informazioni | 
| --- | --- | --- | 
|  runtimeConfig  |  mainSteps  |  Nella versione 2.2, la sezione `mainSteps` sostituisce `runtimeConfig`. La sezione `mainSteps` consente a Systems Manager di eseguire le fasi in sequenza.  | 
|  properties  |  inputs  |  Nella versione 2.2, la sezione `inputs` sostituisce la sezione `properties`. La sezione `inputs` accetta parametri per le fasi.  | 
|  commands  |  runCommand  |  Nella versione 2.2, la sezione `inputs` richiede il parametro `runCommand` anziché il parametro `commands`.  | 
|  id  |  operazione  |  Nella versione 2.2, `Action` sostituisce `ID`. Si tratta di una semplice modifica di nome.  | 
|  non applicabile  |  nome  |  Nella versione 2.2, `name` è un qualsiasi nome definito dall'utente per una fase.  | 

**Utilizzo del parametro Precondition**  
Con la versione dello schema 2.2 o successiva, è possibile utilizzare il parametro `precondition` per specificare il sistema operativo di destinazione per ciascun plugin o convalidare i parametri di input definiti nel documento SSM. Il parametro `precondition` supporta il riferimento ai parametri di input del documento SSM e `platformType` utilizzando i valori di `Linux`, `MacOS`, e `Windows`. Soltanto l'operatore `StringEquals` è supportato.

Per i documenti che utilizzano la versione dello schema 2.2 o successiva, se `precondition` non è specificato, ogni plugin viene eseguito o ignorato in base alla relativa compatibilità con il sistema operativo. La compatibilità dei plugin con il sistema operativo viene valutata prima di `precondition`. Per i documenti che utilizzano la versione dello schema 2.0 o precedente, i plugin non compatibili generano un errore.

Ad esempio, in un documento che utilizza la versione dello schema 2.2, se `precondition` non è specificato e il plugin `aws:runShellScript` è presente, la fase viene eseguita sulle istanze Linux, ma il sistema la ignora sulle istanze Windows Server, poiché `aws:runShellScript` non è compatibile con le istanze Windows Server. Tuttavia, per un documento che utilizza la versione dello schema 2.0, se specifichi il plugin `aws:runShellScript` ed esegui il documento su istanze Windows Server, l'esecuzione non va a buon fine. Un esempio del parametro Precondition in un documento SSM è disponibile più avanti in questa sezione.

## Versione dello schema 2.2
<a name="documents-schema-twox"></a>

**Elementi di primo livello**  
L'esempio seguente mostra gli elementi di primo livello di un documento SSM che utilizza la versione dello schema 2.2.

------
#### [ YAML ]

```
---
schemaVersion: "2.2"
description: A description of the document.
parameters:
  parameter 1:
    property 1: "value"
    property 2: "value"
  parameter 2:
    property 1: "value"
    property 2: "value"
mainSteps:
  - action: Plugin name
    name: A name for the step.
    inputs:
      input 1: "value"
      input 2: "value"
      input 3: "{{ parameter 1 }}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "A description of the document.",
   "parameters": {
       "parameter 1": {
           "property 1": "value",
           "property 2": "value"
        },
        "parameter 2":{
           "property 1": "value",
           "property 2": "value"
        } 
    },
   "mainSteps": [
      {
         "action": "Plugin name",
         "name": "A name for the step.",
         "inputs": {
            "input 1": "value",
            "input 2": "value",
            "input 3": "{{ parameter 1 }}"
         }
      }
   ]
}
```

------

**Esempio con per la versione dello schema 2.2**  
L'esempio seguente utilizza il `aws:runPowerShellScript` plug-in per eseguire un PowerShell comando sulle istanze di destinazione.

------
#### [ YAML ]

```
---
schemaVersion: "2.2"
description: "Example document"
parameters:
  Message:
    type: "String"
    description: "Example parameter"
    default: "Hello World"
    allowedValues: 
    - "Hello World"
mainSteps:
  - action: "aws:runPowerShellScript"
    name: "example"
    inputs:
      timeoutSeconds: '60'
      runCommand:
      - "Write-Output {{Message}}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "Example document",
   "parameters": {
      "Message": {
         "type": "String",
         "description": "Example parameter",
         "default": "Hello World",
         "allowedValues": ["Hello World"]
      }
   },
   "mainSteps": [
      {
         "action": "aws:runPowerShellScript",
         "name": "example",
         "inputs": {
            "timeoutSeconds": "60",
            "runCommand": [
               "Write-Output {{Message}}"
            ]
         }
      }
   ]
}
```

------

**Esempi del parametro Precondition per la versione dello schema 2.2**  
La versione dello schema 2.2 offre il supporto multipiattaforma. Ciò significa che all'interno di un singolo documento SSM è possibile specificare sistemi operativi differenti per plugin differenti. Il supporto multipiattaforma utilizza il parametro `precondition` all'interno di una fase, come mostrato nel seguente esempio. È possibile utilizzare il parametro `precondition` anche per convalidare i parametri di input definiti nel documento SSM. Ne è la riprova il secondo dei seguenti esempi.

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: cross-platform sample
mainSteps:
- action: aws:runPowerShellScript
  name: PatchWindows
  precondition:
    StringEquals:
    - platformType
    - Windows
  inputs:
    runCommand:
    - cmds
- action: aws:runShellScript
  name: PatchLinux
  precondition:
    StringEquals:
    - platformType
    - Linux
  inputs:
    runCommand:
    - cmds
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "cross-platform sample",
   "mainSteps": [
      {
         "action": "aws:runPowerShellScript",
         "name": "PatchWindows",
         "precondition": {
            "StringEquals": [
               "platformType",
               "Windows"
            ]
         },
         "inputs": {
            "runCommand": [
               "cmds"
            ]
         }
      },
      {
         "action": "aws:runShellScript",
         "name": "PatchLinux",
         "precondition": {
            "StringEquals": [
               "platformType",
               "Linux"
            ]
         },
         "inputs": {
            "runCommand": [
               "cmds"
            ]
         }
      }
   ]
}
```

------

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
parameters:
  action:
    type: String
    allowedValues:
    - Install
    - Uninstall
  confirmed:
    type: String
    allowedValues:
    - True
    - False
mainSteps:
- action: aws:runShellScript
  name: InstallAwsCLI
  precondition:
    StringEquals:
    - "{{ action }}"
    - "Install"
  inputs:
    runCommand:
    - sudo apt install aws-cli
- action: aws:runShellScript
  name: UninstallAwsCLI
  precondition:
    StringEquals:
    - "{{ action }} {{ confirmed }}"
    - "Uninstall True"
  inputs:
    runCommand:
    - sudo apt remove aws-cli
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "parameters": {
      "action": {
         "type": "String",
         "allowedValues": [
            "Install",
            "Uninstall"
         ]
      },
      "confirmed": {
         "type": "String",
         "allowedValues": [
            true,
            false
         ]
      }
   },
   "mainSteps": [
      {
         "action": "aws:runShellScript",
         "name": "InstallAwsCLI",
         "precondition": {
            "StringEquals": [
               "{{ action }}",
               "Install"
            ]
         },
         "inputs": {
            "runCommand": [
               "sudo apt install aws-cli"
            ]
         }
      },
      {
         "action": "aws:runShellScript",
         "name": "UninstallAwsCLI",
         "precondition": {
            "StringEquals": [
               "{{ action }} {{ confirmed }}",
               "Uninstall True"
            ]
         },
         "inputs": {
            "runCommand": [
               "sudo apt remove aws-cli"
            ]
         }
      }
   ]
}
```

------

**Esempio di interpolazione dello schema della versione 2.2 con versioni SSM Agent precedenti alla 3.3.2746.0**  
Nelle versioni SSM Agent precedenti alla 3.3.2746.0, l'agente ignora il parametro `interpolationType` ed esegue invece una sostituzione di stringhe non elaborate. Se si fa riferimento in modo esplicito a `SSM_parameter-name`, è necessario impostarlo in modo esplicito. Nell'esempio seguente per Linux, la variabile di ambiente `SSM_Message` viene referenziata in modo esplicito.

```
{
    "schemaVersion": "2.2",
    "description": "An example document",
    "parameters": {
        "Message": {
            "type": "String",
            "description": "Message to be printed",
            "default": "Hello",
            "interpolationType" : "ENV_VAR",
	     "allowedPattern: "^[^"]*$"

        }
    },
    "mainSteps": [{
        "action": "aws:runShellScript",
        "name": "printMessage",
        "inputs": {
            "runCommand": [
              "if [ -z "${SSM_Message+x}" ]; then",
              "    export SSM_Message=\"{{Message}}\"",
              "fi",
              "",
              "echo $SSM_Message"
            ]
        }
    }
}
```

**Nota**  
`allowedPattern` non è tecnicamente necessario, se un documento SSM non utilizza le parentesi graffe: `{{ }}`

**Esempio con State Manager per la versione dello schema 2.2**  
È possibile utilizzare il seguente documento SSM con State Manager, uno strumento di Systems Manager, per scaricare e installare il software antivirus ClamAV. State Manager applica una configurazione specifica, per cui ogni volta che viene eseguita l'associazione a State Manager, il sistema verifica, se il software ClamAV è installato. Se così non fosse, State Manager esegue nuovamente questo documento.

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: State Manager Bootstrap Example
parameters: {}
mainSteps:
- action: aws:runShellScript
  name: configureServer
  inputs:
    runCommand:
    - sudo yum install -y httpd24
    - sudo yum --enablerepo=epel install -y clamav
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "State Manager Bootstrap Example",
   "parameters": {},
   "mainSteps": [
      {
         "action": "aws:runShellScript",
         "name": "configureServer",
         "inputs": {
            "runCommand": [
               "sudo yum install -y httpd24",
               "sudo yum --enablerepo=epel install -y clamav"
            ]
         }
      }
   ]
}
```

------

**Esempio di versione dello schema 2.2 per un inventario**  
È possibile utilizzare il seguente documento SSM con State Manager per raccogliere i metadati di inventario sulle istanze.

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: Software Inventory Policy Document.
parameters:
  applications:
    type: String
    default: Enabled
    description: "(Optional) Collect data for installed applications."
    allowedValues:
    - Enabled
    - Disabled
  awsComponents:
    type: String
    default: Enabled
    description: "(Optional) Collect data for AWS Components like amazon-ssm-agent."
    allowedValues:
    - Enabled
    - Disabled
  networkConfig:
    type: String
    default: Enabled
    description: "(Optional) Collect data for Network configurations."
    allowedValues:
    - Enabled
    - Disabled
  windowsUpdates:
    type: String
    default: Enabled
    description: "(Optional) Collect data for all Windows Updates."
    allowedValues:
    - Enabled
    - Disabled
  instanceDetailedInformation:
    type: String
    default: Enabled
    description: "(Optional) Collect additional information about the instance, including
      the CPU model, speed, and the number of cores, to name a few."
    allowedValues:
    - Enabled
    - Disabled
  customInventory:
    type: String
    default: Enabled
    description: "(Optional) Collect data for custom inventory."
    allowedValues:
    - Enabled
    - Disabled
mainSteps:
- action: aws:softwareInventory
  name: collectSoftwareInventoryItems
  inputs:
    applications: "{{ applications }}"
    awsComponents: "{{ awsComponents }}"
    networkConfig: "{{ networkConfig }}"
    windowsUpdates: "{{ windowsUpdates }}"
    instanceDetailedInformation: "{{ instanceDetailedInformation }}"
    customInventory: "{{ customInventory }}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "Software Inventory Policy Document.",
   "parameters": {
      "applications": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for installed applications.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "awsComponents": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for AWS Components like amazon-ssm-agent.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "networkConfig": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for Network configurations.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "windowsUpdates": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for all Windows Updates.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "instanceDetailedInformation": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect additional information about the instance, including\nthe CPU model, speed, and the number of cores, to name a few.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      },
      "customInventory": {
         "type": "String",
         "default": "Enabled",
         "description": "(Optional) Collect data for custom inventory.",
         "allowedValues": [
            "Enabled",
            "Disabled"
         ]
      }
   },
   "mainSteps": [
      {
         "action": "aws:softwareInventory",
         "name": "collectSoftwareInventoryItems",
         "inputs": {
            "applications": "{{ applications }}",
            "awsComponents": "{{ awsComponents }}",
            "networkConfig": "{{ networkConfig }}",
            "windowsUpdates": "{{ windowsUpdates }}",
            "instanceDetailedInformation": "{{ instanceDetailedInformation }}",
            "customInventory": "{{ customInventory }}"
         }
      }
   ]
}
```

------

**Esempio con `AWS-ConfigureAWSPackage` per la versione dello schema 2.2**  
L'esempio seguente mostra il documento `AWS-ConfigureAWSPackage`. La sezione `mainSteps` include il plugin `aws:configurePackage` nella fase `action`.

**Nota**  
Sui sistemi operativi Linux sono supportati solo i pacchetti `AmazonCloudWatchAgent` e `AWSSupport-EC2Rescue`.

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: 'Install or uninstall the latest version or specified version of an AWS
package. Available packages include the following: AWSPVDriver, AwsEnaNetworkDriver,
  AwsVssComponents, and AmazonCloudWatchAgent, and AWSSupport-EC2Rescue.'
parameters:
  action:
    description: "(Required) Specify whether or not to install or uninstall the package."
    type: String
    allowedValues:
    - Install
    - Uninstall
  name:
    description: "(Required) The package to install/uninstall."
    type: String
    allowedPattern: "^arn:[a-z0-9][-.a-z0-9]{0,62}:[a-z0-9][-.a-z0-9]{0,62}:([a-z0-9][-.a-z0-9]{0,62})?:([a-z0-9][-.a-z0-9]{0,62})?:package\\/[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$|^[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$"
  version:
    type: String
    description: "(Optional) A specific version of the package to install or uninstall."
mainSteps:
- action: aws:configurePackage
  name: configurePackage
  inputs:
    name: "{{ name }}"
    action: "{{ action }}"
    version: "{{ version }}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "Install or uninstall the latest version or specified version of an AWS package. Available packages include the following: AWSPVDriver, AwsEnaNetworkDriver, AwsVssComponents, and AmazonCloudWatchAgent, and AWSSupport-EC2Rescue.",
   "parameters": {
      "action": {
         "description":"(Required) Specify whether or not to install or uninstall the package.",
         "type":"String",
         "allowedValues":[
            "Install",
            "Uninstall"
         ]
      },
      "name": {
         "description": "(Required) The package to install/uninstall.",
         "type": "String",
         "allowedPattern": "^arn:[a-z0-9][-.a-z0-9]{0,62}:[a-z0-9][-.a-z0-9]{0,62}:([a-z0-9][-.a-z0-9]{0,62})?:([a-z0-9][-.a-z0-9]{0,62})?:package\\/[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$|^[a-zA-Z][a-zA-Z0-9\\-_]{0,39}$"
      },
      "version": {
         "type": "String",
         "description": "(Optional) A specific version of the package to install or uninstall."
      }
   },
   "mainSteps":[
      {
         "action": "aws:configurePackage",
         "name": "configurePackage",
         "inputs": {
            "name": "{{ name }}",
            "action": "{{ action }}",
            "version": "{{ version }}"
         }
      }
   ]
}
```

------

## Versione dello schema 1.2
<a name="documents-schema-onex"></a>

L'esempio seguente mostra gli elementi di primo livello di un documento che utilizza la versione dello schema 1.2.

```
{
   "schemaVersion":"1.2",
   "description":"A description of the SSM document.",
   "parameters":{
      "parameter 1":{
         "one or more parameter properties"
      },
      "parameter 2":{
         "one or more parameter properties"
      },
      "parameter 3":{
         "one or more parameter properties"
      }
   },
   "runtimeConfig":{
      "plugin 1":{
         "properties":[
            {
               "one or more plugin properties"
            }
         ]
      }
   }
}
```

**Esempio con `aws:runShellScript` per la versione dello schema 1.2**  
L'esempio seguente mostra il documento SSM `AWS-RunShellScript`. La sezione **runtimeConfig** include il plugin `aws:runShellScript`.

```
{
    "schemaVersion":"1.2",
    "description":"Run a shell script or specify the commands to run.",
    "parameters":{
        "commands":{
            "type":"StringList",
            "description":"(Required) Specify a shell script or a command to run.",
            "minItems":1,
            "displayType":"textarea"
        },
        "workingDirectory":{
            "type":"String",
            "default":"",
            "description":"(Optional) The path to the working directory on your instance.",
            "maxChars":4096
        },
        "executionTimeout":{
            "type":"String",
            "default":"3600",
            "description":"(Optional) The time in seconds for a command to complete before it is considered to have failed. Default is 3600 (1 hour). Maximum is 172800 (48 hours).",
            "allowedPattern":"([1-9][0-9]{0,3})|(1[0-9]{1,4})|(2[0-7][0-9]{1,3})|(28[0-7][0-9]{1,2})|(28800)"
        }
    },
    "runtimeConfig":{
        "aws:runShellScript":{
            "properties":[
                {
                    "id":"0.aws:runShellScript",
                    "runCommand":"{{ commands }}",
                    "workingDirectory":"{{ workingDirectory }}",
                    "timeoutSeconds":"{{ executionTimeout }}"
                }
            ]
        }
    }
}
```

## Versione dello schema 0.3
<a name="automation-doc-syntax-examples"></a>

**Elementi di primo livello**  
L'esempio seguente mostra gli elementi di primo livello di un runbook Automation che utilizza la versione dello schema 0.3 in formato JSON.

```
{
    "description": "document-description",
    "schemaVersion": "0.3",
    "assumeRole": "{{assumeRole}}",
    "parameters": {
        "parameter1": {
            "type": "String",
            "description": "parameter-1-description",
            "default": ""
        },
        "parameter2": {
            "type": "String",
            "description": "parameter-2-description",
            "default": ""
        }
    },
    "variables": {
        "variable1": {
            "type": "StringMap",
            "description": "variable-1-description",
            "default": {}
        },
        "variable2": {
            "type": "String",
            "description": "variable-2-description",
            "default": "default-value"
        }
    },
    "mainSteps": [
        {
            "name": "myStepName",
            "action": "action-name",
            "maxAttempts": 1,
            "inputs": {
                "Handler": "python-only-handler-name",
                "Runtime": "runtime-name",
                "Attachment": "script-or-zip-name"
            },
            "outputs": {
                "Name": "output-name",
                "Selector": "selector.value",
                "Type": "data-type"
            }
        }
    ],
    "files": {
        "script-or-zip-name": {
            "checksums": {
                "sha256": "checksum"
            },
            "size": 1234
        }
    }
}
```

**Esempio di runbook Automation YAML**  
L'esempio seguente mostra il contenuto di un runbook Automation, in formato YAML. Questo esempio d'uso della versione 0.3 dello schema del documento dimostra anche l'utilizzo di Markdown per formattare le descrizioni dei documenti.

```
description: >-
  ##Title: LaunchInstanceAndCheckState

  -----

  **Purpose**: This Automation runbook first launches an EC2 instance
  using the AMI ID provided in the parameter ```imageId```. The second step of
  this document continuously checks the instance status check value for the
  launched instance until the status ```ok``` is returned.


  ##Parameters:

  -----

  Name | Type | Description | Default Value

  ------------- | ------------- | ------------- | -------------

  assumeRole | String | (Optional) The ARN of the role that allows Automation to
  perform the actions on your behalf. | -

  imageId  | String | (Optional) The AMI ID to use for launching the instance.
  The default value uses the latest Amazon Linux AMI ID available. | {{
  ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64 }}
schemaVersion: '0.3'
assumeRole: 'arn:aws:iam::111122223333::role/AutomationServiceRole'
parameters:
  imageId:
    type: String
    default: '{{ ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64 }}'
    description: >-
      (Optional) The AMI ID to use for launching the instance. The default value
      uses the latest released Amazon Linux AMI ID.
  tagValue:
    type: String
    default: ' LaunchedBySsmAutomation'
    description: >-
      (Optional) The tag value to add to the instance. The default value is
      LaunchedBySsmAutomation.
  instanceType:
    type: String
    default: t2.micro
    description: >-
      (Optional) The instance type to use for the instance. The default value is
      t2.micro.
mainSteps:
  - name: LaunchEc2Instance
    action: 'aws:executeScript'
    outputs:
      - Name: payload
        Selector: $.Payload
        Type: StringMap
    inputs:
      Runtime: python3.11
      Handler: launch_instance
      Script: ''
      InputPayload:
        image_id: '{{ imageId }}'
        tag_value: '{{ tagValue }}'
        instance_type: '{{ instanceType }}'
      Attachment: launch.py
    description: >-
      **About This Step**


      This step first launches an EC2 instance using the ```aws:executeScript```
      action and the provided python script.
  - name: WaitForInstanceStatusOk
    action: 'aws:executeScript'
    inputs:
      Runtime: python3.11
      Handler: poll_instance
      Script: |-
        def poll_instance(events, context):
          import boto3
          import time

          ec2 = boto3.client('ec2')

          instance_id = events['InstanceId']

          print('[INFO] Waiting for instance status check to report ok', instance_id)

          instance_status = "null"

          while True:
            res = ec2.describe_instance_status(InstanceIds=[instance_id])

            if len(res['InstanceStatuses']) == 0:
              print("Instance status information is not available yet")
              time.sleep(5)
              continue

            instance_status = res['InstanceStatuses'][0]['InstanceStatus']['Status']

            print('[INFO] Polling to get status of the instance', instance_status)

            if instance_status == 'ok':
              break

            time.sleep(10)

          return {'Status': instance_status, 'InstanceId': instance_id}
      InputPayload: '{{ LaunchEc2Instance.payload }}'
    description: >-
      **About This Step**


      The python script continuously polls the instance status check value for
      the instance launched in Step 1 until the ```ok``` status is returned.
files:
  launch.py:
    checksums:
      sha256: 18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE
```

## Esempi di gestione sicura dei parametri
<a name="secure-parameter-examples"></a>

Gli esempi seguenti illustrano la gestione sicura dei parametri mediante variabili `interpolationType` di ambiente.

### Esecuzione sicura dei comandi di base
<a name="basic-secure-command"></a>

Questo esempio mostra come gestire in modo sicuro un parametro di comando:

**Nota**  
`allowedPattern` non è tecnicamente necessario, se un documento SSM non utilizza le doppie parentesi graffe: `{{ }}` 

------
#### [ YAML ]

```
---

schemaVersion: '2.2'
description: An example document.
parameters:
  Message:
    type: String
    description: "Message to be printed"
    default: Hello
    interpolationType: ENV_VAR
    allowedPattern: "^[^"]*$"
mainSteps:
  - action: aws:runShellScript
    name: printMessage
    precondition:
      StringEquals:
        - platformType
        - Linux
    inputs:
      runCommand:
        - echo {{Message}}
```

------
#### [ JSON ]

```
{
    "schemaVersion": "2.2",
    "description": "An example document.",
    "parameters": {
        "Message": {
            "type": "String",
            "description": "Message to be printed",
            "default": "Hello",
            "interpolationType": "ENV_VAR",
            "allowedPattern": "^[^"]*$"
        }
    },
    "mainSteps": [{
        "action": "aws:runShellScript",
        "name": "printMessage",
        "precondition": {
           "StringEquals": ["platformType", "Linux"]
        },
        "inputs": {
            "runCommand": [
              "echo {{Message}}"
            ]
        }
    }]
}
```

------

### Utilizzo dei parametri nei linguaggi interpretati
<a name="interpreted-language-example"></a>

Questo esempio dimostra la gestione sicura dei parametri in Python:

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: 'Secure Python script execution'
parameters:
  inputData:
    type: String
    description: 'Input data for processing'
    interpolationType: 'ENV_VAR'
mainSteps:
  - action: aws:runPowerShellScript
    name: runPython
    inputs:
      runCommand:
        - |
          python3 -c '
          import os
          import json
          
          # Safely access parameter through environment variable
          input_data = os.environ.get("SSM_inputData", "")
          
          # Process the data
          try:
              processed_data = json.loads(input_data)
              print(f"Successfully processed: {processed_data}")
          except json.JSONDecodeError:
              print("Invalid JSON input")
          '
```

------

### Esempio di compatibilità retroattiva
<a name="backwards-compatibility-example"></a>

Questo esempio mostra come gestire i parametri in modo sicuro mantenendo la compatibilità retroattiva:

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: 'Backwards compatible secure parameter handling'
parameters:
  userInput:
    type: String
    description: 'User input to process'
    interpolationType: 'ENV_VAR'
    allowedPattern: '^[^"]*$'

mainSteps:
  - action: aws:runShellScript
    name: processInput
    inputs:
      runCommand:
        - |
          # Handle both modern and legacy agent versions
          if [ -z "${SSM_userInput+x}" ]; then
              # Legacy agent - fall back to direct parameter reference
              export SSM_userInput="{{userInput}}"
          fi
          
          # Process the input securely
          echo "Processing input: $SSM_userInput"
```

------

**Nota**  
`allowedPattern` non è tecnicamente necessario, se un documento SSM non utilizza le doppie parentesi graffe: `{{ }}` 

## Best practice sulla sicurezza dei parametri
<a name="parameter-security-best-practices"></a>

È necessario seguire queste best practice, quando si gestiscono i parametri nei documenti SSM:
+ **Utilizzo dell'interpolazione delle variabili di ambiente**: usare sempre `interpolationType: "ENV_VAR"` per i parametri di stringa che verranno utilizzati nelle esecuzioni dei comandi.
+ **Implementazione della convalida dell'input**: usare `allowedPattern` per limitare i valori dei parametri a modelli sicuri.
+ **Gestione dei sistemi legacy**: includere la logica di fallback per le versioni SSM Agent precedenti, che non supportano l'interpolazione delle variabili di ambiente.
+ **Evitare i caratteri speciali**: quando si utilizzano i valori dei parametri nei comandi, evitare adeguatamente i caratteri speciali, per impedire che la shell li interpreti.
+ **Limitazione dell'ambito dei parametri**: utilizzare i modelli di parametri più restrittivi possibili per il proprio caso d'uso.

# Elementi di dati e parametri
<a name="documents-syntax-data-elements-parameters"></a>

Questo argomento descrive gli elementi di dati utilizzati nei documenti SSM. La versione dello schema utilizzata per creare un documento definisce la sintassi e gli elementi di dati accettati. Per i documenti di comando è consigliabile utilizzare la versione dello schema 2.2 o successiva. I runbook Automation utilizzano la versione dello schema 0.3. Inoltre, i runbook Automation supportano l'uso di Markdown, un linguaggio di markup, che consente di aggiungere descrizioni in stile wiki ai documenti e alle singole fasi all'interno del documento. Per ulteriori informazioni sull'utilizzo di Markdown, consulta [Utilizzo di Markdown nella console](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html) nella *Guida alle operazioni di base di Console di gestione AWS *.

La sezione seguente descrive gli elementi di dati che si possono includere in un documento SSM.

## Elementi di dati di primo livello
<a name="top-level"></a>

**schemaVersion**  
La versione dello schema da utilizzare.  
Tipo: Versione  
Obbligatorio: sì

**description**  
Le informazioni fornite per descrivere lo scopo del documento. È inoltre possibile utilizzare questo campo per specificare se un parametro richiede un valore per l'esecuzione di un documento o se è facoltativo fornire un valore per il parametro. I parametri obbligatori e facoltativi possono essere visualizzati negli esempi in questo argomento.  
▬Tipo: stringa  
Obbligatorio: no

**parametri**  
Una struttura che definisce i parametri accettati dal documento.   
Per una maggiore sicurezza durante la gestione dei parametri delle stringhe, è possibile utilizzare l'interpolazione delle variabili di ambiente specificando la proprietà di `interpolationType`. Se impostato su `ENV_VAR`, l'agente crea una variabile di ambiente denominata `SSM_parameter-name`, che contiene il valore del parametro.  
Di seguito è riportato un esempio di parametro che utilizza una variabile di ambiente di `interpolationType`:  

```
{
    "schemaVersion": "2.2",
    "description": "An example document.",
    "parameters": {
        "Message": {
            "type": "String",
            "description": "Message to be printed",
            "default": "Hello",
            "interpolationType" : "ENV_VAR",
            "allowedPattern": "^[^"]*$"

        }
    },
    "mainSteps": [{
        "action": "aws:runShellScript",
        "name": "printMessage",
        "precondition" : {
           "StringEquals" : ["platformType", "Linux"]
        },
        "inputs": {
            "runCommand": [
              "echo {{Message}}"
            ]
        }
    }
}
```
`allowedPattern` non è tecnicamente necessario, se un documento SSM non utilizza le doppie parentesi graffe: `{{ }}` 
Riguardo ai parametri che si utilizzano spesso, è consigliabile archiviarli in Parameter Store, uno strumento di AWS Systems Manager. Puoi quindi definire i parametri nel tuo documento che si riferiscono ai parametri Parameter Store come valore predefinito. Per fare riferimento al parametro Parameter Store, utilizza la sintassi seguente.   

```
{{ssm:parameter-name}}
```
È possibile utilizzare un parametro che fa riferimento al parametro Parameter Store allo stesso modo di qualsiasi altro parametro del documento. Nell'esempio seguente, il valore predefinito per il parametro `commands` è il valore del parametro Parameter Store `myShellCommands`. Specificando il valore del parametro `commands` come stringa `runCommand`, il documento esegue i comandi memorizzati nel parametro `myShellCommands`.  

```
---
schemaVersion: '2.2'
description: runShellScript with command strings stored as Parameter Store parameter
parameters:
  commands:
    type: StringList
    description: "(Required) The commands to run on the instance."
    default: ["{{ ssm:myShellCommands }}"],
            interpolationType : 'ENV_VAR'
            allowedPattern: '^[^"]*$'

mainSteps:
- action: aws:runShellScript
  name: runShellScriptDefaultParams
  inputs:
    runCommand:"{{ commands }}"
```

```
{
    "schemaVersion": "2.2",
    "description": "runShellScript with command strings stored as Parameter Store parameter",
    "parameters": {
      "commands": {
        "type": "StringList",
        "description": "(Required) The commands to run on the instance.",
        "default": ["{{ ssm:myShellCommands }}"],
        "interpolationType" : "ENV_VAR"
      }
    },
    "mainSteps": [
      {
        "action": "aws:runShellScript",
        "name": "runShellScriptDefaultParams",
        "inputs": {
            "runCommand": [
              "{{ commands }}"
          ]
        }
      }
    ]
  }
```
Puoi fare riferimento ai parametri `String`, `StringList` e Parameter Store nella sezione `parameters` del documento. Non si può fare riferimento ai parametri `SecureString` Parameter Store.
Per ulteriori informazioni su Parameter Store, consultare [AWS Systems Manager Parameter Store](systems-manager-parameter-store.md).  
Tipo: Struttura  
La struttura `parameters` accetta i seguenti campi e valori:  
+ `type`: (Obbligatorio) I valori consentiti sono i seguenti: `String`, `StringList`, `Integer`, `Boolean`, `MapList` e `StringMap`. Per visualizzare esempi di ciascun tipo, consulta [Esempi `type` di parametri di documenti SSM](#top-level-properties-type) nella sezione successiva.
**Nota**  
I documenti di tipo di comando supportano solo i tipi di parametri `String` e `StringList`.
+ `description`: (facoltativo) una descrizione del parametro.
+ `default`: (facoltativo) il valore predefinito del parametro o un riferimento a un parametro in Parameter Store.
+ `allowedValues`: (facoltativo) una matrice dei valori consentiti per il parametro. La definizione dei valori consentiti per il parametro convalida l'input dell'utente. Se un utente inserisce un valore non consentito, l'esecuzione non viene avviata.

------
#### [ YAML ]

  ```
  DirectoryType:
    type: String
    description: "(Required) The directory type to launch."
    default: AwsMad
    allowedValues:
    - AdConnector
    - AwsMad
    - SimpleAd
  ```

------
#### [ JSON ]

  ```
  "DirectoryType": {
    "type": "String",
    "description": "(Required) The directory type to launch.",
    "default": "AwsMad",
    "allowedValues": [
      "AdConnector",
      "AwsMad",
      "SimpleAd"
    ]
  }
  ```

------
+ `allowedPattern`: (facoltativo) un'espressione regolare che convalida se l'input dell'utente corrisponde al modello definito per il parametro. Se l'input dell'utente non corrisponde al modello consentito, l'esecuzione non viene avviata.
**Nota**  
Systems Manager esegue due convalide per `allowedPattern`. La prima convalida viene eseguita utilizzando la [libreria Java regex](https://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html) a livello di API quando si utilizza un documento. La seconda convalida viene eseguita su SSM Agent utilizzando la [libreria di GO regexp](https://pkg.go.dev/regexp) prima di elaborare il documento. 

------
#### [ YAML ]

  ```
  InstanceId:
    type: String
    description: "(Required) The instance ID to target."
    allowedPattern: "^i-(?:[a-f0-9]{8}|[a-f0-9]{17})$"
    default: ''
  ```

------
#### [ JSON ]

  ```
  "InstanceId": {
    "type": "String",
    "description": "(Required) The instance ID to target.",
    "allowedPattern": "^i-(?:[a-f0-9]{8}|[a-f0-9]{17})$",
    "default": ""
  }
  ```

------
+ `displayType`: (Facoltativo) Utilizzato per visualizzare un `textfield` o un `textarea` in Console di gestione AWS. `textfield`è una casella di testo a riga singola. `textarea`è un'area di testo su più righe.
+ `minItems`: (facoltativo) il numero minimo di elementi consentiti.
+ `maxItems`: (facoltativo) il numero massimo di elementi consentiti.
+ `minChars`: (facoltativo) il numero minimo di caratteri del parametro consentiti.
+ `maxChars`: (facoltativo) il numero massimo di caratteri del parametro consentiti.
+ `interpolationType`: (facoltativo) definisce come i valori dei parametri vengono elaborati prima dell'esecuzione del comando. Se impostato su `ENV_VAR`, il valore del parametro viene reso disponibile come variabile di ambiente denominata `SSM_parameter-name`. Questa funzionalità previene l'iniezione di comandi trattando i valori di parametro come stringhe letterali.

  Tipo: String

  Valori validi: `ENV_VAR`
Campo obbligatorio: no

**variables**  
(Solo versione 0.3 dello schema) Valori a cui è possibile fare riferimento o da aggiornare durante i passaggi di un runbook Automation. Le variabili sono simili ai parametri, ma presentano una differenza molto rilevante. Nel contesto di un runbook, i valori dei parametri sono statici mentre quelli delle variabili possono essere modificati. Quando si aggiorna il valore di una variabile, il tipo di dati deve corrispondere al tipo di dati definito. Per informazioni sull'aggiornamento dei valori delle variabili in un'automazione, consulta la pagina [`aws:updateVariable`: aggiorna un valore per una variabile di runbook](automation-action-update-variable.md)  
Tipo: Boolean \$1 Integer \$1 \$1 String \$1 \$1 MapList StringList StringMap  
Obbligatorio: no  

```
variables:
    payload:
        type: StringMap
        default: "{}"
```

```
{
    "variables": [
        "payload": {
            "type": "StringMap",
            "default": "{}"
        }
    ]
}
```

**runtimeConfig**  
(Solo versione dello schema 1.2) La configurazione per l'istanza applicata da uno o più plugin di Systems Manager. Non è garantito che l'esecuzione dei plugin avvenga in sequenza.   
Tipo: Dictionary<String, > PluginConfiguration  
Obbligatorio: no

**mainSteps**  
(Solo versione dello schema 0.3, 2.0 e 2.2) Un oggetto che può includere più fasi (plugin). I plugin sono definiti all'interno delle fasi. Le fasi vengono eseguite nell'ordine sequenziale indicato nel documento.   
Tipo: Dictionary<String, > PluginConfiguration  
Obbligatorio: sì

**outputs**  
(Solo versione dello schema 0.3) Dati generati dall'esecuzione di questo documento che possono essere utilizzati in altri processi. Ad esempio, se il documento ne crea uno nuovoAMI, puoi specificare ". CreateImage ImageId"come valore di output, quindi utilizzate questo output per creare nuove istanze in una successiva esecuzione di automazione. Per ulteriori informazioni sugli output, consulta [Utilizzo degli output delle operazioni come input](automation-action-outputs-inputs.md).  
Tipo: dictionary<string, > OutputConfiguration  
Obbligatorio: no

**files**  
(Solo versione dello schema 0.3) I file di script (e i relativi checksum) collegati al documento ed eseguiti durante un'esecuzione dell'automazione. Si applica solo ai documenti che includono l'operazione `aws:executeScript` e per i quali gli allegati sono stati specificati in una o più fasi.   
Per ulteriori informazioni sui runtime supportati dai runbook Automation, vedere [`aws:executeScript`: esecuzione di uno script](automation-action-executeScript.md). Per ulteriori informazioni sull'inclusione di script nei runbook Automation, consultare [Utilizzo di script nei runbook](automation-document-script-considerations.md) e [Esperienza di progettazione visiva per i runbook Automation](automation-visual-designer.md).  
Quando si crea un runbook di automazione con allegati, è inoltre necessario specificare i file allegati utilizzando l'`--attachments`opzione (for AWS CLI) o `Attachments` (per API e SDK). È possibile specificare la posizione del file sia per i documenti SSM che per i file archiviati nei bucket Amazon Simple Storage Service (Amazon S3). Per ulteriori informazioni, consulta [Allegati](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateDocument.html#systemsmanager-CreateDocument-request-Attachments) nell'API Reference. AWS Systems Manager   

```
---
files:
  launch.py:
    checksums:
      sha256: 18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE
```

```
"files": {
    "launch.py": {
        "checksums": {
            "sha256": "18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE"
        }
    }
}
```
Tipo: dictionary<String, > FilesConfiguration  
Obbligatorio: no

## Esempi `type` di parametri di documenti SSM
<a name="top-level-properties-type"></a>

I tipi di parametri nei documenti SSM sono statici. Ciò significa che il tipo di parametro non può essere modificato dopo che è stato definito. Quando si utilizzano parametri con plugin del documento SSM, il tipo di parametro non può essere modificato dinamicamente all'interno dell'input di un plugin. Ad esempio, non è possibile fare riferimento a un parametro `Integer` all'interno dell'input `runCommand` del plugin `aws:runShellScript` perché questo input accetta una stringa o un elenco di stringhe. Per utilizzare un parametro per un input di plugin, il tipo di parametro deve corrispondere al tipo accettato. Ad esempio, è necessario specificare un tipo di parametro `Boolean` per l'input `allowDowngrade` del plugin `aws:updateSsmAgent`. Se il tipo di parametro non corrisponde al tipo di input per un plugin, il documento SSM non viene convalidato e il sistema non crea il documento. Questo vale anche quando si utilizzano parametri a valle all'interno degli input per altri plugin o azioni di automazione. AWS Systems Manager Ad esempio, non è possibile fare riferimento a un parametro di `StringList` nell'input `documentParameters` del plugin `aws:runDocument`. L'input di `documentParameters` accetta una mappa di stringhe anche se il tipo di parametro del documento SSM a valle è un parametro `StringList` e corrisponde al parametro a cui si fa riferimento.

Quando si utilizzano parametri con operazioni di automazione di , nella maggior parte dei casi i tipi di parametro non vengono convalidati quando si crea il documento SSM. Solo quando si utilizza l'operazione `aws:runCommand`, i tipi di parametro vengono convalidati quando si crea il documento SSM. In tutti gli altri casi, la convalida dei parametri avviene durante l'esecuzione dell'automazione quando l'input di un'operazione viene verificato prima dell'esecuzione. Ad esempio, se il parametro di input è `String` e si fa riferimento ad esso come valore per l'input `MaxInstanceCount` dell'operazione `aws:runInstances`, viene creato il documento SSM. Tuttavia, quando si esegue il documento, l'automazione non riesce durante la convalida dell'operazione `aws:runInstances` perché l'input `MaxInstanceCount` richiede un valore `Integer`.

Di seguito sono riportati alcuni esempi di ciascun parametro `type`.

Stringa  
Una sequenza di zero o più caratteri Unicode inclusa tra virgolette. Ad esempio, "i-1234567890abcdef0". Utilizza barre rovesciate come caratteri di escape.  
I parametri di stringa possono includere un campo di `interpolationType` opzionale con il valore `ENV_VAR`, per abilitare l'interpolazione delle variabili di ambiente per una maggiore sicurezza.  

```
---
InstanceId:
  type: String
  description: "(Optional) The target EC2 instance ID."
  interpolationType: ENV_VAR
```

```
"InstanceId":{
  "type":"String",
  "description":"(Optional) The target EC2 instance ID.",
  "interpolationType": "ENV_VAR"
}
```

StringList  
Un elenco di elementi String separati da virgole. Ad esempio, ["cd \$1", "pwd"].  

```
---
commands:
  type: StringList
  description: "(Required) Specify a shell script or a command to run."
  default: ""
  minItems: 1
  displayType: textarea
```

```
"commands":{
  "type":"StringList",
  "description":"(Required) Specify a shell script or a command to run.",
  "minItems":1,
  "displayType":"textarea"
}
```

Booleano  
Accetta solo `true` o `false`. Non accetta "true" o 0.  

```
---
canRun:
  type: Boolean
  description: ''
  default: true
```

```
"canRun": {
  "type": "Boolean",
  "description": "",
  "default": true
}
```

Numero intero  
Numeri interi. Non accetta numeri decimali, ad esempio 3,14159, o numeri inclusi tra virgolette, ad esempio "3".  

```
---
timeout:
  type: Integer
  description: The type of action to perform.
  default: 100
```

```
"timeout": {
  "type": "Integer",
  "description": "The type of action to perform.",
  "default": 100    
}
```

StringMap  
Mappatura di chiavi a valori. Le chiavi e i valori devono essere stringhe. Ad esempio, \$1"Env": "Prod"\$1.  

```
---
notificationConfig:
  type: StringMap
  description: The configuration for events to be notified about
  default:
    NotificationType: 'Command'
    NotificationEvents:
    - 'Failed'
    NotificationArn: "$dependency.topicArn"
  maxChars: 150
```

```
"notificationConfig" : {
  "type" : "StringMap",
  "description" : "The configuration for events to be notified about",
  "default" : {
    "NotificationType" : "Command",
    "NotificationEvents" : ["Failed"],
    "NotificationArn" : "$dependency.topicArn"
  },
  "maxChars" : 150
}
```

MapList  
Un elenco di oggetti. StringMap   

```
blockDeviceMappings:
  type: MapList
  description: The mappings for the create image inputs
  default:
  - DeviceName: "/dev/sda1"
    Ebs:
      VolumeSize: "50"
  - DeviceName: "/dev/sdm"
    Ebs:
      VolumeSize: "100"
  maxItems: 2
```

```
"blockDeviceMappings":{
  "type":"MapList",
  "description":"The mappings for the create image inputs",
  "default":[
    {
      "DeviceName":"/dev/sda1",
      "Ebs":{
        "VolumeSize":"50"
      }
    },
    {
      "DeviceName":"/dev/sdm",
      "Ebs":{
        "VolumeSize":"100"
      }
    }
  ],
  "maxItems":2
}
```

## Visualizzazione del contenuto del documento Command SSM
<a name="viewing-ssm-document-content"></a>

Per visualizzare in anteprima i parametri obbligatori e facoltativi per un documento di comando AWS Systems Manager (SSM), oltre alle azioni eseguite dal documento, è possibile visualizzare il contenuto del documento nella console Systems Manager.

**Per visualizzare il contenuto del documento Command SSM**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel pannello di navigazione, scegli **Documenti**.

1. Nella casella di ricerca selezionare **Document type (Tipo di documento)** e quindi selezionare **Command (Comando)**.

1. Scegli il nome di un documento, quindi la scheda **Contenuto**. 

1. Nel campo del contenuto esaminare i parametri e i passaggi delle operazioni disponibili per il documento.

   Ad esempio, l'immagine seguente mostra che (1) `version` e (2) `allowDowngrade`sono parametri opzionali per il documento `AWS-UpdateSSMAgent` e che la prima operazione eseguita dal documento è (3) `aws:updateSsmAgent`.  
![\[Visualizzare il contenuto dei documenti SSM nella console di Systems Manager\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/view-document-content.png)

# Documentazione di riferimento del plugin per i documenti di comando
<a name="documents-command-ssm-plugin-reference"></a>

Questo riferimento descrive i plugin che è possibile specificare in un documento di tipo Command AWS Systems Manager (SSM). Questi plugin non possono essere utilizzati nei runbook Automation SSM che usano operazioni di Automation. Per informazioni sulle azioni di AWS Systems Manager automazione, vedere. [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md)

Systems Manager determina le operazioni da eseguire su un'istanza gestita mediante la lettura dei contenuti di un documento SSM. Ogni documento include una sezione di esecuzione di codice. A seconda della versione dello schema del documento, questa sezione di esecuzione di codice può includere uno o più plugin o fasi. Ai fini di questo argomento della Guida, i plugin e le fasi sono chiamati *plugin*. Questa sezione include informazioni su ciascun plugin di Systems Manager. Per ulteriori informazioni sui documenti, incluse informazioni sulla creazione di documenti e sulle differenze tra le versioni dello schema, consulta [Documenti di AWS Systems Manager](documents.md).

Per i plugin che accettano parametri String, come `aws:runShellScript` e `aws:runPowerShellScript`, il parametro `interpolationType` è utilizzabile per migliorare la sicurezza trattando gli input dei parametri come stringhe letterali, invece di comandi potenzialmente eseguibili. Esempio:

```
{
    "schemaVersion": "2.2",
    "description": "runShellScript with command strings stored as Parameter Store parameter",
    "parameters": {
      "commands": {
        "type": "StringList",
        "description": "(Required) The commands to run on the instance.",
        "default": ["{{ ssm:myShellCommands }}"],
        "interpolationType" : "ENV_VAR"
      }
    },
    //truncated
 }
```

**Nota**  
Alcuni dei plugin illustrati in questa sezione possono essere eseguiti soltanto su istanze Windows Server o Linux. Sono riportate le dipendenze della piattaforma per ogni plugin.   
I seguenti plugin di documenti sono supportati nelle istanze di Amazon Elastic Compute Cloud (Amazon EC2) per macOS:  
`aws:refreshAssociation`
`aws:runShellScript`
`aws:runPowerShellScript`
`aws:softwareInventory`
`aws:updateSsmAgent`

**Topics**
+ [

## Input condivisi
](#shared-inputs)
+ [

## `aws:applications`
](#aws-applications)
+ [

## `aws:cloudWatch`
](#aws-cloudWatch)
+ [

## `aws:configureDocker`
](#aws-configuredocker)
+ [

## `aws:configurePackage`
](#aws-configurepackage)
+ [

## `aws:domainJoin`
](#aws-domainJoin)
+ [

## `aws:downloadContent`
](#aws-downloadContent)
+ [

## `aws:psModule`
](#aws-psModule)
+ [

## `aws:refreshAssociation`
](#aws-refreshassociation)
+ [

## `aws:runDockerAction`
](#aws-rundockeraction)
+ [

## `aws:runDocument`
](#aws-rundocument)
+ [

## `aws:runPowerShellScript`
](#aws-runPowerShellScript)
+ [

## `aws:runShellScript`
](#aws-runShellScript)
+ [

## `aws:softwareInventory`
](#aws-softwareinventory)
+ [

## `aws:updateAgent`
](#aws-updateagent)
+ [

## `aws:updateSsmAgent`
](#aws-updatessmagent)

## Input condivisi
<a name="shared-inputs"></a>

Solo con la versione 3.0.502 e successive di SSM Agent tutti i plugin possono utilizzare i seguenti input:

**finallyStep**  
L'ultimo passaggio è l'esecuzione del documento. Se questo input è definito per un passaggio, ha la precedenza su un valore `exit` specificato negli input `onFailure` o `onSuccess`. Affinché un passaggio con questo input sia eseguito come previsto, il passaggio deve essere l'ultimo definito nel `mainSteps` del documento.  
Tipo: Booleano  
Valori validi: `true` \$1 `false`  
Obbligatorio: no

**onFailure**  
Se si specifica questo input per un plugin con il valore `exit` e il passaggio non riesce, lo stato del passaggio riflette l'errore e il documento non esegue i passaggi rimanenti a meno che non sia stato definito un `finallyStep`. Se si specifica questo input per un plugin con il valore `successAndExit` e il passaggio non riesce, lo stato del passaggio riflette l'errore e il documento non esegue i passaggi rimanenti a meno che non sia stato definito un `finallyStep`.  
Tipo: String  
Valori validi: `exit` \$1 `successAndExit`  
Obbligatorio: no

**onSuccess**  
Se si specifica questo input per un plugin e il passaggio viene eseguito correttamente, il documento non esegue i passaggi rimanenti a meno che non sia stato definito un `finallyStep`.  
Tipo: String  
Valori validi: `exit`  
Campo obbligatorio: no

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: Shared inputs example
parameters:
  customDocumentParameter:
    type: String
    description: Example parameter for a custom Command-type document.
mainSteps:
- action: aws:runDocument
  name: runCustomConfiguration
  inputs:
    documentType: SSMDocument
    documentPath: "yourCustomDocument"
    documentParameters: '"documentParameter":{{customDocumentParameter}}'
    onSuccess: exit
- action: aws:runDocument
  name: ifConfigurationFailure
  inputs:
    documentType: SSMDocument
    documentPath: "yourCustomRepairDocument"
    onFailure: exit
- action: aws:runDocument
  name: finalConfiguration
  inputs:
    documentType: SSMDocument
    documentPath: "yourCustomFinalDocument"
    finallyStep: true
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "Shared inputs example",
   "parameters": {
      "customDocumentParameter": {
         "type": "String",
         "description": "Example parameter for a custom Command-type document."
      }
   },
   "mainSteps":[
      {
         "action": "aws:runDocument",
         "name": "runCustomConfiguration",
         "inputs": {
            "documentType": "SSMDocument",
            "documentPath": "yourCustomDocument",
            "documentParameters": "\"documentParameter\":{{customDocumentParameter}}",
            "onSuccess": "exit"
         }
      },
      {
         "action": "aws:runDocument",
         "name": "ifConfigurationFailure",
         "inputs": {
            "documentType": "SSMDocument",
            "documentPath": "yourCustomRepairDocument",
            "onFailure": "exit"
         }
      },
      {
         "action": "aws:runDocument",
         "name":"finalConfiguration",
         "inputs": {
            "documentType": "SSMDocument",
            "documentPath": "yourCustomFinalDocument",
            "finallyStep": true
         }
      }
   ]
}
```

------

## `aws:applications`
<a name="aws-applications"></a>

Installa, ripara o disinstalla applicazioni su un'istanza EC2. Questo plugin può essere eseguito solo su sistemi operativi Windows Server.

### Sintassi
<a name="applications-syntax"></a>

#### Schema 2.2
<a name="applications-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:applications plugin
parameters:
  source:
    description: "(Required) Source of msi."
    type: String
mainSteps:
- action: aws:applications
  name: example
  inputs:
    action: Install
    source: "{{ source }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion":"2.2",
  "description":"aws:applications",
  "parameters":{
    "source":{
    "description":"(Required) Source of msi.",
    "type":"String"
    }
  },
  "mainSteps":[
    {
      "action":"aws:applications",
      "name":"example",
      "inputs":{
        "action":"Install",
        "source":"{{ source }}"
      }
    }
  ]
}
```

------

#### Schema 1.2
<a name="applications-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:applications:
    properties:
    - id: 0.aws:applications
      action: "{{ action }}"
      parameters: "{{ parameters }}"
      source: "{{ source }}"
      sourceHash: "{{ sourceHash }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:applications":{
         "properties":[
            {
               "id":"0.aws:applications",
               "action":"{{ action }}",
               "parameters":"{{ parameters }}",
               "source":"{{ source }}",
               "sourceHash":"{{ sourceHash }}"
            }
         ]
      }
   }
}
```

------

### Properties
<a name="applications-properties"></a>

**operazione**  
L'operazione da eseguire.  
Tipo: Enum  
Valori validi: `Install` \$1 `Repair` \$1 `Uninstall`  
Obbligatorio: sì

**parametri**  
I parametri per il programma di installazione.  
Tipo: stringa  
Obbligatorio: no

**origine**  
L'URL del file `.msi` per l'applicazione.  
Tipo: stringa  
Obbligatorio: sì

**sourceHash**  
L' SHA256 hash del `.msi` file.  
▬Tipo: stringa  
Obbligatorio: no

## `aws:cloudWatch`
<a name="aws-cloudWatch"></a>

Esporta i dati Windows Server da Amazon CloudWatch o Amazon CloudWatch Logs e monitora i dati utilizzando le CloudWatch metriche. Questo plugin può essere eseguito solo su sistemi operativi Windows Server. *Per ulteriori informazioni sulla configurazione CloudWatch dell'integrazione con Amazon Elastic Compute Cloud (Amazon EC2)[, consulta Collecting metrics, logs and trace with CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html) the agent nella Amazon User Guide. CloudWatch *

**Importante**  
L' CloudWatch agente unificato è stato sostituito SSM Agent come strumento per l'invio dei dati di log ad Amazon CloudWatch Logs. Il plugin aws:cloudWatch SSM Agent non è supportato. Ti consigliamo di utilizzare solo l' CloudWatch agente unificato per i processi di raccolta dei log. Per ulteriori informazioni, consulta i seguenti argomenti:  
[Invio dei log dei nodi a CloudWatch registri unificati (agente) CloudWatch](monitoring-cloudwatch-agent.md)
[Esegui la migrazione della raccolta di log dei nodi di Windows Server all'agente CloudWatch](monitoring-cloudwatch-agent.md#monitoring-cloudwatch-agent-migrate)
[Raccolta di metriche, log e tracce con l' CloudWatch agente](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html) nella *Amazon CloudWatch User* Guide.

Puoi esportare e monitorare i seguenti tipi di dati:

**ApplicationEventLog**  
Invia i dati del registro degli eventi dell'applicazione a CloudWatch Logs.

**CustomLogs**  
Invia qualsiasi file di registro basato su testo ad Amazon CloudWatch Logs. Il CloudWatch plug-in crea un'impronta digitale per i file di registro. Quindi, il sistema associa un offset dei dati con ciascun ID digitale. Il plugin carica i file quando sono presenti modifiche, registra l'offset e lo associa a un ID digitale. Questo metodo viene utilizzato per evitare una situazione in cui un utente attiva il plugin, associa il servizio a una directory che contiene un numero elevato di file e il sistema carica tutti i file.  
Se l'applicazione tronca o tenta di eliminare i log durante il polling, qualsiasi log specificato per `LogDirectoryPath` può perdere voci. Se, ad esempio, desideri limitare le dimensioni del file di log, devi creare un nuovo file di log quando viene raggiunto il limite, quindi devi continuare a scrivere i dati sul nuovo file.

**ETW**  
Invia i dati di Event Tracing for Windows (ETW) ai registri. CloudWatch 

**IIS**  
Invia i dati di registro IIS ai registri. CloudWatch 

**PerformanceCounter**  
Invia i contatori delle prestazioni di Windows a. CloudWatch Puoi selezionare diverse categorie in cui caricare CloudWatch come metriche. Per ogni contatore delle prestazioni che desideri caricare, crea una **PerformanceCounter**sezione con un ID univoco (ad esempio, "PerformanceCounter2"," PerformanceCounter 3" e così via) e configurane le proprietà.  
Se il plug-in AWS Systems Manager SSM Agent o il CloudWatch plug-in sono interrotti, i dati del contatore delle prestazioni non vengono registrati. CloudWatch Questo comportamento è diverso rispetto ai log personalizzati o ai log di eventi di Windows. I registri personalizzati e i registri degli eventi di Windows conservano i dati del contatore delle prestazioni e li caricano su after, CloudWatch SSM Agent altrimenti il CloudWatch plug-in sarà disponibile.

**SecurityEventLog**  
Invia i dati del registro degli eventi di sicurezza ai CloudWatch registri.

**SystemEventLog**  
Invia i dati del registro degli eventi di sistema ai CloudWatch registri.

Puoi definire le seguenti destinazioni per i dati:

**CloudWatch**  
La destinazione in cui vengono inviati i dati dei parametri del contatore delle prestazioni. È possibile aggiungere altre sezioni con caratteri univoci IDs (ad esempio, "CloudWatch2", CloudWatch 3" e così via) e specificare una regione diversa per ogni nuovo ID per inviare gli stessi dati a posizioni diverse.

**CloudWatchLogs**  
La destinazione in cui vengono inviati i dati di log. Puoi aggiungere altre sezioni con un valore univoco IDs (ad esempio, "CloudWatchLogs2", CloudWatchLogs 3" e così via) e specificare una regione diversa per ogni nuovo ID per inviare gli stessi dati a posizioni diverse.

### Sintassi
<a name="cloudWatch-syntax"></a>

```
"runtimeConfig":{
        "aws:cloudWatch":{
            "settings":{
                "startType":"{{ status }}"
            },
            "properties":"{{ properties }}"
        }
    }
```

### Impostazioni e proprietà
<a name="cloudWatch-properties"></a>

**AccessKey**  
L'ID chiave di accesso . Questa proprietà è obbligatoria, a meno che l'utente non abbia avviato l'istanza usando un ruolo IAM. Questa proprietà non può essere utilizzata con SSM.  
▬Tipo: stringa  
Obbligatorio: no

**CategoryName**  
La categoria del contatore delle prestazioni da Performance Monitor.  
Tipo: stringa  
Obbligatorio: sì

**CounterName**  
Il nome del contatore delle prestazioni da Performance Monitor.  
Tipo: stringa  
Obbligatorio: sì

**CultureName**  
L'impostazione locale in cui viene registrato il timestamp. Se **CultureName**è vuoto, il valore predefinito è lo stesso locale usato dall'istanza. Windows Server  
Tipo: String  
Valori validi: per un elenco dei valori supportati, consulta [National Language Support (NLS)](https://msdn.microsoft.com/en-us/library/cc233982.aspx) sul sito Web Microsoft. I valori **div**, **div-MV**, **hu** e **hu-HU** non sono supportati.  
Obbligatorio: no

**DimensionName**  
Una dimensione per la tua CloudWatch metrica Amazon. Se specifichi `DimensionName`, devi specificare `DimensionValue`. Questi parametri forniscono un'altra vista al momento della creazione di elenchi di parametri. Puoi utilizzare la stessa dimensione per più parametri per poter visualizzare tutti i parametri appartenenti a una dimensione specifica.  
▬Tipo: stringa  
Obbligatorio: no

**DimensionValue**  
Un valore dimensionale per la tua CloudWatch metrica Amazon.  
▬Tipo: stringa  
Obbligatorio: no

**Encoding**  
La codifica del file da utilizzare (ad esempio, UTF-8). Utilizza il nome di codifica, non il nome di visualizzazione.  
Tipo: String  
Valori validi: per un elenco dei valori supportati, consulta l'argomento relativo alla [classe di codifica](https://learn.microsoft.com/en-us/dotnet/api/system.text.encoding?view=net-7.0) nella libreria di Microsoft Learn.  
Obbligatorio: sì

**Filtro**  
Il prefisso dei nomi di log. Lascia questo parametro bianco per monitorare tutti i file.  
Tipo: String  
Valori validi: per un elenco dei valori supportati, consulta la [FileSystemWatcherFilter proprietà](http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.filter.aspx) nella libreria MSDN.  
Obbligatorio: no

**Flussi**  
Ogni tipo di dati da caricare, insieme alla destinazione dei dati (CloudWatch o dei CloudWatch registri). Ad esempio, per inviare un contatore delle prestazioni definito in `"Id": "PerformanceCounter"` alla CloudWatch destinazione definita in`"Id": "CloudWatch"`, inserisci **CloudWatch"PerformanceCounter,»**. Analogamente, per inviare il registro personalizzato, il registro ETW e il registro di sistema alla destinazione dei CloudWatch registri definita in`"Id": "ETW"`, immettete **«(ETW)**,". CloudWatchLogs Inoltre, puoi inviare lo stesso contatore delle prestazioni o file di log a più destinazioni. Ad esempio, per inviare il registro dell'applicazione a due diverse destinazioni definite in `"Id": "CloudWatchLogs"` e`"Id": "CloudWatchLogs2"`, immettete **", (ApplicationEventLogCloudWatchLogs, CloudWatchLogs 2**)».  
Tipo: String  
Valori validi (origine): `ApplicationEventLog` \$1 `CustomLogs` \$1 `ETW` \$1 `PerformanceCounter` \$1 `SystemEventLog` \$1 `SecurityEventLog`   
Valori validi (destinazione): `CloudWatch` \$1 `CloudWatchLogs` \$1 `CloudWatch` *n* \$1 `CloudWatchLogs` *n*   
Obbligatorio: sì

**FullName**  
Il nome completo del componente.  
Tipo: stringa  
Obbligatorio: sì

**Id**  
Identifica l'origine o la destinazione dei dati. Questo identificatore deve essere univoco all'interno del file di configurazione.  
Tipo: stringa  
Obbligatorio: sì

**InstanceName**  
Il nome dell'istanza del contatore delle prestazioni. Non utilizzare un asterisco (\$1) per indicare tutte le istanze perché ciascun componente del contatore delle prestazioni supporta solo un parametro. Tuttavia, puoi utilizzare **\$1Total**.  
Tipo: stringa  
Obbligatorio: sì

**Levels**  
I tipi di messaggi da inviare ad Amazon CloudWatch.  
Tipo: String  
Valori validi:   
+ **1**: solo i messaggi di errore caricati.
+ **2**: solo i messaggi di avviso caricati.
+ **4**: solo i messaggi informativi caricati.
È possibile aggiungere valori per includere più di un tipo di messaggio. Ad esempio, **3** indica che i messaggi di errore (**1**) e i messaggi di avviso (**2**) sono inclusi. Un valore pari a **7** indica che i messaggi di errore (**1**), i messaggi di avviso (**2**) e i messaggi informativi (**4**) sono inclusi.  
Obbligatorio: sì  
I log di sicurezza di Windows dovrebbero impostare livelli fino a 7.

**LineCount**  
Il numero di righe dell'intestazione per identificare il file di log. Ad esempio, i file di log IIS dispongono di intestazioni praticamente identiche. Puoi inserire **3**, che può leggere le prime tre righe dell'intestazione del file di log per identificarlo. Nei file di log IIS, la terza riga è costituita dalla data e dal timestamp, che è diverso tra i file di log.  
Tipo: Integer  
Obbligatorio: no

**LogDirectoryPath**  
Per CustomLogs, il percorso in cui vengono archiviati i log sull'istanza EC2. Per i registri IIS, la cartella in cui sono archiviati i registri IIS per un singolo sito (ad esempio, **C:\$1\$1 inetpub\$1\$1 logs\$1\$1\$1\$1 W3SVC**). LogFiles *n* Per i log di IIS, è supportato solo il formato di log W3C. I formati IIS, NCSA e quelli personalizzati non sono supportati.   
Tipo: stringa  
Obbligatorio: sì

**LogGroup**  
Nome del gruppo di log. Questo nome viene visualizzato sulla schermata **Log Groups (Gruppi di log)** nella console CloudWatch.  
Tipo: stringa  
Obbligatorio: sì

**LogName**  
Nome del file di log.  

1. Per individuare il nome del log, in Visualizzatore eventi, nel riquadro di navigazione, scegli **Log di applicazioni e servizi**.

1. Nell'elenco dei registri, fai clic con il pulsante destro del mouse sul log che desideri caricare (ad esempio, `Microsoft` > `Windows` > `Backup` > `Operational`), quindi seleziona **Crea visualizzazione personalizzata**.

1. Nella finestra di dialogo **Crea visualizzazione personalizzata**, scegli la scheda **XML**. **LogName**Si trova nel tag <Select Path=> (ad esempio,). `Microsoft-Windows-Backup` Copia questo testo nel parametro. **LogName**
Tipo: String  
Valori validi: `Application`\$1 `Security`\$1 `System`\$1 `Microsoft-Windows-WinINet/Analytic`  
Obbligatorio: sì

**LogStream**  
Il flusso di log di destinazione. Se utilizzi **\$1instance\$1id\$1**, il valore predefinito, l'ID di questa istanza viene utilizzato come nome del flusso di log.  
Tipo: String  
Valori validi: `{instance_id}` \$1 `{hostname}` \$1 `{ip_address}` *<log\$1stream\$1name>*  
Se inserisci un nome di log stream che non esiste già, CloudWatch Logs lo crea automaticamente per te. Puoi utilizzare una stringa letterale o variabili predefinite (**\$1instance\$1id\$1**, **\$1hostname\$1**, **\$1ip\$1address\$1**) o una combinazione di tutte e tre per definire un nome di flusso di log.  
Il nome del flusso di log specificato in questo parametro viene visualizzato nella *<YourLogStream>* schermata **Log Groups > Streams for** della CloudWatch console.  
Obbligatorio: sì

**MetricName**  
La CloudWatch metrica in cui desideri includere i dati sulle prestazioni.  
Non utilizzare caratteri speciali nel nome. In caso contrario, il parametro e gli allarmi associati potrebbero non funzionare.
Tipo: stringa  
Obbligatorio: sì

**NameSpace**  
Il namespace parametro in cui desideri che vengano scritti i dati dei contatori delle prestazioni.  
Tipo: stringa  
Obbligatorio: sì

**PollInterval**  
Il numero di secondi che devono trascorrere prima che un nuovo contatore delle prestazioni e i dati di log vengano caricati.  
Tipo: numero intero  
Valori validi: imposta questo valore su 5 o più secondi. Quindici secondi (00:00:15) è il valore consigliato.  
Obbligatorio: sì

**Region**  
 Regione AWS Dove vuoi inviare i dati di registro. Sebbene possa inviare contatori delle prestazioni a una regione diversa rispetto a quella a cui invii i dati di log, è consigliabile impostare questo parametro sulla stessa regione in cui l'istanza è in esecuzione.  
Tipo: String  
Valori validi: aree IDs Regioni AWS supportate sia da Systems Manager che da CloudWatch Logs, ad esempio `us-east-2``eu-west-1`, e`ap-southeast-1`. Per gli elenchi degli endpoint del servizio Regioni AWS supportati da ciascun servizio, consulta [Amazon CloudWatch Logs Service Endpoints](https://docs.aws.amazon.com/general/latest/gr/cwl_region.html#cwl_region) and [Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) nel. *Riferimenti generali di Amazon Web Services*   
Obbligatorio: sì

**SecretKey**  
La chiave di accesso segreta . Questa proprietà è obbligatoria, a meno che l'utente non abbia avviato l'istanza usando un ruolo IAM.  
▬Tipo: stringa  
Obbligatorio: no

**startType**  
Attiva o disattiva l'istanza CloudWatch .  
Tipo: String  
Valori validi: `Enabled` \$1 `Disabled`  
Obbligatorio: sì

**TimestampFormat**  
Il formato del timestamp che desideri utilizzare. Per un elenco dei valori supportati, consulta l'argomento [Stringhe di formato di data e ora personalizzato](http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx) nella libreria MSDN.  
Tipo: stringa  
Obbligatorio: sì

**TimeZoneKind**  
Fornisce le informazioni sul fuso orario se non sono incluse nel timestamp del log. Se questo parametro viene lasciato vuoto e se il timestamp non include informazioni sul fuso orario, CloudWatch Logs utilizza per impostazione predefinita il fuso orario locale. Questo parametro viene ignorato se il timestamp contiene già informazioni sul fuso orario.  
Tipo: String  
Valori validi: `Local` \$1 `UTC`  
Obbligatorio: no

**Unità**  
L'unità di misura appropriata per il parametro.  
Tipo: String  
Valori validi: secondi \$1 Microsecondi \$1 Millisecondi \$1 Byte \$1 Kilobyte \$1 Megabyte \$1 Gigabyte \$1 Terabyte \$1 Bit \$1 Kilobit \$1 Megabit \$1 Gigabit \$1 Terabit \$1 Percentuale Bytes/Second \$1 Numero Kilobytes/Second Megabytes/Second \$1 Gigabytes/Second \$1 Terabytes/Second \$1 \$1 Bits/Second \$1 Kilobits/Second \$1 Megabits/Second \$1 Gigabits/Second \$1 Terabits/Second \$1 Count/Second \$1 Nessuno  
Obbligatorio: sì

## `aws:configureDocker`
<a name="aws-configuredocker"></a>

(Versione dello schema 2.0 o successiva) Configura un'istanza da utilizzare con contenitori e Docker. Questo plug-in è supportato su gran parte delle versioni di Linux e sui sistemi operativi Windows Server.

### Sintassi
<a name="configuredocker-syntax"></a>

#### Schema 2.2
<a name="configuredocker-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:configureDocker
parameters:
  action:
    description: "(Required) The type of action to perform."
    type: String
    default: Install
    allowedValues:
    - Install
    - Uninstall
mainSteps:
- action: aws:configureDocker
  name: configureDocker
  inputs:
    action: "{{ action }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:configureDocker plugin",
  "parameters": {
    "action": {
      "description": "(Required) The type of action to perform.",
      "type": "String",
      "default": "Install",
      "allowedValues": [
        "Install",
        "Uninstall"
      ]
    }
  },
  "mainSteps": [
    {
      "action": "aws:configureDocker",
      "name": "configureDocker",
      "inputs": {
        "action": "{{ action }}"
      }
    }
  ]
}
```

------

### Input
<a name="configuredocker-properties"></a>

**operazione**  
Il tipo di operazione da eseguire.  
Tipo: Enum  
Valori validi: `Install` \$1 `Uninstall`  
Obbligatorio: sì

## `aws:configurePackage`
<a name="aws-configurepackage"></a>

(Schema AWS Systems Manager Distributor versione 2.0 o successiva) Installa o disinstalla un pacchetto. Puoi installare la versione più recente, la versione predefinita o una versione del pacchetto specificata. Sono supportati anche AWS i pacchetti forniti da. Questo plugin viene eseguito sui sistemi operativi Windows Server e Linux, ma non tutti i pacchetti disponibili sono supportati sui sistemi operativi Linux.

 AWS I pacchetti disponibili Windows Server includono quanto segue: `AWSPVDriver``AWSNVMe`,`AwsEnaNetworkDriver`,`AwsVssComponents`,`AmazonCloudWatchAgent`,`CodeDeployAgent`, e `AWSSupport-EC2Rescue.`

 AWS I pacchetti disponibili per i sistemi operativi Linux includono quanto segue:`AmazonCloudWatchAgent`,`CodeDeployAgent`, e`AWSSupport-EC2Rescue`.

### Sintassi
<a name="configurepackage-syntax"></a>

#### Schema 2.2
<a name="configurepackage-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:configurePackage
parameters:
  name:
    description: "(Required) The name of the AWS package to install or uninstall."
    type: String
  action:
    description: "(Required) The type of action to perform."
    type: String
    default: Install
    allowedValues:
    - Install
    - Uninstall
  ssmParameter:
    description: "(Required) Argument stored in Parameter Store."
    type: String
    default: "{{ ssm:parameter_store_arg }}"
mainSteps:
- action: aws:configurePackage
  name: configurePackage
  inputs:
    name: "{{ name }}"
    action: "{{ action }}"
    additionalArguments: 
      "{\"SSM_parameter_store_arg\": \"{{ ssmParameter }}\", \"SSM_custom_arg\": \"myValue\"}"
```

------
#### [ JSON ]

```
{
   "schemaVersion": "2.2",
   "description": "aws:configurePackage",
   "parameters": {
      "name": {
         "description": "(Required) The name of the AWS package to install or uninstall.",
         "type": "String"
      },
      "action": {
         "description": "(Required) The type of action to perform.",
         "type": "String",
         "default": "Install",
         "allowedValues": [
            "Install",
            "Uninstall"
         ]
      },
      "ssmParameter": {
         "description": "(Required) Argument stored in Parameter Store.",
         "type": "String",
         "default": "{{ ssm:parameter_store_arg }}"
      }
   },
   "mainSteps": [
      {
         "action": "aws:configurePackage",
         "name": "configurePackage",
         "inputs": {
            "name": "{{ name }}",
            "action": "{{ action }}",
            "additionalArguments": "{\"SSM_parameter_store_arg\": \"{{ ssmParameter }}\", \"SSM_custom_arg\": \"myValue\"}"
         }
      }
   ]
}
```

------

### Input
<a name="configurepackage-properties"></a>

**nome**  
Il nome del AWS pacchetto da installare o disinstallare. I pacchetti disponibili includono: `AWSPVDriver`, `AwsEnaNetworkDriver`, `AwsVssComponents` e `AmazonCloudWatchAgent`.   
Tipo: stringa  
Obbligatorio: sì

**operazione**  
Installa o disinstalla un pacchetto.  
Tipo: Enum  
Valori validi: `Install` \$1 `Uninstall`  
Obbligatorio: sì

**Tipo di installazione**  
Il tipo di installazione da eseguire. Se si specifica `Uninstall and reinstall`, il pacchetto viene completamente disinstallato e quindi reinstallato. L'applicazione non è disponibile fino al completamento della reinstallazione. Se si specifica `In-place update`, solo i file nuovi o modificati vengono aggiunti all'installazione esistente in base alle istruzioni fornite in uno script di aggiornamento. L'applicazione rimane disponibile durante tutto il processo di aggiornamento. L'`In-place update`opzione non è supportata per i pacchetti AWS-published. `Uninstall and reinstall`è il valore predefinito.  
Tipo: Enum  
Valori validi: `Uninstall and reinstall` \$1 `In-place update`  
Obbligatorio: no

**additionalArguments**  
Una stringa JSON di parametri aggiuntivi da fornire agli script di installazione, disinstallazione o aggiornamento. Ogni parametro deve essere preceduto da `SSM_`. È possibile fare riferimento a un parametro Parameter Store negli argomenti aggiuntivi utilizzando la convenzione `{{ssm:parameter-name}}`. Per utilizzare il parametro aggiuntivo nello script di installazione, disinstallazione o aggiornamento, è necessario fare riferimento al parametro come variabile di ambiente utilizzando la sintassi appropriata per il sistema operativo. Ad esempio, in PowerShell, si fa riferimento all'`SSM_arg`argomento come`$Env:SSM_arg`. Non vi è alcun limite al numero di argomenti definiti, ma l'input dell'argomento aggiuntivo ha un limite di 4096 caratteri. Questo limite include tutte le chiavi e i valori definiti.  
Tipo: StringMap  
Obbligatorio: no

**version**  
Una versione specifica del pacchetto da installare o disinstallare. In caso di installazione, il sistema installa per impostazione predefinita l'ultima versione pubblicata. In caso di disinstallazione, il sistema disinstalla per impostazione predefinita la versione attualmente installata. Se non viene trovata nessuna versione installata, viene scaricata l'ultima versione pubblicata e viene eseguita l'operazione di disinstallazione.  
▬Tipo: stringa  
Obbligatorio: no

## `aws:domainJoin`
<a name="aws-domainJoin"></a>

Aggiungi un'istanza EC2 a un dominio. Questo plugin funziona su Linux e sistemi operativi Windows Server. Questo plugin modifica il nome host per le istanze Linux nel formato EC2 AMAZ-. *XXXXXXX* *Per ulteriori informazioni sull'aggiunta di istanze EC2, consulta [Join an EC2 Instance to Your Managed AWS Microsoft AD Directory nella Administration](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_join_instance.html) Guide.AWS Directory Service *

### Sintassi
<a name="domainJoin-syntax"></a>

#### Schema 2.2
<a name="domainJoin-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:domainJoin
parameters:
  directoryId:
    description: "(Required) The ID of the directory."
    type: String
  directoryName:
    description: "(Required) The name of the domain."
    type: String
  directoryOU:
    description: "(Optional) The organizational unit to assign the computer object to."
    type: String
  dnsIpAddresses:
    description: "(Required) The IP addresses of the DNS servers for your directory."
    type: StringList
  hostname:
    description: "(Optional) The hostname you want to assign to the node."
    type: String
mainSteps:
- action: aws:domainJoin
  name: domainJoin
  inputs:
    directoryId: "{{ directoryId }}"
    directoryName: "{{ directoryName }}"
    directoryOU: "{{ directoryOU }}"
    dnsIpAddresses: "{{ dnsIpAddresses }}"
    hostname: "{{ hostname }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:domainJoin",
  "parameters": {
    "directoryId": {
      "description": "(Required) The ID of the directory.",
      "type": "String"
    },
    "directoryName": {
      "description": "(Required) The name of the domain.",
      "type": "String"
    },
    "directoryOU": {
        "description": "(Optional) The organizational unit to assign the computer object to.",
        "type": "String"
      },
    "dnsIpAddresses": {
      "description": "(Required) The IP addresses of the DNS servers for your directory.",
      "type": "StringList"
    },
    "hostname": {
        "description": "(Optional) The hostname you want to assign to the node.",
        "type": "String"
      }
  },
  "mainSteps": [
    {
      "action": "aws:domainJoin",
      "name": "domainJoin",
      "inputs": {
        "directoryId": "{{ directoryId }}",
        "directoryName": "{{ directoryName }}",
        "directoryOU":"{{ directoryOU }}",
        "dnsIpAddresses":"{{ dnsIpAddresses }}",
        "hostname":"{{ hostname }}"
      }
    }
  ]
}
```

------

#### Schema 1.2
<a name="domainJoin-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:domainJoin:
    properties:
      directoryId: "{{ directoryId }}"
      directoryName: "{{ directoryName }}"
      directoryOU: "{{ directoryOU }}"
      dnsIpAddresses: "{{ dnsIpAddresses }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:domainJoin":{
         "properties":{
            "directoryId":"{{ directoryId }}",
            "directoryName":"{{ directoryName }}",
            "directoryOU":"{{ directoryOU }}",
            "dnsIpAddresses":"{{ dnsIpAddresses }}"
         }
      }
   }
}
```

------

### Properties
<a name="domainJoin-properties"></a>

**directoryId**  
L'ID della directory.  
Tipo: stringa  
Obbligatorio: sì  
Esempio: "directoryId": "d-1234567890"

**directoryName**  
Il nome del dominio.  
Tipo: stringa  
Obbligatorio: sì  
Esempio: "directoryName": "example.com"

**directoryOU**  
L'unità organizzativa (UO).  
▬Tipo: stringa  
Obbligatorio: no  
Esempio: "directoryOU": "OU=test,DC=example,DC=com"

**dnsIpAddresses**  
Gli indirizzi IP dei server DNS.  
Tipo: StringList  
Obbligatorio: sì  
Esempio: "dnsIpAddresses«: [" 198.51.100.1", "198.51.100.2"]

**hostname**  
Il nome host che si desidera assegnare al nodo. Se non viene fornito, non viene effettuata alcuna modifica del nome per le istanze Windows Server, mentre le istanze Linux utilizzeranno lo schema di denominazione predefinito. Se fornito, le istanze Windows Server utilizzeranno l'esatto valore fornito, mentre per le istanze Linux fungerà da prefisso (a meno che non `keepHostName` sia impostato su "true").  
▬Tipo: stringa  
Obbligatorio: no

**keepHostName**  
Determina se il nome host viene modificato per le istanze Linux quando vengono aggiunte al dominio. Si tratta di un parametro solo per Linux. Per impostazione predefinita (senza input e con «false») `hostname``hostnameNumAppendDigits`, gli host Linux verranno rinominati `keepHostName` secondo lo schema AMAZ-XXXXXX. EC2 Se impostato su "true", mantiene il nome host originale e ignora gli input verso `hostname` e `hostnameNumAppendDigits`.  
Tipo: Booleano  
Obbligatorio: no

**hostnameNumAppendCifre**  
Definisce il numero di cifre numeriche casuali da aggiungere dopo il valore del nome host. Si tratta di un parametro solo per Linux e viene utilizzato insieme al parametro `hostname`. Se `hostname` non viene fornito, viene ignorato.  
Tipo: String  
Valori validi: da 1 a 5  
Obbligatorio: no

### Esempi
<a name="domainJoin-examples"></a>

Per alcuni esempi, consulta la sezione [Unire un'istanza Amazon EC2 a AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ec2-join-aws-domain.html) nella *AWS Directory Service Guida per gli amministratori di *.

## `aws:downloadContent`
<a name="aws-downloadContent"></a>

(Versione dello schema 2.0 o successiva) Scaricare documenti e script SSM da posizioni remote. I repository di GitHub Enterprise non sono supportati. Questo plugin è supportato su Linux e dai sistemi operativi Windows Server.

### Sintassi
<a name="downloadContent-syntax"></a>

#### Schema 2.2
<a name="downloadContent-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:downloadContent
parameters:
  sourceType:
    description: "(Required) The download source."
    type: String
  sourceInfo:
    description: "(Required) The information required to retrieve the content from
      the required source."
    type: StringMap
mainSteps:
- action: aws:downloadContent
  name: downloadContent
  inputs:
    sourceType: "{{ sourceType }}"
    sourceInfo: "{{ sourceInfo }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:downloadContent",
  "parameters": {
    "sourceType": {
    "description": "(Required) The download source.",
    "type": "String"
  },
  "sourceInfo": {
    "description": "(Required) The information required to retrieve the content from the required source.",
    "type": "StringMap"
    }
  },
  "mainSteps": [
    {
      "action": "aws:downloadContent",
      "name": "downloadContent",
      "inputs": {
        "sourceType":"{{ sourceType }}",
        "sourceInfo":"{{ sourceInfo }}"
      }
    }
  ]
}
```

------

### Input
<a name="downloadContent-inputs"></a>

**sourceType**  
Origine del download Systems Manager supporta i seguenti tipi di origine per il download di script e di documenti SSM: `GitHub`, `Git`, `HTTP`, `S3` e `SSMDocument`.  
Tipo: stringa  
Obbligatorio: sì

**sourceInfo**  
Le informazioni necessarie per recuperare il contenuto dall'origine richiesta.  
Tipo: StringMap  
Obbligatorio: sì  
 **Per sourceType `GitHub,`, specificare quanto segue:**   
+ owner: il proprietario del repository.
+ repository: il nome del repository.
+ path: il percorso del file o della directory che desideri scaricare.
+ getOptions: opzioni aggiuntive per recuperare il contenuto da un ramo diverso dal master o da un commit specifico nel repository. getOptions può essere omesso se si utilizza l'ultimo commit nel ramo master. Se il repository è stato creato dopo il 1° ottobre 2020, il ramo predefinito potrebbe essere denominato main anziché master. In questo caso, si dovranno specificare i valori per il parametro getOptions.

  Questo parametro utilizza il seguente formato:
  + ramo: refs/heads/ *branch\$1name*

    Il valore predefinito è `master`.

    Per specificare un ramo non predefinito, utilizza il formato seguente:

    ramo:refs/heads/ *branch\$1name*
  + CommitID: *commitID*

    Il valore predefinito è `head`.

    Per utilizzare la versione del documento SSM in un commit diverso da quello più recente, specificare l'ID di commit completo. Esempio:

    ```
    "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
    ```
+ TokenInfo: il parametro Systems Manager ( SecureStringun parametro) in cui GitHub memorizzate le informazioni sul token di accesso, nel formato. `{{ssm-secure:secure-string-token-name}}`
**Nota**  
Questo `tokenInfo` campo è l'unico campo del plug-in di documenti SSM che supporta un parametro. SecureString SecureString i parametri non sono supportati per nessun altro campo, né per altri plugin di documenti SSM.

```
{
    "owner":"TestUser",
    "repository":"GitHubTest",
    "path":"scripts/python/test-script",
    "getOptions":"branch:master",
    "tokenInfo":"{{ssm-secure:secure-string-token}}"
}
```
 **Per sourceType `Git`, si deve specificare quanto segue:**   
+ repository

  L'URL del repository Git relativo al file o alla directory che si desidera scaricare.

  Tipo: String
Inoltre, è possibile specificare i seguenti parametri facoltativi:  
+ getOptions

  Opzioni aggiuntive per recuperare il contenuto da un ramo diverso dal master o da un commit specifico nel repository. getOptions può essere omesso se si utilizza l'ultimo commit nel ramo master.

  Tipo: String

  Questo parametro utilizza il seguente formato:
  + ramo: refs/heads/ *branch\$1name*

    Il valore predefinito è `master`.

    `"branch"` è necessario solo se il documento SSM è memorizzato in un ramo diverso da `master`. Esempio:

    ```
    "getOptions": "branch:refs/heads/main"
    ```
  + CommitID: *commitID*

    Il valore predefinito è `head`.

    Per utilizzare la versione del documento SSM in un commit diverso da quello più recente, specificare l'ID di commit completo. Esempio:

    ```
    "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
    ```
+ privato SSHKey

  La chiave SSH da usare durante la connessione al `repository` specificato. È possibile utilizzare il formato seguente per riferirsi a un parametro `SecureString` per il valore della chiave SSH: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: String
+ skipHostKeyControllo

  Determina il valore dell' StrictHostKeyCheckingopzione quando ci si `repository` connette all'indirizzo specificato. Il valore predefinito è `false`.

  Tipo: Booleano
+ username

  Il nome utente da usare durante la connessione al `repository`specificato utilizzando HTTP. È possibile utilizzare il formato seguente per riferirsi a un parametro `SecureString` per il valore del nome utente: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: String
+ password

  La password da usare durante la connessione al `repository`specificato utilizzando HTTP. È possibile utilizzare il formato seguente per riferirsi a un parametro `SecureString` per il valore della password: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: String
 **Per sourceType `HTTP`, si deve specificare quanto segue:**   
+ url

  L'URL del file o della directory che si desidera scaricare.

  Tipo: String
Inoltre, è possibile specificare i seguenti parametri facoltativi:  
+ allowInsecureDownload

  Determina se è possibile eseguire un download tramite una connessione non crittografata con Secure Socket Layer (SSL) o Transport Layer Security (TLS). Il valore predefinito è `false`. Si sconsiglia l'esecuzione di download senza crittografia. Se si sceglie di farlo, si assumono tutti i relativi rischi. La sicurezza è una responsabilità condivisa tra te AWS e te. Questo è descritto come il modello di responsabilità condivisa. Per ulteriori informazioni, consulta il [modello di responsabilità condivisa](https://aws.amazon.com/compliance/shared-responsibility-model/).

  Tipo: Booleano
+ authMethod

  Determina se un nome utente e una password vengono utilizzati per l'autenticazione durante la connessione all'`url` specificato. Se si specifica `Basic` o `Digest`, è necessario fornire valori per i parametri `username` e `password`. Per utilizzare il metodo `Digest`, deve essere installata nell'istanza la versione di SSM Agent 3.0.1181.0 o successiva. Il `Digest` metodo supporta MD5 la SHA256 crittografia.

  Tipo: String

  Valori validi: `None` \$1 `Basic` \$1 `Digest`
+ username

  Il nome utente da usare durante la connessione all'`url` specificato utilizzando l'autenticazione `Basic`. È possibile utilizzare il formato seguente per riferirsi a un parametro `SecureString` per il valore del nome utente: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: String
+ password

  La password da usare durante la connessione all'`url` specificato utilizzando l'autenticazione `Basic`. È possibile utilizzare il formato seguente per riferirsi a un parametro `SecureString` per il valore della password: `{{ssm-secure:your-secure-string-parameter}}`.

  Tipo: String
 **Per sourceType `S3`, specificare quanto segue:**   
+ path: l'URL del file o della directory che si desidera scaricare da Amazon S3.
Quando si scarica un file da un bucket S3, i file.etag vengono generati nella directory di download.

```
{
    "path": "https://s3.amazonaws.com/amzn-s3-demo-bucket/powershell/helloPowershell.ps1" 
}
```
 **Per sourceType `SSMDocument`, specificare *uno* dei seguenti valori:**   
+ name: il nome e la versione del documento nel formato seguente: `name:version`. La versione è facoltativa. 

  ```
  {
      "name": "Example-RunPowerShellScript:3" 
  }
  ```
+ name: l'ARN del documento nel seguente formato: `arn:aws:ssm:region:account_id:document/document_name`

  ```
  {
     "name":"arn:aws:ssm:us-east-2:3344556677:document/MySharedDoc"
  }
  ```

**destinationPath**  
Un percorso locale facoltativo nell'istanza in cui desideri scaricare il file. Se non specifichi un percorso, i contenuti vengono scaricati in un percorso relativo al tuo ID comando.  
▬Tipo: stringa  
Obbligatorio: no

## `aws:psModule`
<a name="aws-psModule"></a>

Installa PowerShell i moduli su un'istanza Amazon EC2. Questo plugin può essere eseguito solo su sistemi operativi Windows Server.

### Sintassi
<a name="psModule-syntax"></a>

#### Schema 2.2
<a name="psModule-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:psModule
parameters:
  source:
    description: "(Required) The URL or local path on the instance to the application
      .zip file."
    type: String
mainSteps:
- action: aws:psModule
  name: psModule
  inputs:
    source: "{{ source }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:psModule",
  "parameters": {
    "source": {
      "description": "(Required) The URL or local path on the instance to the application .zip file.",
      "type": "String"
    }
  },
  "mainSteps": [
    {
      "action": "aws:psModule",
      "name": "psModule",
      "inputs": {
        "source": "{{ source }}"
      }
    }
  ]
}
```

------

#### Schema 1.2
<a name="domainJoin-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:psModule:
    properties:
    - runCommand: "{{ commands }}"
      source: "{{ source }}"
      sourceHash: "{{ sourceHash }}"
      workingDirectory: "{{ workingDirectory }}"
      timeoutSeconds: "{{ executionTimeout }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:psModule":{
         "properties":[
            {
               "runCommand":"{{ commands }}",
               "source":"{{ source }}",
               "sourceHash":"{{ sourceHash }}",
               "workingDirectory":"{{ workingDirectory }}",
               "timeoutSeconds":"{{ executionTimeout }}"
            }
         ]
      }
   }
}
```

------

### Properties
<a name="psModule-properties"></a>

**runCommand**  
Il PowerShell comando da eseguire dopo l'installazione del modulo.  
Tipo: StringList  
Obbligatorio: no

**origine**  
L'URL o il percorso locale nell'istanza al file `.zip` dell'applicazione.  
Tipo: stringa  
Obbligatorio: sì

**sourceHash**  
L' SHA256 hash del `.zip` file.  
▬Tipo: stringa  
Obbligatorio: no

**timeoutSeconds**  
Il tempo in secondi entro cui un comando deve essere portato a termine prima di essere considerato non riuscito.  
▬Tipo: stringa  
Obbligatorio: no

**workingDirectory**  
Il percorso alla directory di lavoro nell'istanza.  
▬Tipo: stringa  
Obbligatorio: no

## `aws:refreshAssociation`
<a name="aws-refreshassociation"></a>

(Versione dello schema 2.0 o successiva) Aggiorna (applicazione di forza) un'associazione on demand. Questa operazione modificherà lo stato del sistema in base a quanto definito nell'associazione selezionata o in tutte le associazioni dei target. Questo plugin funziona su sistemi operativi Linux e Microsoft Windows Server.

### Sintassi
<a name="refreshassociation-syntax"></a>

#### Schema 2.2
<a name="refreshassociation-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:refreshAssociation
parameters:
  associationIds:
    description: "(Optional) List of association IDs. If empty, all associations bound
      to the specified target are applied."
    type: StringList
mainSteps:
- action: aws:refreshAssociation
  name: refreshAssociation
  inputs:
    associationIds:
    - "{{ associationIds }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:refreshAssociation",
  "parameters": {
    "associationIds": {
      "description": "(Optional) List of association IDs. If empty, all associations bound to the specified target are applied.",
      "type": "StringList"
    }
  },
  "mainSteps": [
    {
      "action": "aws:refreshAssociation",
      "name": "refreshAssociation",
      "inputs": {
        "associationIds": [
          "{{ associationIds }}"
        ]
      }
    }
  ]
}
```

------

### Input
<a name="refreshassociation-properties"></a>

**associationIds**  
Elenco delle associazioni IDs. Se vuoto, vengono applicate tutte le associazioni ai target specificati.  
Tipo: StringList  
Obbligatorio: no

## `aws:runDockerAction`
<a name="aws-rundockeraction"></a>

(Versione dello schema 2.0 o successiva) Esegui operazioni Docker sui contenitori. Questo plugin funziona su sistemi operativi Linux e Microsoft Windows Server.

### Sintassi
<a name="rundockeraction-syntax"></a>

#### Schema 2.2
<a name="rundockeraction-syntax-2.2"></a>

------
#### [ YAML ]

```
---
mainSteps:
- action: aws:runDockerAction
  name: RunDockerAction
  inputs:
    action: "{{ action }}"
    container: "{{ container }}"
    image: "{{ image }}"
    memory: "{{ memory }}"
    cpuShares: "{{ cpuShares }}"
    volume: "{{ volume }}"
    cmd: "{{ cmd }}"
    env: "{{ env }}"
    user: "{{ user }}"
    publish: "{{ publish }}"
    workingDirectory: "{{ workingDirectory }}"
    timeoutSeconds: "{{ timeoutSeconds }}"
```

------
#### [ JSON ]

```
{
   "mainSteps":[
      {
         "action":"aws:runDockerAction",
         "name":"RunDockerAction",
         "inputs":{
            "action":"{{ action }}",
            "container":"{{ container }}",
            "image":"{{ image }}",
            "memory":"{{ memory }}",
            "cpuShares":"{{ cpuShares }}",
            "volume":"{{ volume }}",
            "cmd":"{{ cmd }}",
            "env":"{{ env }}",
            "user":"{{ user }}",
            "publish":"{{ publish }}",
            "workingDirectory": "{{ workingDirectory }}",
            "timeoutSeconds": "{{ timeoutSeconds }}"
         }
      }
   ]
}
```

------

### Input
<a name="rundockeraction-properties"></a>

**operazione**  
Il tipo di operazione da eseguire.  
Tipo: stringa  
Obbligatorio: sì

**container**  
L'ID del container Docker.  
▬Tipo: stringa  
Obbligatorio: no

**image**  
Il nome dell'immagine Docker.  
▬Tipo: stringa  
Obbligatorio: no

**cmd**  
Il comando del container.  
▬Tipo: stringa  
Obbligatorio: no

**memory**  
Il limite di memoria del container.  
▬Tipo: stringa  
Obbligatorio: no

**cpuShares**  
Le condivisioni di CPU del container (peso relativo).  
▬Tipo: stringa  
Obbligatorio: no

**volume**  
I montaggi dei volumi del container.  
Tipo: StringList  
Obbligatorio: no

**env**  
Le variabili di ambiente del container.  
▬Tipo: stringa  
Obbligatorio: no

**user**  
Il nome dell'utente del container.  
▬Tipo: stringa  
Obbligatorio: no

**pubblicazione**  
Le porte pubblicate del container.  
▬Tipo: stringa  
Obbligatorio: no

**workingDirectory**  
Il percorso verso la directory di lavoro nel nodo gestito dall'utente.  
▬Tipo: stringa  
Obbligatorio: no

**timeoutSeconds**  
Il tempo in secondi entro cui un comando deve essere portato a termine prima di essere considerato non riuscito.  
▬Tipo: stringa  
Obbligatorio: no

## `aws:runDocument`
<a name="aws-rundocument"></a>

(Versione dello schema 2.0 o successiva) Esegue documenti SSM archiviati in Systems Manager o in una condivisione locale. È possibile utilizzare questo plugin con il plugin [`aws:downloadContent`](#aws-downloadContent) per scaricare un documento SSM da una posizione remota a una condivisione locale, quindi eseguirlo. Questo plugin è supportato su Linux e dai sistemi operativi Windows Server. Questo plug-in non supporta l'esecuzione del documento `AWS-UpdateSSMAgent` o qualsiasi documento che utilizza il plugin `aws:updateSsmAgent`.

### Sintassi
<a name="rundocument-syntax"></a>

#### Schema 2.2
<a name="aws-rundocument-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:runDocument
parameters:
  documentType:
    description: "(Required) The document type to run."
    type: String
    allowedValues:
    - LocalPath
    - SSMDocument
mainSteps:
- action: aws:runDocument
  name: runDocument
  inputs:
    documentType: "{{ documentType }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:runDocument",
  "parameters": {
    "documentType": {
      "description": "(Required) The document type to run.",
      "type": "String",
      "allowedValues": [
        "LocalPath",
        "SSMDocument"
      ]
    }
  },
  "mainSteps": [
    {
      "action": "aws:runDocument",
      "name": "runDocument",
      "inputs": {
        "documentType": "{{ documentType }}"
      }
    }
  ]
}
```

------

### Input
<a name="rundocument-properties"></a>

**documentType**  
Il tipo di documento da eseguire. È possibile eseguire documenti locali (`LocalPath`) o documenti archiviati in Systems Manager (`SSMDocument`).  
Tipo: stringa  
Obbligatorio: sì

**documentPath**  
Il percorso del documento. Se `documentType` è `LocalPath`, specifica il percorso al documento nella condivisione locale. Se `documentType` è `SSMDocument`, specifica il nome del documento.  
▬Tipo: stringa  
Obbligatorio: no

**documentParameters**  
I parametri per il documento.  
Tipo: StringMap  
Obbligatorio: no

## `aws:runPowerShellScript`
<a name="aws-runPowerShellScript"></a>

Esegui PowerShell script o specifica il percorso di uno script da eseguire. Questo plugin può essere eseguito su sistemi operativi Microsoft Windows Server e Linux.

### Sintassi
<a name="runPowerShellScript-syntax"></a>

#### Schema 2.2
<a name="runPowerShellScript-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:runPowerShellScript
parameters:
  commands:
    type: String
    description: "(Required) The commands to run or the path to an existing script
      on the instance."
    default: Write-Host "Hello World"
mainSteps:
- action: aws:runPowerShellScript
  name: runPowerShellScript
  inputs:
    timeoutSeconds: '60'
    runCommand:
    - "{{ commands }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:runPowerShellScript",
  "parameters": {
    "commands": {
      "type": "String",
      "description": "(Required) The commands to run or the path to an existing script on the instance.",
      "default": "Write-Host \"Hello World\""
    }
  },
  "mainSteps": [
    {
      "action": "aws:runPowerShellScript",
      "name": "runPowerShellScript",
      "inputs": {
        "timeoutSeconds": "60",
        "runCommand": [
          "{{ commands }}"
        ]
      }
    }
  ]
}
```

------

#### Schema 1.2
<a name="runPowerShellScript-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:runPowerShellScript:
    properties:
    - id: 0.aws:runPowerShellScript
      runCommand: "{{ commands }}"
      workingDirectory: "{{ workingDirectory }}"
      timeoutSeconds: "{{ executionTimeout }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:runPowerShellScript":{
         "properties":[
            {
               "id":"0.aws:runPowerShellScript",
               "runCommand":"{{ commands }}",
               "workingDirectory":"{{ workingDirectory }}",
               "timeoutSeconds":"{{ executionTimeout }}"
            }
         ]
      }
   }
}
```

------

### Properties
<a name="runPowerShellScript-properties"></a>

**runCommand**  
Specifica i comandi da eseguire o il percorso a uno script esistente nell'istanza.  
Tipo: StringList  
Obbligatorio: sì

**timeoutSeconds**  
Il tempo in secondi entro cui un comando deve essere portato a termine prima di essere considerato non riuscito. Quando viene raggiunto il timeout, Systems Manager interrompe l'esecuzione del comando.  
▬Tipo: stringa  
Obbligatorio: no

**workingDirectory**  
Il percorso alla directory di lavoro nell'istanza.  
▬Tipo: stringa  
Obbligatorio: no

## `aws:runShellScript`
<a name="aws-runShellScript"></a>

Esegui script di shell Linux o specifica il percorso a uno script da eseguire. Questo plugin può essere eseguito solo su sistemi operativi Linux.

### Sintassi
<a name="runShellScript-syntax"></a>

#### Schema 2.2
<a name="runShellScript-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:runShellScript
parameters:
  commands:
    type: String
    description: "(Required) The commands to run or the path to an existing script
      on the instance."
    default: echo Hello World
mainSteps:
- action: aws:runShellScript
  name: runShellScript
  inputs:
    timeoutSeconds: '60'
    runCommand:
    - "{{ commands }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:runShellScript",
  "parameters": {
    "commands": {
      "type": "String",
      "description": "(Required) The commands to run or the path to an existing script on the instance.",
      "default": "echo Hello World"
    }
  },
  "mainSteps": [
    {
      "action": "aws:runShellScript",
      "name": "runShellScript",
      "inputs": {
        "timeoutSeconds": "60",
        "runCommand": [
          "{{ commands }}"
        ]
      }
    }
  ]
}
```

------

#### Schema 1.2
<a name="runShellScript-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:runShellScript:
    properties:
    - runCommand: "{{ commands }}"
      workingDirectory: "{{ workingDirectory }}"
      timeoutSeconds: "{{ executionTimeout }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:runShellScript":{
         "properties":[
            {
               "runCommand":"{{ commands }}",
               "workingDirectory":"{{ workingDirectory }}",
               "timeoutSeconds":"{{ executionTimeout }}"
            }
         ]
      }
   }
}
```

------

### Properties
<a name="runShellScript-properties"></a>

**runCommand**  
Specifica i comandi da eseguire o il percorso a uno script esistente nell'istanza.  
Tipo: StringList  
Obbligatorio: sì

**timeoutSeconds**  
Il tempo in secondi entro cui un comando deve essere portato a termine prima di essere considerato non riuscito. Quando viene raggiunto il timeout, Systems Manager interrompe l'esecuzione del comando.  
▬Tipo: stringa  
Obbligatorio: no

**workingDirectory**  
Il percorso alla directory di lavoro nell'istanza.  
▬Tipo: stringa  
Obbligatorio: no

## `aws:softwareInventory`
<a name="aws-softwareinventory"></a>

(Versione dello schema 2.0 o successiva) è possibile ottenere i metadati su applicazioni, file e configurazioni sulle istanze gestite. Questo plugin funziona su sistemi operativi Linux e Microsoft Windows Server. Quando configuri la raccolta dell'inventario, inizi con la creazione di un' AWS Systems Manager State Managerassociazione. Systems Manager raccoglie i dati dell'inventario quando viene eseguita l'associazione. Se non si crea prima l'associazione e si tenta di richiamare il plugin `aws:softwareInventory`, il sistema restituisce il seguente errore:

```
The aws:softwareInventory plugin can only be invoked via ssm-associate.
```

Un'istanza può avere una sola associazione di Inventory configurata alla volta. Se configuri un'istanza con due o più associazioni, l'associazione di Inventory non viene eseguita e non viene raccolto alcun dato dell'inventario. Per ulteriori informazioni sulla raccolta dell'inventario, consulta [AWS Systems Manager Inventory](systems-manager-inventory.md).

### Sintassi
<a name="softwareinventory-syntax"></a>

#### Schema 2.2
<a name="softwareinventory-syntax-2.2"></a>

------
#### [ YAML ]

```
---
mainSteps:
- action: aws:softwareInventory
  name: collectSoftwareInventoryItems
  inputs:
    applications: "{{ applications }}"
    awsComponents: "{{ awsComponents }}"
    networkConfig: "{{ networkConfig }}"
    files: "{{ files }}"
    services: "{{ services }}"
    windowsRoles: "{{ windowsRoles }}"
    windowsRegistry: "{{ windowsRegistry}}"
    windowsUpdates: "{{ windowsUpdates }}"
    instanceDetailedInformation: "{{ instanceDetailedInformation }}"
    customInventory: "{{ customInventory }}"
```

------
#### [ JSON ]

```
{
   "mainSteps":[
      {
         "action":"aws:softwareInventory",
         "name":"collectSoftwareInventoryItems",
         "inputs":{
            "applications":"{{ applications }}",
            "awsComponents":"{{ awsComponents }}",
            "networkConfig":"{{ networkConfig }}",
            "files":"{{ files }}",
            "services":"{{ services }}",
            "windowsRoles":"{{ windowsRoles }}",
            "windowsRegistry":"{{ windowsRegistry}}",
            "windowsUpdates":"{{ windowsUpdates }}",
            "instanceDetailedInformation":"{{ instanceDetailedInformation }}",
            "customInventory":"{{ customInventory }}"
         }
      }
   ]
}
```

------

### Inputs
<a name="softwareinventory-properties"></a>

**applications**  
(Facoltativo) Consente di raccogliere i metadati per le applicazioni installate.  
▬Tipo: stringa  
Obbligatorio: no

**awsComponents**  
(Facoltativo) Raccogli metadati per AWS componenti come amazon-ssm-agent.  
▬Tipo: stringa  
Obbligatorio: no

**files**  
(Facoltativo, richiede la versione di SSM Agent 2.2.64.0 o successiva) Consente di raccogliere i metadati dei file, tra cui nomi, data e ora di creazione, data e ora dell'ultimo accesso e aggiornamento, e dimensioni, per citarne alcuni. Per ulteriori informazioni sulla raccolta dell'inventario dei file, consulta [Utilizzo dell'inventario dei file e del registro di sistema di Windows](inventory-file-and-registry.md).  
▬Tipo: stringa  
Obbligatorio: no

**networkConfig**  
(Facoltativo) Consente di raccogliere i metadati relativi alle configurazioni di rete.  
▬Tipo: stringa  
Obbligatorio: no

**billingInfo**  
(Facoltativo) Raccogli i metadati per i dettagli della piattaforma associati al codice di fatturazione di AMI.  
▬Tipo: stringa  
Obbligatorio: no

**windowsUpdates**  
(Facoltativo) Consente di raccogliere i metadati per tutti gli aggiornamenti di Windows.  
▬Tipo: stringa  
Obbligatorio: no

**instanceDetailedInformation**  
(Facoltativo) Consente di raccogliere ulteriori informazioni sulle istanze rispetto a quelle fornite dal plugin dell'inventario predefinito (`aws:instanceInformation`), tra cui ad esempio il modello della CPU, la velocità e il numero di core.  
▬Tipo: stringa  
Obbligatorio: no

**services**  
(Facoltativo, solo sistema operativo Windows, richiede SSM Agent versione 2.2.64.0 o successiva) Consente di raccogliere i metadati per le configurazioni dei servizi.  
▬Tipo: stringa  
Obbligatorio: no

**windowsRegistry**  
(Facoltativo, solo sistema operativo Windows, richiede SSM Agent versione 2.2.64.0 o successiva) Consente di raccogliere chiavi e valori del registro di Windows. È possibile scegliere un percorso chiave e raccogliere tutte le chiavi e i valori in modo ricorsivo. È possibile inoltre raccogliere una determinata chiave di registro e il relativo valore per un percorso specifico. Inventory raccoglie il percorso, il nome, il tipo e il valore delle chiave. Per ulteriori informazioni sulla raccolta dell'inventario del Registro di sistema di Windows, consulta [Utilizzo dell'inventario dei file e del registro di sistema di Windows](inventory-file-and-registry.md).  
▬Tipo: stringa  
Obbligatorio: no

**windowsRoles**  
(Facoltativo, solo sistema operativo Windows, richiede SSM Agent versione 2.2.64.0 o successiva) Consente di raccogliere i metadati per le configurazioni dei ruoli Microsoft Windows.  
▬Tipo: stringa  
Obbligatorio: no

**customInventory**  
(Facoltativo) Consente di raccogliere i dati dell'inventario personalizzato. Per ulteriori informazioni sull'inventario personalizzato, consulta [Utilizzo di inventari personalizzati](inventory-custom.md)  
▬Tipo: stringa  
Obbligatorio: no

**customInventoryDirectory**  
(Facoltativo) Raccogli dati di inventario personalizzati dalla directory specificata. Per ulteriori informazioni sull'inventario personalizzato, consulta [Utilizzo di inventari personalizzati](inventory-custom.md)  
▬Tipo: stringa  
Obbligatorio: no

## `aws:updateAgent`
<a name="aws-updateagent"></a>

Aggiorna il servizio EC2 Config alla versione più recente o specifica una versione precedente. Questo plugin funziona solo sui sistemi operativi Microsoft Windows Server. *Per ulteriori informazioni sul servizio EC2 Config, consulta [Configurazione di un'istanza Windows utilizzando il servizio EC2 Config (legacy) nella Amazon EC2 User](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2config-service.html) Guide.*

### Sintassi
<a name="updateagent-syntax"></a>

#### Schema 2.2
<a name="updateagent-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:updateAgent
mainSteps:
- action: aws:updateAgent
  name: updateAgent
  inputs:
    agentName: Ec2Config
    source: https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:updateAgent",
  "mainSteps": [
    {
      "action": "aws:updateAgent",
      "name": "updateAgent",
      "inputs": {
        "agentName": "Ec2Config",
        "source": "https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json"
      }
    }
  ]
}
```

------

#### Schema 1.2
<a name="updateagent-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:updateAgent:
    properties:
      agentName: Ec2Config
      source: https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json
      allowDowngrade: "{{ allowDowngrade }}"
      targetVersion: "{{ version }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:updateAgent":{
         "properties":{
            "agentName":"Ec2Config",
            "source":"https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json",
            "allowDowngrade":"{{ allowDowngrade }}",
            "targetVersion":"{{ version }}"
         }
      }
   }
}
```

------

### Properties
<a name="updateagent-properties"></a>

**agentName**  
EC2Config. Questo è il nome dell'agente che esegue il servizio EC2 Config.  
Tipo: stringa  
Obbligatorio: sì

**allowDowngrade**  
 EC2Consenti il downgrade del servizio Config a una versione precedente. Se impostato su "false", il servizio può essere aggiornato solo a versioni più recenti (impostazione predefinita). Se impostato su "true", specifica la versione precedente.   
Tipo: Booleano  
Obbligatorio: no

**origine**  
La posizione in cui Systems Manager copia la versione di EC2 Config da installare. Non puoi modificare questa posizione.  
Tipo: stringa  
Obbligatorio: sì

**targetVersion**  
Una versione specifica del servizio EC2 Config da installare. Se non è specificata, il servizio verrà aggiornato alla versione più recente.  
▬Tipo: stringa  
Obbligatorio: no

## `aws:updateSsmAgent`
<a name="aws-updatessmagent"></a>

Aggiorna SSM Agent alla versione più recente o specifica una versione precedente. Questo plugin funziona su Linux e sistemi operativi Windows Server. Per ulteriori informazioni, consulta [Utilizzo di SSM Agent](ssm-agent.md). 

### Sintassi
<a name="updateSSMagent-syntax"></a>

#### Schema 2.2
<a name="updateaSSMgent-syntax-2.2"></a>

------
#### [ YAML ]

```
---
schemaVersion: '2.2'
description: aws:updateSsmAgent
parameters:
  allowDowngrade:
    default: 'false'
    description: "(Optional) Allow the Amazon SSM Agent service to be downgraded to
      an earlier version. If set to false, the service can be upgraded to newer versions
      only (default). If set to true, specify the earlier version."
    type: String
    allowedValues:
    - 'true'
    - 'false'
mainSteps:
- action: aws:updateSsmAgent
  name: updateSSMAgent
  inputs:
    agentName: amazon-ssm-agent
    source: https://s3.{Region}.amazonaws.com/amazon-ssm-{Region}/ssm-agent-manifest.json
    allowDowngrade: "{{ allowDowngrade }}"
```

------
#### [ JSON ]

```
{
  "schemaVersion": "2.2",
  "description": "aws:updateSsmAgent",
  "parameters": {
    "allowDowngrade": {
      "default": "false",
      "description": "(Required) Allow the Amazon SSM Agent service to be downgraded to an earlier version. If set to false, the service can be upgraded to newer versions only (default). If set to true, specify the earlier version.",
      "type": "String",
      "allowedValues": [
        "true",
        "false"
      ]
    }
  },
  "mainSteps": [
    {
      "action": "aws:updateSsmAgent",
      "name": "awsupdateSsmAgent",
      "inputs": {
        "agentName": "amazon-ssm-agent",
        "source": "https://s3.{Region}.amazonaws.com/amazon-ssm-{Region}/ssm-agent-manifest.json",
        "allowDowngrade": "{{ allowDowngrade }}"
      }
    }
  ]
}
```

------

#### Schema 1.2
<a name="updateaSSMgent-syntax-1.2"></a>

------
#### [ YAML ]

```
---
runtimeConfig:
  aws:updateSsmAgent:
    properties:
    - agentName: amazon-ssm-agent
      source: https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json
      allowDowngrade: "{{ allowDowngrade }}"
```

------
#### [ JSON ]

```
{
   "runtimeConfig":{
      "aws:updateSsmAgent":{
         "properties":[
            {
               "agentName":"amazon-ssm-agent",
               "source":"https://s3.{Region}.amazonaws.com/aws-ssm-{Region}/manifest.json",
               "allowDowngrade":"{{ allowDowngrade }}"
            }
         ]
      }
   }
}
```

------

### Properties
<a name="updateSSMagent-properties"></a>

**agentName**  
amazon-ssm-agent. Questo è il nome dell'agente Systems Manager che elabora le richieste ed esegue i comandi sull'istanza.  
Tipo: stringa  
Obbligatorio: sì

**allowDowngrade**  
Consenti il downgrade di SSM Agent a una versione precedente. Se impostato su "false", l'agente può essere aggiornato solo a versioni più recenti (impostazione predefinita). Se impostato su "true", specifica la versione precedente.   
Tipo: Booleano  
Obbligatorio: sì

**origine**  
La posizione in cui Systems Manager copia la versione di SSM Agent da installare. Non puoi modificare questa posizione.  
Tipo: stringa  
Obbligatorio: sì

**targetVersion**  
Una versione specifica di SSM Agent da installare. Se non è specificata, l'agente verrà aggiornato alla versione più recente.  
▬Tipo: stringa  
Obbligatorio: no

# Creazione del contenuto del documento SSM
<a name="documents-creating-content"></a>

Se i documenti AWS Systems Manager pubblici non eseguono tutte le azioni che desideri eseguire sulle tue AWS risorse, puoi creare i tuoi documenti SSM. È inoltre possibile clonare documenti SSM tramite la console. La clonazione di documenti consente di copiare il contenuto da un documento esistente in un nuovo documento che è possibile modificare. Quando si crea o si clona un documento, il contenuto non deve superare i 64 KB. Questa quota include anche il contenuto specificato per i parametri di input in runtime (fase di esecuzione). Quando si crea un nuovo documento `Command` o `Policy`, si consiglia di utilizzare la versione 2.2 o successive dello schema, in modo da poter sfruttare le funzionalità più recenti, come la modifica dei documenti, il controllo delle versioni automatico, il sequenziamento e altro ancora.

## Scrittura del contenuto del documento SSM
<a name="writing-ssm-doc-content"></a>

Per creare il proprio contenuto del documento SSM, è importante comprendere i diversi schemi, plugin, le diverse funzionalità e la diversa sintassi disponibili per i documenti SSM. Si consiglia di acquisire familiarità con le seguenti risorse.
+  [Scrivere i propri documenti AWS Systems Manager](https://aws.amazon.com/blogs//mt/writing-your-own-aws-systems-manager-documents/) 
+  [Elementi di dati e parametri](documents-syntax-data-elements-parameters.md) 
+  [Schemi, funzionalità ed esempi](documents-schemas-features.md) 
+  [Documentazione di riferimento del plugin per i documenti di comando](documents-command-ssm-plugin-reference.md) 
+  [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md) 
+  [Variabili di sistema del servizio di automazione](automation-variables.md) 
+  [Ulteriori esempi di runbook](automation-document-examples.md) 
+  [Utilizzo dei runbook Automation di Systems Manager](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/systems-manager-automation-docs.html)tramite il AWS Toolkit for Visual Studio Code 
+  [Esperienza di progettazione visiva per i runbook Automation](automation-visual-designer.md) 
+  [Utilizzo di script nei runbook](automation-document-script-considerations.md) 

AWS i documenti SSM predefiniti potrebbero eseguire alcune delle azioni richieste. È possibile richiamare questi documenti utilizzando i plugin `aws:runDocument`, `aws:runCommand` o `aws:executeAutomation` all'interno del documento SSM personalizzato, a seconda del tipo di documento. È inoltre possibile copiare parti di tali documenti in un documento SSM personalizzato e modificare il contenuto in base alle proprie esigenze.

**Suggerimento**  
Durante la creazione del contenuto del documento SSM, è possibile modificare il contenuto e aggiornare il documento più volte durante il test. I comandi seguenti aggiornano il documento SSM con il contenuto più recente e aggiornano la versione predefinita del documento alla versione più recente.  
I comandi Linux e Windows utilizzano lo strumento a riga di comando `jq` per filtrare i dati di risposta JSON.

```
latestDocVersion=$(aws ssm update-document \
    --content file://path/to/file/documentContent.json \
    --name "ExampleDocument" \
    --document-format JSON \
    --document-version '$LATEST' \
    | jq -r '.DocumentDescription.LatestVersion')

aws ssm update-document-default-version \
    --name "ExampleDocument" \
    --document-version $latestDocVersion
```

```
latestDocVersion=$(aws ssm update-document ^
    --content file://C:\path\to\file\documentContent.json ^
    --name "ExampleDocument" ^
    --document-format JSON ^
    --document-version "$LATEST" ^
    | jq -r '.DocumentDescription.LatestVersion')

aws ssm update-document-default-version ^
    --name "ExampleDocument" ^
    --document-version $latestDocVersion
```

```
$content = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String
$latestDocVersion = Update-SSMDocument `
    -Content $content `
    -Name "ExampleDocument" `
    -DocumentFormat "JSON" `
    -DocumentVersion '$LATEST' `
    | Select-Object -ExpandProperty LatestVersion

Update-SSMDocumentDefaultVersion `
    -Name "ExampleDocument" `
    -DocumentVersion $latestDocVersion
```

### Best practice per la sicurezza dei documenti SSM
<a name="ssm-document-security-practices"></a>

Durante la creazione di documenti SSM, segui queste best practice per la sicurezza, per evitare l'iniezione di comandi e garantire una gestione sicura dei parametri:
+ Utilizza l'interpolazione delle variabili di ambiente per i parametri di stringa che verranno utilizzati nei comandi o negli script. Aggiungi la proprietà di `interpolationType` con valore `ENV_VAR` ai tuoi parametri di stringa:

  ```
  {
      "command": {
          "type": "String",
          "description": "Command to execute",
          "interpolationType": "ENV_VAR"
      }
  }
  ```

  Puoi migliorare ulteriormente la sicurezza dei tuoi documenti SSM specificando che le virgolette doppie non sono accettate nei valori forniti per interpolazione:

  ```
  {
      "command": {
          "type": "String",
          "description": "Command to execute",
          "interpolationType": "ENV_VAR",
              "allowedPattern": "^[^"]*$"
      }
  }
  ```
+ Quando si usano linguaggi interpretati come Python, Ruby o Node.js, fare riferimento ai parametri utilizzando la sintassi della variabile di ambiente appropriata:

  ```
  # Python example
  import os
  command = os.environ['SSM_Message']
  ```
+ Per la compatibilità retroattiva con le versioni SSM Agent precedenti (precedenti alla versione 3.3.2746.0), includi la logica di fallback per le variabili di ambiente:

  ```
  if [ -z "${SSM_command+x}" ]; then
      export SSM_command="{{command}}"
  fi
  ```
+ Combina l'interpolazione delle variabili di ambiente con `allowedPattern` per una convalida aggiuntiva degli input. Nell'esempio seguente, il valore di `allowedPattern` `^[^"]*$` impedisce specificamente le virgolette doppie nel valore della stringa:

  ```
  {
      "command": {
          "type": "String",
          "interpolationType": "ENV_VAR",
          "allowedPattern": "^[a-zA-Z0-9_-]+$"
      }
  }
  ```
+ Prima di implementare il documento SSM, verifica le seguenti considerazioni sulla sicurezza:
  + Tutti i parametri di stringa che accettano l'input dell'utente utilizzano l'interpolazione delle variabili di ambiente, quando appropriato.
  + La convalida dell'input viene implementata utilizzando `allowedPattern`, ove possibile.
  + Il documento include la gestione appropriata degli errori per l'elaborazione dei parametri.
  + La compatibilità retroattiva viene mantenuta per gli ambienti che utilizzano versioni SSM Agent precedenti.

Per informazioni sulle risorse di AWS proprietà dei servizi a cui Systems Manager accede e su come configurare le politiche perimetrali dei dati, vedere. [Perimetri di dati in AWS Systems Manager](data-perimeters.md)

## Clonazione di un documento SSM
<a name="cloning-ssm-document"></a>

È possibile clonare AWS Systems Manager documenti utilizzando la console Systems Manager Documents per creare documenti SSM. La clonazione di documenti SSM consente di copiare il contenuto da un documento esistente in un nuovo documento che è possibile modificare. Non puoi clonare un documento di dimensioni superiori a 64 KB.

**Per clonare un documento SSM**

1. Apri la AWS Systems Manager console all'indirizzo. [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)

1. Nel pannello di navigazione, scegli **Documenti**.

1. Nella casella di ricerca, inserire il nome del documento che si desidera clonare.

1. Scegliere il nome del documento che si desidera clonare, quindi scegliere **Clone document (Clona documento)** nel menu a tendina **Actions (Operazioni)**. 

1. Modificare il documento come si preferisce, quindi scegliere**Create document (Crea documento)** per salvare il documento. 

Dopo aver scritto il contenuto del documento SSM, è possibile utilizzarlo per creare un documento SSM tramite uno dei seguenti metodi.

**Topics**
+ [

## Scrittura del contenuto del documento SSM
](#writing-ssm-doc-content)
+ [

## Clonazione di un documento SSM
](#cloning-ssm-document)
+ [

## Creazione di documenti compositi
](#documents-creating-composite)

## Creazione di documenti compositi
<a name="documents-creating-composite"></a>

Un documento *composito* AWS Systems Manager (SSM) è un documento personalizzato che esegue una serie di azioni eseguendo uno o più documenti SSM secondari. I documenti compositi promuovono l'*Infrastructure as Code* consentendo di creare un set standard di documenti SSM per attività comuni, come processi di bootstrap di software o l'aggiunta di domini a istanze. È quindi possibile condividere questi documenti nello stesso documento Regione AWS per ridurre la manutenzione dei documenti SSM e garantire la Account AWS coerenza.

Ad esempio, puoi creare un documento composito che esegue le seguenti operazioni:

1. Installa tutte le patch nell'elenco Consenti.

1. Installa il software antivirus.

1. Scarica script da GitHub e li esegue.

In questo esempio, il documento SSM personalizzato include i seguenti plugin per effettuare le operazioni riportate di seguito:

1. Il plug-in `aws:runDocument` per eseguire il documento `AWS-RunPatchBaseline`, che installa tutte le patch consentite elencate.

1. Il plugin `aws:runDocument` per eseguire il documento `AWS-InstallApplication`, che installa il software antivirus.

1. Il plug-in `aws:downloadContent` per scaricare script da GitHub ed eseguirli.

I documenti compositi e secondari possono essere archiviati in Systems Manager, GitHub (repository pubblici e privati) o Amazon S3. I documenti compositi e secondari possono essere create in formato JSON o YAML. 

**Nota**  
I documenti compositi possono essere eseguiti solo a una profondità massima di tre documenti. Ciò significa che un documento composito può chiamare un documento figlio e che questo documento figlio può chiamare un ultimo documento.

Per creare un documento composito, aggiungere il plug-in [`aws:runDocument`](documents-command-ssm-plugin-reference.md#aws-rundocument) in un documento SSM personalizzato e specificare gli input necessari. L'esempio qui sotto mostra un documento composito che effettua le seguenti operazioni:

1. Esegue il plug-in [`aws:downloadContent`](documents-command-ssm-plugin-reference.md#aws-downloadContent) per scaricare un documento SSM da un repository GitHub pubblico in una directory locale denominata bootstrap. Il documento SSM si chiama StateManagerBootstrap .yml (un documento YAML).

1. Esegue il `aws:runDocument` plugin per eseguire il documento.yml. StateManagerBootstrap Non è specificato alcun parametro.

1. Esegue il plugin `aws:runDocument` per eseguire il documento SSM di `AWS-ConfigureDocker pre-defined`. I parametri specificati installano Docker sull'istanza.

```
{
  "schemaVersion": "2.2",
  "description": "My composite document for bootstrapping software and installing Docker.",
  "parameters": {
  },
  "mainSteps": [
    {
      "action": "aws:downloadContent",
      "name": "downloadContent",
      "inputs": {
        "sourceType": "GitHub",
        "sourceInfo": "{\"owner\":\"TestUser1\",\"repository\":\"TestPublic\", \"path\":\"documents/bootstrap/StateManagerBootstrap.yml\"}",
        "destinationPath": "bootstrap"
      }
    },
    {
      "action": "aws:runDocument",
      "name": "runDocument",
      "inputs": {
        "documentType": "LocalPath",
        "documentPath": "bootstrap",
        "documentParameters": "{}"
      }
    },
    {
      "action": "aws:runDocument",
      "name": "configureDocker",
      "inputs": {
        "documentType": "SSMDocument",
        "documentPath": "AWS-ConfigureDocker",
        "documentParameters": "{\"action\":\"Install\"}"
      }
    }
  ]
}
```

**Ulteriori informazioni**  
+ Per ulteriori informazioni sul riavvio dei server e delle istanze quando usi Run Command per chiamare gli script, consulta [Gestione di riavvii durante l'esecuzione dei comandi](send-commands-reboot.md).
+ Per ulteriori informazioni sui plugin che è possibile aggiungere a un documento SSM personalizzato, consultare [Documentazione di riferimento del plugin per i documenti di comando](documents-command-ssm-plugin-reference.md).
+ Se desideri eseguire un documento da una posizione remota (senza creare un documento composito), consulta [Esecuzione di documenti da posizioni remote](documents-running-remote-github-s3.md).

# Utilizzo dei documenti
<a name="documents-using"></a>

Questa sezione include informazioni su come utilizzare e gestire i documenti SSM.

**Topics**
+ [

# Confronta le versioni del documento SSM
](comparing-versions.md)
+ [

# Crea un documento SSM
](create-ssm-console.md)
+ [

# Eliminazione di documenti SSM personalizzati
](deleting-documents.md)
+ [

# Esecuzione di documenti da posizioni remote
](documents-running-remote-github-s3.md)
+ [

# Condivisione di documenti SSM
](documents-ssm-sharing.md)
+ [

# Ricerca di documenti SSM
](ssm-documents-searching.md)

# Confronta le versioni del documento SSM
<a name="comparing-versions"></a>

È possibile confrontare le differenze di contenuto tra le versioni di documenti AWS Systems Manager (SSM) nella console Documents di Systems Manager. Quando si confrontano le versioni di un documento SSM, vengono evidenziate le differenze di contenuto delle versioni.

**Confrontare il contenuto del documento SSM (console)**

1. Apri la console di AWS Systems Manager all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel riquadro di navigazione, scegli **Documenti**.

1. Nell'elenco dei documenti, scegliere il documento di cui si desidera confrontare il contenuto.

1. Sulla scheda **Content (Contenuti)**, selezionare **Compare versions (Confronto delle versioni)** e scegliere la versione del documento con cui si desidera confrontare il contenuto.

# Crea un documento SSM
<a name="create-ssm-console"></a>

Dopo aver creato il contenuto per il documento SSM personalizzato, come descritto in [Scrittura del contenuto del documento SSM](documents-creating-content.md#writing-ssm-doc-content), è possibile utilizzare la console di Systems Manager per creare un documento SSM tramite il contenuto.

**Per creare un documento SSM**

1. Apri la console di AWS Systems Manager all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel riquadro di navigazione, scegli **Documenti**.

1. Scegliere **Create command or session (Crea comando o sessione)**.

1. Inserisci un nome descrittivo per il documento.

1. (Facoltativo) Per **Target type (Tipo di destinazione)**, specificare il tipo di risorse su cui è possibile eseguire il documento.

1. Nell'elenco **Document type (Tipo di documento)**, scegliere il tipo di documento che desideri creare.

1. Eliminare le parentesi nel campo **Content (Contenuto)**, quindi incollare il documento creato in precedenza.

1. (Facoltativo) Nella sezione **Document tags (Tag documento)** applicare una o più coppie nome/valore chiave tag al documento.

   I tag sono metadati facoltativi assegnati a una risorsa. Consentono di categorizzare una risorsa in diversi modi, ad esempio in base allo scopo, al proprietario o all'ambiente. Ad esempio, è possibile assegnare un tag a un documento per identificare il tipo di attività che esegue, il tipo di sistemi operativi di destinazione e l'ambiente in cui viene eseguito. In questo caso, è possibile specificare le coppie nome chiave-valore seguenti:
   + `Key=TaskType,Value=MyConfigurationUpdate`
   + `Key=OS,Value=AMAZON_LINUX_2`
   + `Key=Environment,Value=Production`

1. Scegliere **Create document (Crea documento)** per salvare il documento.

# Eliminazione di documenti SSM personalizzati
<a name="deleting-documents"></a>

Se non si desidera più utilizzare un documento SSM personalizzato, è possibile eliminarlo utilizzando la console AWS Systems Manager. 

**Per eliminare un documento SSM**

1. Apri la console di AWS Systems Manager all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel riquadro di navigazione, scegli **Documenti**.

1. Selezionare il documento che si desidera eliminare.

1. Selezionare **Delete (Elimina)**. Quando viene richiesto di eliminare il documento, selezionare**Delete (Elimina)**.

Per esempi di utilizzo di strumenti da riga di comando o SDK per eliminare documenti SSM, consulta la sezione [Utilizzo `DeleteDocument` con un AWS SDK o una CLI](example_ssm_DeleteDocument_section.md).

# Esecuzione di documenti da posizioni remote
<a name="documents-running-remote-github-s3"></a>

È possibile eseguire documenti AWS Systems Manager (SSM) da postazioni remote utilizzando il documento SSM `AWS-RunDocument` predefinito. Questo documento supporta l'esecuzione di documenti SSM memorizzati nelle seguenti posizioni:
+ Repository GitHub pubblici e privati (GitHub Enterprise non è supportato)
+ Bucket Amazon S3 
+ Systems Manager

Sebbene sia possibile eseguire documenti remoti anche utilizzando State Manager i nostri strumenti di automazione AWS Systems Manager, la procedura seguente descrive solo come eseguire documenti SSM remoti utilizzando AWS Systems Manager Run Command la console Systems Manager. 

**Nota**  
`AWS-RunDocument` può essere utilizzato per eseguire solo documenti SSM di tipo comando, non altri tipi come i runbook di Automation. `AWS-RunDocument` utilizza il plugin `aws:downloadContent`. Per ulteriori informazioni sui plugin `aws:downloadContent`, consultare [`aws:downloadContent`](documents-command-ssm-plugin-reference.md#aws-downloadContent).

**avvertimento**  
`AWS-RunDocument`può eseguire il contenuto dei documenti da varie fonti (documenti SSM, S3 GitHub,). URLs Quando si eseguono documenti remoti, le autorizzazioni IAM valutate si riferiscono al documento remoto e così `ssm:GetDocument` via. `ssm:SendCommand` `AWS-RunDocument` Se disponi di policy IAM che negano l'accesso a specifici documenti SSM, gli utenti con `AWS-RunDocument` autorizzazioni possono comunque eseguire tali documenti negati passando il contenuto del documento come parametri, il che potrebbe non essere soggetto alle stesse restrizioni IAM specifiche del documento.  
Per limitare correttamente l'esecuzione dei documenti, utilizza uno di questi approcci:  
**Allowlist delle fonti approvate**: se devi utilizzare l'esecuzione annidata dei documenti, limita l'accesso solo alle fonti approvate utilizzando i controlli appropriati per ogni tipo di fonte: policy IAM `ssm:GetDocument` per il controllo delle sorgenti di documenti SSM, policy di bucket IAM e Amazon S3 per le sorgenti Amazon S3 e impostazioni di rete (come endpoint VPC o gruppi di sicurezza) per le fonti Internet pubbliche.
**Limita l'accesso a AWS- RunDocument**: Deny `ssm:SendCommand` on `AWS-RunDocument` e a qualsiasi altro documento che utilizza il `aws:runDocument` plug-in nelle tue policy IAM per impedire l'esecuzione di documenti annidati.
**Usa i limiti di autorizzazione**: implementa i limiti di autorizzazione IAM per impostare le autorizzazioni massime per gli utenti, impedendo loro di eseguire documenti non autorizzati indipendentemente dal metodo di esecuzione.
*Per ulteriori informazioni sulle migliori pratiche e sui limiti di autorizzazione IAM, consulta Limiti [delle autorizzazioni per le entità IAM nella Guida per](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) l'AWS Identity and Access Management utente.*

**Prima di iniziare**  
Prima di eseguire un documento remoto devi completare le attività seguenti.
+ Creare un documento SSM e salvarlo in una posizione remota. Per ulteriori informazioni, consulta [Creazione del contenuto del documento SSM](documents-creating-content.md)
+ Se si decide di eseguire un documento remoto archiviato in un repository GitHub privato, è necessario creare un parametro `SecureString` di Systems Manager per il token di accesso di sicurezza a GitHub. Non è possibile accedere a un documento remoto in un repository GitHub privato trasferendo manualmente il token su SSH. Il token di accesso deve essere trasferito come parametro `SecureString` di Systems Manager. Per ulteriori informazioni sulla creazione di un parametro `SecureString`, consulta [Creazione di parametri Parameter Store in Systems Manager](sysman-paramstore-su-create.md).

## Esecuzione di un documento remoto (console remota)
<a name="documents-running-remote-github-s3-console"></a>

**Per eseguire un documento remoto**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel pannello di navigazione, scegli **Run Command**.

1. Seleziona **Esegui comando**.

1. Nell'elenco **Document (Documento)** scegliere **`AWS-RunDocument`**.

1. In **Command parameters (Parametri di comando)**, per **Source Type (Tipo di origine)**, scegliere un'opzione. 
   + Se si sceglie **GitHub**, specificare le **Source Info** (Informazioni origine) nel formato seguente:

     ```
     {
         "owner": "owner_name",
         "repository": "repository_name",
         "path": "path_to_document",
         "getOptions":"branch:branch_name",
         "tokenInfo": "{{ssm-secure:secure-string-token}}"
     }
     ```

     Esempio:

     ```
     {
         "owner":"TestUser",
         "repository":"GitHubTestExamples",
         "path":"scripts/python/test-script",
         "getOptions":"branch:exampleBranch",
         "tokenInfo":"{{ssm-secure:my-secure-string-token}}"
     }
     ```
**Nota**  
`getOptions` sono opzioni aggiuntive per recuperare il contenuto da un ramo diverso dal master o da un commit specifico nel repository. `getOptions` può essere omesso se si utilizza l'ultimo commit nel ramo master. Il parametro `branch` è necessario solo se il documento SSM è memorizzato in un ramo diverso da `master`.  
Per utilizzare la versione del documento SSM in un particolare *commit* nel repository, usare `commitID` con `getOptions` invece di `branch`. Ad esempio:  

     ```
     "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
     ```
   + Se si sceglie **S3**, specificare le **Source Info (Informazioni origine)** nel formato seguente:

     ```
     {"path":"URL_to_document_in_S3"}
     ```

     Esempio:

     ```
     {"path":"https://s3.amazonaws.com/amzn-s3-demo-bucket/scripts/ruby/mySSMdoc.json"}
     ```
   + Se si sceglie **SSMDocument**, specificare le **Source Info** (Informazioni origine) nel formato seguente:

     ```
     {"name": "document_name"}
     ```

     Esempio:

     ```
     {"name": "mySSMdoc"}
     ```

1. Nel campo **Document Parameters (Parametri documento)**, inserire i parametri per il documento SSM remoto. Ad esempio, se si esegue il documento `AWS-RunPowerShell`, è possibile specificare:

   ```
   {"commands": ["date", "echo \"Hello World\""]}
   ```

   Se si esegue il documento `AWS-ConfigureAWSPack`, è possibile specificare:

   ```
   {
      "action":"Install",
      "name":"AWSPVDriver"
   }
   ```

1. 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](fleet-manager-troubleshooting-managed-nodes.md) per suggerimenti sulla risoluzione dei problemi.

1. In **Altri parametri**:
   + In **Commento**, digita le informazioni su questo comando.
   + In **Timeout (secondi)**, specifica il numero di secondi che il sistema dovrà attendere prima di generare un errore per l'intera esecuzione del comando. 

1. Per **Controllo velocità**:
   + In **Simultaneità**, specifica un numero o una percentuale di nodi gestiti su cui eseguire contemporaneamente il comando.
**Nota**  
Se hai selezionato le destinazioni specificando i tag applicati ai nodi gestiti o specificando i gruppi di AWS risorse e non sei sicuro del numero di nodi gestiti come target, limita il numero di destinazioni che possono eseguire il documento contemporaneamente specificando una percentuale.
   + Per **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 tre 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.

1. (Facoltativo) Nella sezione **Opzioni di output**, per salvare l'output del comando in un file, seleziona la casella **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 danno la possibilità di scrivere dati in un bucket S3 sono quelle del profilo dell'istanza (per istanze EC2) o del ruolo 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](setup-instance-permissions.md) oppure [Creazione di un ruolo di servizio IAM per un ambiente ibrido](hybrid-multicloud-service-role.md). 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.

1. Se vuoi che vengano inviate notifiche sullo stato dell'esecuzione del comando, nella sezione **Notifiche SNS** selezionara la casella di controllo **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](monitoring-sns-notifications.md).

1. Scegli **Esegui**.

**Nota**  
Per ulteriori informazioni sul riavvio dei server e delle istanze quando usi Run Command per chiamare gli script, consulta [Gestione di riavvii durante l'esecuzione dei comandi](send-commands-reboot.md).

# Condivisione di documenti SSM
<a name="documents-ssm-sharing"></a>

Puoi condividere documenti AWS Systems Manager (SSM) privatamente o pubblicamente con account nello stesso. Regione AWS Per condividere privatamente un documento, si modificano le autorizzazioni del documento e si consente a determinati individui di accedervi in base al proprio ID di Account AWS . Per condividere pubblicamente un documento SSM, si modificano le autorizzazioni del documento e si specifica `All`. I documenti non possono essere condivisi contemporaneamente in modalità pubblica e privata.

**avvertimento**  
Utilizzare documenti SSM condivisi solo se provengono da fonti attendibili. Quando utilizzi un documento condiviso, verificane attentamente i contenuti prima di utilizzarlo per comprendere come modificherà la configurazione dell'istanza. Per ulteriori informazioni sulle best practice per i documenti condivisi, consulta [Best practice per documenti SSM condivisi](#best-practices-shared). 

**Limitazioni**  
Quando si iniziano a utilizzare documenti SSM, tenere presente le seguenti restrizioni.
+ Soltanto il proprietario può condividere un documento.
+ Devi interrompere la condivisione di un documento prima di poterlo eliminare. Per ulteriori informazioni, consulta [Modifica delle autorizzazioni per un documento condiviso](#modify-permissions-shared).
+ Puoi condividere un documento con un massimo di 1000. Account AWSÈ possibile richiedere un aumento di questo limite nel [Supporto Center](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). Per **Limit type (Tipo di limite)**, scegliere *EC2 Systems Manager* e descrivere il motivo della richiesta.
+ È possibile condividere pubblicamente un massimo di cinque documenti SSM. È possibile richiedere un aumento di questo limite nel [Supporto Center](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). Per **Limit type (Tipo di limite)**, scegliere *EC2 Systems Manager* e descrivere il motivo della richiesta.
+ I documenti possono essere condivisi con altri account Regione AWS solo nello stesso account. La condivisione tra regioni non è supportata.

**Importante**  
In Systems Manager, un documento SSM *di proprietà di Amazon* è un documento creato e gestito dallo stesso Amazon Web Services. I documenti *di proprietà di Amazon* includono un prefisso simile a `AWS-*` nel nome del documento. Il proprietario del documento è considerato Amazon, non un account utente specifico all'interno AWS. Questi documenti sono disponibili al pubblico e possono essere utilizzati da tutti.

Per ulteriori informazioni sulle service quotas di Systems Manager, consulta [AWS Systems Manager Service Quotas](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm).

**Topics**
+ [

## Best practice per documenti SSM condivisi
](#best-practices-shared)
+ [

## Bloccare la condivisione pubblica per i documenti SSM
](#block-public-access)
+ [

## Condividere un documento SSM
](#ssm-how-to-share)
+ [

## Modifica delle autorizzazioni per un documento condiviso
](#modify-permissions-shared)
+ [

## Utilizzo di documenti SSM condivisi
](#using-shared-documents)

## Best practice per documenti SSM condivisi
<a name="best-practices-shared"></a>

Consulta le seguenti linee guida prima di condividere o utilizzare un documento condiviso. 

**Rimuovi le informazioni sensibili**  
Esamina attentamente il tuo documento AWS Systems Manager (SSM) e rimuovi tutte le informazioni sensibili. Ad esempio, verifica che il documento non includa AWS le tue credenziali. Se condividi un documento con utenti specifici, questi possono visualizzare le informazioni contenute nel documento. Se condividi un documento pubblicamente, tutti possono visualizzare le informazioni contenute nel documento.

**Bloccare la condivisione pubblica per i documenti**  
Controlla tutti i documenti SSM condivisi pubblicamente nel tuo account e conferma se desideri continuare a condividerli. Per interrompere la condivisione di un documento con il pubblico, è necessario modificare l'impostazione delle autorizzazioni del documento come descritto nella sezione [Modifica delle autorizzazioni per un documento condiviso](#modify-permissions-shared) di questo argomento. L'attivazione dell'impostazione di blocco della condivisione pubblica non ha effetto sui documenti che stai attualmente condividendo con il pubblico. A meno che il caso d'uso non richieda la condivisione pubblica, si consiglia di attivare l'impostazione Blocca condivisione pubblica per i documenti SSM nella sezione **Preferenze** della console Documenti di Systems Manager. L'attivazione di questa impostazione impedisce l'accesso indesiderato ai documenti SSM. L'impostazione Blocca condivisione pubblica è un'impostazione a livello di account che può differire per ogni Regione AWS.

**Limitazione delle operazioni Run Command utilizzando una policy di attendibilità IAM**  
Crea una politica restrittiva AWS Identity and Access Management (IAM) per gli utenti che avranno accesso al documento. La policy IAM determina quali documenti SSM un utente può vedere nella console Amazon Elastic Compute Cloud (Amazon EC2) o `ListDocuments` chiamando utilizzando () o. AWS Command Line Interface AWS CLI AWS Tools for Windows PowerShell La policy limita inoltre le operazioni che l'utente può eseguire con i documenti SSM. Puoi creare una policy restrittiva in modo che un utente possa utilizzare solo documenti specifici. Per ulteriori informazioni, consulta [Esempi di policy gestite dal cliente](security_iam_id-based-policy-examples.md#customer-managed-policies).

**Fare attenzione quando si utilizzano documenti SSM condivisi**  
È importante verificare i contenuti di ogni documento condiviso, soprattutto nel caso di documenti pubblici, per comprendere i comandi che verranno eseguiti sulle istanze. L'esecuzione di un documento potrebbe avere ripercussioni negative, anche in modo non intenzionale. Se il documento fa riferimento a una rete esterna, verifica quest'ultima prima di utilizzare il documento. 

**Invia comandi utilizzando l'hash del documento**  
Quando condividi un documento, il sistema crea un hash Sha-256 e lo assegna al documento. Il sistema salva inoltre uno snapshot del contenuto del documento. Quando invii un comando utilizzando un documento condiviso, puoi specificare l'hash nel comando per garantire che si verifichino le seguenti condizioni:  
+ Si sta eseguendo un comando dal documento di Systems Manager corretto
+ Il contenuto del documento non è stato modificato da quando è stato condiviso con l'utente.
Se l'hash non corrisponde al documento specificato o se il contenuto del documento condiviso è stato modificato, il comando restituisce un'eccezione `InvalidDocument` (Documento non valido). L'hash non è in grado di verificare il contenuto di un documento da percorsi esterni.

**Utilizzare il parametro di interpolazione per migliorare la sicurezza**  
Per i parametri di tipo `String` nei documenti SSM, utilizza il parametro e il valore `interpolationType": "ENV_VAR`, per migliorare la sicurezza contro gli attacchi di iniezione di comandi trattando gli input dei parametri come stringhe letterali, invece di comandi potenzialmente eseguibili. In questo caso, l'agente crea una variabile di ambiente denominata `SSM_parameter-name`, che contiene il valore del parametro. Si consiglia di aggiornare tutti i documenti SSM esistenti che includono i parametri di tipo `String`, per includere `"interpolationType": "ENV_VAR"`. Per ulteriori informazioni, consulta [Scrittura del contenuto del documento SSM](documents-creating-content.md#writing-ssm-doc-content).

## Bloccare la condivisione pubblica per i documenti SSM
<a name="block-public-access"></a>

Prima di iniziare, esamina tutti i documenti SSM condivisi pubblicamente in Account AWS e conferma se desideri continuare a condividerli. Per interrompere la condivisione di un documento SSM con il pubblico, è necessario modificare l'impostazione delle autorizzazioni del documento come descritto nella sezione [Modifica delle autorizzazioni per un documento condiviso](#modify-permissions-shared) di questo argomento. L'attivazione dell'impostazione di blocco della condivisione pubblica non influisce sui documenti SSM che stai attualmente condividendo con il pubblico. Con l'impostazione di blocco della condivisione pubblica abilitata, non sarai in grado di condividere altri documenti SSM con il pubblico.

A meno che il caso d'uso non richieda l'attivazione della condivisione pubblica, consigliamo di attivare l'impostazione Blocca condivisione pubblica per i documenti SSM. L'attivazione di questa impostazione impedisce l'accesso indesiderato ai documenti SSM. L'impostazione di blocco della condivisione pubblica è un'impostazione a livello di account che può differire per ciascuno. Regione AWS Completare le seguenti attività per bloccare la condivisione pubblica di qualsiasi documento SSM attualmente in condivisione.

### Blocca condivisione pubblica (console)
<a name="block-public-access-console"></a>

**Bloccare la condivisione pubblica dei documenti SSM**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel pannello di navigazione, scegli **Documenti**.

1. Scegli **Preferenze**, quindi scegli **Modifica** nella sezione **Blocca condivisione pubblica**.

1. Selezionare la casella **Blocca condivisione pubblica**, quindi scegli **Salva**. 

### Blocca condivisione pubblica (riga di comando)
<a name="block-public-access-cli"></a>

Apri AWS Command Line Interface (AWS CLI) o AWS Tools for Windows PowerShell sul tuo computer locale ed esegui il seguente comando per bloccare la condivisione pubblica dei tuoi documenti SSM.

------
#### [ Linux & macOS ]

```
aws ssm update-service-setting  \
    --setting-id /ssm/documents/console/public-sharing-permission \
    --setting-value Disable \
    --region 'The Regione AWS you want to block public sharing in'
```

------
#### [ Windows ]

```
aws ssm update-service-setting ^
    --setting-id /ssm/documents/console/public-sharing-permission ^
    --setting-value Disable ^
    --region "The Regione AWS you want to block public sharing in"
```

------
#### [ PowerShell ]

```
Update-SSMServiceSetting `
    -SettingId /ssm/documents/console/public-sharing-permission `
    -SettingValue Disable `
    –Region The Regione AWS you want to block public sharing in
```

------

Confermare che il valore dell'impostazione sia stato aggiornato utilizzando il seguente comando.

------
#### [ Linux & macOS ]

```
aws ssm get-service-setting   \
    --setting-id /ssm/documents/console/public-sharing-permission \
    --region The Regione AWS you blocked public sharing in
```

------
#### [ Windows ]

```
aws ssm get-service-setting  ^
    --setting-id /ssm/documents/console/public-sharing-permission ^
    --region "The Regione AWS you blocked public sharing in"
```

------
#### [ PowerShell ]

```
Get-SSMServiceSetting `
    -SettingId /ssm/documents/console/public-sharing-permission `
    -Region The Regione AWS you blocked public sharing in
```

------

### Limitazione dell'accesso per bloccare la condivisione pubblica con IAM
<a name="block-public-access-changes-iam"></a>

Puoi creare policy AWS Identity and Access Management (IAM) che impediscano agli utenti di modificare l'impostazione di condivisione pubblica a blocchi. Ciò impedisce agli utenti di consentire l'accesso indesiderato ai documenti SSM. 

Di seguito è riportato un esempio di policy IAM che impedisce agli utenti di aggiornare l'impostazione di blocco della condivisione pubblica. Per utilizzare questo esempio, è necessario sostituire l'ID dell'account Amazon Web Services di esempio con il proprio ID dell'account.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ssm:UpdateServiceSetting",
            "Resource": "arn:aws:ssm:*:444455556666:servicesetting/ssm/documents/console/public-sharing-permission"
        }
    ]
}
```

------

## Condividere un documento SSM
<a name="ssm-how-to-share"></a>

È possibile condividere documenti AWS Systems Manager (SSM) utilizzando la console Systems Manager. Quando si condividono documenti dalla console, è possibile condividere solo la versione predefinita del documento. È inoltre possibile condividere documenti SSM a livello di codice chiamando l'operazione `ModifyDocumentPermission` API utilizzando AWS Command Line Interface (AWS CLI) o l'SDK AWS Tools for Windows PowerShell. AWS Prima di condividere un documento, chiedi le Account AWS IDs persone con cui vuoi condividerlo. Specificherai questi account IDs quando condividi il documento.

### Condivisione di un documento (console)
<a name="share-using-console"></a>

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel pannello di navigazione, scegli **Documenti**.

1. Nell'elenco dei documenti, scegliere il documento che si desidera condividere, quindi selezionare **View details (Visualizza dettagli)**. Nella scheda **Permissions (Autorizzazioni)**, verificare di essere il proprietario del documento. Soltanto il proprietario di un documento può condividerlo.

1. Scegli **Modifica**.

1. Per condividere il comando pubblicamente, scegliere **Public (Pubblico)**, quindi selezionare **Save (Salva)**. Per condividere il comando privatamente, scegliere **Private (Privato)**, inserire l'ID dell' Account AWS , selezionare **Add permission (Aggiungi autorizzazione)** e scegliere **Save (Salva)**. 

### Condivisione di un documento (riga di comando)
<a name="share-using-cli"></a>

La procedura seguente richiede di specificare un Regione AWS per la sessione della riga di comando.

1. Apri AWS CLI o AWS Tools for Windows PowerShell sul tuo computer locale ed esegui il comando seguente per specificare le tue credenziali. 

   Nel comando seguente, sostituiscilo *region* con le tue informazioni. Per un elenco dei *region* valori supportati, vedere la colonna **Regione** negli [endpoint del servizio Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) in. *Riferimenti generali di Amazon Web Services*

------
#### [ Linux & macOS ]

   ```
   aws config
   
   AWS Access Key ID: [your key]
   AWS Secret Access Key: [your key]
   Default region name: region
   Default output format [None]:
   ```

------
#### [ Windows ]

   ```
   aws config
   
   AWS Access Key ID: [your key]
   AWS Secret Access Key: [your key]
   Default region name: region
   Default output format [None]:
   ```

------
#### [ PowerShell ]

   ```
   Set-AWSCredentials –AccessKey your key –SecretKey your key
   Set-DefaultAWSRegion -Region region
   ```

------

1. Utilizzare il comando seguente per elencare tutti i documenti SSM disponibili per l'utente. L'elenco include i documenti creati e i documenti condivisi.

------
#### [ Linux & macOS ]

   ```
   aws ssm list-documents
   ```

------
#### [ Windows ]

   ```
   aws ssm list-documents
   ```

------
#### [ PowerShell ]

   ```
   Get-SSMDocumentList
   ```

------

1. Utilizzare il comando seguente per ottenere un documento specifico.

------
#### [ Linux & macOS ]

   ```
   aws ssm get-document \
       --name document name
   ```

------
#### [ Windows ]

   ```
   aws ssm get-document ^
       --name document name
   ```

------
#### [ PowerShell ]

   ```
   Get-SSMDocument `
       –Name document name
   ```

------

1. Utilizzare il comando seguente per ottenere una descrizione del documento.

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-document \
       --name document name
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-document ^
       --name document name
   ```

------
#### [ PowerShell ]

   ```
   Get-SSMDocumentDescription `
       –Name document name
   ```

------

1. Utilizzare il comando seguente per visualizzare le autorizzazioni per il documento.

------
#### [ Linux & macOS ]

   ```
   aws ssm describe-document-permission \
       --name document name \
       --permission-type Share
   ```

------
#### [ Windows ]

   ```
   aws ssm describe-document-permission ^
       --name document name ^
       --permission-type Share
   ```

------
#### [ PowerShell ]

   ```
   Get-SSMDocumentPermission `
       –Name document name `
       -PermissionType Share
   ```

------

1. Utilizzare il comando seguente per modificare le autorizzazioni per il documento e condividerlo. È necessario essere il proprietario del documento per modificare le autorizzazioni. Facoltativamente, per i documenti condivisi con utenti specifici Account AWS IDs, è possibile specificare una versione del documento che si desidera condividere utilizzando il `--shared-document-version` parametro. Se non specifichi una versione, il sistema condivide la versione `Default` del documento. Se condividi un documento pubblicamente (con `all`), tutte le versioni del documento specificato vengono condivise per impostazione predefinita. Il comando di esempio seguente condivide privatamente il documento con una persona specifica, in base all'ID di Account AWS quella persona.

------
#### [ Linux & macOS ]

   ```
   aws ssm modify-document-permission \
       --name document name \
       --permission-type Share \
       --account-ids-to-add Account AWS ID
   ```

------
#### [ Windows ]

   ```
   aws ssm modify-document-permission ^
       --name document name ^
       --permission-type Share ^
       --account-ids-to-add Account AWS ID
   ```

------
#### [ PowerShell ]

   ```
   Edit-SSMDocumentPermission `
       –Name document name `
       -PermissionType Share `
       -AccountIdsToAdd Account AWS ID
   ```

------

1. Utilizzare il comando seguente per condividere un documento pubblicamente.
**Nota**  
Se condividi un documento pubblicamente (con `all`), tutte le versioni del documento specificato vengono condivise per impostazione predefinita. 

------
#### [ Linux & macOS ]

   ```
   aws ssm modify-document-permission \
       --name document name \
       --permission-type Share \
       --account-ids-to-add 'all'
   ```

------
#### [ Windows ]

   ```
   aws ssm modify-document-permission ^
       --name document name ^
       --permission-type Share ^
       --account-ids-to-add "all"
   ```

------
#### [ PowerShell ]

   ```
   Edit-SSMDocumentPermission `
       -Name document name `
       -PermissionType Share `
       -AccountIdsToAdd ('all')
   ```

------

## Modifica delle autorizzazioni per un documento condiviso
<a name="modify-permissions-shared"></a>

Se condividi un comando, gli utenti possono visualizzare e utilizzare quel comando finché non rimuovi l'accesso al documento AWS Systems Manager (SSM) o elimini il documento SSM. Tuttavia, non è possibile eliminare un documento finché è condiviso. Devi interrompere la condivisione prima di poterlo eliminare.

### Interruzione della condivisione di un documento (console)
<a name="unshare-using-console"></a>

**Interrompere la condivisione di un documento**

1. Apri la AWS Systems Manager console all'indirizzo. [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)

1. Nel pannello di navigazione, scegli **Documenti**.

1. Nell'elenco dei documenti, scegliere il documento di cui si desidera interrompere la condivisione, quindi selezionare **Details (dettagli)**. Nella sezione **Permissions (Autorizzazioni)**, verificare di essere il proprietario del documento. Soltanto il proprietario del documento può interromperne la condivisione.

1. Scegli **Modifica**.

1. Scegli **X** per eliminare l' Account AWS ID che non dovrebbe più avere accesso al comando, quindi scegli **Salva**. 

### Interruzione della condivisione di un documento (riga di comando)
<a name="unshare-using-cli"></a>

Apri AWS CLI o AWS Tools for Windows PowerShell sul tuo computer locale ed esegui il comando seguente per interrompere la condivisione di un comando.

------
#### [ Linux & macOS ]

```
aws ssm modify-document-permission \
    --name document name \
    --permission-type Share \
    --account-ids-to-remove 'Account AWS ID'
```

------
#### [ Windows ]

```
aws ssm modify-document-permission ^
    --name document name ^
    --permission-type Share ^
    --account-ids-to-remove "Account AWS ID"
```

------
#### [ PowerShell ]

```
Edit-SSMDocumentPermission `
    -Name document name `
    -PermissionType Share `
    –AccountIdsToRemove Account AWS ID
```

------

## Utilizzo di documenti SSM condivisi
<a name="using-shared-documents"></a>

Quando condividi un documento AWS Systems Manager (SSM), il sistema genera un Amazon Resource Name (ARN) e lo assegna al comando. Se si seleziona e si esegue un documento condiviso dalla console di Systems Manager, non si visualizza l'ARN. Tuttavia, se si desidera eseguire un documento SSM condiviso utilizzando un metodo diverso dalla console di Systems Manager, è necessario specificare l'ARN completo del documento per il parametro di richiesta `DocumentName`. L'ARN completo per un documento SSM viene mostrato quando si esegue il comando per elencare i documenti. 

**Nota**  
Non è necessario specificare ARNs documenti AWS pubblici (documenti che iniziano con`AWS-*`) o documenti di tua proprietà.

### Utilizzare un documento SSM condiviso (riga di comando)
<a name="using-shared-documents-cli"></a>

 **Per elencare tutti i documenti SSM pubblici** 

------
#### [ Linux & macOS ]

```
aws ssm list-documents \
    --filters Key=Owner,Values=Public
```

------
#### [ Windows ]

```
aws ssm list-documents ^
    --filters Key=Owner,Values=Public
```

------
#### [ PowerShell ]

```
$filter = New-Object Amazon.SimpleSystemsManagement.Model.DocumentKeyValuesFilter
$filter.Key = "Owner"
$filter.Values = "Public"

Get-SSMDocumentList `
    -Filters @($filter)
```

------

 **Per elencare i documenti SSM privati che sono stati condivisi con l'utente** 

------
#### [ Linux & macOS ]

```
aws ssm list-documents \
    --filters Key=Owner,Values=Private
```

------
#### [ Windows ]

```
aws ssm list-documents ^
    --filters Key=Owner,Values=Private
```

------
#### [ PowerShell ]

```
$filter = New-Object Amazon.SimpleSystemsManagement.Model.DocumentKeyValuesFilter
$filter.Key = "Owner"
$filter.Values = "Private"

Get-SSMDocumentList `
    -Filters @($filter)
```

------

 **Per elencare tutti i documenti SSM disponibili per l'utente** 

------
#### [ Linux & macOS ]

```
aws ssm list-documents
```

------
#### [ Windows ]

```
aws ssm list-documents
```

------
#### [ PowerShell ]

```
Get-SSMDocumentList
```

------

 **Per ottenere informazioni su un documento SSM che è stato condiviso con l'utente** 

------
#### [ Linux & macOS ]

```
aws ssm describe-document \
    --name arn:aws:ssm:us-east-2:12345678912:document/documentName
```

------
#### [ Windows ]

```
aws ssm describe-document ^
    --name arn:aws:ssm:us-east-2:12345678912:document/documentName
```

------
#### [ PowerShell ]

```
Get-SSMDocumentDescription `
    –Name arn:aws:ssm:us-east-2:12345678912:document/documentName
```

------

 **Per eseguire un documento SSM condiviso** 

------
#### [ Linux & macOS ]

```
aws ssm send-command \
    --document-name arn:aws:ssm:us-east-2:12345678912:document/documentName \
    --instance-ids ID
```

------
#### [ Windows ]

```
aws ssm send-command ^
    --document-name arn:aws:ssm:us-east-2:12345678912:document/documentName ^
    --instance-ids ID
```

------
#### [ PowerShell ]

```
Send-SSMCommand `
    –DocumentName arn:aws:ssm:us-east-2:12345678912:document/documentName `
    –InstanceIds ID
```

------

# Ricerca di documenti SSM
<a name="ssm-documents-searching"></a>

È possibile cercare documenti SSM nell'archivio documenti AWS Systems Manager (SSM) utilizzando la ricerca a testo libero o una ricerca basata su filtri. Per trovare più facilmente i documenti SSM usati di frequente, puoi aggiungerli ai tuoi preferiti. Le sezioni seguenti descrivono come utilizzare queste funzionalità.

## Utilizzo della ricerca a testo libero
<a name="ssm-documents-searching-free-text"></a>

La casella di ricerca nella pagina **Documenti** di Systems Manager supporta la ricerca a testo libero. La ricerca a testo libero confronta il termine o i termini di ricerca immessi con il nome del documento in ogni documento SSM. Se si immette un singolo termine di ricerca, ad esempio **ansible**, Systems Manager restituisce tutti i documenti SSM in cui è stato trovato questo termine. Se si immettono più termini di ricerca, Systems Manager esegue la ricerca utilizzando un'istruzione `OR`. Ad esempio, se si specifica **ansible** e **linux**, la ricerca restituisce tutti i documenti con *Una* delle parole chiave nel nome.

Se si immette un termine di ricerca a testo libero e si sceglie un'opzione di ricerca, ad esempio **Tipo di piattaforma**, la ricerca utilizza un'istruzione `AND` e restituisce tutti i documenti con la parola chiave nel nome e il tipo di piattaforma specificato.

**Nota**  
Notare i seguenti dettagli relativi alla ricerca a testo libero.  
La ricerca a testo libero *non* fa distinzione tra maiuscole e minuscole.
I termini di ricerca devono avere un minimo di tre caratteri e un massimo di 20 caratteri
La ricerca a testo libero accetta fino a cinque termini di ricerca.
Se si immette uno spazio fra i termini di ricerca, il sistema include lo spazio durante la ricerca.
È possibile combinare la ricerca a testo libero con altre opzioni di ricerca, ad esempio **Tipo di documento** o **Tipo di piattaforma**.
Il filtro relativo al **Prefisso del nome del documento** e la ricerca a testo libero non possono essere utilizzati insieme. Si escludono a vicenda.

**Per cercare un documento SSM**

1. Apri la console all' AWS Systems Manager indirizzo. [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)

1. Nel pannello di navigazione, scegli **Documenti**.

1. Inserire i termini di ricerca nella casella di ricerca e premere Invio.

### Esecuzione della ricerca di documenti a testo libero utilizzando il AWS CLI
<a name="ssm-documents-searching-free-text-cli"></a>

**Eseguire una ricerca di documenti a testo libero utilizzando il CLI**

1. 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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Per effettuare la ricerca di documenti a testo libero con un singolo termine, eseguire il comando seguente. In questo comando, *search\$1term* sostituiscilo con le tue informazioni.

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="search_term"
   ```

   Ecco un esempio:

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="aws-asg" --region us-east-2
   ```

   Per eseguire ricerche utilizzando più termini che creano un'istruzione `AND`, eseguire il comando seguente. In questo comando, sostituisci *search\$1term\$11* e *search\$1term\$12* con le tue informazioni.

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="search_term_1","search_term_2","search_term_3" --region us-east-2
   ```

   Ecco un esempio:

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="aws-asg","aws-ec2","restart" --region us-east-2
   ```

## Utilizzo dei filtri
<a name="ssm-documents-searching-filters"></a>

La pagina **Documenti** di Systems Manager visualizza automaticamente i seguenti filtri quando si sceglie la casella di ricerca. 
+ Prefisso del nome del documento
+ Tipi di piattaforma
+ Tipo di documento
+ Chiave tag

![\[Opzioni per il filtro nella pagina Documenti SSM.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/ssm-documents-filters-1.png)


È possibile cercare documenti SSM utilizzando un singolo filtro. Se si desidera restituire un insieme più specifico di documenti SSM, è possibile applicare più filtri. Di seguito è riportato un esempio di ricerca che utilizza i filtri **Tipi di piattaforma** e **Prefisso del nome del documento**.

![\[Applicazione di più opzioni per il filtro nella pagina Documenti SSM.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/ssm-documents-filters-2.png)


Se si applicano più filtri, Systems Manager crea istruzioni di ricerca diverse in base ai filtri scelti: 
+ Se si applica lo *stesso* filtro più volte, ad esempio **Prefisso del nome del documento**, Systems Manager esegue la ricerca utilizzando un'istruzione `OR`. Ad esempio, se si specifica un filtro di **Prefisso del nome del documento**=**AWS** e un secondo filtro di **Prefisso del nome del documento**=**Lambda**, la ricerca restituisce tutti i documenti con il prefisso “`AWS`“ e tutti i documenti con il prefisso “`Lambda`“.
+ Se applichi filtri *diversi*, ad esempio **Prefisso del nome del documento** e **Tipi di piattaforma**, Systems Manager esegue la ricerca utilizzando un'istruzione `AND`. Ad esempio, se specifichi un filtro **Prefisso del nome del documento**=**AWS** (=) e un filtro **Tipi di piattaforma**=**Linux** (=), la ricerca restituirà tutti i documenti con il prefisso "`AWS`" specifici per la piattaforma Linux.

**Nota**  
Le ricerche che utilizzano i filtri fanno distinzione tra maiuscole e minuscole. 

## Aggiunta di documenti ai preferiti
<a name="favorite-documents"></a>

Per trovare più facilmente i documenti SSM usati di frequente, aggiungili ai tuoi preferiti. Puoi aggiungere ai preferiti fino a 20 documenti per tipo di documento, per Account AWS e Regione AWS. Puoi scegliere, modificare e visualizzare i tuoi preferiti dalla Console di gestione AWS Documenti. Le procedure seguenti descrivono come scegliere, modificare e visualizzare i preferiti.

**Aggiunta di un documento SSM ai preferiti**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel pannello di navigazione, scegli **Documenti**.

1. Seleziona l'icona a forma di stella accanto al nome del documento che desideri aggiungere ai preferiti.

**Rimozione di un documento SSM dai preferiti**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel pannello di navigazione, scegli **Documenti**.

1. Deseleziona l'icona a forma di stella accanto al nome del documento che desideri rimuovere dai preferiti.

**Per visualizzare i preferiti dai documenti Console di gestione AWS**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Nel pannello di navigazione, scegli **Documenti**.

1. Seleziona la scheda **Preferiti**.

# Risoluzione dei problemi di gestione dei parametri
<a name="parameter-troubleshooting"></a>

## Problemi comuni di gestione dei parametri
<a name="common-parameter-issues"></a>

**Variabili di ambiente non disponibili durante l'esecuzione**  
**Problema:** i comandi fanno errore, perché le variabili di ambiente (`SSM_parameter-name`) non vengono trovate.  
**Possibili cause:**  
+ La versione dell'SSM Agent non supporta l'interpolazione delle variabili di ambiente
+ `interpolationType` non è impostato su `ENV_VAR`
+ Il nome del parametro non corrisponde a quello della variabile di ambiente previsto
**Soluzione:**:  
+ Verifica che la versione dell'SSM Agent sia 3.3.2746.0 o successiva
+ Aggiungi la logica di fallback per le versioni precedenti dell'agente:

  ```
  if [ -z "${SSM_parameterName+x}" ]; then
      export SSM_parameterName="{{parameterName}}"
  fi
  ```

**Valori di parametri contenenti caratteri speciali**  
**Problema:** i comandi fanno errore, quando i valori dei parametri contengono spazi, virgolette o altri caratteri speciali.  
**Soluzione:**:  
+ Usa le virgolette corrette, quando fai riferimento alle variabili di ambiente:

  ```
  # Correct
  echo "$SSM_parameter-name"
  
  # Incorrect
  echo $SSM_parameter-name
  ```
+ Aggiungi la convalida dell'input utilizzando `allowedPattern` per limitare i caratteri speciali

**Comportamento incoerente tra le piattaforme**  
**Problema:** la gestione dei parametri funziona in modo diverso su Linux e sui sistemi Windows Server.  
**Soluzione:**:  
+ Utilizza la sintassi delle variabili di ambiente specifica della piattaforma:

  ```
  # PowerShell
  $env:SSM_parameter-name
  
  # Bash
  $SSM_parameter-name
  ```
+ Utilizza i controlli delle precondizioni specifici della piattaforma nel tuo documento

**I valori dei parametri non sono stati correttamente esposti a escape**  
**Problema:** vulnerabilità di iniezione di comandi nonostante l'utilizzo dell'interpolazione delle variabili di ambiente.  
**Soluzione:**:  
+ Usa sempre l'escape corretto, quando includi i valori dei parametri nei comandi:

  ```
  # Correct
  mysql_command="mysql -u \"$SSM_username\" -p\"$SSM_password\""
  
  # Incorrect
  mysql_command="mysql -u $SSM_username -p$SSM_password"
  ```

## Consigli per la convalida dei parametri
<a name="parameter-validation"></a>

Usa queste tecniche per convalidare la gestione dei parametri:

1. Testa la disponibilità delle variabili di ambiente:

   ```
   #!/bin/bash
   # Print all SSM_ environment variables
   env | grep ^SSM_
   
   # Test specific parameter
   if [ -n "$SSM_parameter" ]; then
       echo "Parameter is available"
   else
       echo "Parameter is not available"
   fi
   ```

1. Verifica i modelli dei parametri:

   ```
   parameters:
     myParameter:
       type: String
       allowedPattern: "^[a-zA-Z0-9_-]+$"
       description: "Test this pattern with sample inputs"
   ```

1. Includi la gestione degli errori:

   ```
   if [[ ! "$SSM_parameter" =~ ^[a-zA-Z0-9_-]+$ ]]; then
       echo "Parameter validation failed"
       exit 1
   fi
   ```