

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

# 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 copia il contenuto da un documento esistente in un nuovo documento che è possibile modificare. Il contenuto del documento non deve superare i 64 KB, incluso il contenuto specificato per i parametri di input in fase di esecuzione. Per i nuovi `Command` o `Policy` i documenti, consigliamo la versione dello schema 2.2 o successiva. Questa versione supporta la modifica dei documenti, il controllo automatico delle versioni, 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 utilizzano linguaggi interpretati come Python, Ruby o Node.js, si fa 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à del servizio a cui accede Systems Manager 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 i 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. Aprire 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 Account AWS in un unico documento Regione AWS per ridurre la manutenzione dei documenti SSM e garantire la 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. StateManagerBootstrap.yml 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).