

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

# AWS Systems Manager strumenti di gestione delle modifiche
<a name="systems-manager-actions-and-change"></a>

AWS Systems Manager fornisce i seguenti strumenti per apportare modifiche alle AWS risorse.

**Topics**
+ [Automazione di AWS Systems Manager](systems-manager-automation.md)
+ [AWS Systems Manager Change Calendar](systems-manager-change-calendar.md)
+ [AWS Systems Manager Change Manager](change-manager.md)
+ [Documenti di AWS Systems Manager](documents.md)
+ [AWS Systems Manager Maintenance Windows](maintenance-windows.md)
+ [AWS Systems Manager Quick Setup](systems-manager-quick-setup.md)

# Automazione di AWS Systems Manager
<a name="systems-manager-automation"></a>

L'automazione, uno strumento in AWS Systems Manager, semplifica le attività comuni di manutenzione, distribuzione e riparazione per Servizi AWS Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS), Amazon Redshift, Amazon Simple Storage Service (Amazon S3) e molti altri. Per cominciare a utilizzare Automazione, apri la [console di Systems Manager](https://console.aws.amazon.com/systems-manager/automation). Nel riquadro di navigazione, scegli **Automazione**. 

Automazione ti consente di creare soluzioni automatizzate per implementare, configurare e gestire le risorse AWS su larga scala. Con Automazione hai un controllo granulare sulla simultaneità delle tue automazioni. Ciò significa che puoi specificare quante risorse utilizzare contemporaneamente e quanti errori possono verificarsi prima che un'automazione venga arrestata. 

Per aiutarti a iniziare a usare Automation, sviluppa e mantiene diversi runbook predefiniti. AWS A seconda del caso d'uso, puoi utilizzare i runbook predefiniti che eseguono varie attività o creare runbook personalizzati in base alle tue specifiche esigenze. Per monitorare l'avanzamento e lo stato delle automazioni, puoi utilizzare la console di Automazione Systems Manager o lo strumento a riga di comando che preferisci. L'automazione si integra anche con Amazon EventBridge per aiutarti a creare un'architettura basata sugli eventi su larga scala.

**Nota**  
Per i clienti che non hanno mai utilizzato Systems Manager Automation a partire dal 14 agosto 2025, il livello gratuito di questa funzione non è disponibile. Per i clienti che già utilizzano la funzione Automazione, il livello di servizio gratuito termina il 31 dicembre 2025. Per informazioni sugli attuali costi di servizio, consulta [Prezzi di AWS Systems Manager](https://aws.amazon.com/systems-manager/pricing/).

## Quali sono i vantaggi di Automazione per la mia azienda?
<a name="automation-benefits"></a>

Automazione offre i seguenti vantaggi:
+ **Supporto per lo scripting nei contenuti del runbook**

  Usando l'`aws:executeScript`azione, puoi eseguire Python e PowerShell funzioni personalizzate direttamente dai tuoi runbook. In questo modo avrai una maggiore flessibilità nella creazione di runbook personalizzati, in quanto potrai completare varie attività non supportate da altre operazioni di Automazione. Avrai anche un maggiore controllo sulla logica del runbook. Per un esempio di come questa azione può essere utilizzata e di come può contribuire a migliorare una soluzione automatizzata esistente, consulta [Creazione di runbook del servizio di automazione](automation-authoring-runbooks.md).
+  **Esegui automazioni su più piattaforme Account AWS e Regioni AWS da una posizione centralizzata** 

  Gli amministratori possono eseguire automazioni su risorse di diversi account e regioni dalla console di Systems Manager.
+  **Miglioramento della sicurezza delle operazioni** 

  Gli amministratori dispongono di una posizione centralizzata da cui concedere e revocare l'accesso ai runbook. Utilizzando solo le policy AWS Identity and Access Management (IAM), puoi controllare quali singoli utenti o gruppi dell'organizzazione possono utilizzare l'automazione e a quali runbook possono accedere.
+  **Automazione delle attività IT comuni** 

  L'automazione delle attività comuni può contribuire a migliorare l'efficienza operativa, a far rispettare gli standard organizzativi e a ridurre gli errori dell'operatore. Ad esempio, puoi utilizzare il `AWS-UpdateCloudFormationStackWithApproval` runbook per aggiornare le risorse che sono state distribuite utilizzando un modello. AWS CloudFormation L'aggiornamento applica un nuovo modello. È possibile configurare il servizio di automazione in modo che venga richiesta l'approvazione da parte di uno o più utenti prima che l'aggiornamento abbia inizio.
+  **Esecuzione sicura di attività che creano interruzioni in blocco** 

  Automazione include funzionalità, come i controlli di velocità, che consentono di monitorare l'implementazione di un'automazione a livello di parco istanze, specificando un valore di simultaneità e una soglia di errore. Per ulteriori informazioni sull'utilizzo dei controlli di velocità, consulta [Esegui operazioni automatizzate su larga scala](running-automations-scale.md).
+ **Semplificazione di attività complesse**

  Automation fornisce runbook predefiniti che semplificano attività complesse e dispendiose in termini di tempo, come la creazione di Amazon Machine Images in versione finale (AMIs). Ad esempio, puoi utilizzare i runbook di `AWS-UpdateLinuxAmi` e `AWS-UpdateWindowsAmi` per creare AMIs in versione finale da una fonte di AMI. Utilizzando questi runbook, puoi eseguire script personalizzati prima e dopo l'applicazione degli aggiornamenti. Puoi inoltre includere o escludere l'installazione di pacchetti software specifici. Per esempi di come utilizzare questi runbook, consulta [Tutorial](automation-tutorials.md).
+ **Definizione dei vincoli per gli input**

  Puoi definire vincoli nei runbook personalizzati per limitare i valori che Automation accetterà per un particolare parametro di input. Ad esempio, `allowedPattern` accetterà solo valori per un parametro di input che corrispondono all'espressione regolare definita. Se specifichi `allowedValues` per un parametro di input, vengono accettati solo i valori specificati nel runbook.
+  **Emissione delle azioni di automazione dei log su Amazon CloudWatch Logs** 

  Per soddisfare i requisiti operativi o di sicurezza della tua organizzazione, potresti dover fornire un registro degli script eseguiti durante un runbook. Con CloudWatch Logs, puoi monitorare, archiviare e accedere a file di registro di vari tipi. Servizi AWSÈ possibile inviare l'output dell'`aws:executeScript`azione a un gruppo di log di CloudWatch Logs per scopi di debug e risoluzione dei problemi. I dati di registro possono essere inviati al gruppo di log con o senza AWS KMS crittografia utilizzando la chiave KMS. Per ulteriori informazioni, consulta [Registrazione dell'output dell'azione di automazione con CloudWatch Logs](automation-action-logging.md).
+  ** EventBridge Integrazione con Amazon** 

  L'automazione è supportata come tipo di *destinazione* nelle EventBridge regole di Amazon. Ciò significa che puoi attivare i runbook utilizzando gli eventi. Per ulteriori informazioni, consultare [Monitoraggio degli eventi di Systems Manager con Amazon EventBridge](monitoring-eventbridge-events.md) e [Riferimento: modelli e tipi di EventBridge eventi Amazon per Systems Manager](reference-eventbridge-events.md).
+ **Condivisione delle best practice organizzative**

  Puoi definire le best practice per la gestione delle risorse, le attività operative e altro ancora nei runbook condivisi tra account e regioni.

## Chi deve utilizzare Automation?
<a name="automation-who"></a>
+ Qualsiasi AWS cliente che desideri 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.

## Cos'è un'automazione?
<a name="what-is-an-automation"></a>

Un'*automazione* è costituita da tutte le attività definite in un runbook ed eseguite dal servizio Automation. Automation utilizza i seguenti componenti per eseguire le automazioni.


****  

| Concetto | Informazioni | 
| --- | --- | 
|  runbook di Automazione  |  Un runbook di Systems Manager Automation definisce l'automazione (le azioni che Systems Manager esegue sui nodi e sulle AWS risorse gestiti). Il servizio di Automazione include numerosi runbook predefiniti che puoi utilizzare per eseguire processi comuni, ad esempio il riavvio di una o più istanze di Amazon EC2 o la creazione di un'Amazon Machine Image (AMI). Puoi anche creare runbook personalizzati. I runbook utilizzano il formato YAML o JSON e includono le fasi e i parametri specificati. Le fasi vengono eseguite in ordine sequenziale. Per ulteriori informazioni, consulta [Creazione di runbook personalizzati](automation-documents.md). I runbook sono documenti di Systems Manager di tipo `Automation`, a differenza dei documenti di `Command`, `Policy`, `Session`. I runbook supportano la versione dello schema 0.3. I documenti di comando utilizzano la versione dello schema 1.2, 2.0 o 2.2. I documenti di Policy utilizzano la versione dello schema 2.0 o successiva.  | 
|  Operazione di automazione  |  L'automazione definita in un runbook include una o più fasi. Ogni passaggio è associato a un'operazione specifica. L'operazione determina gli input, il comportamento e l'output della fase. Le fasi vengono definite nella sezione `mainSteps` del runbook. L'automazione supporta 20 tipi di operazioni distinte. Per ulteriori informazioni, consulta la sezione [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md).  | 
|  Quota di automazione  |  Ciascuno Account AWS può eseguire 100 automazioni contemporaneamente. Ciò include le automazioni figlio (automazioni avviate da un'altra automazione) e le automazioni di controllo della velocità. Se provi a eseguire un numero maggiore di automazioni, Systems Manager aggiungerà le altre automazioni a una coda e visualizzerà lo stato In attesa. Questa quota può essere regolata utilizzando la simultaneità adattiva. Per ulteriori informazioni, consulta la pagina [Consentire ad Automation di adattarsi alle esigenze di simultaneità](adaptive-concurrency.md). Per ulteriori informazioni sull'esecuzione delle automazioni, consulta la pagina [Esegui un'operazione automatizzata basata su Systems Manager Automation](running-simple-automations.md).  | 
|  Quota della coda di automazioni  |  Se provi a eseguire più automazioni rispetto al limite di automazioni simultanee, le automazioni successive saranno aggiunte a una coda. Ogni Account AWS può mettere in coda 5.000 automazioni. Quando un'automazione è completa (o raggiunge la fase terminale), viene avviata la prima esecuzione presente nella coda.  | 
|  Quota di automazione del controllo della velocità  |  Ciascuno Account AWS può eseguire 25 automazioni di controllo della velocità contemporaneamente. Se si prova a eseguire più automazioni di controllo della velocità rispetto al limite simultaneo di automazione del controllo della velocità, Systems Manager aggiunge le successive automazioni di controllo della velocità a una coda e visualizza lo stato come Pending. Per ulteriori informazioni sull'esecuzione di automazioni per il controllo della velocità, consulta [Esegui operazioni automatizzate su larga scala](running-automations-scale.md).  | 
|  Quota di coda di automazione del controllo della velocità  |  Se si prova a eseguire più automazioni rispetto al limite simultaneo di automazione del controllo della velocità, le automazioni successive vengono aggiunte a una coda. Ciascuno Account AWS può mettere in coda 1.000 automazioni di controllo delle tariffe. Quando un'automazione è completa (o raggiunge la fase terminale), viene avviata la prima automazione presente nella coda.  | 

**Topics**
+ [Quali sono i vantaggi di Automazione per la mia azienda?](#automation-benefits)
+ [Chi deve utilizzare Automation?](#automation-who)
+ [Cos'è un'automazione?](#what-is-an-automation)
+ [Configurazione del servizio di automazione](automation-setup.md)
+ [Esegui un'operazione automatizzata basata su Systems Manager Automation](running-simple-automations.md)
+ [Ripetizione delle esecuzioni di automazione](automation-rerun-executions.md)
+ [Esegui un'automazione che richiede approvazioni](running-automations-require-approvals.md)
+ [Esegui operazioni automatizzate su larga scala](running-automations-scale.md)
+ [Esecuzione di automazioni in più Regioni AWS account](running-automations-multiple-accounts-regions.md)
+ [Esegui automazioni basate su eventi EventBridge](running-automations-event-bridge.md)
+ [Esegui un'automazione passo dopo passo](automation-working-executing-manually.md)
+ [Pianificazione di automazioni con associazioni State Manager](scheduling-automations-state-manager-associations.md)
+ [Pianificazione delle automazioni con finestre di manutenzione](scheduling-automations-maintenance-windows.md)
+ [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md)
+ [Creazione di runbook personalizzati](automation-documents.md)
+ [Riferimento al runbook dell’Automazione Systems Manager](automation-documents-reference.md)
+ [Tutorial](automation-tutorials.md)
+ [Scopri gli stati restituiti da Systems Manager Automation](automation-statuses.md)
+ [Risoluzione dei problemi dl servizio di automazione di Systems Manager](automation-troubleshooting.md)

# Configurazione del servizio di automazione
<a name="automation-setup"></a>

Per configurare Automation, uno strumento in AWS Systems Manager, è necessario verificare l'accesso degli utenti al servizio di automazione e configurare i ruoli in base alla situazione in modo che il servizio possa eseguire azioni sulle risorse. Ti consigliamo inoltre di accedere alla modalità di simultaneità adattiva nelle preferenze di Automation. La simultaneità adattiva dimensiona automaticamente la quota di automazione per soddisfare le tue esigenze. Per ulteriori informazioni, consulta [Consentire ad Automation di adattarsi alle esigenze di simultaneità](adaptive-concurrency.md).

Per garantire un accesso corretto all' AWS Systems Manager automazione, consulta i seguenti requisiti relativi ai ruoli utente e di servizio.

## Verifica dell'accesso utente per runbook
<a name="automation-setup-user-access"></a>

Verifica di disporre dell'autorizzazione per utilizzare i runbook. Se all'utente, al gruppo o al ruolo sono assegnate le autorizzazioni di amministratore, potrai accedere all'Automazione di Systems Manager. Se non disponi delle autorizzazioni di amministratore, un amministratore dovrà concedere le autorizzazioni necessarie assegnando la policy gestita `AmazonSSMFullAccess` oppure una policy che conceda autorizzazioni analoghe all'utente, al gruppo o al ruolo.

**Importante**  
La policy IAM di `AmazonSSMFullAccess` concede autorizzazioni per le operazioni di Systems Manager. Tuttavia, alcuni runbook richiedono le autorizzazioni ad altri servizi, ad esempio il runbook di `AWS-ReleaseElasticIP`, che richiede autorizzazioni IAM per `ec2:ReleaseAddress`. Pertanto, è necessario rivedere le operazioni eseguite in un runbook per garantire che all'utente, al gruppo o al ruolo vengano assegnate le autorizzazioni necessarie per eseguire le operazioni incluse nel runbook.

## Configurazione di un accesso al ruolo di servizio (ruolo presunto) per le automazioni
<a name="automation-setup-configure-role"></a>

Le automazioni possono essere avviate nel contesto di un ruolo di servizio (o *ruolo presunto*). Ciò permette al servizio di eseguire operazioni per conto tuo. Se non specifichi un ruolo presunto, il servizio di automazione utilizza il contesto dell'utente che ha richiamato l'automazione.

Tuttavia, i seguenti scenari richiedono di specificare un ruolo di servizio di Automazione:
+ Quando si desidera limitare le autorizzazioni di un utente per una risorsa, ma che permette all'utente di eseguire un' automazione che richiede autorizzazioni elevate. In questo scenario è possibile creare un ruolo di servizio con autorizzazioni elevate e permettere all'utente di eseguire l'automazione.
+ Quando si crea un'associazione di Systems Manager State Manager che esegue un runbook.
+ Quando disponi di operazioni che prevedi vengano eseguite per più di 12 ore.
+ Quando esegui un runbook non di proprietà di Amazon che utilizza l'`aws:executeScript`azione per richiamare un'operazione AWS API o agire su una AWS risorsa. Per informazioni, consulta [Autorizzazioni per l'utilizzo di runbook](automation-document-script-considerations.md#script-permissions).

Se devi creare un ruolo di servizio per il servizio di automazione, puoi utilizzare uno dei seguenti metodi.

**Topics**
+ [Verifica dell'accesso utente per runbook](#automation-setup-user-access)
+ [Configurazione di un accesso al ruolo di servizio (ruolo presunto) per le automazioni](#automation-setup-configure-role)
+ [Creare ruoli di servizio per l'automazione utilizzando CloudFormation](automation-setup-cloudformation.md)
+ [Crea ruoli di servizio per l'automazione tramite la console](automation-setup-iam.md)
+ [Esempi di impostazione di politiche basate sull'identità](automation-setup-identity-based-policies.md)
+ [Consentire ad Automation di adattarsi alle esigenze di simultaneità](adaptive-concurrency.md)
+ [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md)
+ [Implementazione dei controlli delle modifiche per Automazione](automation-change-calendar-integration.md)

# Creare ruoli di servizio per l'automazione utilizzando CloudFormation
<a name="automation-setup-cloudformation"></a>

È possibile creare un ruolo di servizio per Automation, uno strumento in AWS Systems Manager, a partire da un AWS CloudFormation modello. Dopo aver creato il ruolo di servizio, puoi specificare il ruolo di servizio nei runbook utilizzando il parametro `AutomationAssumeRole`.

## Crea il ruolo di servizio utilizzando CloudFormation
<a name="create-iam-service-role"></a>

Utilizzare la procedura seguente per creare il ruolo richiesto AWS Identity and Access Management (IAM) per Systems Manager Automation utilizzando CloudFormation.

**Per creare il ruolo IAM richiesto**

1. scarica e decomprimi il file [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationServiceRole.zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationServiceRole.zip). Questo file include il file `AWS-SystemsManager-AutomationServiceRole.yaml` CloudFormation modello.

1. Apri la CloudFormation console in [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Scegliere **Create Stack** (Crea stack).

1. Nella sezione **Specify template**(Specifica il modello) scegliere **Upload a template file** (Carica un file modello).

1. Scegli **Sfoglia**, quindi scegli il `AWS-SystemsManager-AutomationServiceRole.yaml` CloudFormation file modello.

1. Scegliere **Next** (Successivo).

1. Nella pagina **Specify stack details** (Specifica dettagli dello stack), inserire un nome nel campo **Stack name**(Nome stack). 

1. Nella pagina **Configure stack options (Configura opzioni stack)** non è necessario effettuare alcuna selezione. Scegli **Next (Successivo)**.

1. Nella pagina **Revisione**, scorri verso il basso e scegli l'opzione **Riconosco che CloudFormation potrebbe creare risorse IAM**.

1. Scegli **Create** (Crea).

CloudFormation mostra lo stato **CREATE\$1IN\$1PROGRESS** per circa tre minuti. Lo stato diventa **CREATE\$1COMPLETE** al termine della creazione dello stack e i ruoli sono pronti per essere utilizzati.

**Importante**  
Se si esegue un flusso di lavoro di automazione che chiama altri servizi utilizzando un ruolo di servizio (IAM) AWS Identity and Access Management , tenere presente che tale ruolo di servizio deve essere configurato con l'autorizzazione per la chiamata di tali servizi. Questo requisito si applica a tutti i runbook di AWS automazione (`AWS-*`runbook) come, e `AWS-RestartEC2Instance` runbook `AWS-ConfigureS3BucketLogging``AWS-CreateDynamoDBBackup`, solo per citarne alcuni. Questo requisito si applica anche a tutti i runbook di automazione personalizzati creati dall'utente che richiamano altri utenti Servizi AWS utilizzando azioni che richiamano altri servizi. Ad esempio, se utilizzi le operazioni `aws:executeAwsApi`, `aws:createStack` o `aws:copyImage`, devi configurare il ruolo di servizio con l'autorizzazione per richiamare tali servizi. Puoi concedere le autorizzazioni ad altri Servizi AWS aggiungendo una policy inline IAM al ruolo. Per ulteriori informazioni, consulta [(Facoltativo) Aggiungi una policy in linea di automazione o una policy gestita dal cliente per richiamarne altre Servizi AWS](automation-setup-iam.md#add-inline-policy).

## Copia delle informazioni sui ruoli per l'automazione
<a name="copy-iam-role-info"></a>

Utilizzare la procedura seguente per copiare le informazioni sul ruolo del servizio di automazione dalla CloudFormation console. È necessario specificare questi ruoli quando si utilizza un runbook.

**Nota**  
Non è necessario copiare le informazioni del ruolo per questa procedura se esegui i runbook di `AWS-UpdateLinuxAmi` o `AWS-UpdateWindowsAmi`. Questi runbook includono già i ruoli richiesti specificati come valori di default. I ruoli specificati in questi runbook utilizzano le policy IAM gestite. 

**Per copiare i nomi dei ruoli**

1. Apri la CloudFormation console in [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Selezionare lo **Stack name** (Nome dello stack) di automazione creato nella procedura precedente.

1. Scegliere la scheda **Resources** (Risorse).

1. Scegli il link **Physical ID** per. **AutomationServiceRole** La console di IAM visualizza il riepilogo del ruolo di servizio dell'automazione.

1. Copiare l'Copia l'Amazon Resource Name (ARN) accanto a **Role ARN (ARN ruolo)**. L'ARN è simile al seguente: `arn:aws:iam::12345678:role/AutomationServiceRole`

1. Incollare l'ARN in un file di testo da usare in un secondo momento.

La configurazione del ruolo di servizio per il servizio di automazione è stata completata. Ora puoi utilizzare l'Amazon Resource Name (ARN) del ruolo di servizio dell'automazione nei runbook.

# Crea ruoli di servizio per l'automazione tramite la console
<a name="automation-setup-iam"></a>

Se devi creare un ruolo di servizio per Automation, uno strumento in AWS Systems Manager, completa le seguenti attività. Per ulteriori informazioni su quando un ruolo di servizio è obbligatorio per l'automazione, consulta [Configurazione del servizio di automazione](automation-setup.md).

**Topics**
+ [Processo 1: creazione di un ruolo di servizio per il servizio di automazione](#create-service-role)
+ [Attività 2: allega la PassRole policy iam: al tuo ruolo di automazione](#attach-passrole-policy)

## Processo 1: creazione di un ruolo di servizio per il servizio di automazione
<a name="create-service-role"></a>

Utilizza la procedura seguente per creare un ruolo di servizio (o *ruolo presunto*) per il servizio di automazione di Systems Manager.

**Nota**  
Puoi anche utilizzare questo ruolo nei runbook, ad esempio il runbook `AWS-CreateManagedLinuxInstance`. L'utilizzo di questo ruolo, o dell'Amazon Resource Name (ARN) di un ruolo AWS Identity and Access Management (IAM), nei runbook consente all'automazione di eseguire azioni nel tuo ambiente, come avviare nuove istanze ed eseguire azioni per tuo conto.

**Per creare un ruolo IAM e consentire al servizio di automazione di usarlo**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegliere **Roles** (Ruoli) e quindi **Create role** (Crea ruolo).

1. In **Select type of trusted entity** (Seleziona tipo di entità attendibile), scegliere **AWS service** (Servizio).

1. Nella sezione **Choose a use case** (Scegli un caso d'uso), scegliere **Systems Manager**, e quindi scegliere **Next: Permissions** (Successivo: autorizzazioni).

1. Nella pagina **Politica di autorizzazione allegata**, cerca la policy di **Amazon SSMAutomation Role**, selezionala, quindi scegli **Avanti: revisione**. 

1. Nella pagina **Review (Rivedi)** inserire un nome nella casella **Role name** (Nome ruolo), quindi inserire una descrizione.

1. Scegliere **Create role** (Crea ruolo). Il sistema visualizza di nuovo la pagina **Roles** (Ruoli).

1. Nella pagina **Ruoli**, scegli il ruolo appena creato per aprire la pagina **Riepilogo**. Annotare i valori per **Role Name** (Nome ruolo) e **Role ARN** (ARN ruolo). Specificherai il ruolo ARN quando alleghi la PassRole policy **iam:** al tuo account IAM nella procedura successiva. È inoltre possibile specificare il nome di ruolo e l'ARN nei runbook.

**Nota**  
La `AmazonSSMAutomationRole` policy assegna l'autorizzazione al ruolo di automazione a un sottoinsieme di AWS Lambda funzioni all'interno del tuo account. Queste funzioni iniziano con "Automation". Se si prevede di utilizzare il servizio di automazione con funzioni Lambda, l'ARN Lambda deve utilizzare il seguente formato:  
`"arn:aws:lambda:*:*:function:Automation*"`  
**Se disponi di funzioni Lambda esistenti che ARNs non utilizzano questo formato, devi anche allegare una policy Lambda aggiuntiva al tuo ruolo di automazione, come la politica Role. AWSLambda** La policy o il ruolo aggiuntivo deve garantire un accesso più ampio alle funzioni Lambda all'interno dell' Account AWS.

Dopo aver creato il tuo ruolo di servizio, ti consigliamo di modificare la policy di attendibilità per evitare il problema del "confused deputy" tra servizi. Il *problema confused deputy* è un problema di sicurezza in cui un’entità che non dispone dell’autorizzazione per eseguire un’azione può costringere un’entità maggiormente privilegiata a eseguire l’azione. Inoltre AWS, l'impersonificazione tra servizi può portare al confuso problema del vice. La rappresentazione tra servizi può verificarsi quando un servizio (il *servizio chiamante*) effettua una chiamata a un altro servizio (il *servizio chiamato*). Il servizio chiamante può essere manipolato per utilizzare le proprie autorizzazioni e agire sulle risorse di un altro cliente, a cui normalmente non avrebbe accesso. Per evitare che ciò accada, AWS mette a disposizione strumenti che consentono di proteggere i dati relativi a tutti i servizi con responsabili del servizio a cui è stato concesso l'accesso alle risorse del vostro account. 

Ti consigliamo di utilizzare le chiavi di contesto delle condizioni globali [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) nelle policy delle risorse per limitare le autorizzazioni con cui Automation fornisce un altro servizio alla risorsa. Se il valore `aws:SourceArn` non contiene l'ID account, ad esempio un ARN del bucket Amazon S3, devi utilizzare entrambe le chiavi di contesto delle condizioni globali per limitare le autorizzazioni. Se si utilizzano entrambe le chiavi di contesto delle condizioni globali e il valore `aws:SourceArn` contiene l'ID account, il valore `aws:SourceAccount` e l'account nel valore `aws:SourceArn` deve utilizzare lo stesso ID account nella stessa dichiarazione di policy. Utilizzare `aws:SourceArn` se si desidera consentire l'associazione di una sola risorsa all'accesso tra servizi. Utilizzare `aws:SourceAccount` se si desidera consentire l’associazione di qualsiasi risorsa in tale account all’uso tra servizi. Il valore di `aws:SourceArn` deve essere l'ARN per l'esecuzione delle automazioni. Se non si conosce l'ARN completo della risorsa o se si sta specificando più risorse, utilizzare la chiave di condizione del contesto globale `aws:SourceArn` con caratteri speciali (`*`) per le parti sconosciute dell'ARN. Ad esempio, `arn:aws:ssm:*:123456789012:automation-execution/*`. 

L'esempio seguente mostra il modo in cui puoi utilizzare le chiavi di contesto delle condizioni globali `aws:SourceArn` e `aws:SourceAccount` per l'automazione per prevenire il problema confused deputy.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "ssm.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:ssm:*:123456789012:automation-execution/*"
        }
      }
    }
  ]
}
```

------

**Per modificare una policy di attendibilità del ruolo**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, seleziona **Ruoli**.

1. Nell'elenco dei ruoli dell'account, scegliere il nome del ruolo di servizio di Automation.

1. Selezionare la scheda **Trust relationships (Relazioni di trust)** e scegliere **Edit trust relationship (Modifica relazione di trust)**.

1. Modificare la policy di attendibilità utilizzando le chiavi di contesto delle condizioni globali `aws:SourceArn` e `aws:SourceAccount` per fare in modo che Automation prevenga il problema del "confused deputy".

1. Per salvare le modifiche, scegliere **Update Trust Policy** (Aggiorna policy di attendibilità).

### (Facoltativo) Aggiungi una policy in linea di automazione o una policy gestita dal cliente per richiamarne altre Servizi AWS
<a name="add-inline-policy"></a>

Se esegui un'automazione che richiama altri Servizi AWS utilizzando un ruolo di servizio IAM, il ruolo di servizio deve essere configurato con l'autorizzazione a richiamare tali servizi. Questo requisito si applica a tutti i runbook di AWS automazione (`AWS-*`runbook) come,, e `AWS-RestartEC2Instance` runbook `AWS-ConfigureS3BucketLogging``AWS-CreateDynamoDBBackup`, solo per citarne alcuni. Questo requisito vale anche per i runbook personalizzati che utilizzano altri Servizi AWS tramite l'utilizzo di operazioni che chiamano altri servizi. Ad esempio, se utilizzi le operazioni `aws:executeAwsApi`. `aws:CreateStack` o `aws:copyImage`, per citarne alcune, devi configurare il ruolo di servizio con l'autorizzazione per richiamare questi servizi. Puoi concedere autorizzazioni ad altri Servizi AWS aggiungendo al ruolo una policy in linea IAM o una policy gestita dal cliente. 

**Per incorporare una policy inline per un ruolo di servizio (console IAM)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel pannello di navigazione, scegliere **Roles (Ruoli)**.

1. Nell'elenco, scegliere il nome del ruolo da modificare.

1. Scegliere la scheda **Permissions (Autorizzazioni)**.

1. Nell'elenco a discesa **Aggiungi autorizzazioni**, scegli **Collega policy** o **Crea policy inline**.

1. Se scegli **Collega policy**, seleziona la casella di controllo accanto alla policy che desideri aggiungere e scegli **Aggiungi autorizzazioni**.

1. Scegli **Crea policy inline**, quindi scegli la scheda **JSON**.

1. Inserisci un documento di policy JSON per il file Servizi AWS che desideri richiamare. Di seguito sono riportati due documenti della policy JSON di esempio.

   **Amazon S3 PutObject ed esempio GetObject**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
           }
       ]
   }
   ```

------

   **Amazon EC2 ed esempio CreateSnapshot DescribeSnapShots**

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":"ec2:CreateSnapshot",
            "Resource":"*"
         },
         {
            "Effect":"Allow",
            "Action":"ec2:DescribeSnapshots",
            "Resource":"*"
         }
      ]
   }
   ```

------

   Per informazioni sul linguaggio della policy IAM consulta [Riferimento alle policy JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) nella *Guida per l'utente IAM*.

1. Al termine, seleziona **Review policy (Rivedi policy)**. In [Policy Validator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) (Validatore di policy) vengono segnalati eventuali errori di sintassi.

1. Nella pagina **Review policy** (Rivedi policy), inserire un **Name (Nome)** per la policy che stai creando. Consulta il **Riepilogo** della policy per visualizzare le autorizzazioni concesse dalla policy. Seleziona **Create policy** (Crea policy) per salvare il proprio lavoro.

1. Una volta creata, una policy inline viene automaticamente incorporata nel ruolo.

## Attività 2: allega la PassRole policy iam: al tuo ruolo di automazione
<a name="attach-passrole-policy"></a>

Utilizza la procedura seguente per collegare la policy `iam:PassRole` al ruolo di servizio di Automazione. Ciò consente al servizio di automazione di passare il ruolo ad altri servizi o strumenti di Systems Manager durante l'esecuzione delle automazioni.

**Per allegare la PassRole policy iam: al tuo ruolo di automazione**

1. Nella pagina **Summary (Riepilogo)** per il ruolo creato in precedenza, scegliere la scheda **Permissions (Autorizzazioni)**.

1. Scegliere **Add inline policy** (Aggiungi policy inline).

1. Nella pagina **Create Policy** (Crea policy), scegliere la scheda **Visual editor (Editor visivo)**.

1. Scegliere **Service** (Servizio), quindi **IAM**.

1. Scegliere **Select actions** (Seleziona operazioni).

1. Nella casella di testo **Filtra azioni****PassRole**, digita e scegli l'**PassRole**opzione.

1. Scegliere **Resources** (Risorse). Verifica che l'opzione **Specific** (Specifico) sia selezionata, quindi scegliere **Add ARN** (Aggiungi ARN).

1. Nel campo **Specify ARN for role** (Specifica ARN per il ruolo), incolla l'ARN del ruolo di automazione copiato alla fine del processo 1. Il sistema popola automaticamente i campi **Account** e **Role name with path (Nome ruolo con percorso)**.
**Nota**  
Se desideri che il ruolo di servizio dell'automazione alleghi un ruolo del profilo dell'istanza IAM a un'istanza EC2, è necessario aggiungere l'ARN del ruolo del profilo dell'istanza. Ciò consente al ruolo di servizio di dell'automazione di passare il ruolo del profilo dell'istanza IAM all'istanza EC2 di destinazione.

1. Scegliere **Add** (Aggiungi).

1. Scegliere **Review policy** (Rivedi policy).

1. Nella pagina **Review Policy** (Rivedi policy), inserire un nome, quindi scegliere **Create Policy **(Crea policy).

# Esempi di impostazione di politiche basate sull'identità
<a name="automation-setup-identity-based-policies"></a>

Le sezioni seguenti forniscono esempi di politiche basate sull'identità IAM per AWS Systems Manager il servizio di automazione. *Per ulteriori informazioni su come creare una policy basata sull'identità IAM utilizzando questi esempi di documenti JSON Policy, consulta [Creating IAM policies nella IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor) User Guide.*

**Nota**  
Tutti gli esempi contengono account fittizi. IDs L'ID dell'account non deve essere specificato nell'Amazon Resource Name (ARN) per i documenti pubblici AWS di proprietà.

 **Esempi** 
+  [Esempio 1: consentire a un utente di eseguire un documento di automazione e visualizzare l'esecuzione dell'automazione](#automation-setup-identity-based-policies-example-1) 
+  [Esempio 2: consentire a un utente di eseguire una versione specifica di un documento di automazione](#automation-setup-identity-based-policies-example-2) 
+  [Esempio 3: consentire a un utente di eseguire documenti di automazione con un tag specifico](#automation-setup-identity-based-policies-example-3) 
+  [Esempio 4: consente a un utente di eseguire un documento di automazione quando viene fornito un parametro di tag specifico per l'esecuzione dell'automazione](#automation-setup-identity-based-policies-example-4) 

## Esempio 1: consentire a un utente di eseguire un documento di automazione e visualizzare l'esecuzione dell'automazione
<a name="automation-setup-identity-based-policies-example-1"></a>

La seguente policy IAM di esempio permette a un utente di eseguire queste operazioni:
+ Esegui il documento di automazione specificato nella politica. Il nome del documento è determinato dalla seguente voce:

  ```
  arn:aws:ssm:*:111122223333:document/{{DocumentName}}
  ```
+ Interrompi e invia segnali a un'esecuzione di automazione.
+ Visualizza i dettagli sull'esecuzione dell'automazione dopo che è stata avviata.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "ssm:StartAutomationExecution",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:*:111122223333:document/{{DocumentName}}",
                "arn:aws:ssm:*:111122223333:automation-execution/*"
            ]
        },
        {
            "Action": [
                "ssm:StopAutomationExecution",
                "ssm:GetAutomationExecution",
                "ssm:DescribeAutomationExecutions",
                "ssm:DescribeAutomationStepExecutions",
                "ssm:SendAutomationSignal"
            ],
            "Resource": [
                "arn:aws:ssm:*:111122223333:automation-execution/*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

## Esempio 2: consentire a un utente di eseguire una versione specifica di un documento di automazione
<a name="automation-setup-identity-based-policies-example-2"></a>

Il seguente esempio di policy IAM consente a un utente di eseguire una versione specifica di un documento di automazione:
+ Il nome del documento di automazione è determinato dalla seguente voce.

  ```
  arn:aws:ssm:*:111122223333:document/{{DocumentName}}
  ```
+ La versione del documento di automazione è determinata dalla seguente voce.

  ```
  "ssm:DocumentVersion": "5"
  ```

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "ssm:StartAutomationExecution",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:*:111122223333:document/{{DocumentName}}"
            ],
            "Condition": {
                "ForAnyValue:StringEquals": {
                   "ssm:DocumentVersion": ["5"]
                }
            }
        },
        {
            "Action": [
                "ssm:StartAutomationExecution"
            ],
            "Resource": [
                "arn:aws:ssm:*:111122223333:automation-execution/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "ssm:StopAutomationExecution",
                "ssm:GetAutomationExecution",
                "ssm:DescribeAutomationExecutions",
                "ssm:DescribeAutomationStepExecutions",
                "ssm:SendAutomationSignal"
            ],
            "Resource": [
                "arn:aws:ssm:*:111122223333:automation-execution/*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

## Esempio 3: consentire a un utente di eseguire documenti di automazione con un tag specifico
<a name="automation-setup-identity-based-policies-example-3"></a>

Il seguente esempio di policy IAM consente a un utente di eseguire qualsiasi documento di automazione che abbia un tag specifico:
+ Il nome del documento di automazione è determinato dalla seguente voce.

  ```
  arn:aws:ssm:*:111122223333:document/{{DocumentName}}
  ```
+ Il tag del documento di automazione è determinato dalla seguente voce.

  ```
  "ssm:DocumentVersion": "5"
  ```

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "ssm:StartAutomationExecution",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:*:111122223333:document/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/stage": "production"
                }
            }
        },
        {
            "Action": [
                "ssm:StartAutomationExecution"
            ],
            "Resource": [
                "arn:aws:ssm:*:111122223333:automation-execution/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "ssm:StopAutomationExecution",
                "ssm:GetAutomationExecution",
                "ssm:DescribeAutomationExecutions",
                "ssm:DescribeAutomationStepExecutions",
                "ssm:SendAutomationSignal"
            ],
            "Resource": [
                "arn:aws:ssm:*:111122223333:automation-execution/*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

## Esempio 4: consente a un utente di eseguire un documento di automazione quando viene fornito un parametro di tag specifico per l'esecuzione dell'automazione
<a name="automation-setup-identity-based-policies-example-4"></a>

L'esempio seguente di policy IAM concede le autorizzazioni a un utente per eseguire documenti di automazione quando viene fornito un parametro di tag specifico per l'esecuzione dell'automazione:
+ Esegui il documento di automazione specificato nella policy. Il nome del documento è determinato dalla seguente voce:

  ```
  arn:aws:ssm:*:111122223333:document/{{DocumentName}}
  ```
+ È necessario fornire un parametro di tag specifico per l'esecuzione dell'automazione. Il parametro tag per la risorsa di esecuzione dell'automazione è determinato dalla voce seguente.

  ```
  "aws:ResourceTag/stage": "production"
  ```
+ Interrompi e invia segnali alle esecuzioni di automazione che hanno il tag specificato.
+ Visualizza i dettagli sulle esecuzioni di automazione che hanno il tag specificato.
+ Aggiungi il tag specificato alle risorse SSM.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "ssm:StartAutomationExecution",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:*:111122223333:document/{{DocumentName}}"
            ]
        },
        {
            "Action": [
                "ssm:StartAutomationExecution",
                "ssm:StopAutomationExecution",
                "ssm:GetAutomationExecution",
                "ssm:DescribeAutomationExecutions",
                "ssm:DescribeAutomationStepExecutions",
                "ssm:SendAutomationSignal"
            ],
            "Resource": [
                "arn:aws:ssm:*:111122223333:automation-execution/*"
            ],
            "Effect": "Allow",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/environment": "beta"
                }
            }
        },
        {
            "Action": "ssm:AddTagsToResource",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:*:111122223333:automation-execution/*"
            ]
        }
    ]
}
```

------

# Consentire ad Automation di adattarsi alle esigenze di simultaneità
<a name="adaptive-concurrency"></a>

Per impostazione predefinita, Automation consente di eseguire fino a 100 automazioni simultanee alla volta. Automation fornisce inoltre un'impostazione facoltativa da utilizzare per regolare automaticamente la quota di automazione simultanea. Grazie a questa impostazione, la quota di automazione simultanea può gestire fino a 500 automazioni simultanee, a seconda delle risorse disponibili. 

**Nota**  
Se l’automazione chiama operazioni API, il dimensionamento adattivo agli obiettivi può comportare eccezioni di limitazione (della larghezza di banda della rete). Se si verificano eccezioni ricorrenti di limitazione (della larghezza di banda della rete) durante l’esecuzione di automazioni con la simultaneità adattiva attivata, potrebbe essere necessario richiedere un aumento delle quote per l'operazione API, se disponibile.

**Per attivare la concorrenza adattiva utilizzando il 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 **Automazione**.

1. Scegli la scheda **Preferenze**, quindi seleziona **Modifica**.

1. Seleziona la casella di controllo accanto a **Attiva la simultaneità adattiva**.

1. Scegli **Save** (Salva).

**Per attivare la simultaneità adattiva utilizzando la riga di comando**
+ Apri AWS CLI o Strumenti per Windows PowerShell ed esegui il comando seguente per attivare la concorrenza adattiva per il tuo account nella regione richiedente.

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

  ```
  aws ssm update-service-setting \
      --setting-id /ssm/automation/enable-adaptive-concurrency \
      --setting-value True
  ```

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

  ```
  aws ssm update-service-setting ^
      --setting-id /ssm/automation/enable-adaptive-concurrency ^
      --setting-value True
  ```

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

  ```
  Update-SSMServiceSetting `
      -SettingId "/ssm/automation/enable-adaptive-concurrency" `
      -SettingValue "True"
  ```

------

# Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)
<a name="automation-throttling-retry"></a>

Esiste un limite nel numero di esecuzioni di automazione simultanee che eseguibili in ogni account. Il tentativo di eseguire numerose automazioni contemporaneamente in un account può causare problemi di limitazione (della larghezza di banda della rete). È possibile utilizzare la funzionalità di ripetizione dei tentativi di limitazione (della larghezza di banda della rete) automatica per configurare il relativo comportamento per i passaggi di automazione limitati.

La ripetizione dei tentativi di limitazione (della larghezza di banda della rete) automatica per le azioni di automazione offre un ambiente di esecuzione più resiliente per operazioni su larga scala. La funzionalità di ripetizione dei tentativi di limitazione (della larghezza di banda della rete) supporta tutte le [azioni di automazione](automation-actions.md) ad eccezione di `aws:executeScript`.

L'impostazione della ripetizione dei tentativi di limitazione (della larghezza di banda della rete) funziona in aggiunta alla proprietà del passaggio di `maxAttempts` esistente. Quando entrambe sono configurate, il sistema tenta innanzitutto di ripetere i tentativi di limitazione (della larghezza di banda della rete) entro il limite di tempo specificato, quindi applica l'impostazione di `maxAttempts`, se il passaggio continua a fare errori.

**Per configurare la limitazione, riprova usando il Console di gestione AWS**

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 **Automazione**.

1. Scegli la scheda **Preferenze**, quindi seleziona **Modifica**.

1. Nel campo **Limite di tempo per la ripetizione dei tentativi di limitazione (della larghezza di banda della rete)**, immetti un valore compreso tra 0 e 3.600 secondi. Questo specifica il tempo massimo durante il quale il sistema riprova un passaggio limitato.

1. Scegli **Save** (Salva).

**Per configurare la ripetizione dei tentativi di limitazione (della larghezza di banda della rete) tramite la riga di comando**
+ Apri AWS CLI o Tools for Windows PowerShell ed esegui il comando seguente per configurare il throttling retry per il tuo account nella regione richiedente.

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

  ```
  aws ssm update-service-setting \
      --setting-id /ssm/automation/throttling-retry-time-limit \
      --setting-value 3600
  ```

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

  ```
  aws ssm update-service-setting ^
      --setting-id /ssm/automation/throttling-retry-time-limit ^
      --setting-value 3600
  ```

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

  ```
  Update-SSMServiceSetting `
      -SettingId "/ssm/automation/throttling-retry-time-limit" `
      -SettingValue "3600"
  ```

------

# Implementazione dei controlli delle modifiche per Automazione
<a name="automation-change-calendar-integration"></a>

Per impostazione predefinita, Automazione consente di utilizzare i runbook senza vincoli di data e ora. Integrando Automation conChange Calendar, puoi implementare i controlli delle modifiche a tutte le automazioni del tuo. Account AWS Con questa impostazione, i principali AWS Identity and Access Management (IAM) dell'account possono eseguire automazioni solo durante i periodi di tempo consentiti dal calendario delle modifiche. Per ulteriori informazioni sulle operazioni con Change Calendar, consulta la pagina [Utilizzo di Change Calendar](systems-manager-change-calendar-working.md).

**Attivazione dei controlli delle modifiche (console)**

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 **Automazione**.

1. Scegli la scheda **Preferenze**, quindi seleziona **Modifica**.

1. Seleziona la casella di controllo accanto a **Attiva l'integrazione Change Calendar**.

1. Nell'elenco a discesa **Scegli un calendario delle modifiche**, scegli il calendario delle modifiche che desideri che Automazione segua.

1. Scegli **Salva**.

# Esegui un'operazione automatizzata basata su Systems Manager Automation
<a name="running-simple-automations"></a>

Quando esegui un'automazione, per impostazione predefinita, l'automazione viene eseguita nel contesto dell'utente che ha avviato l'automazione. Ciò significa, ad esempio, che se l'utente dispone delle autorizzazioni di amministratore, l'automazione viene eseguita con le autorizzazioni di amministratore e con l'accesso completo alle risorse configurate dall'automazione. Come best practice di sicurezza, ti consigliamo di eseguire l'automazione utilizzando un ruolo di servizio IAM noto in questo caso come ruolo di *assunzione* configurato con la policy gestita di Amazon SSMAutomation Role. Potrebbe essere necessario aggiungere ulteriori policy IAM al ruolo assunto per utilizzare diversi runbook. L'utilizzo di un ruolo di servizio IAM per l'esecuzione del servizio di automazione viene definito *delegated administration (amministrazione delegata)*.

Quando utilizzi un ruolo di servizio, l'automazione può essere eseguita sulle risorse di AWS , ma l'utente che ha eseguito l'automazione ha un accesso limitato (o nessun accesso) a tali risorse. Ad esempio, è possibile configurare un ruolo di servizio e utilizzarlo con il servizio di automazione per riavviare una o più istanze di Amazon Elastic Compute Cloud (Amazon EC2). L’automazione è uno strumento di AWS Systems Manager. Il servizio di automazione riavvia le istanze, ma il ruolo di servizio non concede all'utente l'autorizzazione ad accedere a tali istanze.

È possibile specificare un ruolo di servizio al runtime durante l'esecuzione di un'automazione oppure è possibile creare runbook personalizzati e specificare il ruolo di servizio direttamente nel runbook. Se specifichi un ruolo di servizio al runtime oppure in un runbook, il servizio viene eseguito nel contesto del ruolo di servizio specificato. Se non specifichi alcun ruolo di servizio, il sistema crea una sessione temporanea nel contesto dell'utente ed esegue l'automazione.

**Nota**  
È necessario specificare un ruolo di servizio per l'automazione con possibili tempi di esecuzione maggiori di 12 ore. Se si avvia un'automazione con tempi di esecuzione molto lunghi nel contesto di un utente, la sessione temporanea dell'utente scade dopo 12 ore.

L'amministrazione delegata garantisce livelli più elevati di sicurezza e il controllo delle risorse di AWS . Garantisce inoltre un'esperienza di controllo avanzata in quanto le operazioni vengono eseguite sulle risorse da un ruolo di servizio centralizzato anziché da più account IAM.

**Prima di iniziare**  
Prima di completare le seguenti procedure, devi creare il ruolo di servizio IAM e configurare una relazione di fiducia per Automation, uno strumento in AWS Systems Manager. Per ulteriori informazioni, consulta [Processo 1: creazione di un ruolo di servizio per il servizio di automazione](automation-setup-iam.md#create-service-role).

Le procedure riportate di seguito illustrano come utilizzare la console di Systems Manager o lo strumento a riga di comando preferito per eseguire un'automazione semplice.

## Esecuzione di un'automazione semplice (console)
<a name="simple-console"></a>

La procedura riportata di seguito illustra come utilizzare la console di Systems Manager per eseguire un'automazione semplice.

**Per eseguire un'automazione semplice**

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 **Automazione**, quindi **Esegui automazione**.

1. Nell'elenco **Documento di automazione**, scegli un runbook. Scegli una o più opzioni nel pannello **Categorie di documenti** per filtrare i documenti SSM in base al loro scopo. Per visualizzare un runbook di cui si è proprietari, scegliere la scheda **Posseduto da me**. Per visualizzare un runbook condiviso con l'account, scegliere la scheda **Condiviso con me**. Per visualizzare tutti i runbook, scegliere la scheda **Tutti i documenti**.
**Nota**  
È possibile visualizzare informazioni su un runbook scegliendo il nome del runbook.

1. Nella sezione **Dettagli documento** verifica che l'opzione **Versione documento** sia impostata sulla versione che si desidera eseguire. Il sistema include le seguenti opzioni di versione: 
   + **Versione predefinita al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e viene assegnata una nuova versione predefinita.
   + **Ultima versione al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e si desidera che venga eseguita la versione aggiornata più di recente.
   + **1 (predefinita)**: scegli questa opzione per eseguire la prima versione del documento (quella predefinita).

1. Scegli **Next (Successivo)**.

1. Nella sezione **Execution Mode (Modalità esecuzione)**, scegliere **Simple execution (Esecuzione semplice)**.

1. Nella sezione **Input parameters (Parametri di input)** specifica i parametri obbligatori. Facoltativamente, puoi scegliere un ruolo di servizio IAM dall'**AutomationAssumeRole**elenco.

1. (Facoltativo) Scegliete un CloudWatch allarme da applicare all'automazione per il monitoraggio. Per collegare un CloudWatch allarme alla tua automazione, il responsabile IAM che avvia l'automazione deve disporre dell'autorizzazione per l'`iam:createServiceLinkedRole`azione. Per ulteriori informazioni sugli CloudWatch allarmi, consulta [Usare gli CloudWatch allarmi Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html). Si noti che se l'allarme si attiva, l'automazione viene interrotta. Se lo utilizzi AWS CloudTrail, vedrai la chiamata API nella tua traccia. 

1. Scegliere **Execute (Esegui)**. 

La console visualizza lo stato dell'automazione. Se l'automazione non riesce, consulta [Risoluzione dei problemi dl servizio di automazione di Systems Manager](automation-troubleshooting.md).

Una volta completata l'esecuzione di un'automazione, è possibile rieseguirla con gli stessi parametri o con parametri modificati. Per ulteriori informazioni, consulta [Ripetizione delle esecuzioni di automazione](automation-rerun-executions.md).

## Esecuzione di un'automazione semplice (riga di comando)
<a name="simple-cli"></a>

La procedura seguente descrive come utilizzare AWS CLI (su Linux o Windows) o AWS Strumenti per PowerShell eseguire una semplice automazione.

**Per eseguire un'automazione semplice**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Esegui il comando seguente per avviare un'automazione semplice. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

   ```
   aws ssm start-automation-execution \
       --document-name runbook name \
       --parameters runbook parameters
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name runbook name ^
       --parameters runbook parameters
   ```

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

   ```
   Start-SSMAutomationExecution `
     -DocumentName runbook name `
     -Parameter runbook parameters
   ```

------

   Di seguito è riportato un esempio di utilizzo del runbook `AWS-RestartEC2Instance` per riavviare l'istanza EC2 specificata.

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

   ```
   aws ssm start-automation-execution \
       --document-name "AWS-RestartEC2Instance" \
       --parameters "InstanceId=i-02573cafcfEXAMPLE"
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name "AWS-RestartEC2Instance" ^
       --parameters "InstanceId=i-02573cafcfEXAMPLE"
   ```

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

   ```
   Start-SSMAutomationExecution `
     -DocumentName AWS-RestartEC2Instance `
     -Parameter @{"InstanceId"="i-02573cafcfEXAMPLE"}
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

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

   ```
   {
       "AutomationExecutionId": "4105a4fc-f944-11e6-9d32-0123456789ab"
   }
   ```

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

   ```
   {
       "AutomationExecutionId": "4105a4fc-f944-11e6-9d32-0123456789ab"
   }
   ```

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

   ```
   4105a4fc-f944-11e6-9d32-0123456789ab
   ```

------

1. Eseguire il comando seguente per recuperare lo stato dell'automazione.

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

   ```
   aws ssm describe-automation-executions \
       --filter "Key=ExecutionId,Values=4105a4fc-f944-11e6-9d32-0123456789ab"
   ```

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

   ```
   aws ssm describe-automation-executions ^
       --filter "Key=ExecutionId,Values=4105a4fc-f944-11e6-9d32-0123456789ab"
   ```

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

   ```
   Get-SSMAutomationExecutionList | `
     Where {$_.AutomationExecutionId -eq "4105a4fc-f944-11e6-9d32-0123456789ab"}
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

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

   ```
   {
       "AutomationExecutionMetadataList": [
           {
               "AutomationExecutionStatus": "InProgress",
               "CurrentStepName": "stopInstances",
               "Outputs": {},
               "DocumentName": "AWS-RestartEC2Instance",
               "AutomationExecutionId": "4105a4fc-f944-11e6-9d32-0123456789ab",
               "DocumentVersion": "1",
               "ResolvedTargets": {
                   "ParameterValues": [],
                   "Truncated": false
               },
               "AutomationType": "Local",
               "Mode": "Auto",
               "ExecutionStartTime": 1564600648.159,
               "CurrentAction": "aws:changeInstanceState",
               "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
               "LogFile": "",
               "Targets": []
           }
       ]
   }
   ```

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

   ```
   {
       "AutomationExecutionMetadataList": [
           {
               "AutomationExecutionStatus": "InProgress",
               "CurrentStepName": "stopInstances",
               "Outputs": {},
               "DocumentName": "AWS-RestartEC2Instance",
               "AutomationExecutionId": "4105a4fc-f944-11e6-9d32-0123456789ab",
               "DocumentVersion": "1",
               "ResolvedTargets": {
                   "ParameterValues": [],
                   "Truncated": false
               },
               "AutomationType": "Local",
               "Mode": "Auto",
               "ExecutionStartTime": 1564600648.159,
               "CurrentAction": "aws:changeInstanceState",
               "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
               "LogFile": "",
               "Targets": []
           }
       ]
   }
   ```

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

   ```
   AutomationExecutionId       : 4105a4fc-f944-11e6-9d32-0123456789ab
   AutomationExecutionStatus   : InProgress
   AutomationType              : Local
   CurrentAction               : aws:changeInstanceState
   CurrentStepName             : startInstances
   DocumentName                : AWS-RestartEC2Instance
   DocumentVersion             : 1
   ExecutedBy                  : arn:aws:sts::123456789012:assumed-role/Administrator/Admin
   ExecutionEndTime            : 1/1/0001 12:00:00 AM
   ExecutionStartTime          : 7/31/2019 7:17:28 PM
   FailureMessage              : 
   LogFile                     : 
   MaxConcurrency              : 
   MaxErrors                   : 
   Mode                        : Auto
   Outputs                     : {}
   ParentAutomationExecutionId : 
   ResolvedTargets             : Amazon.SimpleSystemsManagement.Model.ResolvedTargets
   Target                      : 
   TargetMaps                  : {}
   TargetParameterName         : 
   Targets                     : {}
   ```

------

# Ripetizione delle esecuzioni di automazione
<a name="automation-rerun-executions"></a>

È possibile eseguire nuovamente le esecuzioni di AWS Systems Manager automazione per ripetere attività con parametri identici o modificati. La capacità di ripetizione consente all'utente di replicare in modo efficiente le esecuzioni di automazione senza ricreare manualmente le configurazioni di automazione, riducendo il sovraccarico operativo e i potenziali errori di configurazione.

Quando esegui nuovamente un'esecuzione di automazione, Systems Manager conserva i parametri originali del runbook, gli CloudWatch allarmi Amazon e i tag dell'esecuzione precedente. Il sistema crea una nuova esecuzione con il relativo nuovo ID e timestamp aggiornati. L'utente può ripetere qualsiasi tipo di esecuzione di automazione, incluse quelle semplici, quelle con controllo della velocità, quelle tra account e regioni e le esecuzioni manuali.

## Ripetere un'esecuzione di automazione (console)
<a name="rerun-console"></a>

La procedura riportata di seguito illustra come utilizzare la console di Systems Manager per ripetere un'esecuzione di automazione.

**Per ripetere un'esecuzione di automazione dalla home page di Automazione**

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

1. Nel pannello di navigazione, scegli **Automation (Automazione)**.

1. Nell'elenco delle esecuzioni, seleziona quella che desideri ripetere.

1. Scegli **Ripeti esecuzione**.

1. Nella pagina del **documento Esegui automazione**, esamina i parametri precompilati, la modalità di esecuzione e la configurazione di destinazione dell'esecuzione originale.

1. (Facoltativo) Modifica i parametri, le destinazioni o le altre impostazioni necessarie per la ripetizione.

1. Scegli **Esegui** per avviare la ripetizione con un nuovo ID di esecuzione.

**Per ripetere un'esecuzione di automazione dalla pagina dei dettagli dell'esecuzione**

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 **Automation (Automazione)**.

1. Scegli l'ID di esecuzione dell'automazione che desideri ripetere.

1. Nella pagina dei dettagli dell'esecuzione, scegli **Ripeti esecuzione**.

1. Nella pagina del **documento Esegui automazione**, esamina i parametri precompilati, la modalità di esecuzione e la configurazione di destinazione dell'esecuzione originale.

1. (Facoltativo) Modifica i parametri, le destinazioni o le altre impostazioni necessarie per la ripetizione.

1. Scegli **Esegui** per avviare la ripetizione con un nuovo ID di esecuzione.

**Per copiare un'esecuzione di automazione in una nuova esecuzione**

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 **Automation (Automazione)**.

1. Scegli l'ID di esecuzione dell'automazione che desideri copiare.

1. Nella pagina dei dettagli di esecuzione, scegli **Azioni**, quindi scegli **Copia su nuovo**.

1. Nella pagina del **documento Esegui automazione**, esamina i parametri precompilati, la modalità di esecuzione e la configurazione di destinazione dell'esecuzione originale.

1. (Facoltativo) Modifica i parametri, le destinazioni o le altre impostazioni necessarie per la nuova esecuzione.

1. Scegli **Esegui** per avviare la nuova esecuzione.

# Esegui un'automazione che richiede approvazioni
<a name="running-automations-require-approvals"></a>

Le seguenti procedure descrivono come utilizzare la AWS Systems Manager console e AWS Command Line Interface (AWS CLI) eseguire un'automazione con approvazioni utilizzando un'esecuzione semplice. L'automazione usa l'operazione di automazione `aws:approve`, che sospende temporaneamente l'automazione finché i principali designati non approvano o rifiutano l'operazione. L'automazione viene eseguita nel contesto dell'utente corrente. Ciò significa che non è necessario configurare autorizzazioni IAM aggiuntive a condizione di disporre dell'autorizzazione necessaria per eseguire il runbook e qualsiasi operazione chiamata dal runbook. Se disponi delle autorizzazioni dell'amministratore in IAM, disponi già dell'autorizzazione per utilizzare questo runbook.

**Prima di iniziare**  
Oltre agli input standard necessari per il runbook, l'operazione `aws:approve` richiede questi due parametri: 
+ un elenco di approvatori. L'elenco degli approvatori deve contenere almeno un approvatore sotto forma di un nome utente o di un ARN utente. Se vengono specificati più approvatori, all'interno del runbook deve essere specificato anche un numero minimo di approvazioni corrispondenti. 
+ Argomento ARN Amazon Simple Notification Service (Amazon SNS). Il nome dell'argomento Amazon SNS deve iniziare con `Automation`.

Questa procedura presuppone che tu abbia già creato un argomento Amazon SNS, necessario per inviare la richiesta di approvazione. Per ulteriori informazioni, consulta la pagina [Creazione di un argomento](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html#CreateTopic) nella *Guida per gli sviluppatori di Amazon Simple Notification Service*.

## Esecuzione di un'automazione con approvatori (console)
<a name="approval-console"></a>

**Per eseguire un'automazione con approvatori**

La procedura seguente descrive come utilizzare la console di Systems Manager per eseguire un'automazione con approvatori.

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 **Automazione**, quindi **Esegui automazione**.

1. Nell'elenco **Documento di automazione**, scegli un runbook. Scegli una o più opzioni nel pannello **Categorie di documenti** per filtrare i documenti SSM in base al loro scopo. Per visualizzare un runbook di cui si è proprietari, scegliere la scheda **Posseduto da me**. Per visualizzare un runbook condiviso con l'account, scegliere la scheda **Condiviso con me**. Per visualizzare tutti i runbook, scegliere la scheda **Tutti i documenti**.
**Nota**  
È possibile visualizzare informazioni su un runbook scegliendo il nome del runbook.

1. Nella sezione **Dettagli documento** verifica che l'opzione **Versione documento** sia impostata sulla versione che si desidera eseguire. Il sistema include le seguenti opzioni di versione: 
   + **Versione predefinita al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e viene assegnata una nuova versione predefinita.
   + **Ultima versione al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e si desidera che venga eseguita la versione aggiornata più di recente.
   + **1 (predefinita)**: scegli questa opzione per eseguire la prima versione del documento (quella predefinita).

1. Scegli **Next (Successivo)**.

1. Nella pagina **Esecuzione documento di automazione**, scegli **Esecuzione semplice**.

1. Nella sezione **Parametri di input**, specifica i parametri di input obbligatori.

   Ad esempio, se hai scelto il `AWS-StartEC2InstanceWithApproval` runbook, devi specificare o scegliere l'istanza IDs per il **InstanceId**parametro. 

1. Nella sezione **Approvatori**, specificate i nomi utente o l'utente degli approvatori per l' ARNs azione di automazione.

1. Nella sezione **SNSTopicARN**, specificare l'argomento SNS ARN da utilizzare per l'invio della notifica di approvazione. Il nome dell'argomento SNS deve iniziare con **Automation**.

1. Facoltativamente, puoi scegliere un ruolo del servizio IAM dall'elenco. **AutomationAssumeRole** Se hai come destinazione più di 100 account e Regioni, devi specificare `AWS-SystemsManager-AutomationAdministrationRole`.

1. Scegli **Esegui automazione**. 

L'approvatore specificato riceve una notifica Amazon SNS con i dettagli per approvare o rifiutare l'automazione. Questa azione di approvazione è valida per 7 giorni dalla data di emissione e può essere emessa utilizzando la console Systems Manager o il AWS Command Line Interface (AWS CLI).

Se si sceglie di approvarla, l'automazione continua a eseguire le fasi incluse nel runbook specificato. La console visualizza lo stato dell'automazione. Se l'automazione non riesce, consulta [Risoluzione dei problemi dl servizio di automazione di Systems Manager](automation-troubleshooting.md).

**Per approvare o rifiutare un servizio di automazione**

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, scegliere **Automazione**, quindi seleziona l'automazione eseguita nella procedura precedente.

1. Scegli **Operazioni**, quindi **Approva/Rifiuta**.

1. Scegli **Approva** o **Nega** e, facoltativamente, aggiungi un commento.

1. Scegli **Invia**.

## Esecuzione di un'automazione con approvatori (riga di comando)
<a name="approval-cli"></a>

La procedura seguente descrive come utilizzare AWS CLI (su Linux o Windows) o AWS Strumenti per PowerShell eseguire un'automazione con approvatori.

**Per eseguire un'automazione con approvatori**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Esegui il seguente comando per eseguire un'automazione con approvatori. Sostituisci ogni *example resource placeholder* con le tue informazioni. Nella sezione del nome del documento, specifica un runbook che includa l'operazione di automazione `aws:approve`.

   Per`Approvers`, specifica i nomi utente o l'utente ARNs degli approvatori per l'azione. Per `SNSTopic`, specifica l'ARN dell'argomento SNS da utilizzare per inviare una notifica di approvazione. Il nome dell'argomento Amazon SNS deve iniziare con `Automation`.
**Nota**  
I nomi specifici dei valori dei parametri per gli approvatori e l'argomento SNS dipendono dai valori specificati all'interno del runbook selezionato. 

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

   ```
   aws ssm start-automation-execution \
       --document-name "AWS-StartEC2InstanceWithApproval" \
       --parameters "InstanceId=i-02573cafcfEXAMPLE,Approvers=arn:aws:iam::123456789012:role/Administrator,SNSTopicArn=arn:aws:sns:region:123456789012:AutomationApproval"
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name "AWS-StartEC2InstanceWithApproval" ^
       --parameters "InstanceId=i-02573cafcfEXAMPLE,Approvers=arn:aws:iam::123456789012:role/Administrator,SNSTopicArn=arn:aws:sns:region:123456789012:AutomationApproval"
   ```

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

   ```
   Start-SSMAutomationExecution `
       -DocumentName AWS-StartEC2InstanceWithApproval `
       -Parameters @{
           "InstanceId"="i-02573cafcfEXAMPLE"
           "Approvers"="arn:aws:iam::123456789012:role/Administrator"
           "SNSTopicArn"="arn:aws:sns:region:123456789012:AutomationApproval"
       }
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

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

   ```
   {
       "AutomationExecutionId": "df325c6d-b1b1-4aa0-8003-6cb7338213c6"
   }
   ```

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

   ```
   {
       "AutomationExecutionId": "df325c6d-b1b1-4aa0-8003-6cb7338213c6"
   }
   ```

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

   ```
   df325c6d-b1b1-4aa0-8003-6cb7338213c6
   ```

------

**Per approvare un'automazione**
+ Utilizza il comando seguente per approvare un'automazione. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

  ```
  aws ssm send-automation-signal \
      --automation-execution-id "df325c6d-b1b1-4aa0-8003-6cb7338213c6" \
      --signal-type "Approve" \
      --payload "Comment=your comments"
  ```

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

  ```
  aws ssm send-automation-signal ^
      --automation-execution-id "df325c6d-b1b1-4aa0-8003-6cb7338213c6" ^
      --signal-type "Approve" ^
      --payload "Comment=your comments"
  ```

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

  ```
  Send-SSMAutomationSignal `
      -AutomationExecutionId df325c6d-b1b1-4aa0-8003-6cb7338213c6 `
      -SignalType Approve `
      -Payload @{"Comment"="your comments"}
  ```

------

  Se il comando va a buon fine, non viene generato output.

**Per rifiutare un'automazione**
+ Utilizza il comando seguente per rifiutare un'automazione. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

  ```
  aws ssm send-automation-signal \
      --automation-execution-id "df325c6d-b1b1-4aa0-8003-6cb7338213c6" \
      --signal-type "Deny" \
      --payload "Comment=your comments"
  ```

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

  ```
  aws ssm send-automation-signal ^
      --automation-execution-id "df325c6d-b1b1-4aa0-8003-6cb7338213c6" ^
      --signal-type "Deny" ^
      --payload "Comment=your comments"
  ```

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

  ```
  Send-SSMAutomationSignal `
      -AutomationExecutionId df325c6d-b1b1-4aa0-8003-6cb7338213c6 `
      -SignalType Deny `
      -Payload @{"Comment"="your comments"}
  ```

------

  Se il comando va a buon fine, non viene generato output.

# Esegui operazioni automatizzate su larga scala
<a name="running-automations-scale"></a>

Con AWS Systems Manager Automation, puoi eseguire automazioni su una flotta di AWS risorse utilizzando *obiettivi*. Inoltre, è possibile controllare l'implementazione dell'automazione a livello di parco istanze specificando un valore di simultaneità e una soglia di errore. Le funzionalità di simultaneità e soglia di errore vengono definite collettivamente *controlli di velocità*. Il valore di simultaneità determina il numero di risorse autorizzate a eseguire l'automazione contemporaneamente. Automation permette di scegliere anche una modalità di simultaneità adattiva. La simultaneità adattiva dimensiona automaticamente la quota di automazione da 100 a 500 automazioni in esecuzione contemporaneamente. Una soglia di errore determina il numero di automazioni che possono avere esito negativo, superato il quale Systems Manager interrompe l'invio dell'automazione ad altre risorse.

Per ulteriori informazioni su simultaneità e soglie di errore, consulta [Controlla le automazioni su larga scala](running-automations-scale-controls.md). Per ulteriori informazioni sulle destinazioni, consulta [Mappatura degli obiettivi per un'automazione](running-automations-map-targets.md).

Le procedure seguenti mostrano come attivare una simultaneità adattiva e come eseguire un‘automazione con destinazioni e controlli di velocità utilizzando la console di Systems Manager e AWS Command Line Interface (AWS CLI).

## Esecuzione di un'automazione con destinazioni e controlli di velocità (console)
<a name="scale-console"></a>

La procedura seguente descrive come utilizzare la console di Systems Manager per eseguire un'automazione con destinazioni e controlli di velocità.

**Per eseguire un'automazione con destinazioni e controlli di velocità**

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 **Automazione**, quindi **Esegui automazione**.

1. Nell'elenco **Documento di automazione**, scegli un runbook. Scegli una o più opzioni nel pannello **Categorie di documenti** per filtrare i documenti SSM in base al loro scopo. Per visualizzare un runbook di cui si è proprietari, scegliere la scheda **Posseduto da me**. Per visualizzare un runbook condiviso con l'account, scegliere la scheda **Condiviso con me**. Per visualizzare tutti i runbook, scegliere la scheda **Tutti i documenti**.
**Nota**  
È possibile visualizzare informazioni su un runbook scegliendo il nome del runbook.

1. Nella sezione **Dettagli documento** verifica che l'opzione **Versione documento** sia impostata sulla versione che si desidera eseguire. Il sistema include le seguenti opzioni di versione: 
   + **Versione predefinita al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e viene assegnata una nuova versione predefinita.
   + **Ultima versione al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e si desidera che venga eseguita la versione aggiornata più di recente.
   + **1 (predefinita)**: scegli questa opzione per eseguire la prima versione del documento (quella predefinita).

1. Scegli **Next (Successivo)**.

1. Nella sezione **Execution Mode (Modalità di esecuzione)** scegliere **Rate Control (Controllo velocità)**. Per utilizzare le destinazioni e i controlli di velocità, è necessaria questa modalità o **Multi-account and Region (Più account e regioni)**.

1. Nella sezione **Targets (Destinazioni)** scegliere il modo in cui si desidera definire come destinazione le risorse di AWS in cui si desidera eseguire l'automazione. Queste opzioni sono obbligatorie.

   1. Utilizza l'elenco **Parameter (Parametro)** per scegliere un parametro. Le voci nell'elenco **Parameter (Parametro)** sono determinate dai parametri presenti nel runbook del servizio di automazione selezionato all'inizio di questa procedura. È necessario scegliere un parametro per definire il tipo di risorsa su cui viene eseguito il flusso di lavoro del servizio di automazione. 

   1. Utilizza l'elenco **Targets (Destinazioni)** per scegliere come si desidera definire le risorse come destinazione.

      1. Se è stato deciso di definire le risorse come destinazione mediante i valori dei parametri, inserire il valore del parametro per il parametro selezionato nella sezione **Input parameters (Parametri di input)**.

      1. Se hai scelto di assegnare le risorse utilizzando AWS Resource Groups, scegli il nome del gruppo dall'elenco **Resource Group**.

      1. Se è stato deciso di definire le risorse come destinazione mediante i tag, inserire la chiave e (facoltativamente) il valore del tag nei campi disponibili. Scegli **Add (Aggiungi)**.

      1. Se desideri eseguire un runbook di automazione su tutte le istanze dell'attuale Account AWS e Regione AWS, scegli **Tutte le** istanze.

1. Nella sezione **Input parameters (Parametri di input)** specifica i parametri obbligatori. Facoltativamente, puoi scegliere un ruolo del servizio IAM dall'elenco. **AutomationAssumeRole**
**Nota**  
Potrebbe non essere necessario scegliere alcune delle opzioni nella sezione **Input parameters (Parametri di input)**. Ciò è dovuto al fatto che le risorse sono state definite come destinazione mediante i tag o un gruppo di risorse. Ad esempio, se hai scelto il `AWS-RestartEC2Instance` runbook, non è necessario specificare o scegliere l'istanza IDs nella sezione **Parametri di input**. L'esecuzione dell'automazione individua le istanze da riavviare utilizzando i tag o i gruppi di risorse specificati.

1. Utilizza le opzioni nella sezione **Rate control** per limitare il numero di AWS risorse che possono eseguire l'automazione all'interno di ciascuna coppia Account-Area. 

   Nella sezione **Concurrency (Simultaneità)** scegliere un'opzione: 
   + Scegliere **Targets (Destinazioni)** per inserire un numero assoluto di destinazioni che possono eseguire contemporaneamente il flusso di lavoro del servizio di automazione.
   + Scegliere **Percentage (Percentuale)** per inserire la percentuale della serie di destinazioni che può eseguire contemporaneamente il flusso di lavoro del servizio di automazione.

1. Nella sezione **Error threshold (Soglia di errore)**. scegliere un'opzione:
   + Scegliere **errors (errori)** per inserire un numero assoluto di errori consentiti, raggiunto il quale il servizio di automazione interrompe l'invio del flusso di lavoro alle altre risorse.
   + Scegli **percentage (percentuale)** per inserire una percentuale di errori consentiti, raggiunta la quale il servizio di automazione interrompe l'invio del flusso di lavoro alle altre risorse.

1. (Facoltativo) Scegliete un CloudWatch allarme da applicare all'automazione per il monitoraggio. Per collegare un CloudWatch allarme alla tua automazione, il responsabile IAM che avvia l'automazione deve disporre dell'autorizzazione per l'`iam:createServiceLinkedRole`azione. Per ulteriori informazioni sugli CloudWatch allarmi, consulta [Using Amazon CloudWatch alarms](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html). Si noti che se l'allarme si attiva, l'automazione viene interrotta. Se lo utilizzi AWS CloudTrail, vedrai la chiamata API nella tua traccia.

1. Scegliere **Execute (Esegui)**. 

Per visualizzare le automazioni avviate dall'automazione del controllo della velocità, nel pannello di navigazione scegliere Automation (Automazione), quindi selezionare **Show child automations (Mostra automazioni figlio)**.

Una volta completata l'esecuzione di un'automazione, è possibile rieseguirla con gli stessi parametri o con parametri modificati. Per ulteriori informazioni, consulta [Ripetizione delle esecuzioni di automazione](automation-rerun-executions.md).

## Esecuzione di un'automazione con destinazioni e controlli di velocità (riga di comando)
<a name="scale-cli"></a>

La procedura seguente descrive come utilizzare AWS CLI (su Linux o Windows) o AWS Strumenti per PowerShell eseguire un'automazione con obiettivi e controlli di frequenza.

**Per eseguire un'automazione con destinazioni e controlli di velocità**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Eseguire il comando seguente per visualizzare un elenco di documenti.

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

   ```
   aws ssm list-documents
   ```

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

   ```
   aws ssm list-documents
   ```

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

   ```
   Get-SSMDocumentList
   ```

------

   Prendi nota del nome del runbook che desideri utilizzare.

1. Esegui il comando seguente per visualizzare i dettagli sul runbook. Sostituisci *runbook name* con il nome del runbook di cui desideri visualizzare i dettagli. Inoltre, prendi nota di un nome di parametro (ad esempio, `InstanceId`) che desideri utilizzare per l'opzione `--target-parameter-name`. Questo parametro determina il tipo di risorsa su cui viene eseguita l'automazione.

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

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

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

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

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

   ```
   Get-SSMDocumentDescription `
       -Name runbook name
   ```

------

1. Crea un comando che utilizza le opzioni relative alle destinazioni e ai controlli di velocità da eseguire. Sostituisci ogni *example resource placeholder* con le tue informazioni.

   *Definizione di destinazioni mediante tag*

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

   ```
   aws ssm start-automation-execution \
       --document-name runbook name \
       --targets Key=tag:key name,Values=value \
       --target-parameter-name parameter name \
       --parameters "input parameter name=input parameter value,input parameter 2 name=input parameter 2 value" \
       --max-concurrency 10 \
       --max-errors 25%
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name runbook name ^
       --targets Key=tag:key name,Values=value ^
       --target-parameter-name parameter name ^
       --parameters "input parameter name=input parameter value,input parameter 2 name=input parameter 2 value" ^
       --max-concurrency 10 ^
       --max-errors 25%
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
   $Targets.Key = "tag:key name"
   $Targets.Values = "value"
   
   Start-SSMAutomationExecution `
       DocumentName "runbook name" `
       -Targets $Targets `
       -TargetParameterName "parameter name" `
       -Parameter @{"input parameter name"="input parameter value";"input parameter 2 name"="input parameter 2 value"} `
       -MaxConcurrency "10" `
       -MaxError "25%"
   ```

------

   *Definizione di destinazioni mediante valori di parametro*

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

   ```
   aws ssm start-automation-execution \
       --document-name runbook name \
       --targets Key=ParameterValues,Values=value,value 2,value 3 \
       --target-parameter-name parameter name \
       --parameters "input parameter name=input parameter value" \
       --max-concurrency 10 \
       --max-errors 25%
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name runbook name ^
       --targets Key=ParameterValues,Values=value,value 2,value 3 ^
       --target-parameter-name parameter name ^
       --parameters "input parameter name=input parameter value" ^
       --max-concurrency 10 ^
       --max-errors 25%
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
   $Targets.Key = "ParameterValues"
   $Targets.Values = "value","value 2","value 3"
   
   Start-SSMAutomationExecution `
       -DocumentName "runbook name" `
       -Targets $Targets `
       -TargetParameterName "parameter name" `
       -Parameter @{"input parameter name"="input parameter value"} `
       -MaxConcurrency "10" `
       -MaxError "25%"
   ```

------

   *Targeting utilizzando AWS Resource Groups*

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

   ```
   aws ssm start-automation-execution \
       --document-name runbook name \
       --targets Key=ResourceGroup,Values=Resource group nname \
       --target-parameter-name parameter name \
       --parameters "input parameter name=input parameter value" \
       --max-concurrency 10 \
       --max-errors 25%
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name runbook name ^
       --targets Key=ResourceGroup,Values=Resource group name ^
       --target-parameter-name parameter name ^
       --parameters "input parameter name=input parameter value" ^
       --max-concurrency 10 ^
       --max-errors 25%
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
   $Targets.Key = "ResourceGroup"
   $Targets.Values = "Resource group name"
   
   Start-SSMAutomationExecution `
       -DocumentName "runbook name" `
       -Targets $Targets `
       -TargetParameterName "parameter name" `
       -Parameter @{"input parameter name"="input parameter value"} `
       -MaxConcurrency "10" `
       -MaxError "25%"
   ```

------

   *Targeting a tutte le istanze Amazon EC2 nelle versioni attuali e Account AWS Regione AWS*

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

   ```
   aws ssm start-automation-execution \
       --document-name runbook name \
       --targets "Key=AWS::EC2::Instance,Values=*"  \
       --target-parameter-name instanceId \
       --parameters "input parameter name=input parameter value" \
       --max-concurrency 10 \
       --max-errors 25%
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name runbook name ^
       --targets Key=AWS::EC2::Instance,Values=* ^
       --target-parameter-name instanceId ^
       --parameters "input parameter name=input parameter value" ^
       --max-concurrency 10 ^
       --max-errors 25%
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
   $Targets.Key = "AWS::EC2::Instance"
   $Targets.Values = "*"
   
   Start-SSMAutomationExecution `
       -DocumentName "runbook name" `
       -Targets $Targets `
       -TargetParameterName "instanceId" `
       -Parameter @{"input parameter name"="input parameter value"} `
       -MaxConcurrency "10" `
       -MaxError "25%"
   ```

------

   Il comando restituisce un ID di esecuzione. Copia questo ID negli appunti. È possibile usare questo ID per visualizzare lo stato dell'automazione.

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

   ```
   {
       "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"
   }
   ```

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

   ```
   {
       "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE"
   }
   ```

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

   ```
   a4a3c0e9-7efd-462a-8594-01234EXAMPLE
   ```

------

1. Esegui il comando seguente per visualizzare l'automazione. Sostituisci ogni *automation execution ID* con le tue informazioni.

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

   ```
   aws ssm describe-automation-executions \
       --filter Key=ExecutionId,Values=automation execution ID
   ```

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

   ```
   aws ssm describe-automation-executions ^
       --filter Key=ExecutionId,Values=automation execution ID
   ```

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

   ```
   Get-SSMAutomationExecutionList | `
       Where {$_.AutomationExecutionId -eq "automation execution ID"}
   ```

------

1. Eseguire il comando seguente per visualizzare i dettagli relativi al progresso dell'automazione. Sostituisci ogni *automation execution ID* con le tue informazioni.

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

   ```
   aws ssm get-automation-execution \
       --automation-execution-id automation execution ID
   ```

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

   ```
   aws ssm get-automation-execution ^
       --automation-execution-id automation execution ID
   ```

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

   ```
   Get-SSMAutomationExecution `
       -AutomationExecutionId automation execution ID
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

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

   ```
   {
       "AutomationExecution": {
           "StepExecutionsTruncated": false,
           "AutomationExecutionStatus": "Success",
           "MaxConcurrency": "1",
           "Parameters": {},
           "MaxErrors": "1",
           "Outputs": {},
           "DocumentName": "AWS-StopEC2Instance",
           "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE",
           "ResolvedTargets": {
               "ParameterValues": [
                   "i-02573cafcfEXAMPLE"
               ],
               "Truncated": false
           },
           "ExecutionEndTime": 1564681619.915,
           "Targets": [
               {
                   "Values": [
                       "DEV"
                   ],
                   "Key": "tag:ENV"
               }
           ],
           "DocumentVersion": "1",
           "ExecutionStartTime": 1564681576.09,
           "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
           "StepExecutions": [
               {
                   "Inputs": {
                       "InstanceId": "i-02573cafcfEXAMPLE"
                   },
                   "Outputs": {},
                   "StepName": "i-02573cafcfEXAMPLE",
                   "ExecutionEndTime": 1564681619.093,
                   "StepExecutionId": "86c7b811-3896-4b78-b897-01234EXAMPLE",
                   "ExecutionStartTime": 1564681576.836,
                   "Action": "aws:executeAutomation",
                   "StepStatus": "Success"
               }
           ],
           "TargetParameterName": "InstanceId",
           "Mode": "Auto"
       }
   }
   ```

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

   ```
   {
       "AutomationExecution": {
           "StepExecutionsTruncated": false,
           "AutomationExecutionStatus": "Success",
           "MaxConcurrency": "1",
           "Parameters": {},
           "MaxErrors": "1",
           "Outputs": {},
           "DocumentName": "AWS-StopEC2Instance",
           "AutomationExecutionId": "a4a3c0e9-7efd-462a-8594-01234EXAMPLE",
           "ResolvedTargets": {
               "ParameterValues": [
                   "i-02573cafcfEXAMPLE"
               ],
               "Truncated": false
           },
           "ExecutionEndTime": 1564681619.915,
           "Targets": [
               {
                   "Values": [
                       "DEV"
                   ],
                   "Key": "tag:ENV"
               }
           ],
           "DocumentVersion": "1",
           "ExecutionStartTime": 1564681576.09,
           "ExecutedBy": "arn:aws:sts::123456789012:assumed-role/Administrator/Admin",
           "StepExecutions": [
               {
                   "Inputs": {
                       "InstanceId": "i-02573cafcfEXAMPLE"
                   },
                   "Outputs": {},
                   "StepName": "i-02573cafcfEXAMPLE",
                   "ExecutionEndTime": 1564681619.093,
                   "StepExecutionId": "86c7b811-3896-4b78-b897-01234EXAMPLE",
                   "ExecutionStartTime": 1564681576.836,
                   "Action": "aws:executeAutomation",
                   "StepStatus": "Success"
               }
           ],
           "TargetParameterName": "InstanceId",
           "Mode": "Auto"
       }
   }
   ```

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

   ```
   AutomationExecutionId       : a4a3c0e9-7efd-462a-8594-01234EXAMPLE
   AutomationExecutionStatus   : Success
   CurrentAction               : 
   CurrentStepName             : 
   DocumentName                : AWS-StopEC2Instance
   DocumentVersion             : 1
   ExecutedBy                  : arn:aws:sts::123456789012:assumed-role/Administrator/Admin
   ExecutionEndTime            : 8/1/2019 5:46:59 PM
   ExecutionStartTime          : 8/1/2019 5:46:16 PM
   FailureMessage              : 
   MaxConcurrency              : 1
   MaxErrors                   : 1
   Mode                        : Auto
   Outputs                     : {}
   Parameters                  : {}
   ParentAutomationExecutionId : 
   ProgressCounters            : 
   ResolvedTargets             : Amazon.SimpleSystemsManagement.Model.ResolvedTargets
   StepExecutions              : {i-02573cafcfEXAMPLE}
   StepExecutionsTruncated     : False
   Target                      : 
   TargetLocations             : {}
   TargetMaps                  : {}
   TargetParameterName         : InstanceId
   Targets                     : {tag:Name}
   ```

------
**Nota**  
È inoltre possibile monitorare lo stato dell'automazione nella console. Nell'elenco delle **Esecuzioni di automazione**, scegli l'automazione appena eseguita e quindi scegli la scheda **Fasi di esecuzione**. In questa scheda viene mostrato lo stato delle operazioni di automazione.

# Mappatura degli obiettivi per un'automazione
<a name="running-automations-map-targets"></a>

Utilizza il parametro `Targets` per definire velocemente quali risorse possono essere destinate a un'automazione. Ad esempio, se vuoi eseguire un'automazione che riavvii le istanze gestite, anziché selezionare manualmente decine di ID di istanza nella console o digitarli in un comando, puoi definire le istanze come destinazione specificando i tag di Amazon Elastic Compute Cloud (Amazon EC2) con il parametro `Targets`.

Quando esegui un'automazione che utilizza una destinazione, AWS Systems Manager crea un'automazione figlio per ogni destinazione. Ad esempio, se come destinazione utilizzi i volumi di Amazon Elastic Block Store (Amazon EBS) mediante la specifica di tag e se tali tag restituiscono 100 volumi di Amazon EBS, Systems Manager crea 100 automazioni figlio. L'automazione padre risulta completa quando tutte le automazioni figlio raggiungono lo stato finale.

**Nota**  
Qualsiasi opzione `input parameters` specificata nel runtime (tempo di esecuzione) (nella sezione **Input parameters (Parametri di input)** della console oppure utilizzando l'opzione `parameters` nella riga di comando) viene elaborata automaticamente da tutte le automazioni figlio.

Per definire le risorse come destinazione per un'automazione, puoi usare i tag, Resource Groups, e i valori dei parametri. Puoi inoltre utilizzare l'opzione `TargetMaps` per utilizzare come destinazione più valori di parametro nella riga di comando o in un file. La sezione seguente descrive con maggiore dettaglio ciascuna di queste opzioni.

## Definizione di un tag come destinazione
<a name="target-tags"></a>

Puoi specificare un singolo tag come destinazione di un'automazione. Molte risorse di AWS supportano i tag, tra cui istanze di Amazon Elastic Compute Cloud (Amazon EC2) e di Amazon Relational Database Service (Amazon RDS), volumi e snapshot di Amazon Elastic Block Store (Amazon EBS), Resource Groups e bucket Amazon Simple Storage Service (Amazon S3), per citarne alcune. Puoi eseguire rapidamente l'automazione sulle tue AWS risorse scegliendo come target un tag. Un tag è una coppia chiave-valore, ad esempio Operating\$1System:Linux oppure Department:Finance. Se assegni un nome specifico a una risorsa, puoi anche possibile utilizzare la parola "Nome" come chiave e il nome della risorsa come valore.

Quando specifichi un tag come destinazione di un'automazione, devi specificare anche un parametro di destinazione. Il parametro di destinazione utilizza l'opzione `TargetParameterName`. Scegliendo un parametro di destinazione, definisci il tipo di risorsa su cui viene eseguita l'automazione. Il parametro di destinazione specificato con il tag deve essere un parametro valido definito nel runbook. Ad esempio, se vuoi definire come destinazione molte istanze di EC2 utilizzando i tag, devi scegliere il parametro di destinazione `InstanceId`. Quando scegli questo parametro, definisci le *instances (istanze)* come il tipo di risorsa per l'automazione. Durante la creazione di un runbook personalizzato è necessario specificare, per **Tipo di distanza**, il valore `/AWS::EC2::Instance` per garantire che vengano utilizzate solo le istanze. Altrimenti, verranno definite come destinazione tutte le risorse con lo stesso tag. Quando definisci come destinazione le istanze con un tag, potrebbero essere incluse anche le istanze terminate.

Lo screenshot seguente utilizza il runbook di `AWS-DetachEBSVolume`. Il parametro di destinazione logico è `VolumeId`.

![\[Utilizzo di un tag come destinazione per un'automazione di Systems Manager\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/automation-rate-control-tags-1-new.png)


Il runbook di `AWS-DetachEBSVolume` include anche una proprietà speciale chiamata **Tipo di destinazione**, impostata su `/AWS::EC2::Volume`. Ciò significa che se la coppia tag-chiave `Finance:TestEnv` restituisce tipi diversi di risorse, (ad esempio istanze di EC2, volumi di Amazon EBS e snapshot di Amazon EBS), verranno utilizzati solo i volumi di Amazon EBS.

**Importante**  
I nomi dei parametri di destinazione fanno distinzione tra maiuscole e minuscole. Se esegui automazioni utilizzando AWS Command Line Interface (AWS CLI) o AWS Tools for Windows PowerShell, devi inserire il nome del parametro di destinazione esattamente come definito nel runbook. In caso contrario, il sistema restituisce un errore di `InvalidAutomationExecutionParametersException`. È possibile utilizzare l'operazione [DescribeDocument](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeDocument.html)API per visualizzare le informazioni sui parametri di destinazione disponibili in un runbook specifico. Di seguito è riportato un esempio di comando di AWS CLI che fornisce informazioni su documento di `AWS-DeleteSnapshot` non valido.  

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

Ecco alcuni esempi di AWS CLI comandi che indirizzano le risorse utilizzando un tag.

**Esempio 1: definizione di un tag come destinazione mediante l'uso di una coppia chiave-valore per riavviare le istanze Amazon EC2**

Questo esempio riavvia tutte le istanze Amazon EC2 etichettate con una chiave Department e un *valore di*. *HumanResources* Il parametro target utilizza il *InstanceId*parametro del runbook. L'esempio utilizza un parametro aggiuntivo per eseguire l'automazione utilizzando un ruolo di servizio di automazione, definito anche *ruolo presunto*.

```
aws ssm start-automation-execution \
    --document-name AWS-RestartEC2Instance \
    --targets Key=tag:Department,Values=HumanResources \
    --target-parameter-name InstanceId \
    --parameters "AutomationAssumeRole=arn:aws:iam::111122223333:role/AutomationServiceRole"
```

**Esempio 2: definizione di un tag come destinazione mediante l'uso di una coppia chiave-valore per eliminare gli snapshot di Amazon EBS**

L'esempio seguente utilizza il runbook di `AWS-DeleteSnapshot` per eliminare tutti gli snapshot con la chiave *Nome* e il valore *January2018Backups*. Il parametro target utilizza il *VolumeId*parametro.

```
aws ssm start-automation-execution \
    --document-name AWS-DeleteSnapshot \
    --targets Key=tag:Name,Values=January2018Backups \
    --target-parameter-name VolumeId
```

## Targeting AWS Resource Groups
<a name="target-resource-groups"></a>

È possibile specificare un singolo gruppo di AWS risorse come obiettivo di un'automazione. Systems Manager crea un'automazione figlio per ogni oggetto nel gruppo di risorse di destinazione.

Ad esempio, supponiamo che uno dei tuoi Resource Groups si chiami PatchedAMIs. Questo gruppo di risorse include un elenco di 25 Amazon Machine Images (AMIs) Windows a cui vengono regolarmente applicate patch. Se esegui un'automazione che utilizza il runbook di `AWS-CreateManagedWindowsInstance` e che ha questo gruppo di risorse come destinazione, Systems Manager creerà un'automazione figlio per ciascuna delle 25 AMIs. Ciò significa che, prendendo di mira il Patched AMIs Resource Group, l'automazione crea 25 istanze da un elenco di quelle patchate. AMIs L'automazione padre risulta completa quando tutte le automazioni figlio hanno ultimato l'elaborazione o hanno raggiunto lo stato finale.

Il AWS CLI comando seguente si applica all'esempio di Patch AMIs Resource Group. Il comando accetta il *AmiId*parametro per l'`--target-parameter-name`opzione. Il comando non include un parametro aggiuntivo che definisce il tipo di istanza da creare da ciascuna AMI. Il runbook di `AWS-CreateManagedWindowsInstance` usa per impostazione predefinita il tipo di istanza t2.medium; per tale motivo, questo comando crea 25 istanze t2.medium di Amazon EC2 instances per Windows Server.

```
aws ssm start-automation-execution \
    --document-name AWS-CreateManagedWindowsInstance \
    --targets Key=ResourceGroup,Values=PatchedAMIs  \
    --target-parameter-name AmiId
```

La seguente console di esempio utilizza un gruppo di risorse denominato t2-micro-instances.

![\[Individuazione di un gruppo di AWS risorse con un'automazione Systems Manager\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/automation-rate-control-resource-groups-new.png)


## Definizione dei valori di parametro come destinazione
<a name="target-parameter-values"></a>

È anche possibile definire come destinazione un valore di parametro. A tale scopo, devi specificare `ParameterValues` come chiave e quindi inserire il valore specifico di risorsa in cui vuoi eseguire l'automazione. Se specifichi più valori, Systems Manager esegue un'automazione figlio su ciascun valore specificato.

Supponiamo, ad esempio, che il runbook includa un parametro **InstanceID**. Se definisci i valori del parametro **InstanceID** come destinazione quando esegui l'automazione, Systems Manager esegue un'automazione figlio per ogni valore di ID di istanza specificato. L'automazione padre risulta completa quando l'automazione termina l'esecuzione di ciascuna istanza specificata oppure se l'automazione ha esito negativo. Puoi definire come destinazione un massimo di 50 valori di parametro.

Nell'esempio seguente viene utilizzato il runbook di `AWS-CreateImage`. Il nome del parametro di destinazione specificato è *InstanceId*. La chiave utilizza *ParameterValues*. I valori sono due istanze Amazon EC2. IDs Questo comando crea un'automazione per ogni istanza, che genera un'AMI da ciascuna istanza. 

```
aws ssm start-automation-execution 
    --document-name AWS-CreateImage \
    --target-parameter-name InstanceId \
    --targets Key=ParameterValues,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE
```

**Nota**  
`AutomationAssumeRole` non è un parametro valido. Non scegliere questo elemento quando si esegue un'automazione che definisce un valore di parametro come destinazione.

### Definizione delle mappe di valori di parametro come destinazione
<a name="target-maps"></a>

L'opzione `TargetMaps` potenzia la capacità di definire `ParameterValues` come destinazione. Puoi inserire una serie di valori di parametro utilizzando `TargetMaps` nella riga di comando. Puoi infine specificare un massimo di 50 valori di parametro nella riga di comando. Per eseguire comandi che specificano più di 50 valori di parametro, puoi inserire i valori in un file in formato JSON. Potrai quindi richiamare il file dalla riga di comando.

**Nota**  
L'opzione `TargetMaps` non è supportata nella console.

Usa il seguente formato per specificare più valori di parametro mediante l'opzione `TargetMaps` in un comando. Sostituisci ogni *example resource placeholder* con le tue informazioni.

```
aws ssm start-automation-execution \
    --document-name runbook name \
    --target-maps “parameter=value, parameter 2=value, parameter 3=value”  “parameter 4=value, parameter 5=value, parameter 6=value”
```

Se vuoi immettere più di 50 valori di parametro per l'opzione `TargetMaps`, specifica i valori in un file utilizzando il seguente formato JSON. L'utilizzo di un file in formato JSON migliora inoltre la leggibilità quando vengono specificati più valori di parametro.

```
[

    {“parameter”: "value", “parameter 2”: "value", “parameter 3”: "value"},

    {“parameter 4”: "value", “parameter 5”: "value", "parameter 6": "value"}

]
```

Salva il file con l'estensione .json. Puoi chiamare il file utilizzando il comando seguente. Sostituisci ogni *example resource placeholder* con le tue informazioni.

```
aws ssm start-automation-execution \
    --document-name runbook name \
    –-parameters input parameters \
    --target-maps path to file/file name.json
```

Puoi inoltre scaricare il file da un bucket Amazon Simple Storage Service (Amazon S3), a condizione che tu disponga dell'autorizzazione necessaria per leggere i dati dal bucket. Utilizza il seguente formato di comando. Sostituisci ogni *example resource placeholder* con le tue informazioni.

```
aws ssm start-automation-execution \
    --document-name runbook name \
    --target-maps http://amzn-s3-demo-bucket.s3.amazonaws.com/file_name.json
```

Ecco uno scenario di esempio che illustra l'opzione `TargetMaps`. In questo scenario, un utente desidera creare istanze di Amazon EC2 di vari tipi da AMIs diverse. Per eseguire questa attività, l'utente crea un runbook denominato AMI\$1Testing. Questo runbook definisce due parametri di input: `instanceType` e `imageId`. 

```
{
  "description": "AMI Testing",
  "schemaVersion": "0.3",
  "assumeRole": "{{assumeRole}}",
  "parameters": {
    "assumeRole": {
      "type": "String",
      "description": "Role under which to run the automation",
      "default": ""
    },
    "instanceType": {
      "type": "String",
      "description": "Type of EC2 Instance to launch for this test"
    },
    "imageId": {
      "type": "String",
      "description": "Source AMI id from which to run instance"
    }
  },
  "mainSteps": [
    {
      "name": "runInstances",
      "action": "aws:runInstances",
      "maxAttempts": 1,
      "onFailure": "Abort",
      "inputs": {
        "ImageId": "{{imageId}}",
        "InstanceType": "{{instanceType}}",
        "MinInstanceCount": 1,
        "MaxInstanceCount": 1
      }
    }
  ],
  "outputs": [
    "runInstances.InstanceIds"
  ]
}
```

L'utente specifica quindi i seguenti valori di parametro di destinazione in un file denominato `AMI_instance_types.json`.

```
[
  {
    "instanceType" : ["t2.micro"],     
    "imageId" : ["ami-b70554c8"]     
  },
  {
    "instanceType" : ["t2.small"],     
    "imageId" : ["ami-b70554c8"]     
  },
  {
    "instanceType" : ["t2.medium"],     
    "imageId" : ["ami-cfe4b2b0"]     
  },
  {
    "instanceType" : ["t2.medium"],     
    "imageId" : ["ami-cfe4b2b0"]     
  },
  {
    "instanceType" : ["t2.medium"],     
    "imageId" : ["ami-cfe4b2b0"]     
  }
]
```

L'utente può eseguire l'automazione e creare le cinque istanze di EC2 definite nel file `AMI_instance_types.json` con il comando seguente.

```
aws ssm start-automation-execution \
    --document-name AMI_Testing \
    --target-parameter-name imageId \
    --target-maps file:///home/TestUser/workspace/runinstances/AMI_instance_types.json
```

## Definizione di tutte le istanze Amazon EC2 come destinazione
<a name="target-all-instances"></a>

**Puoi eseguire un'automazione su tutte le istanze Amazon EC2 nella versione corrente Account AWS e Regione AWS selezionando **Tutte le istanze** nell'elenco Target.** **Ad esempio, se desideri riavviare tutte le istanze Amazon EC2 tue Account AWS e quelle attuali Regione AWS, puoi scegliere il `AWS-RestartEC2Instance` runbook e quindi scegliere **Tutte le istanze** dall'elenco Target.**

![\[Definizione di tutte le istanze Amazon EC2 come destinazioni per un runbook\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/automation-rate-control-target-all-instances.png)


Dopo aver scelto **Tutte le istanze**, Systems Manager popola il campo **Istanza** con un asterisco (\$1) e rende il campo non disponibile per le modifiche (il campo è disabilitato). Systems Manager rende inoltre il **InstanceId**campo nel campo **Parametri di input** non disponibile per modifiche. Rendi questi campi non disponibili per le modifiche è un comportamento previsto se scegli di definire tutte le istanze come destinazione.

# Controlla le automazioni su larga scala
<a name="running-automations-scale-controls"></a>

Puoi controllare l'implementazione di un'automazione su un parco di AWS risorse specificando un valore di concorrenza e una soglia di errore. Le caratteristiche di simultaneità e soglia di errore vengono collettivamente definite *controlli di velocità*.

**Concurrency (Simultaneità)**  
La simultaneità permette di specificare il numero di risorse autorizzate a eseguire un'automazione contemporaneamente. La simultaneità consente quindi di limitare l'impatto o il tempo di inattività a livello di risorse durante l'elaborazione di un'automazione. Puoi specificare un numero assoluto di risorse, ad esempio 20, oppure una percentuale della serie di destinazione, ad esempio 10%.

Il sistema di accodamento invia l'automazione a una singola risorsa e attende il completamento della chiamata iniziale prima di inviare l'automazione ad altre due risorse. Il sistema invia in modo esponenziale l'automazione a più risorse fino al raggiungimento del valore definito per la simultaneità.

**Soglie di errore**  
Utilizza una soglia di errore per specificare quante automazioni possono fallire prima di AWS Systems Manager interrompere l'invio dell'automazione ad altre risorse. Puoi specificare un numero assoluto di errori, ad esempio 10, oppure una percentuale della serie di destinazioni, ad esempio 10%.

Se specifichi un numero assoluto pari a 3 errori, ad esempio, il sistema interrompe l'esecuzione dell'automazione alla ricezione del quarto errore. Se specifichi 0, il sistema smette di eseguire l'automazione su altre destinazioni non appena viene restituito il risultato del primo errore.

Se, ad esempio, se invii un'automazione a 50 istanze e imposti la soglia di errore su 10%, il sistema smette di inviare il comando alle altre istanze quando viene ricevuto il quinto errore. Sarà consentito il completamento delle chiamate che già eseguono un'automazione quando viene raggiunta la soglia di errore. Tuttavia, è possibile che alcune di queste automazioni abbiano esito negativo. Se vuoi fare in modo che non venga restituito un numero di errori maggiore rispetto al numero specificato per la soglia di errore, imposta il valore dell'opzione **Simultaneità** su 1 in modo che la progressione delle automazioni avvenga un'unità alla volta. 

# Esecuzione di automazioni in più Regioni AWS account
<a name="running-automations-multiple-accounts-regions"></a>

Puoi eseguire AWS Systems Manager automazioni su più Regioni AWS unità Account AWS e/o AWS Organizations organizzative (OUs) da un account centrale. L’automazione è uno strumento di AWS Systems Manager. L'esecuzione di automazioni in più regioni e account OUs consente di ridurre il tempo necessario per amministrare le AWS risorse migliorando al contempo la sicurezza dell'ambiente informatico.

Ad esempio, è possibile eseguire le operazioni seguenti utilizzando i runbook di Automazione:
+ Implementa l'applicazione di patch e gli aggiornamenti di sicurezza a livello centrale.
+ Correggi gli errori di conformità nelle configurazioni di VPC o nelle policy di bucket di Amazon S3.
+ Gestisci risorse, come istanze EC2 di Amazon Elastic Compute Cloud (Amazon EC2), su larga scala.

Il diagramma riportato di seguito mostra un esempio di utente che sta eseguendo il runbook `AWS-RestartEC2Instances` in più Regioni e account da un account centrale. Il servizio di automazione individua le istanze mediante l'uso dei tag specificati nelle Regioni e negli account di destinazione.

![\[Figura che mostra il servizio di automazione di Systems Manager in esecuzione in più Regioni e account.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/automation-multi-region-and-multi-account.png)


**Scelta di un account centrale per l'automazione**  
Se desideri eseguire le automazioni su più fronti OUs, l'account centrale deve disporre delle autorizzazioni per elencare tutti gli account di. OUs È possibile solo da un account amministratore delegato o dall'account di gestione dell'organizzazione. Ti consigliamo di seguire le AWS Organizations migliori pratiche e utilizzare un account amministratore delegato. Per ulteriori informazioni sulle AWS Organizations best practice, consulta [Best practice per l'account di gestione](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_best-practices_mgmt-acct.html) nella *Guida per l'AWS Organizations utente*. Per creare un account amministratore delegato per Systems Manager, è possibile utilizzare il `register-delegated-administrator` comando con il AWS CLI come illustrato nell'esempio seguente.

```
aws organizations register-delegated-administrator \
    --account-id delegated admin account ID \
    --service-principal ssm.amazonaws.com
```

Se desideri eseguire automazioni su più account non gestiti da AWS Organizations, ti consigliamo di creare un account dedicato per la gestione dell'automazione. L'esecuzione di tutte le automazioni tra account da un account dedicato semplifica la gestione delle autorizzazioni IAM, le operazioni di risoluzione dei problemi e crea un livello di separazione tra operazioni e amministrazione. Questo approccio è consigliato anche se si utilizzano AWS Organizations, ma si desidera utilizzare solo account individuali e non OUs.

**Come funziona l'esecuzione delle automazioni**  
L'esecuzione di automazioni su più regioni e account OUs funziona o funziona come segue:

1. Accedere all'account da configurare come account centrale dell'automazione.

1. Utilizzare la procedura [Configurazione delle autorizzazioni degli account di gestione per le automazioni in più Regioni e account](#setup-management-account-iam-roles) descritta in questo argomento per creare i seguenti ruoli IAM.
   + `AWS-SystemsManager-AutomationAdministrationRole`- Questo ruolo fornisce all'utente il permesso di eseguire automazioni in più account e. OUs
   + `AWS-SystemsManager-AutomationExecutionRole`: questo ruolo concede all'utente l'autorizzazione necessaria per eseguire le automazioni in più account di destinazione.

1. Scegli il runbook, le regioni e gli account o OUs dove desideri eseguire l'automazione.
**Nota**  
Assicurarsi che l'unità organizzativa di destinazione contenga gli account desiderati. Se si sceglie un runbook personalizzato, il runbook deve essere condiviso con tutti gli account di destinazione. Per informazioni sulla condivisione di runbook, consulta [Condivisione di documenti SSM](documents-ssm-sharing.md). Per informazioni sull'uso di runbook condivisi, consulta [Utilizzo di documenti SSM condivisi](documents-ssm-sharing.md#using-shared-documents).

1. Esecuzione dell'automazione.

1. Utilizza le operazioni [GetAutomationExecution[DescribeAutomationStepExecutions](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeAutomationStepExecutions.html)](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetAutomationExecution.html), e [DescribeAutomationExecutions](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeAutomationExecutions.html)API dalla AWS Systems Manager console o dal AWS CLI per monitorare l'avanzamento dell'automazione. L'output delle fasi per l'automazione nell'account primario sarà `AutomationExecutionId` delle automazioni figlio. Per visualizzare l'output delle automazioni figlio create negli account di destinazione, assicurarsi di specificare l'account appropriato, la regione e `AutomationExecutionId` nella richiesta.

## Configurazione delle autorizzazioni degli account di gestione per le automazioni in più Regioni e account
<a name="setup-management-account-iam-roles"></a>

Utilizzare la procedura seguente per creare i ruoli IAM richiesti per il servizio di automazione di Systems Manager in più regioni e account mediante l'uso di AWS CloudFormation. Questa procedura descrive come creare il ruolo `AWS-SystemsManager-AutomationAdministrationRole`. È sufficiente creare questo ruolo nell'account centrale del servizio di automazione. Questa procedura illustra inoltre come creare il ruolo `AWS-SystemsManager-AutomationExecutionRole`. È necessario creare questo ruolo in *ogni* account da definire come destinazione per l'esecuzione delle automazioni in più regioni e account. Ti consigliamo di utilizzare CloudFormation StackSets per creare il `AWS-SystemsManager-AutomationExecutionRole` ruolo negli account a cui desideri rivolgerti per eseguire automazioni multiregionali e multi-account.

**Per creare il ruolo di amministrazione IAM richiesto per le automazioni multiregionali e multi-account utilizzando CloudFormation**

1. Scarica e decomprimi il file [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationAdministrationRole.zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationAdministrationRole.zip).

   oppure

   Se i tuoi account sono gestiti da. AWS Organizations [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationAdministrationRole (org).zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationAdministrationRole (org).zip)

   Questi file contengono rispettivamente i file `AWS-SystemsManager-AutomationAdministrationRole.yaml` e i file `AWS-SystemsManager-AutomationAdministrationRole (org).yaml` CloudFormation modello.

1. Apri la CloudFormation console in [https://console.aws.amazon.com/cloudformazione.](https://console.aws.amazon.com/cloudformation/)

1. Seleziona **Crea stack**.

1. Nella sezione **Specifica il modello**, scegli **Carica un modello**.

1. **Scegli il file**, quindi scegli il file `AWS-SystemsManager-AutomationAdministrationRole.yaml` o il file `AWS-SystemsManager-AutomationAdministrationRole (org).yaml` CloudFormation modello, a seconda della selezione effettuata nel passaggio 1.

1. Scegli **Successivo**.

1. Nella pagina **Specificare dettagli dello stack**, inserisci un nome nel campo **Nome dello stack**. 

1. Scegli **Next (Successivo)**.

1. Nella pagina **Configurazione delle opzioni dello stack**, inserisci i valori per le opzioni che desideri utilizzare. Scegli **Next (Successivo)**.

1. Nella pagina **Revisione**, scorri verso il basso e scegli l'opzione **Riconosco che CloudFormation potrebbe creare risorse IAM con nomi personalizzati**.

1. Seleziona **Crea stack**.

CloudFormation mostra lo stato **CREATE\$1IN\$1PROGRESS** per circa tre minuti. Lo stato cambia in **CREATE\$1COMPLETE**.

È necessario ripetere questa procedura per *ogni* account da definire come destinazione per l'esecuzione delle automazioni in più regioni e account.

**Per creare il ruolo di automazione IAM richiesto per le automazioni multiregionali e multi-account utilizzando CloudFormation**

1. Scarica [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationExecutionRole.zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationExecutionRole.zip).

   oppure

   Se i tuoi account sono gestiti da. AWS Organizations [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationExecutionRole (org).zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWS-SystemsManager-AutomationExecutionRole (org).zip)

   Questi file contengono rispettivamente i file modello `AWS-SystemsManager-AutomationExecutionRole.yaml` e `AWS-SystemsManager-AutomationExecutionRole (org).yaml`CloudFormation .

1. Apri la CloudFormation console all'indirizzo [https://console.aws.amazon.com/cloudformazione.](https://console.aws.amazon.com/cloudformation/)

1. Seleziona **Crea stack**.

1. Nella sezione **Specifica il modello**, scegli **Carica un modello**.

1. **Scegli il file**, quindi scegli il file `AWS-SystemsManager-AutomationExecutionRole.yaml` o il file `AWS-SystemsManager-AutomationExecutionRole (org).yaml` CloudFormation modello, a seconda della selezione effettuata nel passaggio 1.

1. Scegli **Successivo**.

1. Nella pagina **Specificare dettagli dello stack**, inserisci un nome nel campo **Nome dello stack**. 

1. Nella sezione **Parametri**, nel **AdminAccountId**campo, inserisci l'ID per l'account centrale di automazione.

1. Se stai configurando questo ruolo per un AWS Organizations ambiente, nella sezione è presente un altro campo chiamato **OrganizationID**. Inserisci l'ID della tua AWS organizzazione.

1. Scegli **Next (Successivo)**.

1. Nella pagina **Configurazione delle opzioni dello stack**, inserisci i valori per le opzioni che desideri utilizzare. Scegli **Next (Successivo)**.

1. Nella pagina di **revisione**, scorri verso il basso e scegli l'opzione **Confermo che CloudFormation potrebbe creare risorse IAM con nomi personalizzati**.

1. Seleziona **Crea stack**.

CloudFormation mostra lo stato **CREATE\$1IN\$1PROGRESS** per circa tre minuti. Lo stato cambia in **CREATE\$1COMPLETE**.

## Esecuzione di un'automazione in più regioni e account (console)
<a name="multiple-console"></a>

La procedura seguente descrive come utilizzare la console di Systems Manager per eseguire un'automazione in più regioni e account dall'account di gestione del servizio di automazione.

**Prima di iniziare**  
Prima di completare la procedura seguente, prendi nota delle informazioni riportate di seguito:
+ L'utente o il ruolo utilizzato per eseguire un'automazione tra più Regioni o tra più account deve disporre dell'autorizzazione `iam:PassRole` per il ruolo `AWS-SystemsManager-AutomationAdministrationRole`.
+ Account AWS IDs o OUs dove si desidera eseguire l'automazione.
+ [Regioni supportate da Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) dove si desidera eseguire l'automazione.
+ La chiave tag e il valore di tag, oppure il nome del gruppo di risorse, in cui eseguire l'automazione.

**Per eseguire un'automazione in più regioni e account**

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 **Automazione**, quindi **Esegui automazione**.

1. Nell'elenco **Documento di automazione**, scegli un runbook. Scegli una o più opzioni nel pannello **Categorie di documenti** per filtrare i documenti SSM in base al loro scopo. Per visualizzare un runbook di cui si è proprietari, scegliere la scheda **Posseduto da me**. Per visualizzare un runbook condiviso con l'account, scegliere la scheda **Condiviso con me**. Per visualizzare tutti i runbook, scegliere la scheda **Tutti i documenti**.
**Nota**  
È possibile visualizzare informazioni su un runbook scegliendo il nome del runbook.

1. Nella sezione **Dettagli documento** verifica che l'opzione **Versione documento** sia impostata sulla versione che si desidera eseguire. Il sistema include le seguenti opzioni di versione: 
   + **Versione predefinita al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e viene assegnata una nuova versione predefinita.
   + **Ultima versione al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e si desidera che venga eseguita la versione aggiornata più di recente.
   + **1 (predefinita)**: scegli questa opzione per eseguire la prima versione del documento (quella predefinita).

1. Scegli **Next (Successivo)**.

1. Nella pagina **Execute automation document (Esegui documento di automazione)** scegliere **Multi-account and Region (Più account e regioni)**.

1. Nella sezione **Account e regioni di Target**, utilizza il campo **Account, unità organizzative (OUs) e radici** per specificare le diverse unità Account AWS o le unità AWS organizzative (OUs) in cui desideri eseguire l'automazione. Separa più account o OUs con una virgola. 

   1. (Facoltativo) Seleziona la OUs casella di controllo **Includi figlio** per includere tutte le unità organizzative secondarie all'interno di quanto specificato OUs.

   1. (Facoltativo) Nel campo **Escludi account e unità organizzative (OUs)**, inserisci un elenco separato da virgole di account IDs e unità organizzative IDs che desideri escludere dalle entità espanse inserite sopra.

1. Utilizzare l'elenco delle **Regioni** per scegliere una o più Regioni in cui eseguire l'automazione.

1. Utilizzare le opzioni disponibili in **Multi-Region and account rate control (Più regioni e controllo della velocità dell'account)** per limitare l'automazione a un numero limitato di account in esecuzione in un numero limitato di regioni. Queste opzioni non limitano il numero di risorse di AWS in grado di eseguire le automazioni. 

   1. Nella sezione **Location (account-Region pair) concurrency (Posizione (coppia account-regione) simultanea)** scegliere un'opzione per limitare il numero di automazioni che possono essere eseguite contemporaneamente in più account e regioni. Ad esempio, se si sceglie di eseguire un'automazione in cinque (5) Account AWS, che si trovano in quattro (4) Regioni AWS, Systems Manager esegue le automazioni in un totale di 20 coppie account-area. È possibile utilizzare questa opzione per specificare un numero assoluto, ad esempio **2**, in modo che l'automazione venga eseguita solo in due coppie account-regione nello stesso momento. In alternativa, è possibile specificare una percentuale delle coppie account-regione in grado di eseguire l'automazione nello stesso momento. Ad esempio, con 20 coppie account-regione, se si specifica 20%, l'automazione verrà eseguita contemporaneamente in un massimo di cinque (5) coppie account-regione. 
      + Scegliere **targets (destinazioni)** per inserire un numero assoluto di coppie account-regione che possono eseguire contemporaneamente l'automazione.
      + Scegliere **percent (percentuale)** per inserire una percentuale del numero totale di coppie account-regione che possono eseguire contemporaneamente l'automazione.

   1. Nella sezione **Error threshold (Soglia di errore)** scegliere un'opzione:
      + Scegliere **errors (errori)** per inserire un numero assoluto di errori consentiti, raggiunto il quale il servizio di automazione interrompe l'invio dell'automazione alle altre risorse.
      + Scegliere **percent (percentuale)** per inserire la percentuale di errori consentiti, raggiunta la quale il servizio di automazione interrompe l'invio dell'automazione alle altre risorse.

1. Nella sezione **Targets (Destinazioni)** scegliere il modo in cui si desidera definire le risorse di AWS come destinazione in cui si desidera eseguire il servizio di automazione. Queste opzioni sono obbligatorie.

   1. Utilizza l'elenco **Parameter (Parametro)** per scegliere un parametro. Le voci nell'elenco **Parameter (Parametro)** sono determinate dai parametri presenti nel runbook del servizio di automazione selezionato all'inizio di questa procedura. È necessario scegliere un parametro per definire il tipo di risorsa su cui viene eseguito il flusso di lavoro del servizio di automazione. 

   1. Utilizza l'elenco **Targets (Destinazioni)** per scegliere come si desidera definire le risorse come destinazione.

      1. Se è stato deciso di definire le risorse come destinazione mediante i valori dei parametri, inserire il valore del parametro per il parametro selezionato nella sezione **Input parameters (Parametri di input)**.

      1. Se avete scelto di assegnare le risorse utilizzando AWS Resource Groups, scegliete il nome del gruppo dall'elenco **Resource** Group.

      1. Se è stato deciso di definire le risorse come destinazione mediante i tag, inserire la chiave e (facoltativamente) il valore del tag nei campi disponibili. Scegli **Add (Aggiungi)**.

      1. Se desideri eseguire un runbook di automazione su tutte le istanze dell'attuale Account AWS e Regione AWS, scegli **Tutte le** istanze.

1. Nella sezione **Input parameters (Parametri di input)** specifica i parametri obbligatori. Scegli il ruolo del servizio `AWS-SystemsManager-AutomationAdministrationRole` IAM dall'elenco. **AutomationAssumeRole**
**Nota**  
Potrebbe non essere necessario scegliere alcune delle opzioni nella sezione **Input parameters (Inserisci Parametri)**. Ciò è dovuto al fatto che le risorse sono state definite come destinazione in più regioni e account mediante i tag o un gruppo di risorse. Ad esempio, se hai scelto il `AWS-RestartEC2Instance` runbook, non è necessario specificare o scegliere l'istanza IDs nella sezione **Parametri di input**. Il servizio di automazione individua le istanze da riavviare utilizzando i tag specificati. 

1. (Facoltativo) Scegliete un CloudWatch allarme da applicare all'automazione per il monitoraggio. Per collegare un CloudWatch allarme alla tua automazione, il responsabile IAM che avvia l'automazione deve disporre dell'autorizzazione per l'`iam:createServiceLinkedRole`azione. Per ulteriori informazioni sugli CloudWatch allarmi, consulta [Usare gli CloudWatch allarmi Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html). Se si attiva l'allarme, l'automazione viene annullata e qualsiasi fase `OnCancel` definita viene eseguita. Se lo utilizzi AWS CloudTrail, vedrai la chiamata API nella tua traccia.

1. Utilizza le opzioni nella sezione **Rate control** per limitare il numero di AWS risorse che possono eseguire l'automazione all'interno di ciascuna coppia account-regione. 

   Nella sezione **Concurrency (Simultaneità)** scegliere un'opzione: 
   + Scegliere **Targets (Destinazioni)** per inserire un numero assoluto di destinazioni che possono eseguire contemporaneamente il flusso di lavoro del servizio di automazione.
   + Scegliere **Percentage (Percentuale)** per inserire la percentuale della serie di destinazioni che può eseguire contemporaneamente il flusso di lavoro del servizio di automazione.

1. Nella sezione **Error threshold (Soglia di errore)**. scegliere un'opzione:
   + Scegliere **errors (errori)** per inserire un numero assoluto di errori consentiti, raggiunto il quale il servizio di automazione interrompe l'invio del flusso di lavoro alle altre risorse.
   + Scegli **percentage (percentuale)** per inserire una percentuale di errori consentiti, raggiunta la quale il servizio di automazione interrompe l'invio del flusso di lavoro alle altre risorse.

1. Scegliere **Execute (Esegui)**.

Una volta completata l'esecuzione di un'automazione, è possibile rieseguirla con gli stessi parametri o con parametri modificati. Per ulteriori informazioni, consulta [Ripetizione delle esecuzioni di automazione](automation-rerun-executions.md).

## Esecuzione di un'automazione in più Regioni e account (riga di comando)
<a name="multiple-cli"></a>

La procedura seguente descrive come utilizzare AWS CLI (su Linux o Windows) o AWS Strumenti per PowerShell eseguire un'automazione in più regioni e account dall'account di gestione dell'automazione.

**Prima di iniziare**  
Prima di completare la procedura seguente, prendi nota delle informazioni riportate di seguito:
+ Account AWS IDs o OUs dove desideri eseguire l'automazione.
+ [Regioni supportate da Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) dove si desidera eseguire l'automazione.
+ La chiave tag e il valore di tag, oppure il nome del gruppo di risorse, in cui eseguire l'automazione.

**Per eseguire un'automazione in più regioni e account**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Utilizzare il formato seguente per creare un comando per eseguire un'automazione in più regioni e account. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

   ```
   aws ssm start-automation-execution \
           --document-name runbook name \
           --parameters AutomationAssumeRole=arn:aws:iam::management account ID:role/AWS-SystemsManager-AutomationAdministrationRole \
           --target-parameter-name parameter name \
           --targets Key=tag key,Values=value \
           --target-locations Accounts=account ID,account ID 2,Regions=Region,Region 2,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
   ```

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

   ```
   aws ssm start-automation-execution ^
           --document-name runbook name ^
           --parameters AutomationAssumeRole=arn:aws:iam::management account ID:role/AWS-SystemsManager-AutomationAdministrationRole ^
           --target-parameter-name parameter name ^
           --targets Key=tag key,Values=value ^
           --target-locations Accounts=account ID,account ID 2,Regions=Region,Region 2,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
       $Targets.Key = "tag key"
       $Targets.Values = "value"
       
       Start-SSMAutomationExecution `
           -DocumentName "runbook name" `
           -Parameter @{
           "AutomationAssumeRole"="arn:aws:iam::management account ID:role/AWS-SystemsManager-AutomationAdministrationRole" } `
           -TargetParameterName "parameter name" `
           -Target $Targets `
           -TargetLocation @{
           "Accounts"="account ID","account ID 2";
           "Regions"="Region","Region 2";
           "ExecutionRoleName"="AWS-SystemsManager-AutomationExecutionRole" }
   ```

------

**Esempi: esecuzione di un'automazione in più Regioni e account**  
Di seguito sono riportati alcuni esempi che dimostrano come utilizzare AWS CLI ed PowerShell eseguire automazioni in più account e regioni con un solo comando.

   **Esempio 1**: questo esempio riavvia le istanze EC2 in tre regioni di un'intera organizzazione. AWS Organizations Ciò si ottiene prendendo di mira l'ID root dell'organizzazione e includendo il figlio. OUs

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

   ```
   aws ssm start-automation-execution \
           --document-name "AWS-RestartEC2Instance" \
           --target-parameter-name InstanceId \
           --targets '[{"Key":"AWS::EC2::Instance","Values":["*"]}]' \
           --target-locations '[{
               "Accounts": ["r-example"],
               "IncludeChildOrganizationUnits": true,
               "Regions": ["us-east-1", "us-east-2", "us-west-2"]
           }]'
   ```

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

   ```
   aws ssm start-automation-execution \
           --document-name "AWS-RestartEC2Instance" ^
           --target-parameter-name InstanceId ^
           --targets '[{"Key":"AWS::EC2::Instance","Values":["*"]}]' ^
           --target-locations '[{
               "Accounts": ["r-example"],
               "IncludeChildOrganizationUnits": true,
               "Regions": ["us-east-1", "us-east-2", "us-west-2"]
           }]'
   ```

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

   ```
   Start-SSMAutomationExecution `
           -DocumentName "AWS-RestartEC2Instance" `
           -TargetParameterName "InstanceId" `
           -Targets '[{"Key":"AWS::EC2::Instance","Values":["*"]}]'
           -TargetLocation @{
               "Accounts"="r-example";
               "Regions"="us-east-1", "us-east-2", "us-west-2";
               "IncludeChildOrganizationUnits"=true}
   ```

------

   **Esempio 2**: questo esempio riavvia istanze EC2 specifiche in diversi account e regioni.
**Nota**  
L'`TargetLocationMaxConcurrency`opzione è disponibile utilizzando AWS CLI e AWS SDKs.

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

   ```
   aws ssm start-automation-execution \
           --document-name "AWS-RestartEC2Instance" \
           --target-parameter-name InstanceId \
           --target-locations '[{
               "Accounts": ["123456789012"],
               "Targets": [{
                   "Key":"ParameterValues",
                   "Values":["i-02573cafcfEXAMPLE", "i-0471e04240EXAMPLE"]
               }],
               "TargetLocationMaxConcurrency": "100%",
               "Regions": ["us-east-1"]
           }, {
               "Accounts": ["987654321098"],
               "Targets": [{
                   "Key":"ParameterValues",
                   "Values":["i-07782c72faEXAMPLE"]
               }],
               "TargetLocationMaxConcurrency": "100%",
               "Regions": ["us-east-2"]
           }]'
   ```

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

   ```
   aws ssm start-automation-execution ^
           --document-name "AWS-RestartEC2Instance" ^
           --target-parameter-name InstanceId ^
           --target-locations '[{
               "Accounts": ["123456789012"],
               "Targets": [{
                   "Key":"ParameterValues",
                   "Values":["i-02573cafcfEXAMPLE", "i-0471e04240EXAMPLE"]
               }],
               "TargetLocationMaxConcurrency": "100%",
               "Regions": ["us-east-1"]
           }, {
               "Accounts": ["987654321098"],
               "Targets": [{
                   "Key":"ParameterValues",
                   "Values":["i-07782c72faEXAMPLE"]
               }],
               "TargetLocationMaxConcurrency": "100%",
               "Regions": ["us-east-2"]
           }]'
   ```

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

   ```
   Start-SSMAutomationExecution `
           -DocumentName "AWS-RestartEC2Instance" `
           -TargetParameterName "InstanceId" `
           -Targets '[{"Key":"AWS::EC2::Instance","Values":["*"]}]'
           -TargetLocation @({
               "Accounts"="123456789012",
               "Targets"= @{
                   "Key":"ParameterValues",
                   "Values":["i-02573cafcfEXAMPLE", "i-0471e04240EXAMPLE"]
               },
               "TargetLocationMaxConcurrency"="100%",
               "Regions"=["us-east-1"]
           }, {
               "Accounts"="987654321098",
               "Targets": @{
                   "Key":"ParameterValues",
                   "Values":["i-07782c72faEXAMPLE"]
               },
               "TargetLocationMaxConcurrency": "100%",
               "Regions"=["us-east-2"]
           })
   ```

------

   **Esempio 3**: questo esempio dimostra la specificazione di più regioni Account AWS e in cui l'automazione deve essere eseguita utilizzando l'`--target-locations-url`opzione. Il valore di questa opzione deve essere un file JSON in un [URL Amazon S3 prefirmato](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html) accessibile pubblicamente.
**Nota**  
`--target-locations-url`è disponibile quando si utilizza and. AWS CLI AWS SDKs

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

   ```
   aws ssm start-automation-execution \
       --document-name "MyCustomAutomationRunbook" \
       --target-locations-url "https://amzn-s3-demo-bucket.s3.amazonaws.com/target-locations.json"
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name "MyCustomAutomationRunbook" ^
       --target-locations-url "https://amzn-s3-demo-bucket.s3.amazonaws.com/target-locations.json"
   ```

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

   ```
   Start-SSMAutomationExecution `
       -DocumentName "MyCustomAutomationRunbook" `
       -TargetLocationsUrl "https://amzn-s3-demo-bucket.s3.amazonaws.com/target-locations.json"
   ```

------

   Contenuto esemplificativo per il file JSON:

   ```
   [
   { 
            "Accounts": [ "123456789012", "987654321098", "456789123012" ],
            "ExcludeAccounts": [ "111222333444", "999888444666" ],
            "ExecutionRoleName": "MyAutomationExecutionRole",
            "IncludeChildOrganizationUnits": true,
            "Regions": [ "us-east-1", "us-west-2", "ap-south-1", "ap-northeast-1" ],
            "Targets": ["Key": "AWS::EC2::Instance", "Values": ["i-2"]],
            "TargetLocationMaxConcurrency": "50%",
            "TargetLocationMaxErrors": "10",
            "TargetsMaxConcurrency": "20",
            "TargetsMaxErrors": "12"
    }
   ]
   ```

   **Esempio 4**: questo esempio riavvia le istanze EC2 negli account `123456789012` e `987654321098`, che si trovano nelle Regioni `us-east-2` e `us-west-1`. Le istanze devono essere contrassegnate con il valore `Env-PROD` della coppia di chiavi di tag.

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

   ```
   aws ssm start-automation-execution \
           --document-name AWS-RestartEC2Instance \
           --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole \
           --target-parameter-name InstanceId \
           --targets Key=tag:Env,Values=PROD \
           --target-locations Accounts=123456789012,987654321098,Regions=us-east-2,us-west-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
   ```

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

   ```
   aws ssm start-automation-execution ^
           --document-name AWS-RestartEC2Instance ^
           --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole ^
           --target-parameter-name InstanceId ^
           --targets Key=tag:Env,Values=PROD ^
           --target-locations Accounts=123456789012,987654321098,Regions=us-east-2,us-west-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
       $Targets.Key = "tag:Env"
       $Targets.Values = "PROD"
       
       Start-SSMAutomationExecution `
           -DocumentName "AWS-RestartEC2Instance" `
           -Parameter @{
           "AutomationAssumeRole"="arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole" } `
           -TargetParameterName "InstanceId" `
           -Target $Targets `
           -TargetLocation @{
           "Accounts"="123456789012","987654321098";
           "Regions"="us-east-2","us-west-1";
           "ExecutionRoleName"="AWS-SystemsManager-AutomationExecutionRole" }
   ```

------

   **Esempio 5**: questo esempio riavvia le istanze EC2 negli account `123456789012` e `987654321098`, che si trovano nella Regione `eu-central-1`. Le istanze devono essere membri del gruppo di `prod-instances` AWS risorse.

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

   ```
   aws ssm start-automation-execution \
           --document-name AWS-RestartEC2Instance \
           --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole \
           --target-parameter-name InstanceId \
           --targets Key=ResourceGroup,Values=prod-instances \
           --target-locations Accounts=123456789012,987654321098,Regions=eu-central-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
   ```

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

   ```
   aws ssm start-automation-execution ^
           --document-name AWS-RestartEC2Instance ^
           --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole ^
           --target-parameter-name InstanceId ^
           --targets Key=ResourceGroup,Values=prod-instances ^
           --target-locations Accounts=123456789012,987654321098,Regions=eu-central-1,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
       $Targets.Key = "ResourceGroup"
       $Targets.Values = "prod-instances"
       
       Start-SSMAutomationExecution `
           -DocumentName "AWS-RestartEC2Instance" `
           -Parameter @{
           "AutomationAssumeRole"="arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole" } `
           -TargetParameterName "InstanceId" `
           -Target $Targets `
           -TargetLocation @{
           "Accounts"="123456789012","987654321098";
           "Regions"="eu-central-1";
           "ExecutionRoleName"="AWS-SystemsManager-AutomationExecutionRole" }
   ```

------

   **Esempio 6**: questo esempio riavvia le istanze EC2 nell'unità `ou-1a2b3c-4d5e6c` AWS organizzativa (OU). Le istanze si trovano nelle regioni `us-west-1` e `us-west-2`. Le istanze devono essere membri del gruppo di risorse. `WebServices` AWS 

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

   ```
   aws ssm start-automation-execution \
           --document-name AWS-RestartEC2Instance \
           --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole \
           --target-parameter-name InstanceId \
           --targets Key=ResourceGroup,Values=WebServices \
           --target-locations Accounts=ou-1a2b3c-4d5e6c,Regions=us-west-1,us-west-2,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
   ```

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

   ```
   aws ssm start-automation-execution ^
           --document-name AWS-RestartEC2Instance ^
           --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole ^
           --target-parameter-name InstanceId ^
           --targets Key=ResourceGroup,Values=WebServices ^
           --target-locations Accounts=ou-1a2b3c-4d5e6c,Regions=us-west-1,us-west-2,ExecutionRoleName=AWS-SystemsManager-AutomationExecutionRole
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
       $Targets.Key = "ResourceGroup"
       $Targets.Values = "WebServices"
       
       Start-SSMAutomationExecution `
           -DocumentName "AWS-RestartEC2Instance" `
           -Parameter @{
           "AutomationAssumeRole"="arn:aws:iam::123456789012:role/AWS-SystemsManager-AutomationAdministrationRole" } `
           -TargetParameterName "InstanceId" `
           -Target $Targets `
           -TargetLocation @{
           "Accounts"="ou-1a2b3c-4d5e6c";
           "Regions"="us-west-1";
           "ExecutionRoleName"="AWS-SystemsManager-AutomationExecutionRole" }
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

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

   ```
   {
           "AutomationExecutionId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
       }
   ```

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

   ```
   {
           "AutomationExecutionId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
       }
   ```

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

   ```
   4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
   ```

------

1. Eseguire il comando seguente per visualizzare i dettagli relativi all'automazione. *automation execution ID*Sostituiscili con le tue informazioni.

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

   ```
   aws ssm describe-automation-executions \
           --filters Key=ExecutionId,Values=automation execution ID
   ```

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

   ```
   aws ssm describe-automation-executions ^
           --filters Key=ExecutionId,Values=automation execution ID
   ```

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

   ```
   Get-SSMAutomationExecutionList | `
           Where {$_.AutomationExecutionId -eq "automation execution ID"}
   ```

------

1. Eseguire il comando seguente per visualizzare i dettagli relativi allo stato di avanzamento dell'automazione.

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

   ```
   aws ssm get-automation-execution \
           --automation-execution-id 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
   ```

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

   ```
   aws ssm get-automation-execution ^
           --automation-execution-id 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
   ```

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

   ```
   Get-SSMAutomationExecution `
           -AutomationExecutionId a4a3c0e9-7efd-462a-8594-01234EXAMPLE
   ```

------
**Nota**  
È inoltre possibile monitorare lo stato dell'automazione nella console. Nell'elenco delle **Esecuzioni di automazione**, scegli l'automazione appena eseguita e quindi scegli la scheda **Fasi di esecuzione**. In questa scheda viene mostrato lo stato delle operazioni di automazione.

**Ulteriori informazioni**  
[Applicazione di patch centralizzata per più account e Regioni con il servizio di Automazione di AWS Systems Manager](https://aws.amazon.com/blogs/mt/centralized-multi-account-and-multi-region-patching-with-aws-systems-manager-automation/)

# Esegui automazioni basate su eventi EventBridge
<a name="running-automations-event-bridge"></a>

Puoi avviare un'automazione specificando un runbook come destinazione di un evento Amazon EventBridge. È possibile avviare le automazioni in base a una pianificazione oppure quando si verifica un determinato evento di sistema di AWS . Ad esempio, supponiamo che tu crei un runbook denominato *BootStrapInstances*che installa il software su un'istanza all'avvio di un'istanza. Per specificare il *BootStrapInstances*runbook (e l'automazione corrispondente) come destinazione di un EventBridge evento, devi prima creare una nuova regola. EventBridge Ecco un esempio di regola: **Nome servizio**: EC2, **Tipo di evento**: Notifica variazione stato istanza EC2, **Stati specifici**: in esecuzione, **Qualsiasi istanza**. Quindi utilizzate le seguenti procedure per specificare il *BootStrapInstances*runbook come destinazione dell'evento utilizzando la EventBridge console e AWS Command Line Interface ()AWS CLI. All'avvio di una nuova istanza, il sistema eseguirà l'automazione e installerà il software.

Per ulteriori informazioni sulla creazione di runbook, consulta [Creazione di runbook personalizzati](automation-documents.md).

## Creazione di un EventBridge evento che utilizza un runbook (console)
<a name="automation-cwe-target-console"></a>

Utilizzate la procedura seguente per configurare un runbook come destinazione di un EventBridge evento.

**Per configurare un runbook come destinazione di una regola di evento EventBridge**

1. Apri la EventBridge console Amazon all'indirizzo [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

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

1. Scegli **Crea regola**.

1. Inserisci un nome e una descrizione per la regola.

   Una regola non può avere lo stesso nome di un'altra regola nella stessa Regione e sullo stesso router di eventi.

1. Per **Router di eventi**, seleziona il router di eventi che desideri associare a questa regola. Se desideri che questa regola risponda agli eventi corrispondenti generati dai tuoi Account AWS, seleziona **Predefinito**. Quando un Servizio AWS utente del tuo account emette un evento, questo passa sempre al bus eventi predefinito del tuo account.

1. Scegli come attivare la regola.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/running-automations-event-bridge.html)

1. Scegli **Next (Successivo)**.

1. Per **Tipi di destinazione**, scegli **servizio AWS **.

1. Per **Seleziona destinazione**, scegli **Automazione di Systems Manager**. 

1. Per **Documento**, scegli un runbook da usare quando viene chiamata la destinazione.

1. Nella sezione **Configura parametri automazione** non modificare i valori predefiniti dei parametri (se disponibili) oppure inserisci i valori desiderati. 
**Nota**  
Per creare una destinazione, è necessario specificare un valore per ciascun parametro obbligatorio. In caso contrario, la regola verrà creata dal sistema ma non verrà eseguita.

1. Per molti tipi di target, EventBridge sono necessarie le autorizzazioni per inviare eventi alla destinazione. In questi casi, EventBridge può creare il ruolo IAM necessario per l'esecuzione della regola. Esegui una delle seguenti operazioni:
   + Per creare un ruolo IAM automaticamente, seleziona **Crea un nuovo ruolo per questa risorsa specifica**.
   + Per utilizzare un ruolo IAM creato in precedenza, seleziona **Utilizza un ruolo esistente** e seleziona il ruolo esistente dal menu a discesa. Tieni presente che potresti dover aggiornare la policy di fiducia da includere nel tuo ruolo IAM EventBridge. Di seguito è riportato un esempio:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "events.amazonaws.com",
                       "ssm.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Scegli **Next (Successivo)**.

1. (Facoltativo) Inserire uno o più tag per la regola. Per ulteriori informazioni, consulta [Tagging Your Amazon EventBridge Resources](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-tagging.html) nella *Amazon EventBridge User Guide*.

1. Scegli **Next (Successivo)**.

1. Rivedi i dettagli della regola e scegli **Crea regola**.

## Crea un EventBridge evento che utilizza un runbook (riga di comando)
<a name="automation-cwe-target-commandline"></a>

La procedura seguente descrive come utilizzare AWS CLI (su Linux o Windows) o AWS Strumenti per PowerShell creare una regola di EventBridge evento e configurare un runbook come destinazione.

**Per configurare un runbook come destinazione di una regola di evento EventBridge**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Crea un comando per specificare una nuova regola di EventBridge evento. Sostituisci ogni *example resource placeholder* con le tue informazioni.

   *Attivazioni basate su una pianificazione*

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

   ```
   aws events put-rule \
   --name "rule name" \
   --schedule-expression "cron or rate expression"
   ```

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

   ```
   aws events put-rule ^
   --name "rule name" ^
   --schedule-expression "cron or rate expression"
   ```

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

   ```
   Write-CWERule `
   -Name "rule name" `
   -ScheduleExpression "cron or rate expression"
   ```

------

   L'esempio seguente crea una regola di EventBridge evento che inizia ogni giorno alle 9:00 (UTC).

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

   ```
   aws events put-rule \
   --name "DailyAutomationRule" \
   --schedule-expression "cron(0 9 * * ? *)"
   ```

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

   ```
   aws events put-rule ^
   --name "DailyAutomationRule" ^
   --schedule-expression "cron(0 9 * * ? *)"
   ```

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

   ```
   Write-CWERule `
   -Name "DailyAutomationRule" `
   -ScheduleExpression "cron(0 9 * * ? *)"
   ```

------

   *Attivazioni basate su un evento*

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

   ```
   aws events put-rule \
   --name "rule name" \
   --event-pattern "{\"source\":[\"aws.service\"],\"detail-type\":[\"service event detail type\"]}"
   ```

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

   ```
   aws events put-rule ^
   --name "rule name" ^
   --event-pattern "{\"source\":[\"aws.service\"],\"detail-type\":[\"service event detail type\"]}"
   ```

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

   ```
   Write-CWERule `
   -Name "rule name" `
   -EventPattern '{"source":["aws.service"],"detail-type":["service event detail type"]}'
   ```

------

   L'esempio seguente crea una regola di EventBridge evento che si avvia quando un'istanza EC2 nella regione cambia stato.

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

   ```
   aws events put-rule \
   --name "EC2InstanceStateChanges" \
   --event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
   ```

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

   ```
   aws events put-rule ^
   --name "EC2InstanceStateChanges" ^
   --event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
   ```

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

   ```
   Write-CWERule `
   -Name "EC2InstanceStateChanges" `
   -EventPattern '{"source":["aws.ec2"],"detail-type":["EC2 Instance State-change Notification"]}'
   ```

------

   Il comando restituisce dettagli per la nuova EventBridge regola simili ai seguenti.

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

   ```
   {
   "RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
   }
   ```

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

   ```
   {
   "RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
   }
   ```

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

   ```
   arn:aws:events:us-east-1:123456789012:rule/EC2InstanceStateChanges
   ```

------

1. Create un comando per specificare un runbook come destinazione della regola EventBridge evento creata nel passaggio 2. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

   ```
   aws events put-targets \
   --rule rule name \
   --targets '{"Arn": " arn:aws:ssm:region:account ID:automation-definition/runbook name","Input":"{\"Message\":[\"{\\\"Key\\\":\\\"key name\\\",\\\"Values\\\":[\\\"value\\\"]}\"]}","Id": "target ID","RoleArn": "arn:aws:iam::123456789012:role/service-role/EventBridge service role"}'
   ```

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

   ```
   aws events put-targets ^
   --rule rule name ^
   --targets '{"Arn": "arn:aws:ssm:region:account ID:automation-definition/runbook name","Input":"{\"Message\":[\"{\\\"Key\\\":\\\"key name\\\",\\\"Values\\\":[\\\"value\\\"]}\"]}","Id": "target ID","RoleArn": "arn:aws:iam::123456789012:role/service-role/EventBridge service role"}'
   ```

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

   ```
   $Target = New-Object Amazon.CloudWatchEvents.Model.Target
   $Target.Id = "target ID"
   $Target.Arn = "arn:aws:ssm:region:account ID:automation-definition/runbook name"
   $Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/EventBridge service role"
   $Target.Input = '{"input parameter":["value"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}'
   
   Write-CWETarget `
   -Rule "rule name" `
   -Target $Target
   ```

------

   L'esempio seguente crea un target di EventBridge evento che avvia l'ID di istanza specificato utilizzando il `AWS-StartEC2Instance` runbook.

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

   ```
   aws events put-targets \
   --rule DailyAutomationRule \
   --targets '{"Arn": "arn:aws:ssm:region:*:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
   ```

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

   ```
   aws events put-targets ^
   --rule DailyAutomationRule ^
   --targets '{"Arn": "arn:aws:ssm:region:*:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
   ```

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

   ```
   $Target = New-Object Amazon.CloudWatchEvents.Model.Target
   $Target.Id = "Target1"
   $Target.Arn = "arn:aws:ssm:region:*:automation-definition/AWS-StartEC2Instance"
   $Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"
   $Target.Input = '{"InstanceId":["i-02573cafcfEXAMPLE"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}'
   
   Write-CWETarget `
   -Rule "DailyAutomationRule" `
   -Target $Target
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

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

   ```
   {
   "FailedEntries": [],
   "FailedEntryCount": 0
   }
   ```

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

   ```
   {
   "FailedEntries": [],
   "FailedEntryCount": 0
   }
   ```

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

   Non viene prodotto alcun output se il comando ha esito positivo per. PowerShell

------

# Esegui un'automazione passo dopo passo
<a name="automation-working-executing-manually"></a>

Le seguenti procedure descrivono come utilizzare la AWS Systems Manager console e AWS Command Line Interface (AWS CLI) eseguire un'automazione utilizzando la modalità di esecuzione manuale. Con questa modalità manuale, l'automazione viene avviata in stato *Waiting (Attesa)* e torna in stato *Waiting (Attesa)* nelle pause tra una fase e l'altra. Ciò consente di controllare l'avanzamento dell'automazione, il che si dimostra utile se si deve verificare il risultato di una fase prima di continuare.

L'automazione viene eseguita nel contesto dell'utente corrente. Ciò significa che non è necessario configurare autorizzazioni IAM aggiuntive a condizione di disporre dell'autorizzazione necessaria per eseguire il runbook e qualsiasi operazione chiamata dal runbook. Se disponi delle autorizzazioni dell'amministratore in IAM, disponi già dell'autorizzazione per eseguire l'automazione.

## Procedura dettagliata per l'esecuzione di un'automazione (console)
<a name="automation-working-executing-manually-console"></a>

La procedura seguente mostra come utilizzare la console Systems Manager per eseguire manualmente un'automazione passo dopo passo.

**Per eseguire un'automazione passo dopo passo**

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 **Automazione**, quindi **Esegui automazione**.

1. Nell'elenco **Documento di automazione**, scegli un runbook. Scegli una o più opzioni nel pannello **Categorie di documenti** per filtrare i documenti SSM in base al loro scopo. Per visualizzare un runbook di cui si è proprietari, scegliere la scheda **Posseduto da me**. Per visualizzare un runbook condiviso con l'account, scegliere la scheda **Condiviso con me**. Per visualizzare tutti i runbook, scegliere la scheda **Tutti i documenti**.
**Nota**  
È possibile visualizzare informazioni su un runbook scegliendo il nome del runbook.

1. Nella sezione **Dettagli documento** verifica che l'opzione **Versione documento** sia impostata sulla versione che si desidera eseguire. Il sistema include le seguenti opzioni di versione: 
   + **Versione predefinita al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e viene assegnata una nuova versione predefinita.
   + **Ultima versione al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e si desidera che venga eseguita la versione aggiornata più di recente.
   + **1 (predefinita)**: scegli questa opzione per eseguire la prima versione del documento (quella predefinita).

1. Scegli **Next (Successivo)**.

1. Nella sezione **Execution Mode (Modalità esecuzione)**, scegliere **Manual Execution (Esecuzione manuale)**.

1. Nella sezione **Input parameters (Parametri di input)** specifica i parametri obbligatori. Facoltativamente, puoi scegliere un ruolo di servizio IAM dall'**AutomationAssumeRole**elenco.

1. Scegliere **Execute (Esegui)**. 

1. Scegliere **Execute this step (Esegui questa fase)** per avviare la prima fase dell'automazione. L'automazione procede con la fase uno e si interrompe prima di eseguire le fasi di automazione successive specificate nel runbook scelto nella fase 3 di questa procedura. Se il runbook include più fasi, è necessario selezionare **Execute this step (Esegui questa fase)** per ogni fase per consentire all'automazione di continuare. Ogni volta che si sceglie **Execute this step (Esegui questa fase)** l'operazione viene eseguita.
**Nota**  
La console visualizza lo stato dell'automazione. Se l'automazione non è in grado di eseguire una fase, consulta [Risoluzione dei problemi dl servizio di automazione di Systems Manager](automation-troubleshooting.md).

1. Dopo aver completato tutte le fasi indicate nel runbook, scegliere **Complete and view results (Completa e visualizza i risultati)** per completare l'automazione e visualizzare i risultati.

Una volta completata l'esecuzione di automazione, è possibile ripetere l'esecuzione con gli stessi parametri o con quelli modificati. Per ulteriori informazioni, consulta [Ripetizione delle esecuzioni di automazione](automation-rerun-executions.md).

## Procedura dettagliata per l'esecuzione di un'automazione (riga di comando)
<a name="automation-working-executing-manually-commandline"></a>

La procedura seguente descrive come utilizzare AWS CLI (su Linux o Windows) o AWS Strumenti per PowerShell eseguire manualmente un'automazione passo dopo passo. macOS

**Per eseguire un'automazione passo dopo passo**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Esegui il comando seguente per avviare un'automazione manuale. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

   ```
   aws ssm start-automation-execution \
       --document-name runbook name \
       --mode Interactive \
       --parameters runbook parameters
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name runbook name ^
       --mode Interactive ^
       --parameters runbook parameters
   ```

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

   ```
   Start-SSMAutomationExecution `
       -DocumentName runbook name `
       -Mode Interactive `
       -Parameter runbook parameters
   ```

------

   Di seguito è riportato un esempio di utilizzo del runbook `AWS-RestartEC2Instance` per riavviare l'istanza EC2 specificata.

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

   ```
   aws ssm start-automation-execution \
       --document-name "AWS-RestartEC2Instance" \
       --mode Interactive \
       --parameters "InstanceId=i-02573cafcfEXAMPLE"
   ```

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

   ```
   aws ssm start-automation-execution ^
       --document-name "AWS-RestartEC2Instance" ^
       --mode Interactive ^
       --parameters "InstanceId=i-02573cafcfEXAMPLE"
   ```

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

   ```
   Start-SSMAutomationExecution `
       -DocumentName AWS-RestartEC2Instance `
       -Mode Interactive 
       -Parameter @{"InstanceId"="i-02573cafcfEXAMPLE"}
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

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

   ```
   {
       "AutomationExecutionId": "ba9cd881-1b36-4d31-a698-0123456789ab"
   }
   ```

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

   ```
   {
       "AutomationExecutionId": "ba9cd881-1b36-4d31-a698-0123456789ab"
   }
   ```

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

   ```
   ba9cd881-1b36-4d31-a698-0123456789ab
   ```

------

1. Esegui il comando seguente quando hai tutto pronto per avviare la prima fase dell'automazione. Sostituisci ogni *example resource placeholder* con le tue informazioni. L'automazione procede con la fase uno e si interrompe prima di eseguire le fasi successive specificate nel runbook scelto nella fase 1 di questa procedura. Se il runbook dispone di più fasi, è necessario eseguire il comando seguente per ogni fase affinché proceda l'automazione.

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

   ```
   aws ssm send-automation-signal \
       --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab \
       --signal-type StartStep \
       --payload StepName="stopInstances"
   ```

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

   ```
   aws ssm send-automation-signal ^
       --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab ^
       --signal-type StartStep ^
       --payload StepName="stopInstances"
   ```

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

   ```
   Send-SSMAutomationSignal `
       -AutomationExecutionId ba9cd881-1b36-4d31-a698-0123456789ab `
       -SignalType StartStep 
       -Payload @{"StepName"="stopInstances"}
   ```

------

   Se il comando va a buon fine, non viene generato output.

1. Esegui il comando seguente per recuperare lo stato di ciascuna esecuzione di fase nell'automazione.

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

   ```
   aws ssm describe-automation-step-executions \
       --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab
   ```

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

   ```
   aws ssm describe-automation-step-executions ^
       --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab
   ```

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

   ```
   Get-SSMAutomationStepExecution `
       -AutomationExecutionId ba9cd881-1b36-4d31-a698-0123456789ab
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

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

   ```
   {
       "StepExecutions": [
           {
               "StepName": "stopInstances",
               "Action": "aws:changeInstanceState",
               "ExecutionStartTime": 1557167178.42,
               "ExecutionEndTime": 1557167220.617,
               "StepStatus": "Success",
               "Inputs": {
                   "DesiredState": "\"stopped\"",
                   "InstanceIds": "[\"i-02573cafcfEXAMPLE\"]"
               },
               "Outputs": {
                   "InstanceStates": [
                       "stopped"
                   ]
               },
               "StepExecutionId": "654243ba-71e3-4771-b04f-0123456789ab",
               "OverriddenParameters": {},
               "ValidNextSteps": [
                   "startInstances"
               ]
           },
           {
               "StepName": "startInstances",
               "Action": "aws:changeInstanceState",
               "ExecutionStartTime": 1557167273.754,
               "ExecutionEndTime": 1557167480.73,
               "StepStatus": "Success",
               "Inputs": {
                   "DesiredState": "\"running\"",
                   "InstanceIds": "[\"i-02573cafcfEXAMPLE\"]"
               },
               "Outputs": {
                   "InstanceStates": [
                       "running"
                   ]
               },
               "StepExecutionId": "8a4a1e0d-dc3e-4039-a599-0123456789ab",
               "OverriddenParameters": {}
           }
       ]
   }
   ```

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

   ```
   {
       "StepExecutions": [
           {
               "StepName": "stopInstances",
               "Action": "aws:changeInstanceState",
               "ExecutionStartTime": 1557167178.42,
               "ExecutionEndTime": 1557167220.617,
               "StepStatus": "Success",
               "Inputs": {
                   "DesiredState": "\"stopped\"",
                   "InstanceIds": "[\"i-02573cafcfEXAMPLE\"]"
               },
               "Outputs": {
                   "InstanceStates": [
                       "stopped"
                   ]
               },
               "StepExecutionId": "654243ba-71e3-4771-b04f-0123456789ab",
               "OverriddenParameters": {},
               "ValidNextSteps": [
                   "startInstances"
               ]
           },
           {
               "StepName": "startInstances",
               "Action": "aws:changeInstanceState",
               "ExecutionStartTime": 1557167273.754,
               "ExecutionEndTime": 1557167480.73,
               "StepStatus": "Success",
               "Inputs": {
                   "DesiredState": "\"running\"",
                   "InstanceIds": "[\"i-02573cafcfEXAMPLE\"]"
               },
               "Outputs": {
                   "InstanceStates": [
                       "running"
                   ]
               },
               "StepExecutionId": "8a4a1e0d-dc3e-4039-a599-0123456789ab",
               "OverriddenParameters": {}
           }
       ]
   }
   ```

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

   ```
   Action: aws:changeInstanceState
   ExecutionEndTime     : 5/6/2019 19:45:46
   ExecutionStartTime   : 5/6/2019 19:45:03
   FailureDetails       : 
   FailureMessage       : 
   Inputs               : {[DesiredState, "stopped"], [InstanceIds, ["i-02573cafcfEXAMPLE"]]}
   IsCritical           : False
   IsEnd                : False
   MaxAttempts          : 0
   NextStep             : 
   OnFailure            : 
   Outputs              : {[InstanceStates, Amazon.Runtime.Internal.Util.AlwaysSendList`1[System.String]]}
   OverriddenParameters : {}
   Response             : 
   ResponseCode         : 
   StepExecutionId      : 8fcc9641-24b7-40b3-a9be-0123456789ab
   StepName             : stopInstances
   StepStatus           : Success
   TimeoutSeconds       : 0
   ValidNextSteps       : {startInstances}
   ```

------

1. Esegui il comando seguente per completare l'automazione al termine di tutte le fasi specificate all'interno del runbook scelto. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

   ```
   aws ssm stop-automation-execution \
       --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab \
       --type Complete
   ```

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

   ```
   aws ssm stop-automation-execution ^
       --automation-execution-id ba9cd881-1b36-4d31-a698-0123456789ab ^
       --type Complete
   ```

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

   ```
   Stop-SSMAutomationExecution `
       -AutomationExecutionId ba9cd881-1b36-4d31-a698-0123456789ab `
       -Type Complete
   ```

------

   Se il comando va a buon fine, non viene generato output.

# Pianificazione di automazioni con associazioni State Manager
<a name="scheduling-automations-state-manager-associations"></a>

È possibile avviare un'automazione creando un'associazione State Manager con un runbook. State Manager è uno strumento di AWS Systems Manager. Creando un'State Managerassociazione con un runbook, puoi indirizzare diversi tipi di AWS risorse. Ad esempio, è possibile creare associazioni che impongono lo stato desiderato a una AWS risorsa, tra cui:
+ assegna un ruolo Systems Manager alle istanze di Amazon Elastic Compute Cloud (Amazon EC2) per renderle *managed instances* (istanze gestite);
+ applica le regole di ingresso e di uscita desiderate per un gruppo di sicurezza;
+ crea o elimina i backup di Amazon DynamoDB;
+ crea o elimina gli snapshot di Amazon Elastic Block Store (Amazon EBS);
+ Disattiva le autorizzazioni di lettura e scrittura per i bucket Amazon Simple Storage Service (Amazon S3);
+ avvia, riavvia o arresta le istanze gestite e le istanze di Amazon Relational Database Service (Amazon RDS);
+ applicare patch a Linux, macOS e alla finestra AMIs;

Utilizzate le seguenti procedure per creare un'State Managerassociazione che esegua un'automazione utilizzando la AWS Systems Manager console e AWS Command Line Interface (AWS CLI). Per informazioni generali sulle associazioni e informazioni sulla creazione di un'associazione che utilizza un documento SSM `Command` o un documento `Policy`, consulta [Creazione di associazioni](state-manager-associations-creating.md).

**Prima di iniziare**  
Tieni presente le informazioni importanti seguenti prima di eseguire un'automazione con State Manager:
+ Prima di creare un'associazione che utilizza un runbook, verifica di aver configurato le autorizzazioni per Automazione, uno strumento di AWS Systems Manager. Per ulteriori informazioni, consulta [Configurazione del servizio di automazione](automation-setup.md).
+ Le associazioni di State Manager che utilizzano i runbook contribuiscono al raggiungimento del numero massimo per l'esecuzione di automazioni simultanee nell' Account AWS. Il numero massimo di esecuzioni simultanee del servizio di automazione è 100. Per informazioni, 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*.
+ Quando si esegue un'automazione, State Manager non registra le operazioni API avviate dall'automazione in AWS CloudTrail.
+ Systems Manager crea automaticamente un ruolo collegato al servizio affinché State Manager disponga dell'autorizzazione per chiamare le operazioni API del servizio di automazione di Systems Manager. Se lo desideri, puoi creare tu stesso il ruolo collegato al servizio eseguendo il seguente comando da o. AWS CLI AWS Strumenti per PowerShell

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

  ```
  aws iam create-service-linked-role \
  --aws-service-name ssm.amazonaws.com
  ```

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

  ```
  aws iam create-service-linked-role ^
  --aws-service-name ssm.amazonaws.com
  ```

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

  ```
  New-IAMServiceLinkedRole `
  -AWSServiceName ssm.amazonaws.com
  ```

------

  Per ulteriori informazioni sui ruoli collegati al servizio, consulta [Utilizzo di ruoli collegati ai servizi per Systems Manager](using-service-linked-roles.md).

## Creazione di un'associazione che esegue un'automazione (console)
<a name="create-automation-association-console"></a>

La procedura seguente descrive come utilizzare la console di Systems Manager per creare un'associazione di State Manager che esegue un'automazione.

**Per creare un'associazione di State Manager che esegue un'automazione**

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, scegliere **State Manager**, quindi **Create association (Crea associazione)**.

1. Nel campo **Name (Nome)**, specifica un nome. Questo passaggio è facoltativo, ma è consigliato.

1. Nell'elenco **Document (Documento)**, scegliere un runbook. Utilizza la barra di ricerca per filtrare per runbook **Document type : Equal : Automation (Tipo documento: Uguale: Automazione)**. È possibile utilizzare i numeri a destra della barra di ricerca per visualizzare ulteriori runbook. 
**Nota**  
È possibile visualizzare informazioni su un runbook scegliendo il nome del runbook.

1. Scegli **Simple execution (Esecuzione semplice)** per eseguire l'automazione su una o più destinazioni specificando l'ID di risorsa per tali destinazioni. Scegli **Rate control** per eseguire l'automazione su una flotta di AWS risorse specificando un'opzione di targeting come tag o. AWS Resource GroupsÈ anche possibile controllare l'operazione dell'automazione nelle risorse specificando la simultaneità e le soglie di errore.

   Se si sceglie **Rate control (Controllo velocità)**, viene visualizzata la sezione **Targets (Destinazioni)**.

1. Nella sezione **Targets (Destinazioni)**, scegliere un metodo per definire le risorse come destinazione.

   1. (Obbligatorio) Nell'elenco **Parameter (Parametro)**, scegliere un parametro. Le voci nell'elenco **Parameter (Parametro)** sono determinate dai parametri presenti nel runbook selezionato all'inizio di questa procedura. Scegliendo un parametro, si definisce il tipo di risorsa su cui viene eseguita l'automazione. 

   1. (Obbligatorio) Nell'elenco **Targets (Destinazioni)**, scegliere un metodo per definire le risorse come destinazione.
      + **Resource Group (Gruppo di risorse)**: scegliere il nome del gruppo dall'elenco **Resource Group (Gruppo di risorse)**. Per ulteriori informazioni sul targeting AWS Resource Groups nei runbook, consulta. [Targeting AWS Resource Groups](running-automations-map-targets.md#target-resource-groups)
      + **Tags (Tag)**: inserire la chiave del tag e, facoltativamente, il valore del tag nei campi disponibili. Scegli **Add (Aggiungi)**. Per ulteriori informazioni sulla definizione dei tag come destinazione nei runbook, consulta [Definizione di un tag come destinazione](running-automations-map-targets.md#target-tags).
      + **Parameter Values (Valori parametro)**: inserire i valori nella sezione **Input parameters (Parametri di input)**. Se specifichi più valori, Systems Manager esegue un'automazione figlio su ciascun valore specificato.

        Supponiamo, ad esempio, che il runbook includa un parametro **InstanceID**. Se definisci i valori del parametro **InstanceID (IDistanza)** come destinazione quando esegui l'automazione, il Systems Manager esegue un'automazione figlio per ogni valore di ID di istanza specificato. L'automazione padre risulta completa quando l'automazione termina l'esecuzione di ciascuna istanza specificata oppure se l'automazione ha esito negativo. È possibile definire come destinazione un massimo di 50 valori di parametro. Per ulteriori informazioni sulla definizione dei valori dei parametri come destinazione nei runbook, vedi [Definizione dei valori di parametro come destinazione](running-automations-map-targets.md#target-parameter-values).

1. Nella sezione **Input parameters (Parametri di input)**, specificare i parametri di input obbligatori.

   Se hai deciso di definire le risorse come destinazione mediante i tag o un gruppo di risorse, potrebbe non essere necessario scegliere alcune delle opzioni nella sezione **Input parameters (Parametri di input)**. **Ad esempio, se avete scelto il `AWS-RestartEC2Instance` runbook e avete scelto di indirizzare le istanze utilizzando i tag, non è necessario specificare o scegliere l'istanza IDs nella sezione Parametri di input.** Il servizio di automazione individua le istanze da riavviare utilizzando i tag specificati. 
**Importante**  
È necessario specificare un ruolo ARN nel **AutomationAssumeRole**campo. State Managerusa il ruolo assume per chiamare Servizi AWS specificato nel runbook ed esegue le associazioni di automazione per tuo conto.

1. Nella sezione **Specify schedule (Specifica pianificazione)**, scegliere **On Schedule (In base a pianificazione)** per eseguire l'associazione a intervalli regolari. Se si sceglie questa opzione, utilizzare le opzioni fornite per creare la pianificazione con le espressioni Cron o della frequenza. Per ulteriori informazioni sulle espressioni Cron e della frequenza per State Manager, consulta [Espressioni Cron e della frequenza per le associazioni](reference-cron-and-rate-expressions.md#reference-cron-and-rate-expressions-association). 
**Nota**  
Le espressioni della frequenza sono il meccanismo di programmazione preferito per le associazioni State Manager che utilizzano i runbook. Le espressioni della frequenza permettono una maggiore flessibilità per l'esecuzione delle associazioni nel caso in cui si raggiunga il numero massimo di automazioni in esecuzione simultaneamente. Con una pianificazione Rate, Systems Manager può riprovare l'automazione subito dopo aver ricevuto la notifica relativa al raggiungimento del numero massimo di automazioni simultanee e alla conseguente limitazione.

   Scegliere **No Schedule (Nessuna pianificazione)** per eseguire l'associazione una sola volta. 

1. (Facoltativo) Nella sezione **Rate Control**, scegliete le opzioni **Concurrency** e **Error threshold** per controllare l'implementazione dell'automazione tra le vostre AWS risorse.

   1. Nella sezione **Concurrency (Simultaneità)** scegliere un'opzione: 
      + Scegliere **Targets (Destinazioni)** per inserire il numero assoluto di destinazioni che può eseguire contemporaneamente il servizio di automazione.
      + Scegliere **Percentage (Percentuale)** per inserire la percentuale della serie di destinazioni che può eseguire contemporaneamente il servizio di automazione.

   1. Nella sezione **Error threshold (Soglia di errore)** scegliere un'opzione:
      + Scegliere **errors (errori)** per inserire il numero assoluto di errori consentiti, raggiunto il quale il servizio di automazione interrompe l'invio dell'automazione alle altre risorse;
      + Scegliere **percentage (percentuale)** per inserire la percentuale di errori consentiti, raggiunta la quale il servizio di automazione interrompe l'invio dell'automazione alle altre risorse.

   Per ulteriori informazioni sull'utilizzo delle destinazioni e dei controlli di velocità con l'automazione, vedi [Esegui operazioni automatizzate su larga scala](running-automations-scale.md).

1. Scegli **Crea associazione**. 
**Importante**  
Quando viene creata un'associazione, questa viene eseguita immediatamente in base alle destinazioni specificate. L'associazione quindi viene eseguita in base all'espressione Cron o della frequenza scelta. Se si sceglie **No schedule (Nessuna pianificazione)**, l'associazione non viene eseguita di nuovo.

## Creazione di un'associazione che esegue un'automazione (riga di comando)
<a name="create-automation-association-cli"></a>

La procedura seguente descrive come utilizzare AWS CLI (su Linux oWindows Server) o AWS Strumenti per PowerShell creare un'State Managerassociazione che esegua un'automazione.

**Prima di iniziare**  
Prima di completare la procedura seguente, assicurati di aver creato un ruolo di servizio IAM contenente le autorizzazioni necessarie per l'esecuzione del runbook e di aver configurato una relazione di attendibilità per Automazione, uno strumento di AWS Systems Manager. Per ulteriori informazioni, consulta [Processo 1: creazione di un ruolo di servizio per il servizio di automazione](automation-setup-iam.md#create-service-role).

**Per creare un'associazione che esegue un'automazione**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Eseguire il comando seguente per visualizzare un elenco di documenti.

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

   ```
   aws ssm list-documents
   ```

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

   ```
   aws ssm list-documents
   ```

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

   ```
   Get-SSMDocumentList
   ```

------

   Prendere nota del nome del runbook che desideri utilizzare per l'associazione.

1. Eseguire il comando seguente per visualizzare i dettagli sul runbook. Nel comando seguente, sostituiscilo *runbook name* con le tue informazioni.

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

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

   Prendere nota di un nome di parametro (ad esempio, `InstanceId`) che si desidera utilizzare per l'opzione `--automation-target-parameter-name`. Questo parametro determina il tipo di risorsa su cui viene eseguita l'automazione.

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

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

   Prendere nota di un nome di parametro (ad esempio, `InstanceId`) che si desidera utilizzare per l'opzione `--automation-target-parameter-name`. Questo parametro determina il tipo di risorsa su cui viene eseguita l'automazione.

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

   ```
   Get-SSMDocumentDescription `
   -Name runbook name
   ```

   Prendere nota di un nome di parametro (ad esempio, `InstanceId`) che si desidera utilizzare per l'opzione `AutomationTargetParameterName`. Questo parametro determina il tipo di risorsa su cui viene eseguita l'automazione.

------

1. Creare un comando che esegue un'automazione utilizzando un'associazione di State Manager. Sostituisci ogni *example resource placeholder* con le tue informazioni.

   *Definizione di destinazioni mediante tag*

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

   ```
   aws ssm create-association \
   --association-name association name \
   --targets Key=tag:key name,Values=value \
   --name runbook name \
   --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \
   --automation-target-parameter-name target parameter \
   --schedule "cron or rate expression"
   ```

**Nota**  
Se create un'associazione utilizzando il AWS CLI, utilizzate il `--targets` parametro per indirizzare le istanze per l'associazione. Non utilizzare il parametro `--instance-id`. Il parametro `--instance-id` è un parametro legacy. 

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

   ```
   aws ssm create-association ^
   --association-name association name ^
   --targets Key=tag:key name,Values=value ^
   --name runbook name ^
   --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^
   --automation-target-parameter-name target parameter ^
   --schedule "cron or rate expression"
   ```

**Nota**  
Se create un'associazione utilizzando il AWS CLI, utilizzate il `--targets` parametro per indirizzare le istanze per l'associazione. Non utilizzare il parametro `--instance-id`. Il parametro `--instance-id` è un parametro legacy. 

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
   $Targets.Key = "tag:key name"
   $Targets.Values = "value"
   
   New-SSMAssociation `
   -AssociationName "association name" `
   -Target $Targets `
   -Name "runbook name" `
   -Parameters @{
   "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole" } `
   -AutomationTargetParameterName "target parameter" `
   -ScheduleExpression "cron or rate expression"
   ```

**Nota**  
Se create un'associazione utilizzando il AWS Strumenti per PowerShell, utilizzate il `Target` parametro per indirizzare le istanze per l'associazione. Non utilizzare il parametro `InstanceId`. Il parametro `InstanceId` è un parametro legacy. 

------

   *Definizione di destinazioni mediante valori di parametro*

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

   ```
   aws ssm create-association \
   --association-name association name \
   --targets Key=ParameterValues,Values=value,value 2,value 3 \
   --name runbook name \
   --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \
   --automation-target-parameter-name target parameter \
   --schedule "cron or rate expression"
   ```

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

   ```
   aws ssm create-association ^
   --association-name association name ^
   --targets Key=ParameterValues,Values=value,value 2,value 3 ^
   --name runbook name ^
   --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^
   --automation-target-parameter-name target parameter ^
   --schedule "cron or rate expression"
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
   $Targets.Key = "ParameterValues"
   $Targets.Values = "value","value 2","value 3"
   
   New-SSMAssociation `
   -AssociationName "association name" `
   -Target $Targets `
   -Name "runbook name" `
   -Parameters @{
   "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole"} `
   -AutomationTargetParameterName "target parameter" `
   -ScheduleExpression "cron or rate expression"
   ```

------

   *Targeting utilizzando AWS Resource Groups*

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

   ```
   aws ssm create-association \
   --association-name association name \
   --targets Key=ResourceGroup,Values=resource group name \
   --name runbook name \
   --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \
   --automation-target-parameter-name target parameter \
   --schedule "cron or rate expression"
   ```

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

   ```
   aws ssm create-association ^
   --association-name association name ^
   --targets Key=ResourceGroup,Values=resource group name ^
   --name runbook name ^
   --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^
   --automation-target-parameter-name target parameter ^
   --schedule "cron or rate expression"
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
   $Targets.Key = "ResourceGroup"
   $Targets.Values = "resource group name"
   
   New-SSMAssociation `
   -AssociationName "association name" `
   -Target $Targets `
   -Name "runbook name" `
   -Parameters @{
   "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole"} `
   -AutomationTargetParameterName "target parameter" `
   -ScheduleExpression "cron or rate expression"
   ```

------

   *Definizione di più account e regioni come destinazione*

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

   ```
   aws ssm create-association \
   --association-name association name \
   --targets Key=ResourceGroup,Values=resource group name \
   --name runbook name \
   --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole \
   --automation-target-parameter-name target parameter \
   --schedule "cron or rate expression" \ 
   --target-locations Accounts=111122223333,444455556666,444455556666,Regions=region,region
   ```

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

   ```
   aws ssm create-association ^
   --association-name association name ^
   --targets Key=ResourceGroup,Values=resource group name ^
   --name runbook name ^
   --parameters AutomationAssumeRole=arn:aws:iam::123456789012:role/RunbookAssumeRole ^
   --automation-target-parameter-name target parameter ^
   --schedule "cron or rate expression" ^ 
   --target-locations Accounts=111122223333,444455556666,444455556666,Regions=region,region
   ```

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

   ```
   $Targets = New-Object Amazon.SimpleSystemsManagement.Model.Target
   $Targets.Key = "ResourceGroup"
   $Targets.Values = "resource group name"
   
   New-SSMAssociation `
   -AssociationName "association name" `
   -Target $Targets `
   -Name "runbook name" `
   -Parameters @{
   "AutomationAssumeRole"="arn:aws:iam::123456789012:role/RunbookAssumeRole"} `
   -AutomationTargetParameterName "target parameter" `
   -ScheduleExpression "cron or rate expression" `
   -TargetLocations @{
       "Accounts"=["111122223333,444455556666,444455556666"],
       "Regions"=["region,region"]
   ```

------

   Il comando restituisce i dettagli per la nuova associazione simili ai seguenti.

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

   ```
   {
   "AssociationDescription": {
       "ScheduleExpression": "cron(0 7 ? * MON *)",
       "Name": "AWS-StartEC2Instance",
       "Parameters": {
           "AutomationAssumeRole": [
               "arn:aws:iam::123456789012:role/RunbookAssumeRole"
           ]
       },
       "Overview": {
           "Status": "Pending",
           "DetailedStatus": "Creating"
       },
       "AssociationId": "1450b4b7-bea2-4e4b-b340-01234EXAMPLE",
       "DocumentVersion": "$DEFAULT",
       "AutomationTargetParameterName": "InstanceId",
       "LastUpdateAssociationDate": 1564686638.498,
       "Date": 1564686638.498,
       "AssociationVersion": "1",
       "AssociationName": "CLI",
       "Targets": [
           {
               "Values": [
                   "DEV"
               ],
               "Key": "tag:ENV"
           }
       ]
   }
   }
   ```

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

   ```
   {
   "AssociationDescription": {
       "ScheduleExpression": "cron(0 7 ? * MON *)",
       "Name": "AWS-StartEC2Instance",
       "Parameters": {
           "AutomationAssumeRole": [
               "arn:aws:iam::123456789012:role/RunbookAssumeRole"
           ]
       },
       "Overview": {
           "Status": "Pending",
           "DetailedStatus": "Creating"
       },
       "AssociationId": "1450b4b7-bea2-4e4b-b340-01234EXAMPLE",
       "DocumentVersion": "$DEFAULT",
       "AutomationTargetParameterName": "InstanceId",
       "LastUpdateAssociationDate": 1564686638.498,
       "Date": 1564686638.498,
       "AssociationVersion": "1",
       "AssociationName": "CLI",
       "Targets": [
           {
               "Values": [
                   "DEV"
               ],
               "Key": "tag:ENV"
           }
       ]
   }
   }
   ```

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

   ```
   Name                  : AWS-StartEC2Instance
   InstanceId            : 
   Date                  : 8/1/2019 7:31:38 PM
   Status.Name           : 
   Status.Date           : 
   Status.Message        : 
   Status.AdditionalInfo :
   ```

------

**Nota**  
Se utilizzi i tag per creare un'associazione su una o più istanze di destinazione e quindi rimuovi i tag da un'istanza, tale istanza non eseguirà più l'associazione. L'istanza viene dissociata dal documento di State Manager. 

## Risoluzione dei problemi relativi alle automazioni eseguite dalle associazioni State Manager
<a name="troubleshooting-automation-associations"></a>

Il servizio di automazione di Systems Manager applica un limite di 100 automazioni simultanee e di 1.000 automazioni in coda per ogni account e per ogni regione. Se un'State Managerassociazione che utilizza un runbook mostra lo stato **Non riuscito** e lo stato dettagliato di **AutomationExecutionLimitExceeded**, l'automazione potrebbe aver raggiunto il limite. Di conseguenza, Systems Manager limita le automazioni. Per risolvere il problema, procedere come segue:
+ utilizzare un'altra espressione Cron o Rate per l'associazione. Ad esempio, se l'associazione è pianificata per l'esecuzione ogni 30 minuti, modifica l'espressione in modo che venga eseguita ogni ora o ogni due ore;
+ eliminare le automazioni esistenti con stato **Pending (In attesa)**. Eliminando queste automazioni, si cancella la coda corrente.

# Pianificazione delle automazioni con finestre di manutenzione
<a name="scheduling-automations-maintenance-windows"></a>

Puoi avviare un'automazione configurando un runbook come processo registrato per una finestra di manutenzione. Impostando il runbook come processo registrato, la finestra di manutenzione esegue l'automazione durante il periodo di manutenzione pianificato. 

Ad esempio, supponiamo di creare un runbook denominato `CreateAMI` che crea un Amazon Machine Image (AMI) delle istanze registrate come destinazioni nella finestra di manutenzione. Per specificare il runbook `CreateAMI` (e la corrispondente automazione) come processo registrato di una finestra di manutenzione, creare innanzitutto una finestra di manutenzione e registra le destinazioni. Quindi puoi utilizzare la procedura seguente per specificare il documento `CreateAMI` come processo registrato all'interno della finestra di manutenzione. Quando la finestra di manutenzione viene avviata durante il periodo programmato, il sistema esegue l'automazione e crea un'AMI delle destinazioni registrate.

Per informazioni sulla creazione dei runbook Automation, consulta [Creazione di runbook personalizzati](automation-documents.md). Automazione è uno strumento di AWS Systems Manager.

Utilizzare le seguenti procedure per configurare un'automazione come attività registrata per una finestra di manutenzione utilizzando la AWS Systems Manager console, AWS Command Line Interface (AWS CLI) o AWS Tools for Windows PowerShell.

## Registrazione di un processo di automazione in una finestra di manutenzione (console)
<a name="register-automation-task-maintenance-window-console"></a>

La procedura seguente descrive come utilizzare la console di Systems Manager per configurare un'automazione come processo registrato per una finestra di manutenzione.

**Prima di iniziare**  
Prima di completare la procedura seguente, è necessario creare una finestra di manutenzione e registrare almeno una destinazione. Per ulteriori informazioni, consulta le procedure seguenti: 
+ [Creare una finestra di manutenzione utilizzando la console](sysman-maintenance-create-mw.md).
+ [Assegnazione di destinazioni a una finestra di manutenzione utilizzando la console](sysman-maintenance-assign-targets.md)

**Per configurare un'automazione come processo registrato per una finestra di manutenzione**

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 a sinistra, scegliere **Maintenance Windows**, quindi selezionare la finestra di manutenzione all'interno della quale si desidera registrare un processo del servizio di automazione.

1. Scegliere **Actions (Operazioni)**. Scegliere quindi **Register Automation task (Registra processo di automazione)** per eseguire un'automazione nelle destinazioni utilizzando un runbook.

1. In **Name (Nome)**, inserire un nome per il processo.

1. In **Description (Descrizione)**, inserire una descrizione.

1. In **Document (Documento)**, scegliere il runbook che definisce i processi da eseguire.

1. In **Document version (Versione del documento)**, scegliere la versione del runbook da utilizzare.

1. In **Task priority (Priorità dei processi)** scegliere una priorità. `1` è la priorità massima. I processi in una finestra di manutenzione vengono pianificati in ordine di priorità, pianificando in parallelo i processi che hanno la stessa priorità.

1. Nella sezione **Targets (Destinazioni)**, se il runbook scelto esegue i processi in base alle risorse, identificare le destinazioni su cui eseguire l'automazione specificando i tag o selezionando le istanze manualmente.
**Nota**  
Se si desidera passare le risorse attraverso i parametri di input anziché le destinazioni, non è necessario specificare una destinazione per la finestra di manutenzione.  
In molti casi, non è necessario specificare in modo esplicito una destinazione per un processo di automazione. Supponiamo ad esempio che si sta creando un'attività di automazione per aggiornare un Amazon Machine Image (AMI) per Linux tramite il runbook `AWS-UpdateLinuxAmi`. Quando l'attività viene eseguita, AMI viene aggiornato con gli ultimi pacchetti di distribuzione Linux disponibili e il software Amazon. Nuove istanze create da AMI hanno già questi aggiornamenti installati. Perché l'ID dell'AMI da aggiornare è specificato nei parametri di input per il runbook, non è necessario specificare nuovamente una destinazione nel processo della finestra di manutenzione.

   Per informazioni sui processi della finestra di manutenzione che non richiedono destinazioni, vedi [Registrazione delle attività della finestra di manutenzione senza destinazioni](maintenance-windows-targetless-tasks.md).

1. (Facoltativo) In **Controllo velocità**:
**Nota**  
se il processo in esecuzione non specifica le destinazioni, non è necessario specificare i controlli della velocità.
   + In **Concurrency (Simultaneità)**, specificare un numero o una percentuale di destinazioni su cui eseguire contemporaneamente l'automazione.

     Se le destinazioni vengono selezionate tramite coppie chiave-valore di tag e non si conosce il numero preciso delle destinazioni che utilizzano i tag selezionati, limitare il numero di automazioni che può essere eseguito simultaneamente specificando una percentuale.

     Quando viene eseguita la finestra di manutenzione, viene avviata una nuova automazione per ogni destinazione. C'è un limite di 100 automazioni simultanee per Account AWS. Se si specifica una quota di simultaneità maggiore di 100, le automazioni simultanee superiori a 100 vengono automaticamente aggiunte alla coda di automazione. Per informazioni, 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*. 
   + In **Error threshold (Soglia di errore)**, specificare quando interrompere l'esecuzione dell'automazione nelle altre destinazioni in seguito a errori su un certo numero o percentuale di destinazioni. Ad esempio, se si specificano tre errori, Systems Manager smette di eseguire le automazioni quando si verifica il quarto errore. Anche le destinazioni stanno ancora elaborando l'automazione potrebbero inviare errori.

1. Nella sezione **Input parameters (Parametri di input)**, specifica i parametri per il runbook. Per i runbook, il sistema compila automaticamente alcuni dei valori. È possibile mantenere o sostituire tali valori.
**Importante**  
Per i runbook, è possibile specificare facoltativamente un ruolo presunto di automazione. Se non specifichi un ruolo per questo parametro, l'automazione presume l'utilizzo del ruolo di servizio della finestra di manutenzione scelto nella fase 11. Pertanto, è necessario assicurarsi che il ruolo di servizio della finestra di manutenzione scelto disponga delle autorizzazioni AWS Identity and Access Management (IAM) appropriate per eseguire le azioni definite nel runbook.   
Ad esempio, il ruolo collegato al servizio per Systems Manager non ha l'autorizzazione IAM `ec2:CreateSnapshot`, obbligatoria per utilizzare il runbook `AWS-CopySnapshot`. In questo scenario, devi utilizzare un ruolo di servizio personalizzato della finestra di manutenzione o specificare un ruolo presunto di automazione che disponga delle autorizzazioni `ec2:CreateSnapshot`. Per informazioni, consulta [Configurazione del servizio di automazione](automation-setup.md).

1. Nell'area **IAM service role** (Ruolo di servizio IAM), scegli un ruolo per concedere a Systems Manager le autorizzazioni per avviare l'automazione.

   Per creare un ruolo di servizio per le attività della finestra di manutenzione, consulta la sezione [Configurazione di Maintenance Windows](setting-up-maintenance-windows.md).

1. Scegli **Register Automation task (Registra processi di automazione)**.

## Registrazione di un processo di automazione in una finestra di manutenzione (riga di comando)
<a name="register-automation-task-maintenance-window-cli"></a>

La procedura seguente descrive come utilizzare AWS CLI (su Linux oWindows Server) o AWS Strumenti per PowerShell configurare un'automazione come attività registrata per una finestra di manutenzione.

**Prima di iniziare**  
Prima di completare la procedura seguente, è necessario creare una finestra di manutenzione e registrare almeno una destinazione. Per ulteriori informazioni, consulta le procedure seguenti:
+ [Fase 1: Creare la finestra di manutenzione utilizzando AWS CLI](mw-cli-tutorial-create-mw.md).
+ [Fase 2: Registrare un nodo di destinazione nella finestra di manutenzione utilizzando il AWS CLI](mw-cli-tutorial-targets.md)

**Per configurare un'automazione come processo registrato per una finestra di manutenzione**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Creare un comando per configurare un'automazione come processo registrato per una finestra di manutenzione Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

   ```
   aws ssm register-task-with-maintenance-window \
   --window-id window ID \
   --name task name \
   --task-arn runbook name \
   --targets Key=targets,Values=value \
   --service-role-arn IAM role arn \
   --task-type AUTOMATION \
   --task-invocation-parameters task parameters \
   --priority task priority \
   --max-concurrency 10% \
   --max-errors 5
   ```

**Nota**  
Se configuri un'automazione come attività registrata utilizzando il AWS CLI, utilizza il `--Task-Invocation-Parameters` parametro per specificare i parametri da passare a un'attività durante l'esecuzione. Non utilizzare il parametro `--Task-Parameters`. Il parametro `--Task-Parameters` è un parametro legacy.  
Per i processi della finestra di manutenzione senza una destinazione specificata, non è possibile fornire valori per `--max-errors` e `--max-concurrency`. Invece, il sistema inserisce un valore segnaposto pari a `1`, che potrebbe essere segnalato nella risposta a comandi come [https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-maintenance-window-tasks.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-maintenance-window-tasks.html) e [https://docs.aws.amazon.com/cli/latest/reference/ssm/get-maintenance-window-task.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-maintenance-window-task.html). Questi valori non influiscono sull'esecuzione del processo e possono essere ignorati.  
Per informazioni sui processi della finestra di manutenzione che non richiedono destinazioni, vedi [Registrazione delle attività della finestra di manutenzione senza destinazioni](maintenance-windows-targetless-tasks.md).

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

   ```
   aws ssm register-task-with-maintenance-window ^
   --window-id window ID ^
   --name task name ^
   --task-arn runbook name ^
   --targets Key=targets,Values=value ^
   --service-role-arn IAM role arn ^
   --task-type AUTOMATION ^
   --task-invocation-parameters task parameters ^
   --priority task priority ^
   --max-concurrency 10% ^
   --max-errors 5
   ```

**Nota**  
Se si configura un'automazione come attività registrata utilizzando il AWS CLI, utilizzare il `--task-invocation-parameters` parametro per specificare i parametri da passare a un'attività durante l'esecuzione. Non utilizzare il parametro `--task-parameters`. Il parametro `--task-parameters` è un parametro legacy.  
Per i processi della finestra di manutenzione senza una destinazione specificata, non è possibile fornire valori per `--max-errors` e `--max-concurrency`. Invece, il sistema inserisce un valore segnaposto pari a `1`, che potrebbe essere segnalato nella risposta a comandi come [https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-maintenance-window-tasks.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-maintenance-window-tasks.html) e [https://docs.aws.amazon.com/cli/latest/reference/ssm/get-maintenance-window-task.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-maintenance-window-task.html). Questi valori non influiscono sull'esecuzione del processo e possono essere ignorati.  
Per informazioni sui processi della finestra di manutenzione che non richiedono destinazioni, vedi [Registrazione delle attività della finestra di manutenzione senza destinazioni](maintenance-windows-targetless-tasks.md).

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

   ```
   Register-SSMTaskWithMaintenanceWindow `
   -WindowId window ID `
   -Name "task name" `
   -TaskArn "runbook name" `
   -Target @{ Key="targets";Values="value" } `
   -ServiceRoleArn "IAM role arn" `
   -TaskType "AUTOMATION" `
   -Automation_Parameter @{ "task parameter"="task parameter value"} `
   -Priority task priority `
   -MaxConcurrency 10% `
   -MaxError 5
   ```

**Nota**  
Se si configura un'automazione come attività registrata utilizzando il AWS Strumenti per PowerShell, utilizzare il `-Automation_Parameter` parametro per specificare i parametri da passare a un'attività durante l'esecuzione dell'operazione. Non utilizzare il parametro `-TaskParameters`. Il parametro `-TaskParameters` è un parametro legacy.  
Per i processi della finestra di manutenzione senza una destinazione specificata, non è possibile fornire valori per `-MaxError` e `-MaxConcurrency` Invece, il sistema inserisce un valore segnaposto pari a 1, che potrebbe essere segnalato nella risposta a comandi come `Get-SSMMaintenanceWindowTaskList` e `Get-SSMMaintenanceWindowTask`. Questi valori non influiscono sull'esecuzione del processo e possono essere ignorati.  
Per informazioni sui processi della finestra di manutenzione che non richiedono destinazioni, vedi [Registrazione delle attività della finestra di manutenzione senza destinazioni](maintenance-windows-targetless-tasks.md).

------

   L'esempio seguente configura un'automazione come processo registrato in una finestra di manutenzione con priorità 1. Dimostra inoltre l'omissione delle opzioni di `--targets`,`--max-errors`, e `--max-concurrency` per un processo della una finestra di manutenzione senza destinazione. L'automazione utilizza il runbook `AWS-StartEC2Instance` e il ruolo presunto del servizio di automazione specificato per avviare le istanze di EC2 registrate come destinazioni nella finestra di manutenzione. La finestra di manutenzione esegue l'automazione simultaneamente su un massimo di 5 istanze in qualsiasi momento. Inoltre, l'esecuzione del processo registrato viene arrestata su più istanze per un determinato intervallo se il conteggio degli errori supera 1.

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

   ```
   aws ssm register-task-with-maintenance-window \
   --window-id mw-0c50858d01EXAMPLE \
   --name StartEC2Instances \
   --task-arn AWS-StartEC2Instance \
   --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole \
   --task-type AUTOMATION \
   --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" \
   --priority 1
   ```

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

   ```
   aws ssm register-task-with-maintenance-window ^
   --window-id mw-0c50858d01EXAMPLE ^
   --name StartEC2Instances ^
   --task-arn AWS-StartEC2Instance ^
   --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole ^
   --task-type AUTOMATION ^
   --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" ^
   --priority 1
   ```

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

   ```
   Register-SSMTaskWithMaintenanceWindow `
   -WindowId mw-0c50858d01EXAMPLE `
   -Name "StartEC2" `
   -TaskArn "AWS-StartEC2Instance" `
   -ServiceRoleArn "arn:aws:iam::123456789012:role/MaintenanceWindowRole" `
   -TaskType "AUTOMATION" `
   -Automation_Parameter @{ "InstanceId"="{{TARGET_ID}}";"AutomationAssumeRole"="arn:aws:iam::123456789012:role/AutomationAssumeRole" } `
   -Priority 1
   ```

------

   Il comando restituisce i dettagli per il nuovo processo registrato simili ai seguenti.

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

   ```
   {
   "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
   }
   ```

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

   ```
   {
   "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
   }
   ```

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

   ```
   4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
   ```

------

1. Per visualizzare il processo registrato, esegui il comando seguente. Sostituiscilo *maintenance windows ID* con le tue informazioni.

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

   ```
   aws ssm describe-maintenance-window-tasks \
   --window-id maintenance window ID
   ```

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

   ```
   aws ssm describe-maintenance-window-tasks ^
   --window-id maintenance window ID
   ```

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

   ```
   Get-SSMMaintenanceWindowTaskList `
   -WindowId maintenance window ID
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

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

   ```
   {
   "Tasks": [
       {
           "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
           "MaxErrors": "1",
           "TaskArn": "AWS-StartEC2Instance",
           "MaxConcurrency": "1",
           "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
           "TaskParameters": {},
           "Priority": 1,
           "WindowId": "mw-0c50858d01EXAMPLE",
           "Type": "AUTOMATION",
           "Targets": [
           ],
           "Name": "StartEC2"
       }
   ]
   }
   ```

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

   ```
   {
   "Tasks": [
       {
           "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
           "MaxErrors": "1",
           "TaskArn": "AWS-StartEC2Instance",
           "MaxConcurrency": "1",
           "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
           "TaskParameters": {},
           "Priority": 1,
           "WindowId": "mw-0c50858d01EXAMPLE",
           "Type": "AUTOMATION",
           "Targets": [
           ],
           "Name": "StartEC2"
       }
   ]
   }
   ```

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

   ```
   Description    : 
   LoggingInfo    : 
   MaxConcurrency : 5
   MaxErrors      : 1
   Name           : StartEC2
   Priority       : 1
   ServiceRoleArn : arn:aws:iam::123456789012:role/MaintenanceWindowRole
   Targets        : {}
   TaskArn        : AWS-StartEC2Instance
   TaskParameters : {}
   Type           : AUTOMATION
   WindowId       : mw-0c50858d01EXAMPLE
   WindowTaskId   : 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
   ```

------

# Riferimento alle operazioni del servizio di automazione di Systems Manager
<a name="automation-actions"></a>

In questa sezione di riferimento sono descritte le operazioni del servizio di automazione che è possibile specificare in un runbook del servizio di automazione. L’automazione è uno strumento di AWS Systems Manager. Queste operazioni non possono essere utilizzate in altri tipi di documenti di Systems Manager (SSM). Per informazioni sui plugin per gli altri tipi di documenti di SSM, consulta [Documentazione di riferimento del plugin per i documenti di comando](documents-command-ssm-plugin-reference.md).

Il servizio di automazione di Systems Manager esegue le fasi definite nei runbook del servizio di automazione. Ogni fase è associata a un'operazione specifica. L'operazione determina gli input, il comportamento e l'output della fase. Le fasi vengono definite nella sezione `mainSteps` del runbook.

Non è necessario specificare gli output di un'operazione o una fase. Gli output sono definiti dall'operazione associata alla fase. Quando si specifica gli input delle fasi nei runbook, è possibile fare riferimento a uno o più output di una fase precedente. Ad esempio, è possibile rendere disponibile l'output di `aws:runInstances` a una successiva operazione `aws:runCommand`. È anche possibile fare riferimento agli output delle fasi precedenti nella sezione `Output` del runbook. 

**Importante**  
Se si esegue un flusso di lavoro di automazione che chiama altri servizi utilizzando un ruolo di servizio (IAM) di AWS Identity and Access Management , tenere presente che tale ruolo di servizio deve essere configurato con l'autorizzazione per la chiamata di tali servizi. Questo requisito si applica a tutti i runbook di AWS automazione (`AWS-*`runbook) come`AWS-ConfigureS3BucketLogging`,, e `AWS-RestartEC2Instance` runbook`AWS-CreateDynamoDBBackup`, solo per citarne alcuni. Questo requisito si applica anche a tutti i runbook di automazione personalizzati creati dall'utente che richiamano altri utenti Servizi AWS utilizzando azioni che richiamano altri servizi. Ad esempio, se utilizzi le operazioni `aws:executeAwsApi`, `aws:createStack` o `aws:copyImage`, devi configurare il ruolo di servizio con l'autorizzazione per richiamare tali servizi. Puoi concedere le autorizzazioni ad altri Servizi AWS aggiungendo una policy inline IAM al ruolo. Per ulteriori informazioni, consulta [(Facoltativo) Aggiungi una policy in linea di automazione o una policy gestita dal cliente per richiamarne altre Servizi AWS](automation-setup-iam.md#add-inline-policy).

**Topics**
+ [Proprietà condivise da tutte le operazioni](#automation-common)
+ [`aws:approve`: sospendere un'automazione per l'approvazione manuale](automation-action-approve.md)
+ [`aws:assertAwsResourceProperty`— Affermare uno stato di AWS risorsa o uno stato di evento](automation-action-assertAwsResourceProperty.md)
+ [`aws:branch`: esecuzione delle fasi di automazione condizionale](automation-action-branch.md)
+ [`aws:changeInstanceState`: modifica o rileva dello stato dell'istanza](automation-action-changestate.md)
+ [`aws:copyImage`: copia o crittografa un'Amazon Machine Image](automation-action-copyimage.md)
+ [`aws:createImage`: creazione di un'Amazon Machine Image](automation-action-create.md)
+ [`aws:createStack`— Crea una CloudFormation pila](automation-action-createstack.md)
+ [`aws:createTags`— Crea tag per AWS le risorse](automation-action-createtag.md)
+ [`aws:deleteImage`: eliminazione di un'Amazon Machine Image](automation-action-delete.md)
+ [`aws:deleteStack`— Eliminare una CloudFormation pila](automation-action-deletestack.md)
+ [`aws:executeAutomation`: esecuzione di un'altra automazione](automation-action-executeAutomation.md)
+ [`aws:executeAwsApi`— Chiama ed esegui operazioni AWS API](automation-action-executeAwsApi.md)
+ [`aws:executeScript`: esecuzione di uno script](automation-action-executeScript.md)
+ [`aws:executeStateMachine`— Esegui una macchina a AWS Step Functions stati](automation-action-executeStateMachine.md)
+ [`aws:invokeWebhook`: richiamo dell'integrazione di un webhook di Automation](invoke-webhook.md)
+ [`aws:invokeLambdaFunction`— Invoca una funzione AWS Lambda](automation-action-lamb.md)
+ [`aws:loop`: intera sui passaggi di un'automazione](automation-action-loop.md)
+ [`aws:pause`: sospensione di un'automazione](automation-action-pause.md)
+ [`aws:runCommand`: esecuzione di un comando su un'istanza gestita](automation-action-runcommand.md)
+ [`aws:runInstances`: avvio di un'istanza di Amazon EC2](automation-action-runinstance.md)
+ [`aws:sleep`: ritardo di un'automazione](automation-action-sleep.md)
+ [`aws:updateVariable`: aggiorna un valore per una variabile di runbook](automation-action-update-variable.md)
+ [`aws:waitForAwsResourceProperty`— Attendi una proprietà della AWS risorsa](automation-action-waitForAwsResourceProperty.md)
+ [Variabili di sistema del servizio di automazione](automation-variables.md)

## Proprietà condivise da tutte le operazioni
<a name="automation-common"></a>

Le proprietà comuni sono parametri o opzioni che si trovano in tutte le operazioni. Alcune opzioni definiscono il comportamento per una fase, ad esempio quanto tempo attendere il completamento di una fase e cosa fare se la fase non riesce. Le seguenti proprietà sono comuni a tutte le operazioni.

[description](#descriptProp)  
Informazioni fornite per descrivere lo scopo di un runbook o di un passaggio.  
▬Tipo: stringa  
Campo obbligatorio: no

[name](#nameProp)  
Identificatore che deve essere univoco per tutti i nomi di fase nel runbook.  
▬Tipo: stringa  
Modello consentito: [a-zA-Z0-9\$1]\$1\$1  
Campo obbligatorio: sì

[action](#actProp)  
Nome dell'operazione che la fase deve eseguire. [`aws:runCommand`: esecuzione di un comando su un'istanza gestita](automation-action-runcommand.md) è un esempio di operazione che puoi specificare. Questo documento fornisce informazioni dettagliate su tutte le operazioni disponibili.  
Tipo: stringa  
Campo obbligatorio: sì

[maxAttempts](#maxProp)  
Numero di nuovi tentativi di esecuzione della fase in caso di errore. Se il valore è maggiore di 1, la fase non viene considerata non riuscita finché tutti i nuovi tentativi non hanno restituito esito negativo. Il valore predefinito è 1.  
Tipo: integer  
Campo obbligatorio: no

[timeoutSeconds](#timeProp)  
Valore di timeout per la fase. Se il timeout viene raggiunto e il valore di `maxAttempts` è maggiore di 1, la fase non viene considerata scaduta finché non vengono eseguiti tutti i nuovi tentativi.  
Tipo: integer  
Campo obbligatorio: no

[onFailure](#failProp)  
Indica se, in caso di errore, l'automazione deve essere interrotta, deve continuare o deve passare a un'altra fase. Il valore predefinito di questa opzione è "abort" (interrompi).  
▬Tipo: stringa  
Valori validi: Interrompi \$1 Continua \$1 step: *step\$1name*  
Campo obbligatorio: no

[onCancel](#canProp)  
Indica a quale fase deve passare l'automazione nel caso in cui un utente annulli l'automazione. L'automazione esegue il flusso di lavoro di annullamento per un massimo di due minuti.  
▬Tipo: stringa  
Valori validi: Abort \$1 step: *step\$1name*  
Campo obbligatorio: no  
La proprietà `onCancel` non supporta il passaggio alle seguenti operazioni:  
+ `aws:approve`
+ `aws:copyImage`
+ `aws:createImage`
+ `aws:createStack`
+ `aws:createTags`
+ `aws:loop`
+ `aws:pause`
+ `aws:runInstances`
+ `aws:sleep`

[isEnd](#endProp)  
Questa opzione arresta l'automazione alla fine di una fase specifica. L'automazione viene arrestata se la fase ha esito positivo o negativo. Il valore predefinito è false.  
Tipo: Booleano  
Valori validi: true \$1 false  
Campo obbligatorio: no

[nextStep](#nextProp)  
Specifica la successiva fase di un'automazione da elaborare dopo il completamento di una fase.  
▬Tipo: stringa  
Campo obbligatorio: no

[isCritical](#critProp)  
Designa una fase come fase critica per il corretto completamento dell'automazione. Se una fase con questa definizione ha esito negativo, il servizio di automazione restituisce come stato finale dell'automazione il valore "Failed" (Non riuscito). Questa proprietà viene valutata solo se viene definita esplicitamente nella fase. Se la proprietà `onFailure` viene impostata su `Continue` in una fase, il valore predefinito è false. Altrimenti, il valore predefinito per questa opzione è "true".  
Tipo: Booleano  
Valori validi: true \$1 false  
Campo obbligatorio: no

[inputs](#inProp)  
Proprietà specifiche dell'operazione.  
Tipo: Map  
Campo obbligatorio: sì

### Esempio
<a name="automation-demo"></a>

```
---
description: "Custom Automation Example"
schemaVersion: '0.3'
assumeRole: "{{ AutomationAssumeRole }}"
parameters:
  AutomationAssumeRole:
    type: String
    description: "(Required) The ARN of the role that allows Automation to perform
      the actions on your behalf. If no role is specified, Systems Manager Automation
      uses your IAM permissions to run this runbook."
    default: ''
  InstanceId:
      type: String
      description: "(Required) The Instance Id whose root EBS volume you want to restore the latest Snapshot."
      default: ''
mainSteps:
- name: getInstanceDetails
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: DescribeInstances
    InstanceIds:
    - "{{ InstanceId }}"
  outputs:
    - Name: availabilityZone
      Selector: "$.Reservations[0].Instances[0].Placement.AvailabilityZone"
      Type: String
    - Name: rootDeviceName
      Selector: "$.Reservations[0].Instances[0].RootDeviceName"
      Type: String
  nextStep: getRootVolumeId
- name: getRootVolumeId
  action: aws:executeAwsApi
  maxAttempts: 3
  onFailure: Abort
  inputs:
    Service: ec2
    Api: DescribeVolumes
    Filters:
    -  Name: attachment.device
       Values: ["{{ getInstanceDetails.rootDeviceName }}"]
    -  Name: attachment.instance-id
       Values: ["{{ InstanceId }}"]
  outputs:
    - Name: rootVolumeId
      Selector: "$.Volumes[0].VolumeId"
      Type: String
  nextStep: getSnapshotsByStartTime
- name: getSnapshotsByStartTime
  action: aws:executeScript
  timeoutSeconds: 45
  onFailure: Abort
  inputs:
    Runtime: python3.8
    Handler: getSnapshotsByStartTime
    InputPayload:
      rootVolumeId : "{{ getRootVolumeId.rootVolumeId }}"
    Script: |-
      def getSnapshotsByStartTime(events,context):
        import boto3

        #Initialize client
        ec2 = boto3.client('ec2')
        rootVolumeId = events['rootVolumeId']
        snapshotsQuery = ec2.describe_snapshots(
          Filters=[
            {
              "Name": "volume-id",
              "Values": [rootVolumeId]
            }
          ]
        )
        if not snapshotsQuery['Snapshots']:
          noSnapshotFoundString = "NoSnapshotFound"
          return { 'noSnapshotFound' : noSnapshotFoundString }
        else:
          jsonSnapshots = snapshotsQuery['Snapshots']
          sortedSnapshots = sorted(jsonSnapshots, key=lambda k: k['StartTime'], reverse=True)
          latestSortedSnapshotId = sortedSnapshots[0]['SnapshotId']
          return { 'latestSnapshotId' : latestSortedSnapshotId }
  outputs:
  - Name: Payload
    Selector: $.Payload
    Type: StringMap
  - Name: latestSnapshotId
    Selector: $.Payload.latestSnapshotId
    Type: String
  - Name: noSnapshotFound
    Selector: $.Payload.noSnapshotFound
    Type: String 
  nextStep: branchFromResults
- name: branchFromResults
  action: aws:branch
  onFailure: Abort
  onCancel: step:startInstance
  inputs:
    Choices:
    - NextStep: createNewRootVolumeFromSnapshot
      Not:
        Variable: "{{ getSnapshotsByStartTime.noSnapshotFound }}"
        StringEquals: "NoSnapshotFound"
  isEnd: true
- name: createNewRootVolumeFromSnapshot
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: CreateVolume
    AvailabilityZone: "{{ getInstanceDetails.availabilityZone }}"
    SnapshotId: "{{ getSnapshotsByStartTime.latestSnapshotId }}"
  outputs:
    - Name: newRootVolumeId
      Selector: "$.VolumeId"
      Type: String
  nextStep: stopInstance
- name: stopInstance
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: StopInstances
    InstanceIds:
    - "{{ InstanceId }}"
  nextStep: verifyVolumeAvailability
- name: verifyVolumeAvailability
  action: aws:waitForAwsResourceProperty
  timeoutSeconds: 120
  inputs:
    Service: ec2
    Api: DescribeVolumes
    VolumeIds:
    - "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
    PropertySelector: "$.Volumes[0].State"
    DesiredValues:
    - "available"
  nextStep: verifyInstanceStopped
- name: verifyInstanceStopped
  action: aws:waitForAwsResourceProperty
  timeoutSeconds: 120
  inputs:
    Service: ec2
    Api: DescribeInstances
    InstanceIds:
    - "{{ InstanceId }}"
    PropertySelector: "$.Reservations[0].Instances[0].State.Name"
    DesiredValues:
    - "stopped"
  nextStep: detachRootVolume
- name: detachRootVolume
  action: aws:executeAwsApi
  onFailure: Abort
  isCritical: true
  inputs:
    Service: ec2
    Api: DetachVolume
    VolumeId: "{{ getRootVolumeId.rootVolumeId }}"
  nextStep: verifyRootVolumeDetached
- name: verifyRootVolumeDetached
  action: aws:waitForAwsResourceProperty
  timeoutSeconds: 30
  inputs:
    Service: ec2
    Api: DescribeVolumes
    VolumeIds:
    - "{{ getRootVolumeId.rootVolumeId }}"
    PropertySelector: "$.Volumes[0].State"
    DesiredValues:
    - "available"
  nextStep: attachNewRootVolume
- name: attachNewRootVolume
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: AttachVolume
    Device: "{{ getInstanceDetails.rootDeviceName }}"
    InstanceId: "{{ InstanceId }}"
    VolumeId: "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
  nextStep: verifyNewRootVolumeAttached
- name: verifyNewRootVolumeAttached
  action: aws:waitForAwsResourceProperty
  timeoutSeconds: 30
  inputs:
    Service: ec2
    Api: DescribeVolumes
    VolumeIds:
    - "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
    PropertySelector: "$.Volumes[0].Attachments[0].State"
    DesiredValues:
    - "attached"
  nextStep: startInstance
- name: startInstance
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: StartInstances
    InstanceIds:
    - "{{ InstanceId }}"
```

# `aws:approve`: sospendere un'automazione per l'approvazione manuale
<a name="automation-action-approve"></a>

Sospende temporaneamente un'automazione finché i principali designati non approvano o rifiutano l'operazione. Una volta raggiunto il numero richiesto di approvazioni, viene ripresa l'automazione. Puoi inserire la fase di approvazione in qualsiasi punto della sezione `mainSteps` del runbook. 

**Nota**  
Questa operazione non supporta le automazioni per più account e regioni. Il timeout predefinito per questa azione è di 7 giorni (60.4800 secondi) e il valore massimo è di 30 giorni (259.2000 secondi). Puoi limitare o estendere il timeout specificando il parametro `timeoutSeconds` per una fase `aws:approve`.

Nell'esempio seguente l'operazione `aws:approve` sospende temporaneamente l'automazione finché un approvatore non accetta o rifiuta l'automazione. Dopo l'approvazione, l'automazione esegue un semplice PowerShell comando. 

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

```
---
description: RunInstancesDemo1
schemaVersion: '0.3'
assumeRole: "{{ assumeRole }}"
parameters:
  assumeRole:
    type: String
  message:
    type: String
mainSteps:
- name: approve
  action: aws:approve
  timeoutSeconds: 1000
  onFailure: Abort
  inputs:
    NotificationArn: arn:aws:sns:us-east-2:12345678901:AutomationApproval
    Message: "{{ message }}"
    MinRequiredApprovals: 1
    Approvers:
    - arn:aws:iam::12345678901:user/AWS-User-1
- name: run
  action: aws:runCommand
  inputs:
    InstanceIds:
    - i-1a2b3c4d5e6f7g
    DocumentName: AWS-RunPowerShellScript
    Parameters:
      commands:
      - date
```

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

```
{
   "description":"RunInstancesDemo1",
   "schemaVersion":"0.3",
   "assumeRole":"{{ assumeRole }}",
   "parameters":{
      "assumeRole":{
         "type":"String"
      },
      "message":{
         "type":"String"
      }
   },
   "mainSteps":[
      {
         "name":"approve",
         "action":"aws:approve",
         "timeoutSeconds":1000,
         "onFailure":"Abort",
         "inputs":{
            "NotificationArn":"arn:aws:sns:us-east-2:12345678901:AutomationApproval",
            "Message":"{{ message }}",
            "MinRequiredApprovals":1,
            "Approvers":[
               "arn:aws:iam::12345678901:user/AWS-User-1"
            ]
         }
      },
      {
         "name":"run",
         "action":"aws:runCommand",
         "inputs":{
            "InstanceIds":[
               "i-1a2b3c4d5e6f7g"
            ],
            "DocumentName":"AWS-RunPowerShellScript",
            "Parameters":{
               "commands":[
                  "date"
               ]
            }
         }
      }
   ]
}
```

------

È possibile approvare o rifiutare le automazioni in attesa di approvazione nella console.

**Per approvare o rifiutare le automazioni in attesa**

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 **Automazione**.

1. Scegli l'opzione accanto un'automazione con stato **In attesa**.  
![\[Accesso alla pagina Approve/Deny di automazione\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/automation-approve-action-aws.png)

1. Scegli **Approva/Rifiuta**.

1. Rivedere i dettagli dell'automazione.

1. Scegli **Approva** o **Rifiuta**, immetti un commento facoltativo, quindi scegli **Invia**.

**Esempio di input**

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

```
NotificationArn: arn:aws:sns:us-west-1:12345678901:Automation-ApprovalRequest
Message: Please approve this step of the Automation.
MinRequiredApprovals: 3
Approvers:
- IamUser1
- IamUser2
- arn:aws:iam::12345678901:user/IamUser3
- arn:aws:iam::12345678901:role/IamRole
```

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

```
{
   "NotificationArn":"arn:aws:sns:us-west-1:12345678901:Automation-ApprovalRequest",
   "Message":"Please approve this step of the Automation.",
   "MinRequiredApprovals":3,
   "Approvers":[
      "IamUser1",
      "IamUser2",
      "arn:aws:iam::12345678901:user/IamUser3",
      "arn:aws:iam::12345678901:role/IamRole"
   ]
}
```

------

NotificationArn  
L'Amazon Resource Name (ARN) di un argomento Amazon Simple Notification Service (Amazon SNS) per approvazioni del servizio di automazione. Quando si specifica una fase `aws:approve` in un runbook, il servizio di automazione invia un messaggio a questo argomento per informare i principali che devono approvare o rifiutare una fase di automazione. Il titolo dell'argomento Amazon SNS devono avere il prefisso "Automation".  
▬Tipo: stringa  
Obbligatorio: no

Messaggio  
Informazioni da includere nell'argomento Amazon SNS quando viene inviata la richiesta di approvazione. La lunghezza massima del messaggio è 4096 caratteri;   
▬Tipo: stringa  
Obbligatorio: no

MinRequiredApprovals  
Numero minimo di approvazioni richieste per riprendere l'automazione. Se non si specifica un valore, il valore predefinito è uno. Il valore di questo parametro deve essere un numero intero positivo. Il valore di questo parametro non può superare il numero di approvatori definiti dal parametro `Approvers`.   
Tipo: Integer  
Obbligatorio: no

Approvers  
Un elenco di responsabili AWS autenticati che possono approvare o rifiutare l'azione. Il numero massimo di approvatori è 10. È possibile specificare i principali utilizzando uno dei seguenti formati:  
+ Un nome utente
+ Un ARN utente
+ Un ARN del ruolo IAM
+ Un ARN del ruolo presunto IAM
Tipo: StringList  
Obbligatorio: sì

EnhancedApprovals  
Questo input viene utilizzato solo per i modelli Change Manager. Un elenco di principali AWS autenticati che possono approvare o rifiutare l'operazione, il tipo di responsabile IAM e il numero minimo di soggetti che determinano l'approvazione. Di seguito è riportato un esempio:  

```
schemaVersion: "0.3"
emergencyChange: false
autoApprovable: false
mainSteps:
    - name: ApproveAction1
    action: aws:approve
    timeoutSeconds: 604800
    inputs:
        Message: Please approve this change request
        MinRequiredApprovals: 3
        EnhancedApprovals:
        Approvers:
            - approver: John Stiles
            type: IamUser
            minRequiredApprovals: 0
            - approver: Ana Carolina Silva
            type: IamUser
            minRequiredApprovals: 0
            - approver: GroupOfThree
            type: IamGroup
            minRequiredApprovals: 0
            - approver: RoleOfTen
            type: IamRole
            minRequiredApprovals: 0
```
Tipo: StringList  
Obbligatorio: sì

**Output**

ApprovalStatus  
Stato di approvazione della fase. Lo stato può avere uno dei seguenti valori: Approvato, Rifiutato o In attesa. "In attesa" indica che l'automazione è in attesa di input dagli approvatori.  
Tipo: String

ApproverDecisions  
Mappa JSON che include la decisione di approvazione di ciascun approvatore.  
Tipo: MapList

# `aws:assertAwsResourceProperty`— Affermare uno stato di AWS risorsa o uno stato di evento
<a name="automation-action-assertAwsResourceProperty"></a>

L'operazione `aws:assertAwsResourceProperty` consente di verificare lo stato di una risorsa o un evento specifico per una fase di automazione particolare.

**Nota**  
L'azione `aws:assertAwsResourceProperty` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

Per ulteriori esempi di utilizzo di questa operazione, consulta [Ulteriori esempi di runbook](automation-document-examples.md).

**Input**  
Gli input vengono definiti dall'operazione API selezionata. 

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

```
action: aws:assertAwsResourceProperty
inputs:
  Service: The official namespace of the service
  Api: The API operation or method name
  API operation inputs or parameters: A value
  PropertySelector: Response object
  DesiredValues:
  - Desired property values
```

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

```
{
  "action": "aws:assertAwsResourceProperty",
  "inputs": {
    "Service":"The official namespace of the service",
    "Api":"The API operation or method name",
    "API operation inputs or parameters":"A value",
    "PropertySelector": "Response object",
    "DesiredValues": [
      "Desired property values"
    ]
  }
}
```

------

Servizio  
Lo spazio dei Servizio AWS nomi che contiene l'operazione API che si desidera eseguire. Ad esempio, il namespace per Systems Manager è `ssm`. Il namespace per Amazon EC2 è `ec2`. Puoi visualizzare un elenco di namespace di Servizio AWS supportati nella sezione [Servizi disponibili](https://docs.aws.amazon.com/cli/latest/reference/#available-services) della *Documentazione di riferimento al comando della AWS CLI *.  
Tipo: String  
Obbligatorio: sì

Api  
Nome dell'operazione API da eseguire. Puoi visualizzare le operazioni API (definite anche metodi) scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Documentazione di riferimento ai servizi](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutte le operazioni API (metodi) per Amazon Relational Database Service (Amazon RDS) sono elencate nella seguente pagina: [Amazon RDS methods](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html) (Metodi Amazon RDS).  
Tipo: stringa  
Campo obbligatorio: sì

Input dell'operazione API  
Uno o più input dell'operazione API. Puoi visualizzare gli input disponibili (definiti anche parametri) scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Documentazione di riferimento ai servizi](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutti i metodi per Amazon RDS sono elencati nella pagina: [metodi di Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). ******Scegliete il metodo [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) e scorrete verso il basso per visualizzare i parametri disponibili, ad esempio Identifier, Name e Values. DBInstance****** Usare il seguente formato per specificare più di un input.  

```
inputs:
  Service: The official namespace of the service
  Api: The API operation name
  API input 1: A value
  API Input 2: A value
  API Input 3: A value
```

```
"inputs":{
      "Service":"The official namespace of the service",
      "Api":"The API operation name",
      "API input 1":"A value",
      "API Input 2":"A value",
      "API Input 3":"A value"
}
```
Tipo: determinato dall'operazione API selezionata  
Obbligatorio: sì

PropertySelector  
Vai a un JSONPath attributo specifico nell'oggetto di risposta. Puoi visualizzare gli oggetti di risposta scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Documentazione di riferimento ai servizi](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutti i metodi per Amazon RDS sono elencati nella pagina: [metodi di Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). **Scegliete il metodo [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) e scorrete verso il basso fino alla sezione Struttura della risposta.** **DBInstances**è elencato come oggetto di risposta.  
Tipo: stringa  
Obbligatorio: sì

DesiredValues  
Stato previsto o stato con il quale continuare l'automazione. Se specifichi un valore booleano, devi utilizzare una lettera maiuscola, ad esempio True o False.  
Tipo: StringList  
Obbligatorio: sì

# `aws:branch`: esecuzione delle fasi di automazione condizionale
<a name="automation-action-branch"></a>

L'operazione `aws:branch` consente di creare un'automazione dinamica che valuta le diverse scelte in una singola fase e quindi passa a una fase diversa nel runbook in base ai risultati di tale valutazione. 

Quando per una fase viene specificata l'operazione `aws:branch`, è necessario specificare l'elemento `Choices` l'automazione deve valutare. L'elemento `Choices` può fare riferimento a un valore specificato nella sezione `Parameters` del runbook oppure a un valore dinamico generato come output di una fase precedente. L'automazione valuta ogni scelta utilizzando un'espressione booleana. Se la prima scelta è "true", l'automazione passa alla fase definita per tale scelta. Se la prima scelta è "false", l'automazione valuta la scelta successiva. L'automazione continua la valutazione di ogni scelta finché non elabora una scelta "true". L'automazione passa quindi alla fase definita per la scelta di tipo "true".

Se nessuna delle scelte restituisce "true", l'automazione controlla se la fase contiene un valore di `default`. Un valore di default definisce una fase in cui l'automazione deve passare se nessuna delle scelte restituisce "true". Se non è stato specificato alcun valore di `default` per la fase, l'automazione elabora la fase successiva nel runbook.

L'operazione `aws:branch` supporta valutazioni di scelte complesse mediante l'uso di una combinazione di operatori `And`, `Not` e `Or`. Per ulteriori informazioni su come utilizzare `aws:branch`, con runbook di esempio ed esempi che utilizzano diversi operatori, consulta [Utilizzo di istruzioni condizionali nei runbook](automation-branch-condition.md).

**Input**  
Specificare uno o più elementi `Choices` in una fase. L'elemento `Choices` può fare riferimento a un valore specificato nella sezione `Parameters` del runbook oppure a un valore dinamico generato come output di una fase precedente. Ecco un esempio di sintassi YAML che restituisce un parametro.

```
mainSteps:
- name: chooseOS
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runWindowsCommand
      Variable: "{{Name of a parameter defined in the Parameters section. For example: OS_name}}"
      StringEquals: windows
    - NextStep: runLinuxCommand
      Variable: "{{Name of a parameter defined in the Parameters section. For example: OS_name}}"
      StringEquals: linux
    Default:
      sleep3
```

Ecco un esempio di sintassi YAML che valuta l'output di una fase precedente.

```
mainSteps:
- name: chooseOS
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runPowerShellCommand
      Variable: "{{Name of a response object. For example: GetInstance.platform}}"
      StringEquals: Windows
    - NextStep: runShellCommand
      Variable: "{{Name of a response object. For example: GetInstance.platform}}"
      StringEquals: Linux
    Default:
      sleep3
```

Choices  
Una o più espressioni che il servizio di automazione deve valutare durante l'individuazione della fase successiva da elaborare. Le scelte vengono valutate utilizzando un'espressione booleana. Ogni scelta deve definire le seguenti opzioni:  
+ **NextStep**: Il passaggio successivo del runbook da elaborare se la scelta designata è vera.
+ **Variable**: specifica il nome di un parametro definito nella sezione `Parameters` del runbook. In alternativa, specifica un oggetto di output della fase precedente nel runbook. Per ulteriori informazioni sulla creazione di variabili per `aws:branch`, consulta [Informazioni sulla creazione della variabile di output](automation-branch-condition.md#branch-action-output).
+ **Operation**: i criteri utilizzati per valutare la scelta. L'operazione `aws:branch` supporta le operazioni seguenti:

**Operazioni di stringa**
  + StringEquals
  + EqualsIgnoreCase
  + StartsWith
  + EndsWith
  + Contiene

**Operazioni numeriche**
  + NumericEquals
  + NumericGreater
  + NumericLesser
  + NumericGreaterOrEquals
  + NumericLesser
  + NumericLesserOrEquals

**Operazioni booleane**
  + BooleanEquals
**Importante**  
Quando si crea un runbook, il sistema convalida ogni operazione nel runbook. Se un'operazione non è supportata, il sistema restituisce un errore quando si tenta di creare il runbook.

Predefinito  
Nome di una fase a cui l'automazione deve passare se nessuno degli elementi `Choices` restituisce "true".  
▬Tipo: stringa  
Obbligatorio: no

**Nota**  
L'operazione `aws:branch` supporta gli operatori `And`, `Or` e `Not`. Per esempi di operazioni `aws:branch` che utilizzano gli operatori, consulta [Utilizzo di istruzioni condizionali nei runbook](automation-branch-condition.md).

# `aws:changeInstanceState`: modifica o rileva dello stato dell'istanza
<a name="automation-action-changestate"></a>

Modifica o rileva lo stato dell'istanza.

Questa operazione può essere utilizzata in modalità presuntiva (non esegue l'API per modificare lo stato, ma verifica se l'istanza è nello stato desiderato). Per utilizzare la modalità presuntiva, impostare il parametro `CheckStateOnly` su true. Questa modalità è utile, quando si esegue il comando Sysprep in Windows Server, in quanto si tratta di un comando asincrono, eseguibile in background per lunghi periodi di tempo. Puoi assicurarti che l'istanza venga arrestata prima di creare un'Amazon Machine Image (AMI).

**Nota**  
Il valore di timeout predefinito per questa operazione è 3600 secondi (un'ora). Puoi limitare o estendere il timeout specificando il parametro `timeoutSeconds` per una fase `aws:changeInstanceState`.

**Nota**  
L'azione `aws:changeInstanceState` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**

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

```
name: stopMyInstance
action: aws:changeInstanceState
maxAttempts: 3
timeoutSeconds: 3600
onFailure: Abort
inputs:
  InstanceIds:
  - i-1234567890abcdef0
  CheckStateOnly: true
  DesiredState: stopped
```

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

```
{
    "name":"stopMyInstance",
    "action": "aws:changeInstanceState",
    "maxAttempts": 3,
    "timeoutSeconds": 3600,
    "onFailure": "Abort",
    "inputs": {
        "InstanceIds": ["i-1234567890abcdef0"],
        "CheckStateOnly": true,
        "DesiredState": "stopped"
    }
}
```

------

InstanceIds  
Le IDs istanze.  
Tipo: StringList  
Obbligatorio: sì

CheckStateOnly  
Se false, imposta lo stato dell'istanza sullo stato desiderato. Se true, presume lo stato desiderato utilizzando il polling.  
Impostazione predefinita: `false`  
Tipo: Booleano  
Obbligatorio: no

DesiredState  
Stato desiderato. Se è impostata su `running`, questa operazione attende che lo stato di Amazon EC2 sia `Running`, lo stato dell'istanza sia `OK` e lo stato del sistema sia `OK` prima del completamento.  
Tipo: String  
Valori validi: `running` \$1 `stopped` \$1 `terminated`  
Obbligatorio: sì

Force  
Se impostato, forza l'arresto delle istanze. Le istanze non hanno la possibilità di svuotare le cache o i metadati del file system. Se utilizzi questa opzione, devi eseguire le procedure di verifica e riparazione del file system. Questa opzione non è consigliata per le istanze di EC2 di Windows Server.  
Tipo: Booleano  
Obbligatorio: no

AdditionalInfo  
Riservata.  
▬Tipo: stringa  
Obbligatorio: no

**Output**  
Nessuno

# `aws:copyImage`: copia o crittografa un'Amazon Machine Image
<a name="automation-action-copyimage"></a>

Copia un Amazon Machine Image (AMI) da qualsiasi Regione AWS nella regione corrente. Questa operazione consente inoltre di crittografare la nuova AMI.

**Nota**  
L'azione `aws:copyImage` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**  
Questa operazione supporta la maggior parte dei parametri `CopyImage`. Per ulteriori informazioni, consulta [CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopyImage.html).

L'esempio seguente crea una copia di un'AMI nella regione di Seoul (`SourceImageID`: ami-0fe10819. `SourceRegion`: ap-northeast-2). La nuova AMI viene copiata nella regione in cui è stata avviata l'operazione di automazione. L'AMI copiata verrà crittografata perché il flag `Encrypted` facoltativo è impostato su `true`.

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

```
name: createEncryptedCopy
action: aws:copyImage
maxAttempts: 3
onFailure: Abort
inputs:
  SourceImageId: ami-0fe10819
  SourceRegion: ap-northeast-2
  ImageName: Encrypted Copy of LAMP base AMI in ap-northeast-2
  Encrypted: true
```

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

```
{   
    "name": "createEncryptedCopy",
    "action": "aws:copyImage",
    "maxAttempts": 3,
    "onFailure": "Abort",
    "inputs": {
        "SourceImageId": "ami-0fe10819",
        "SourceRegion": "ap-northeast-2",
        "ImageName": "Encrypted Copy of LAMP base AMI in ap-northeast-2",
        "Encrypted": true
    }   
}
```

------

SourceRegion  
Regione in cui esiste l'AMI di origine.  
Tipo: stringa  
Obbligatorio: sì

SourceImageId  
ID dell'AMI da copiare dalla regione di origine.  
Tipo: stringa  
Obbligatorio: sì

ImageName  
Nome della nuova immagine.  
Tipo: stringa  
Obbligatorio: sì

ImageDescription  
Descrizione dell'immagine di destinazione.  
▬Tipo: stringa  
Obbligatorio: no

Crittografato  
Crittografa l'AMI di destinazione.  
Tipo: Booleano  
Obbligatorio: no

KmsKeyId  
L'Amazon Resource Name (ARN) completo AWS KMS key da utilizzare per crittografare le istantanee di un'immagine durante un'operazione di copia. Per ulteriori informazioni, consulta [CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/api_copyimage.html).  
▬Tipo: stringa  
Obbligatorio: no

ClientToken  
Identificatore univoco con distinzione tra maiuscole e minuscole che fornisci per assicurare l'idempotenza della richiesta. Per ulteriori informazioni, consulta [CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/api_copyimage.html).  
▬Tipo: stringa  
Obbligatorio: noOutput

ImageId  
ID dell'immagine copiata.

ImageState  
Stato dell'immagine copiata.  
Valori validi: `available` \$1 `pending` \$1 `failed`

# `aws:createImage`: creazione di un'Amazon Machine Image
<a name="automation-action-create"></a>

Crea un'Amazon Machine Image (AMI) da un'istanza in esecuzione, in arresto o già arrestata, e vota affinché `ImageState` sia `available`.

**Nota**  
L'azione `aws:createImage` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**  
Questa azione supporta i seguenti parametri `CreateImage`. Per ulteriori informazioni, consulta [CreateImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateImage.html).

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

```
name: createMyImage
action: aws:createImage
maxAttempts: 3
onFailure: Abort
inputs:
  InstanceId: i-1234567890abcdef0
  ImageName: AMI Created on{{global:DATE_TIME}}
  NoReboot: true
  ImageDescription: My newly created AMI
```

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

```
{
    "name": "createMyImage",
    "action": "aws:createImage",
    "maxAttempts": 3,
    "onFailure": "Abort",
    "inputs": {
        "InstanceId": "i-1234567890abcdef0",
        "ImageName": "AMI Created on{{global:DATE_TIME}}",
        "NoReboot": true,
        "ImageDescription": "My newly created AMI"
    }
}
```

------

InstanceId  
ID dell'istanza.  
Tipo: stringa  
Obbligatorio: sì

ImageName  
Nome dell'immagine.  
Tipo: stringa  
Obbligatorio: sì

ImageDescription  
Descrizione dell'immagine.  
▬Tipo: stringa  
Obbligatorio: no

NoReboot  
Valore letterale booleano.  
Per impostazione predefinita, Amazon Elastic Compute Cloud (Amazon EC2) tenta di arrestare e riavviare l'istanza prima di creare l'immagine. Se l'opzione **No Reboot (Non riavviare)** è impostata su `true`, Amazon EC2 non arresta l'istanza prima di creare l'immagine. Quando viene utilizzata questa opzione, non è garantita l'integrità del file system per l'immagine creata.   
Se non desideri che l'istanza venga eseguita dopo averne creata una AMI da essa, utilizza prima l'[`aws:changeInstanceState`: modifica o rileva dello stato dell'istanza](automation-action-changestate.md)azione per arrestare l'istanza, quindi utilizza questa `aws:createImage` azione con l'**NoReboot**opzione impostata su`true`.  
Tipo: Booleano  
Obbligatorio: no

BlockDeviceMappings  
Dispositivi a blocchi per l'istanza.  
Tipo: Map  
Obbligatorio: noOutput

ImageId  
ID della nuova immagine creata.  
Tipo: String

ImageState  
Lo stato corrente dellimmagine. Se lo stato è disponibile, l'immagine viene registrata correttamente e può essere utilizzata per avviare un'istanza.  
Tipo: String

# `aws:createStack`— Crea una CloudFormation pila
<a name="automation-action-createstack"></a>

Crea una AWS CloudFormation pila a partire da un modello.

**Nota**  
L'azione `aws:createStack` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

*Per ulteriori informazioni sulla creazione di CloudFormation stack, consulta l'AWS CloudFormation API [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html)Reference.* 

**Input**

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

```
name: makeStack
action: aws:createStack
maxAttempts: 1
onFailure: Abort
inputs:
  Capabilities:
  - CAPABILITY_IAM
  StackName: myStack
  TemplateURL: http://s3.amazonaws.com/amzn-s3-demo-bucket/myStackTemplate
  TimeoutInMinutes: 5
  Parameters:
    - ParameterKey: LambdaRoleArn
      ParameterValue: "{{LambdaAssumeRole}}"
    - ParameterKey: createdResource
      ParameterValue: createdResource-{{automation:EXECUTION_ID}}
```

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

```
{
    "name": "makeStack",
    "action": "aws:createStack",
    "maxAttempts": 1,
    "onFailure": "Abort",
    "inputs": {
        "Capabilities": [
            "CAPABILITY_IAM"
        ],
        "StackName": "myStack",
        "TemplateURL": "http://s3.amazonaws.com/amzn-s3-demo-bucket/myStackTemplate",
        "TimeoutInMinutes": 5,
        "Parameters": [
          {
            "ParameterKey": "LambdaRoleArn",
            "ParameterValue": "{{LambdaAssumeRole}}"
          },
          {
            "ParameterKey": "createdResource",
            "ParameterValue": "createdResource-{{automation:EXECUTION_ID}}"
          }
    }
}
```

------

Funzionalità  
Un elenco di valori specificato in precedenza CloudFormation può creare determinati stack. Alcuni modelli di stack includono risorse che possono influire sulle autorizzazioni del tuo. Account AWS Per questi stack, è necessario confermare in modo esplicito le relative funzionalità specificando questo parametro.   
I valori validi includono `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM` e `CAPABILITY_AUTO_EXPAND`.   
**CAPABILITY\$1IAM e CAPABILITY\$1NAMED\$1IAM**  
Se sono presenti risorse IAM, è possibile specificare una delle funzionalità. In presenza di risorse IAM con nomi personalizzati, devi specificare `CAPABILITY_NAMED_IAM`. Se non specifichi questo parametro, questa operazione restituisce un errore `InsufficientCapabilities`. Le seguenti risorse richiedono di specificare `CAPABILITY_IAM` o `CAPABILITY_NAMED_IAM`.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-accesskey.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html)
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-addusertogroup.html)
Se il modello di stack contiene queste risorse, ti consigliamo di esaminare tutte le autorizzazioni a esse associate e modificarle, se necessario.   
Per ulteriori informazioni, consulta [Riconoscere le risorse IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities) nei modelli. CloudFormation   
**CAPABILITY\$1AUTO\$1EXPAND**  
Alcuni modelli contengono macro. Le macro eseguono un'elaborazione personalizzata sui modelli; ciò può includere azioni semplici come find-and-replace operazioni, fino a trasformazioni estese di interi modelli. Per questo motivo, gli utenti in genere creano un set di modifiche dal modello elaborato, in modo che possano rivedere le modifiche risultanti dalle macro prima di creare effettivamente lo stack. Se il modello di stack contiene una o più macro e si sceglie di creare uno stack direttamente dal modello elaborato, senza prima esaminare le modifiche risultanti in un set di modifiche, è necessario riconoscere questa funzionalità. 
*Per ulteriori informazioni, vedere [Utilizzo delle AWS CloudFormation macro per eseguire l'elaborazione personalizzata sui modelli](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) nella Guida per l'AWS CloudFormation utente.*  
Tipo: Array of Strings  
Valori validi: `CAPABILITY_IAM | CAPABILITY_NAMED_IAM | CAPABILITY_AUTO_EXPAND`  
Campo obbligatorio: no

ClientRequestToken  
Un identificatore univoco per questa CreateStack richiesta. Specifica questo token se imposti maxAttempts in questa fase su un valore maggiore di 1. Specificando questo token, CloudFormation sa che non stai tentando di creare un nuovo stack con lo stesso nome.  
▬Tipo: stringa  
Obbligatorio: no  
Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 128 caratteri.  
Modello: [a-zA-Z0-9][-a-zA-Z0-9]\$1

DisableRollback  
Imposta su `true` per disattivare il rollback dello stack se la creazione dello stack ha esito negativo.  
Condizionale: puoi specificare il parametro `DisableRollback` o il parametro `OnFailure`, ma non entrambi.   
Impostazione predefinita: `false`  
Tipo: Booleano  
Obbligatorio: no

Notifica ARNs  
L' ARNs argomento Amazon Simple Notification Service (Amazon SNS) per la pubblicazione di eventi relativi allo stack. [Puoi trovare l'argomento SNS ARNs utilizzando la console https://console.aws.amazon.com/sns/ Amazon SNS, v3/home.](https://console.aws.amazon.com/sns/v3/home)   
Tipo: Array of Strings  
Membri della matrice: numero massimo di 5 elementi.  
Obbligatorio: no

OnFailure  
Determina l'operazione da eseguire se la creazione dello stack ha esito negativo. È necessario specificare `DO_NOTHING`, `ROLLBACK` o `DELETE`.  
Condizionale: puoi specificare il parametro `OnFailure` o il parametro `DisableRollback`, ma non entrambi.   
Impostazione predefinita: `ROLLBACK`  
Tipo: String  
Valori validi: ` DO_NOTHING | ROLLBACK | DELETE`  
Obbligatorio: no

Parameters  
Elenco di strutture `Parameter` che specificano i parametri di input per lo stack. Per ulteriori informazioni, consulta il tipo di dati [Parameter](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html).   
Tipo: matrice di oggetti [Parametro](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html)   
Obbligatorio: no

ResourceTypes  
Tipi di risorse modello che si è autorizzati a utilizzare per questa operazione di creazione dello stack. Ad esempio: `AWS::EC2::Instance`, `AWS::EC2::*` o `Custom::MyCustomInstance`. Utilizza la seguente sintassi per descrivere i tipi di risorse modello.  
+ Per tutte le risorse: AWS 

  ```
  AWS::*
  ```
+ Per tutte le risorse personalizzate:

  ```
  Custom::*
  ```
+ Per una risorsa personalizzata specifica:

  ```
  Custom::logical_ID
  ```
+ Per tutte le risorse di un particolare Servizio AWS:

  ```
  AWS::service_name::*
  ```
+ Per una AWS risorsa specifica:

  ```
  AWS::service_name::resource_logical_ID
  ```
Se l'elenco dei tipi di risorse non include una risorsa in fase di creazione, la creazione dello stack ha esito negativo. Per impostazione predefinita, CloudFormation concede le autorizzazioni a tutti i tipi di risorse. IAM utilizza questo parametro per chiavi CloudFormation di condizione specifiche nelle politiche IAM. Per ulteriori informazioni, consulta [Controlling Access with AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html).   
Tipo: Array of Strings  
Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 256 caratteri.  
Obbligatorio: no

RoleARN  
L'Amazon Resource Name (ARN) di un ruolo IAM che CloudFormation presuppone la creazione dello stack. CloudFormation utilizza le credenziali del ruolo per effettuare chiamate per tuo conto. CloudFormation utilizza sempre questo ruolo per tutte le future operazioni sullo stack. Se gli utenti dispongono dell'autorizzazione per intervenire sullo stack, CloudFormation usa questo ruolo anche se gli utenti non sono autorizzati a passare tale parametro. Assicurati che il ruolo garantisca il livello minimo di privilegi.   
Se non si specifica un valore, CloudFormation utilizza il ruolo precedentemente associato allo stack. Se non è disponibile alcun ruolo, CloudFormation utilizza una sessione temporanea generata dalle credenziali utente.   
Tipo: String  
Limitazioni di lunghezza: lunghezza minima di 20. La lunghezza massima è 2048 caratteri.  
Obbligatorio: no

StackName  
Nome associato allo stack. Il nome deve essere univoco nella regione in cui si sta creando lo stack.  
Il nome di uno stack può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfabetico e non può avere una lunghezza superiore a 128 caratteri. 
Tipo: stringa  
Obbligatorio: sì

StackPolicyBody  
Struttura contenente il corpo della policy dello stack. Per ulteriori informazioni, consulta [Impedire gli aggiornamenti delle risorse stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html).  
Condizionale: puoi specificare il parametro `StackPolicyBody` o il parametro `StackPolicyURL`, ma non entrambi.   
Tipo: String  
Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 16384 caratteri.  
Obbligatorio: no

StackPolicyURL  
Posizione di un file contenente la policy dello stack. L'URL deve puntare a una policy che si trova in un bucket S3 nella stessa regione dello stack. La dimensione massima consentita del file della policy dello stack è 16 KB.  
Condizionale: puoi specificare il parametro `StackPolicyBody` o il parametro `StackPolicyURL`, ma non entrambi.   
Tipo: String  
Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 1350 caratteri.  
Obbligatorio: no

Tag  
Coppie chiave-valore da associare a questo stack. CloudFormation propaga inoltre questi tag alle risorse create nello stack. Puoi specificare un massimo di 10 tag.   
Tipo: matrice di oggetti [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Tag.html)   
Obbligatorio: no

TemplateBody  
Struttura contenente il corpo del modello con una lunghezza minima di 1 byte e una lunghezza massima di 51.200 byte. Per ulteriori informazioni, consulta [Anatomia dei modelli](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html).   
Condizionale: puoi specificare il parametro `TemplateBody` o il parametro `TemplateURL`, ma non entrambi.   
Tipo: String  
Limitazioni di lunghezza: lunghezza minima pari a 1.  
Obbligatorio: no

TemplateURL  
Posizione di un file contenente il corpo del modello. L'URL deve puntare a un modello che si trova in un bucket S3. La dimensione massima consentita per il modello è 460.800 byte. Per ulteriori informazioni, consulta [Anatomia dei modelli](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html).   
Condizionale: puoi specificare il parametro `TemplateBody` o il parametro `TemplateURL`, ma non entrambi.   
Tipo: String  
Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 1024 caratteri.  
Obbligatorio: no

TimeoutInMinutes  
Intervallo di tempo che può trascorrere prima che lo stato dello stack diventi `CREATE_FAILED`. Se `DisableRollback` non è impostato o è impostato su `false`, verrà eseguito il rollback dello stack.   
Tipo: numero intero  
Intervallo valido: valore minimo di 1.  
Obbligatorio: no

## Output
<a name="automation-action-createstack-output"></a>

StackId  
Identificatore univoco dello stack.  
Tipo: String

StackStatus  
Stato corrente dello stack.  
Tipo: String  
Valori validi: `CREATE_IN_PROGRESS | CREATE_FAILED | CREATE_COMPLETE | ROLLBACK_IN_PROGRESS | ROLLBACK_FAILED | ROLLBACK_COMPLETE | DELETE_IN_PROGRESS | DELETE_FAILED | DELETE_COMPLETE | UPDATE_IN_PROGRESS | UPDATE_COMPLETE_CLEANUP_IN_PROGRESS | UPDATE_COMPLETE | UPDATE_ROLLBACK_IN_PROGRESS | UPDATE_ROLLBACK_FAILED | UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS | UPDATE_ROLLBACK_COMPLETE | REVIEW_IN_PROGRESS`  
Obbligatorio: sì

StackStatusReason  
Messaggio di operazione riuscita o non riuscita associato allo stato dello stack.  
▬Tipo: stringa  
Obbligatorio: no  
Per ulteriori informazioni, consulta [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html).

## Considerazioni relative alla sicurezza
<a name="automation-action-createstack-security"></a>

Prima di utilizzare l'operazione `aws:createStack`, devi assegnare la seguente policy al ruolo presunto del servizio di automazione di IAM. Per ulteriori informazioni sul ruolo presunto, consulta [Processo 1: creazione di un ruolo di servizio per il servizio di automazione](automation-setup-iam.md#create-service-role). 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "sqs:*",
            "cloudformation:CreateStack",
            "cloudformation:DescribeStacks"
         ],
         "Resource":"*"
      }
   ]
}
```

------

# `aws:createTags`— Crea tag per AWS le risorse
<a name="automation-action-createtag"></a>

Crea nuovi tag per le istanze Amazon Elastic Compute Cloud (Amazon EC2) o le istanze gestite. AWS Systems Manager 

**Nota**  
L'azione `aws:createTags` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**  
Questa operazione supporta la maggior parte di parametri `CreateTags` di Amazon EC2 e di `AddTagsToResource` di Systems Manager. Per ulteriori informazioni, consultare [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/api_createtags.html) e [AddTagsToResource](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/api_addtagstoresource.html).

L'esempio seguente mostra come contrassegnare mediante tag un'Amazon Machine Image (AMI) e un'istanza come risorse di produzione per un determinato reparto.

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

```
name: createTags
action: aws:createTags
maxAttempts: 3
onFailure: Abort
inputs:
  ResourceType: EC2
  ResourceIds:
  - ami-9a3768fa
  - i-02951acd5111a8169
  Tags:
  - Key: production
    Value: ''
  - Key: department
    Value: devops
```

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

```
{
    "name": "createTags",
    "action": "aws:createTags",
    "maxAttempts": 3,
    "onFailure": "Abort",
    "inputs": {
        "ResourceType": "EC2",
        "ResourceIds": [
            "ami-9a3768fa",
            "i-02951acd5111a8169"
        ],
        "Tags": [
            {
                "Key": "production",
                "Value": ""
            },
            {
                "Key": "department",
                "Value": "devops"
            }
        ]
    }
}
```

------

ResourceIds  
ID della risorsa o delle risorse da contrassegnare mediante tag. Se il tipo di risorsa non è "EC2", questo campo può contenere solo un elemento.  
Tipo: StringList  
Obbligatorio: sì

Tag  
Tag da associare alla risorsa o alle risorse.  
Tipo: elenco di mappe  
Obbligatorio: sì

ResourceType  
Tipo della risorsa o delle risorse da contrassegnare mediante tag. Se non specificato, viene utilizzato il valore predefinito "EC2".  
▬Tipo: stringa  
Obbligatorio: no  
Valori validi: `EC2` \$1 `ManagedInstance` \$1 `MaintenanceWindow` \$1 `Parameter`

**Output**  
Nessuno

# `aws:deleteImage`: eliminazione di un'Amazon Machine Image
<a name="automation-action-delete"></a>

Elimina l'Amazon Machine Image (AMI) specificata e tutti gli snapshot correlati.

**Nota**  
L'azione `aws:deleteImage` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**  
Questa operazione supporta un solo parametro. Per ulteriori informazioni, consulta la documentazione relativa a [DeregisterImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeregisterImage.html)e [DeleteSnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeleteSnapshot.html).

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

```
name: deleteMyImage
action: aws:deleteImage
maxAttempts: 3
timeoutSeconds: 180
onFailure: Abort
inputs:
  ImageId: ami-12345678
```

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

```
{
    "name": "deleteMyImage",
    "action": "aws:deleteImage",
    "maxAttempts": 3,
    "timeoutSeconds": 180,
    "onFailure": "Abort",
    "inputs": {
        "ImageId": "ami-12345678"
    }
}
```

------

ImageId  
ID dell'immagine da eliminare.  
Tipo: stringa  
Obbligatorio: sì

**Output**  
Nessuno

# `aws:deleteStack`— Eliminare una CloudFormation pila
<a name="automation-action-deletestack"></a>

Elimina una AWS CloudFormation pila.

**Nota**  
L'azione `aws:deleteStack` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**

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

```
name: deleteStack
action: aws:deleteStack
maxAttempts: 1
onFailure: Abort
inputs:
  StackName: "{{stackName}}"
```

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

```
{
   "name":"deleteStack",
   "action":"aws:deleteStack",
   "maxAttempts":1,
   "onFailure":"Abort",
   "inputs":{
      "StackName":"{{stackName}}"
   }
}
```

------

ClientRequestToken  
Identificatore univoco per la richiesta `DeleteStack`. Specificate questo token se intendete riprovare le richieste, in modo che CloudFormation sappia che non state tentando di eliminare uno stack con lo stesso nome. Puoi riprovare l'esecuzione delle richieste `DeleteStack` per verificare che CloudFormation le abbia ricevute.  
Tipo: String  
Limitazioni di lunghezza: lunghezza minima pari a 1. La lunghezza massima è 128 caratteri.  
Modello: [a-zA-Z][-a-zA-Z0-9]\$1  
Obbligatorio: no

RetainResources.Membro.  
Questo input è valido solo per gli stack il cui stato è `DELETE_FAILED`. Un elenco di risorse logiche IDs per le risorse che desideri conservare. Durante l'eliminazione, CloudFormation elimina lo stack, ma non elimina le risorse conservate.  
La conservazione delle risorse è utile quando non è possibile eliminare una risorsa, ad esempio un bucket S3 non vuoto, ma si desidera eliminare lo stack.  
Tipo: Array of Strings  
Obbligatorio: no

RoleARN  
L'Amazon Resource Name (ARN) di un ruolo AWS Identity and Access Management (IAM) che CloudFormation presuppone la creazione dello stack. CloudFormation utilizza le credenziali del ruolo per effettuare chiamate per tuo conto. CloudFormation utilizza sempre questo ruolo per tutte le future operazioni sullo stack. Finché gli utenti dispongono dell'autorizzazione per operare sullo stack, CloudFormation utilizza questo ruolo anche se gli utenti non hanno l'autorizzazione per passarlo. Assicurati che il ruolo garantisca il livello minimo di privilegi.   
Se non specifichi un valore, CloudFormation utilizza il ruolo precedentemente associato allo stack. Se non è disponibile alcun ruolo, CloudFormation utilizza una sessione temporanea generata dalle credenziali utente.   
Tipo: String  
Limitazioni di lunghezza: lunghezza minima di 20. La lunghezza massima è 2048 caratteri.  
Obbligatorio: no

StackName  
Nome o ID stack univoco associato allo stack.  
Tipo: stringa  
Obbligatorio: sì

## Considerazioni relative alla sicurezza
<a name="automation-action-deletestack-security"></a>

Prima di utilizzare l'operazione `aws:deleteStack`, devi assegnare la seguente policy al ruolo presunto del servizio di automazione di IAM. Per ulteriori informazioni sul ruolo presunto, consulta [Processo 1: creazione di un ruolo di servizio per il servizio di automazione](automation-setup-iam.md#create-service-role). 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "sqs:*",
            "cloudformation:DeleteStack",
            "cloudformation:DescribeStacks"
         ],
         "Resource":"*"
      }
   ]
}
```

------

# `aws:executeAutomation`: esecuzione di un'altra automazione
<a name="automation-action-executeAutomation"></a>

Esegue un'automazione secondaria mediante una chiamata a un runbook secondario. Questa operazione consente di creare runbook per le operazioni più comuni e fare riferimento a tali runbook durante l'automazione. Questa operazione permette di semplificare i runbook in quanto elimina la necessità di duplicare le fasi tra runbook simili.

L'automazione secondaria viene eseguita nel contesto dell'utente che ha avviato l'automazione principale. Ciò significa che l'automazione secondaria utilizza lo stesso ruolo o utente AWS Identity and Access Management (IAM) dell'utente che ha avviato la prima automazione.

**Importante**  
Se è necessario specificare i parametri in un'automazione secondaria che utilizza un ruolo presunto (un ruolo che usa la policy iam:passRole), l'utente o il ruolo che ha avviato l'automazione principale deve disporre dell'autorizzazione necessaria per passare il ruolo presunto specificato nell'automazione secondaria. Per ulteriori informazioni sulla configurazione di un ruolo presunto per l'automazione, consulta [Crea ruoli di servizio per l'automazione tramite la console](automation-setup-iam.md).

**Input**

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

```
name: Secondary_Automation
action: aws:executeAutomation
maxAttempts: 3
timeoutSeconds: 3600
onFailure: Abort
inputs:
  DocumentName: secondaryAutomation
  RuntimeParameters:
    instanceIds:
    - i-1234567890abcdef0
```

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

```
{
   "name":"Secondary_Automation",
   "action":"aws:executeAutomation",
   "maxAttempts":3,
   "timeoutSeconds":3600,
   "onFailure":"Abort",
   "inputs":{
      "DocumentName":"secondaryAutomation",
      "RuntimeParameters":{
         "instanceIds":[
            "i-1234567890abcdef0"
         ]
      }
   }
}
```

------

DocumentName  
Nome del runbook secondario da eseguire durante la fase. Per i runbook dello stesso Account AWS, specifica il nome del runbook. Per i runbook condivisi da un altro Account AWS, specifica l'Amazon Resource Name (ARN) del runbook. Per informazioni sull'uso di runbook condivisi, consulta [Utilizzo di documenti SSM condivisi](documents-ssm-sharing.md#using-shared-documents).  
Tipo: stringa  
Obbligatorio: sì

DocumentVersion  
Versione del runbook secondario da eseguire. Se non è specificato, il servizio di automazione esegue la versione predefinita del runbook.  
▬Tipo: stringa  
Obbligatorio: no

MaxConcurrency  
Il numero massimo di destinazioni consentito per eseguire questa operazione in parallelo. È possibile specificare un numero, ad esempio 10, o una percentuale, ad esempio 10%.  
▬Tipo: stringa  
Obbligatorio: no

MaxErrors  
Numero di errori consentiti prima che il sistema interrompa l'esecuzione dell'automazione su destinazioni aggiuntive. Puoi specificare un numero assoluto di errori, ad esempio 10, oppure una percentuale della serie di destinazioni, ad esempio 10%. Se ad esempio specifichi 3, il sistema interrompe l'esecuzione dell'automazione quando riceve il quarto errore. Se specifichi 0, il sistema interrompe l'esecuzione dell'automazione su destinazioni aggiuntive dopo che viene restituito il risultato del primo errore. Se si esegue un'automazione su 50 risorse e si imposta `MaxErrors` sul 10%, il sistema interrompe l'esecuzione dell'automazione su destinazioni aggiuntive quando riceve il sesto errore.  
Alle automazioni già in esecuzione al raggiungimento della soglia di `MaxErrors`, è permesso di arrivare al termine; tuttavia, queste automazioni potrebbero anche avere esito negativo. Se è necessario assicurarsi che non ci saranno più automazioni non riuscite rispetto alla soglia di `MaxErrors`, impostare `MaxConcurrency` su 1 in modo che le automazioni procedano una alla volta.  
▬Tipo: stringa  
Obbligatorio: no

RuntimeParameters  
Parametri obbligatori per il runbook secondario. La mappatura usa il seguente formato: \$1"parameter1" : "value1", "parameter2" : "value2" \$1  
Tipo: Map  
Obbligatorio: no

Tag  
I metadati facoltativi assegnati a una risorsa. È possibile specificare un massimo di cinque tag per un'automazione.  
Tipo: MapList  
Obbligatorio: no

TargetLocations  
Una posizione è una combinazione di Regioni AWS e/o Account AWS dove si desidera eseguire l'automazione. È necessario specificare un numero minimo di 1 elemento ed è possibile specificare un numero massimo di 100 elementi. Quando si specifica un valore per questo parametro, gli output non vengono restituiti all'automazione padre. Se necessario, bisogna effettuare chiamate successive alle operazioni API per recuperare l'output dalle automazioni figlio.  
Tipo: MapList  
Obbligatorio: no

TargetMaps  
Un elenco di mappature chiave-valore dei parametri del documento alle risorse di destinazione. Sia `Targets` che `TargetMaps` non possono essere specificati insieme.   
Tipo: MapList  
Obbligatorio: no

TargetParameterName  
Nome del parametro utilizzato come risorsa di destinazione per l'automazione controllata dalla velocità. Necessario solo se si specificano `Targets`.  
▬Tipo: stringa  
Obbligatorio: no

Target  
Un elenco di mapping chiave-valore alle risorse di destinazione. Necessario solo se si specifica `TargetParameterName`.  
Tipo: MapList  
Obbligatorio: noOutput

Output  
Output generato dall'automazione secondaria. È possibile fare riferimento all'output utilizzando il seguente formato: *Secondary\$1Automation\$1Step\$1Name* .Output  
Tipo: StringList  
Ecco un esempio:  

```
- name: launchNewWindowsInstance
  action: 'aws:executeAutomation'
  onFailure: Abort
  inputs:
    DocumentName: launchWindowsInstance
  nextStep: getNewInstanceRootVolume
- name: getNewInstanceRootVolume
  action: 'aws:executeAwsApi'
  onFailure: Abort
  inputs:
    Service: ec2
    Api: DescribeVolumes
    Filters:
    - Name: attachment.device
      Values:
      - /dev/sda1
    - Name: attachment.instance-id
      Values:
      - '{{launchNewWindowsInstance.Output}}'
  outputs:
  - Name: rootVolumeId
    Selector: '$.Volumes[0].VolumeId'
    Type: String
  nextStep: snapshotRootVolume
- name: snapshotRootVolume
  action: 'aws:executeAutomation'
  onFailure: Abort
  inputs:
    DocumentName: AWS-CreateSnapshot
    RuntimeParameters:
    VolumeId:
    - '{{getNewInstanceRootVolume.rootVolumeId}}'
    Description:
    - 'Initial root snapshot for {{launchNewWindowsInstance.Output}}'
```

ExecutionId  
ID dell'automazione secondaria.  
Tipo: String

Status  
Stato dell'automazione secondaria.  
Tipo: String

# `aws:executeAwsApi`— Chiama ed esegui operazioni AWS API
<a name="automation-action-executeAwsApi"></a>

Chiama ed esegue operazioni AWS API. È supportata la maggior parte delle operazioni API, sebbene non tutte le operazioni API siano state sottoposte a test. Le operazioni API di streaming, come l'[GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)operazione, non sono supportate. Se non hai la certezza che un'operazione API che desideri utilizzare sia un'operazione di streaming, consulta la documentazione [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) del servizio per stabilire se un'API richiede input o output di streaming. Aggiorniamo regolarmente la versione Boto3 utilizzata da questa operazione. Tuttavia, dopo il rilascio di una nuova versione di Boto3, possono essere necessarie alcune settimane prima che le modifiche vengano applicate in questa operazione. Ogni operazione `aws:executeAwsApi` può durare al massimo 25 secondi. Per ulteriori esempi di utilizzo di questa operazione, consulta [Ulteriori esempi di runbook](automation-document-examples.md).

**Nota**  
L'azione `aws:executeAwsApi` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**  
Gli input vengono definiti dall'operazione API selezionata. 

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

```
action: aws:executeAwsApi
inputs:
  Service: The official namespace of the service
  Api: The API operation or method name
  API operation inputs or parameters: A value
outputs: # These are user-specified outputs
- Name: The name for a user-specified output key
  Selector: A response object specified by using jsonpath format
  Type: The data type
```

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

```
{
   "action":"aws:executeAwsApi",
   "inputs":{
      "Service":"The official namespace of the service",
      "Api":"The API operation or method name",
      "API operation inputs or parameters":"A value"
   },
   "outputs":[ These are user-specified outputs
      {
         "Name":"The name for a user-specified output key",
         "Selector":"A response object specified by using JSONPath format",
         "Type":"The data type"
      }
   ]
}
```

------

Servizio  
Lo spazio dei Servizio AWS nomi che contiene l'operazione API che desideri eseguire. [È possibile visualizzare un elenco di Servizio AWS namespace supportati in Servizi disponibili di.](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) AWS SDK per Python (Boto3) Il namespace è disponibile nella sezione **Client**. Ad esempio, il namespace per Systems Manager è `ssm`. Il namespace per Amazon Elastic Compute Cloud (Amazon EC2) è `ec2`.  
Tipo: stringa  
Obbligatorio: sì

Api  
Nome dell'operazione API da eseguire. Puoi visualizzare le operazioni API (definite anche metodi) scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Documentazione di riferimento ai servizi](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutte le operazioni API (metodi) per Amazon Relational Database Service (Amazon RDS) sono elencate nella seguente pagina: [Amazon RDS methods](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html) (Metodi Amazon RDS).  
Tipo: stringa  
Campo obbligatorio: sì

Input dell'operazione API  
Uno o più input dell'operazione API. Puoi visualizzare gli input disponibili (definiti anche parametri) scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Documentazione di riferimento ai servizi](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutti i metodi per Amazon RDS sono elencati nella pagina: [metodi di Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). ******Scegliete il metodo [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) e scorrete verso il basso per visualizzare i parametri disponibili, come Identifier, Name e Values. DBInstance******  

```
inputs:
  Service: The official namespace of the service
  Api: The API operation name
  API input 1: A value
  API Input 2: A value
  API Input 3: A value
```

```
"inputs":{
      "Service":"The official namespace of the service",
      "Api":"The API operation name",
      "API input 1":"A value",
      "API Input 2":"A value",
      "API Input 3":"A value"
}
```
Tipo: determinato dall'operazione API selezionata  
Obbligatorio: sì

**Output**  
Gli output sono specificati dall'utente in base alla risposta dell'operazione API scelta.

Name  
Nome dell'output.  
Tipo: stringa  
Obbligatorio: sì

Selector  
Vai a un JSONPath attributo specifico nell'oggetto di risposta. Puoi visualizzare gli oggetti di risposta scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Documentazione di riferimento ai servizi](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutti i metodi per Amazon RDS sono elencati nella pagina: [metodi di Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). **Scegliete il metodo [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) e scorrete verso il basso fino alla sezione Struttura della risposta.** **DBInstances**è elencato come oggetto di risposta.  
Tipo: Integer, Boolean, String,, StringList o StringMap MapList  
Obbligatorio: sì

Tipo  
Tipo di dati dell'elemento di risposta.  
Tipo: vario  
Obbligatorio: sì

# `aws:executeScript`: esecuzione di uno script
<a name="automation-action-executeScript"></a>

Esegue il Python o PowerShell lo script fornito utilizzando il runtime e il gestore specificati. Ogni operazione `aws:executeScript` può durare al massimo 600 secondi (10 minuti). Puoi limitare il timeout specificando il parametro `timeoutSeconds` per una fase `aws:executeScript`.

Usa le istruzioni return nella funzione per aggiungere output al payload di output. Per esempi di definizione degli output per l'operazione `aws:executeScript`, consulta [Esempio 2: Runbook con script](automation-authoring-runbooks-scripted-example.md). Puoi anche inviare l'output `aws:executeScript` delle azioni nei tuoi runbook al gruppo di log Amazon CloudWatch Logs da te specificato. Per ulteriori informazioni, consulta [Registrazione dell'output dell'azione di automazione con CloudWatch Logs](automation-action-logging.md).

Se desideri inviare l'output `aws:executeScript` delle azioni ai CloudWatch log o se gli script che specifichi per `aws:executeScript` le azioni richiamano le operazioni AWS API, è sempre necessario un ruolo di servizio AWS Identity and Access Management (IAM) (o assumi un ruolo) per eseguire il runbook.

**Nota**  
L'azione `aws:executeScript` non supporta il nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Se lo script effettua chiamate AWS API che potrebbero essere limitate, è necessario implementare la propria logica di riprova nel codice dello script.

L'`aws:executeScript`azione contiene i seguenti moduli Core PowerShell preinstallati:
+ Microsoft. PowerShell.Host
+ Microsoft. PowerShell.Gestione
+ Microsoft. PowerShell.Sicurezza
+ Microsoft. PowerShell.Utilità
+ PackageManagement
+ PowerShellGet

Per utilizzare i moduli PowerShell Core che non sono preinstallati, lo script deve installare il modulo con il `-Force` flag, come mostrato nel comando seguente. Il modulo `AWSPowerShell.NetCore` non è supportato. Sostituiscilo *ModuleName* con il modulo che desideri installare.

```
Install-Module ModuleName -Force
```

Per utilizzare i cmdlet PowerShell Core nello script, è consigliabile utilizzare i `AWS.Tools` moduli, come illustrato nei comandi seguenti. Sostituisci ogni *example resource placeholder* con le tue informazioni.
+ Cmdlet Amazon S3

  ```
  Install-Module AWS.Tools.S3 -Force
  Get-S3Bucket -BucketName amzn-s3-demo-bucket
  ```
+ Cmdlet Amazon EC2

  ```
  Install-Module AWS.Tools.EC2 -Force
  Get-EC2InstanceStatus -InstanceId instance-id
  ```
+ Cmdlet comuni o indipendenti dal AWS Tools for Windows PowerShell servizio.

  ```
  Install-Module AWS.Tools.Common -Force
  Get-AWSRegion
  ```

Se lo script inizializza nuovi oggetti oltre a utilizzare i cmdlet PowerShell Core, è necessario importare anche il modulo come illustrato nel comando seguente.

```
Install-Module AWS.Tools.EC2 -Force
Import-Module AWS.Tools.EC2

$tag = New-Object Amazon.EC2.Model.Tag
$tag.Key = "Tag"
$tag.Value = "TagValue"

New-EC2Tag -Resource i-02573cafcfEXAMPLE -Tag $tag
```

Per esempi di installazione e importazione di `AWS.Tools` moduli e utilizzo dei cmdlet PowerShell Core nei runbook, vedere. [Esperienza di progettazione visiva per i runbook Automation](automation-visual-designer.md)

**Input**  
Fornisci le informazioni necessarie per eseguire lo script. Sostituisci ogni *example resource placeholder* con le tue informazioni.

**Nota**  
L'allegato per uno script Python può essere un file.py o un file.zip che contiene lo script. PowerShell gli script devono essere archiviati in file.zip.

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

```
action: "aws:executeScript"
inputs: 
 Runtime: runtime
 Handler: "functionName"
 InputPayload: 
  scriptInput: '{{parameterValue}}'
 Script: |-
   def functionName(events, context):
   ...
 Attachment: "scriptAttachment.zip"
```

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

```
{
    "action": "aws:executeScript",
    "inputs": {
        "Runtime": "runtime",
        "Handler": "functionName",
        "InputPayload": {
            "scriptInput": "{{parameterValue}}"
        },
        "Attachment": "scriptAttachment.zip"
    }
}
```

------

Runtime  
Il linguaggio di runtime da utilizzare per eseguire lo script fornito. `aws:executeScript`supporta i runtime riportati nella tabella seguente.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/automation-action-executeScript.html)
Tipo: stringa  
Obbligatorio: sì  
Per i runtime di Python, l'ambiente fornisce 512 MB di memoria e 512 MB di spazio su disco. Per quanto riguarda i PowerShell runtime, l'ambiente fornisce 1024 MB di memoria e 512 MB di spazio su disco.

Gestore  
Il nome della funzione. È necessario assicurarsi che la funzione definita nel gestore abbia due parametri, `events` e `context`. Il PowerShell runtime non supporta questo parametro.  
Tipo: String  
Obbligatorio: Sì (Python) \$1 Non supportato () PowerShell

InputPayload  
Un oggetto JSON o YAML che verrà passato al primo parametro del gestore. Questo può essere usato per passare i dati di input allo script.  
▬Tipo: stringa  
Obbligatorio: no  

```
description: Tag an instance
schemaVersion: '0.3'
assumeRole: '{{AutomationAssumeRole}}'
parameters:
    AutomationAssumeRole:
        type: String
        description: '(Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.'
    InstanceId:
        type: String
        description: (Required) The ID of the EC2 instance you want to tag.
mainSteps:
  - name: tagInstance
    action: 'aws:executeScript'
    inputs:
        Runtime: "python3.11"
        Handler: tagInstance
        InputPayload:
            instanceId: '{{InstanceId}}'
        Script: |-
          def tagInstance(events,context):
            import boto3

            #Initialize client
            ec2 = boto3.client('ec2')
            instanceId = events['instanceId']
            tag = {
                "Key": "Env",
                "Value": "ExamplePython"
            }
            print(f"Adding tag {tag} to instance id {instanceId}")
            ec2.create_tags(
                Resources=[instanceId],
                Tags=[tag]
            )
            return tag
    outputs:
      - Type: String
        Name: TagKey
        Selector: $.Payload.Key
outputs:
  - tagInstance.TagKey
```

```
description: Tag an instance
schemaVersion: '0.3'
assumeRole: '{{AutomationAssumeRole}}'
parameters:
  AutomationAssumeRole:
    type: String
    description: (Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.
  InstanceId:
    type: String
    description: (Required) The ID of the EC2 instance you want to tag.
mainSteps:
  - name: tagInstance
    action: aws:executeScript
    isEnd: true
    inputs:
      Runtime: PowerShell 7.4
      InputPayload:
        instanceId: '{{InstanceId}}'
      Script: |-
        Install-Module AWS.Tools.EC2 -Force
        Import-Module AWS.Tools.EC2

        $input = $env:InputPayload | ConvertFrom-Json

        $tag = New-Object Amazon.EC2.Model.Tag
        $tag.Key = "Env"
        $tag.Value = "ExamplePowerShell"

        Write-Information "Adding tag key: $($tag.Key) and value: $($tag.Value) to instance id $($input.instanceId)"
        New-EC2Tag -Resource $input.instanceId -Tag $tag

        return $tag
    outputs:
      - Type: String
        Name: TagKey
        Selector: $.Payload.Key
outputs:
  - tagInstance.TagKey
```

Script  
Uno script incorporato che si desidera eseguire durante l'automazione.  
Tipo: String  
Obbligatorio: No (Python) \$1 Sì () PowerShell

Allegato  
Il nome di un file di script standalone o di un file .zip che può essere richiamato dall'operazione. Specifica lo stesso valore del `Name` del file allegato del documento che specifichi nel parametro della richiesta `Attachments`. Per ulteriori informazioni, consulta la sezione [Allegati](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateDocument.html#systemsmanager-CreateDocument-request-Attachments) nella *Documentazione di riferimento API di AWS Systems Manager *. Se stai fornendo uno script utilizzando un allegato, devi anche definire una sezione `files` negli elementi di primo livello del runbook. Per ulteriori informazioni, consulta [Versione dello schema 0.3](documents-schemas-features.md#automation-doc-syntax-examples).  
Per richiamare un file per python, utilizzare il formato `filename.method_name` in `Handler`.   
L'allegato per uno script Python può essere un file.py o un file.zip che contiene lo script. PowerShell gli script devono essere archiviati in file.zip.
Quando si includono librerie Python nell'allegato, si consiglia di aggiungere un file `__init__.py` vuoto in ogni directory del modulo. Ciò consente di importare i moduli dalla libreria nell'allegato all'interno del contenuto dello script. Ad esempio: `from library import module`  
▬Tipo: stringa  
Obbligatorio: noOutput

Carico utile  
Rappresentazione JSON dell'oggetto restituito dalla funzione. Vengono restituiti fino a 100 KB. Se si genera un elenco, viene restituito un massimo di 100 elementi.

## Utilizzo degli allegati con aws:executeScript
<a name="automation-action-executeScript-attachments"></a>

Gli allegati forniscono un modo efficace per impacchettare e riutilizzare script complessi, moduli multipli e dipendenze esterne nelle tue azioni `aws:executeScript`. Utilizza gli allegati quando devi:
+ Package di più moduli o PowerShell script Python.
+ Riutilizzare la stessa logica di script su più runbook.
+ Includi librerie o dipendenze esterne nei tuoi script.
+ Mantieni pulita la definizione del runbook separando la logica degli script complessi.
+ Condividi pacchetti di script tra team o flussi di lavoro di automazione.

### Struttura degli allegati e creazione del pacchetto
<a name="automation-action-executeScript-attachment-structure"></a>

È possibile allegare file singoli o pacchetti zip contenenti più file. La struttura varia a seconda del caso d'uso:

**Singoli file allegati**  
Per script semplici, puoi allegare un singolo `.py` file (Python) o `.zip` un file contenente un PowerShell singolo script.

**Pacchetti multimodulo**  
Per un'automazione complessa che richiede numerosi moduli, crea un pacchetto zip con la seguente struttura consigliata:

```
my-automation-package.zip
├── main.py                    # Entry point script
├── utils/
│   ├── __init__.py           # Required for Python module imports
│   ├── helper_functions.py   # Utility functions
│   └── aws_operations.py     # AWS-specific operations
├── config/
│   ├── __init__.py
│   └── settings.py           # Configuration settings
└── requirements.txt          # Optional: document dependencies
```

**Importante**  
Per i pacchetti Python, è necessario includere un file `__init__.py` vuoto in ogni directory che contiene i moduli Python. Ciò consente di importare moduli utilizzando la sintassi di importazione Python standard come `from utils import helper_functions`.

**PowerShell struttura del pacchetto**  
PowerShell gli allegati devono essere impacchettati in file zip con la seguente struttura:

```
my-powershell-package.zip
├── Main.ps1                  # Entry point script
├── Modules/
│   ├── HelperFunctions.ps1   # Utility functions
│   └── AWSOperations.ps1     # AWS-specific operations
└── Config/
    └── Settings.ps1          # Configuration settings
```

### Creazione di runbook con allegati
<a name="automation-action-executeScript-attachment-workflow"></a>

Segui questi passaggi per creare runbook che utilizzano allegati:

1. **Carica il tuo allegato su Amazon S3**

   Carica il file di script o il pacchetto zip in un bucket S3, a cui può accedere il tuo ruolo di automazione. Annota l'URI S3 per l'utilizzo nel passaggio successivo.

   ```
   aws s3 cp my-automation-package.zip s3://my-automation-bucket/scripts/
   ```

1. **Calcola il checksum degli allegati**

   Calcola il checksum SHA-256 del file allegato per la verifica di sicurezza:

   ```
   # Linux/macOS
   shasum -a 256 my-automation-package.zip
   
   # Windows PowerShell
   Get-FileHash -Algorithm SHA256 my-automation-package.zip
   ```

1. **Definisci la sezione dei file nel tuo runbook**

   Aggiungi una sezione `files` al livello superiore del runbook, per fare riferimento all'allegato:

   ```
   files:
     my-automation-package.zip:
       checksums:
         sha256: "your-calculated-checksum-here"
   ```

1. **Fai riferimento all'allegato nel passaggio executeScript**

   Utilizza il parametro `Attachment`, per fare riferimento al file caricato:

   ```
   - name: runMyScript
     action: aws:executeScript
     inputs:
       Runtime: python3.11
       Handler: main.process_data
       Attachment: my-automation-package.zip
       InputPayload:
         inputData: "{{InputParameter}}"
   ```

## aws:executeScript (esempi di allegati)
<a name="automation-action-executeScript-examples"></a>

Gli esempi seguenti mostrano diversi modi di utilizzare gli allegati con l'azione `aws:executeScript`.

### Esempio 1: singolo file allegato
<a name="automation-action-executeScript-single-file-example"></a>

Questo esempio mostra come utilizzare un singolo file Python come allegato, per elaborare i dati delle istanze EC2.

**File allegato: process\$1instance.py**  
Crea un file Python con i seguenti contenuti:

```
import boto3
import json

def process_instance_data(events, context):
    """Process EC2 instance data and return formatted results."""
    try:
        instance_id = events.get('instanceId')
        if not instance_id:
            raise ValueError("instanceId is required")
        
        ec2 = boto3.client('ec2')
        
        # Get instance details
        response = ec2.describe_instances(InstanceIds=[instance_id])
        instance = response['Reservations'][0]['Instances'][0]
        
        # Format the response
        result = {
            'instanceId': instance_id,
            'instanceType': instance['InstanceType'],
            'state': instance['State']['Name'],
            'availabilityZone': instance['Placement']['AvailabilityZone'],
            'tags': {tag['Key']: tag['Value'] for tag in instance.get('Tags', [])}
        }
        
        print(f"Successfully processed instance {instance_id}")
        return result
        
    except Exception as e:
        print(f"Error processing instance: {str(e)}")
        raise
```

**Runbook completo**  
Ecco il runbook completo che utilizza il singolo file allegato:

```
description: Process EC2 instance data using single file attachment
schemaVersion: '0.3'
assumeRole: '{{AutomationAssumeRole}}'
parameters:
  AutomationAssumeRole:
    type: String
    description: (Required) IAM role for automation execution
  InstanceId:
    type: String
    description: (Required) EC2 instance ID to process

files:
  process_instance.py:
    checksums:
      sha256: "abc123def456..."

mainSteps:
  - name: processInstance
    action: aws:executeScript
    inputs:
      Runtime: python3.11
      Handler: process_instance.process_instance_data
      Attachment: process_instance.py
      InputPayload:
        instanceId: '{{InstanceId}}'
    outputs:
      - Type: StringMap
        Name: InstanceData
        Selector: $.Payload

outputs:
  - processInstance.InstanceData
```

### Esempio 2: pacchetto multimodulo
<a name="automation-action-executeScript-multi-module-example"></a>

Questo esempio dimostra l'utilizzo di un pacchetto zip contenente numerosi moduli Python per operazioni complesse con bucket S3.

**Struttura del pacchetto**  
Crea un pacchetto zip con la seguente struttura:

```
s3-operations.zip
├── main.py
├── utils/
│   ├── __init__.py
│   ├── s3_helper.py
│   └── validation.py
└── config/
    ├── __init__.py
    └── settings.py
```

**main.py (punto di ingresso)**  
Lo script principale che orchestra le operazioni:

```
from utils.s3_helper import S3Operations
from utils.validation import validate_bucket_name
from config.settings import get_default_settings

def cleanup_s3_bucket(events, context):
    """Clean up S3 bucket based on specified criteria."""
    try:
        bucket_name = events.get('bucketName')
        max_age_days = events.get('maxAgeDays', 30)
        
        # Validate inputs
        if not validate_bucket_name(bucket_name):
            raise ValueError(f"Invalid bucket name: {bucket_name}")
        
        # Initialize S3 operations
        s3_ops = S3Operations()
        settings = get_default_settings()
        
        # Perform cleanup
        deleted_objects = s3_ops.delete_old_objects(
            bucket_name, 
            max_age_days,
            settings['dry_run']
        )
        
        result = {
            'bucketName': bucket_name,
            'deletedCount': len(deleted_objects),
            'deletedObjects': deleted_objects[:10],  # Return first 10 for brevity
            'dryRun': settings['dry_run']
        }
        
        print(f"Cleanup completed for bucket {bucket_name}")
        return result
        
    except Exception as e:
        print(f"Error during S3 cleanup: {str(e)}")
        raise
```

## Risoluzione dei problemi relativi agli allegati aws:executeScript
<a name="automation-action-executeScript-troubleshooting"></a>

Utilizza le seguenti linee guida per risolvere i problemi più comuni relativi agli allegati `aws:executeScript`:

**Errori di importazione del modulo**  
Se ricevi errori di importazione, quando usi pacchetti multimodulo:
+ Assicurati di aver incluso un file `__init__.py` vuoto in ogni directory contenente i moduli Python.
+ Verifica che le istruzioni di importazione corrispondano all'effettiva struttura di file e directory nel pacchetto zip.
+ Utilizza le importazioni relative (ad esempio `from .utils import helper`) o le importazioni assolute (ad esempio `from utils import helper`) in modo coerente.

**Errori per allegati non trovati**  
Se l'automazione non riesce a trovare l'allegato:
+ Verifica che il valore del `Attachment` parametro corrisponda esattamente alla chiave nella tua sezione `files`.
+ Controlla che il percorso del bucket S3 e il nome del file siano corretti nella sezione `files`.
+ Assicurati che il tuo ruolo di automazione disponga dell'autorizzazione `s3:GetObject` per la posizione dell'allegato S3.
+ Verifica che il checksum nel runbook corrisponda al checksum effettivo del file.

**Errori della funzione del gestore**  
Se ricevi errori relativi al gestore:
+ Per Python: utilizza il formato `filename.function_name` nel parametro `Handler` (ad esempio `main.process_data`).
+ Assicurati che la funzione del gestore accetti esattamente due parametri: `events` e `context`.
+ Per PowerShell: non specificare un `Handler` parametro; lo script viene eseguito direttamente.

**Errori di esecuzione dello script**  
Se lo script fallisce durante l'esecuzione:
+ Controlla la cronologia di esecuzione dell'automazione per messaggi di errore dettagliati e tracce dello stack.
+ Usa `print()` le istruzioni (Python) o `Write-Information` (PowerShell) per aggiungere l'output di debug.
+ Verifica che tutte le AWS autorizzazioni richieste siano concesse al tuo ruolo di automazione.
+ Testa la logica dello script localmente prima di assemblarlo come allegato.

**Codici di uscita e gestione degli errori**  
Per gestire correttamente gli errori e restituire i codici di uscita:
+ In Python: usa `raise Exception("error message")` per indicare l'errore dello script.
+ In PowerShell: usa `throw "error message"` o `Write-Error` per indicare un errore.
+ Restituisci dati strutturati dalle tue funzioni per fornire success/failure informazioni dettagliate.
+ Usa i blocchi try-catch per gestire le eccezioni agilmente e fornire messaggi di errore significativi.

# `aws:executeStateMachine`— Esegui una macchina a AWS Step Functions stati
<a name="automation-action-executeStateMachine"></a>

Esegue una macchina a AWS Step Functions stati.

**Nota**  
L'azione `aws:executeStateMachine` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**

Questa azione supporta la maggior parte dei parametri per il funzionamento dell'[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)API Step Functions.

**Autorizzazioni richieste AWS Identity and Access Management (IAM)**
+ `states:DescribeExecution`
+ `states:StartExecution`
+ `states:StopExecution`

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

```
name: executeTheStateMachine
action: aws:executeStateMachine
inputs:
  stateMachineArn: StateMachine_ARN
  input: '{"parameters":"values"}'
  name: name
```

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

```
{
    "name": "executeTheStateMachine",
    "action": "aws:executeStateMachine",
    "inputs": {
        "stateMachineArn": "StateMachine_ARN",
        "input": "{\"parameters\":\"values\"}",
        "name": "name"
    }
}
```

------

stateMachineArn  
Il nome della risorsa Amazon (ARN) della macchina dello stato Step Functions.  
Tipo: stringa  
Obbligatorio: sì

nome  
Nome dell'esecuzione.  
▬Tipo: stringa  
Obbligatorio: no

input  
Stringa contenente i dati di input JSON per l'esecuzione.  
▬Tipo: stringa  
Obbligatorio: no

**Output**  
I seguenti output sono predefiniti per questa operazione.

executionArn  
L'ARN dell'esecuzione.  
Tipo: String

input  
Stringa contenente i dati di input JSON dell'esecuzione. I vincoli di lunghezza si applicano alle dimensioni payload e sono espressi in byte con codifica UTF-8.  
Tipo: String

nome  
Nome dell'esecuzione.  
Tipo: String

output  
Dati di output JSON dell'esecuzione. I vincoli di lunghezza si applicano alle dimensioni payload e sono espressi in byte con codifica UTF-8.  
Tipo: String

startDate  
Data di inizio dell'esecuzione.  
Tipo: String

stateMachineArn  
L'ARN della macchina a stati in esecuzione.  
Tipo: String

status  
Stato attuale dell'esecuzione.  
Tipo: String

stopDate  
Se l'esecuzione è già terminata, la data in cui l'esecuzione è stata interrotta.  
Tipo: String

# `aws:invokeWebhook`: richiamo dell'integrazione di un webhook di Automation
<a name="invoke-webhook"></a>

Questa azione richiama l'integrazione del webhook di Automation specificato. Per informazioni sulla creazione di integrazioni di automazione, consulta [Creazione di integrazioni webhook per Automazione](creating-webhook-integrations.md).

**Nota**  
L'azione `aws:invokeWebhook` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Nota**  
Per utilizzare l'operazione `aws:invokeWebhook`, l'utente o il ruolo di servizio deve consentire le seguenti operazioni:  
sms: GetParameter
kms:Decrypt
L'autorizzazione per l'`Decrypt`operazione AWS Key Management Service (AWS KMS) è richiesta solo se si utilizza una chiave gestita dal cliente per crittografare il parametro per l'integrazione.

**Input**  
Fornisci le informazioni per l'integrazione di Automation che desideri richiamare.

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

```
action: "aws:invokeWebhook"
inputs: 
 IntegrationName: "exampleIntegration"
 Body: "Request body"
```

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

```
{
    "action": "aws:invokeWebhook",
    "inputs": {
        "IntegrationName": "exampleIntegration",
        "Body": "Request body"
    }
}
```

------

IntegrationName  
Il nome dell'integrazione di Automazione Ad esempio, `exampleIntegration`. L'integrazione specificata deve esistere già.  
Tipo: stringa  
Obbligatorio: sì

Body  
Il payload che desideri inviare quando viene richiamata l'integrazione del webhook.  
▬Tipo: stringa  
Obbligatorio: noOutput

Risposta  
Il testo ricevuto dalla risposta del provider di webhook.

ResponseCode  
Il codice di stato HTTP ricevuto dalla risposta del provider di webhook.

# `aws:invokeLambdaFunction`— Invoca una funzione AWS Lambda
<a name="automation-action-lamb"></a>

Richiama la funzione specificata. AWS Lambda 

**Nota**  
Ogni operazione `aws:invokeLambdaFunction` può durare al massimo 300 secondi (5 minuti). Puoi limitare il timeout specificando il parametro `timeoutSeconds` per una fase `aws:invokeLambdaFunction`.

**Nota**  
L'azione `aws:invokeLambdaFunction` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**  
Questa operazione supporta la maggior parte dei parametri richiamati per il servizio Lambda. Per ulteriori informazioni, consulta [Invoke (Chiamata)](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html).

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

```
name: invokeMyLambdaFunction
action: aws:invokeLambdaFunction
maxAttempts: 3
timeoutSeconds: 120
onFailure: Abort
inputs:
  FunctionName: MyLambdaFunction
```

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

```
{
    "name": "invokeMyLambdaFunction",
    "action": "aws:invokeLambdaFunction",
    "maxAttempts": 3,
    "timeoutSeconds": 120,
    "onFailure": "Abort",
    "inputs": {
        "FunctionName": "MyLambdaFunction"
    }
}
```

------

FunctionName  
Il nome della funzione Lambda. Questa funzione deve esistere.  
Tipo: stringa  
Obbligatorio: sì

Qualificatore  
Versione o nome alias della funzione.  
▬Tipo: stringa  
Obbligatorio: no

InvocationType  
Tipi di chiamata. Il valore predefinito è `RequestResponse`.  
Tipo: String  
Valori validi: `Event` \$1 `RequestResponse` \$1 `DryRun`  
Obbligatorio: no

LogType  
Se il valore predefinito è `Tail`, il tipo di chiamata deve essere `RequestResponse`. Lambda restituisce gli ultimi 4 KB di dati di log prodotti dalla funzione Lambda, con codifica base64  
Tipo: String  
Valori validi: `None` \$1 `Tail`  
Obbligatorio: no

ClientContext  
Informazioni specifiche del client.  
Obbligatorio: no

InputPayload  
Un oggetto YAML o JSON che viene passato al primo parametro del gestore. Questo input può essere utilizzato per passare i dati alla funzione. Questo input offre maggiore flessibilità e supporto rispetto all'input `Payload` legacy. Se vengono definiti sia `InputPayload` che `Payload` per l'operazione, `InputPayload` ha la precedenza e il valore `Payload` non viene utilizzato.  
Tipo: StringMap  
Obbligatorio: no

Carico utile  
Una stringa JSON che viene passata al primo parametro del gestore. Questo può essere utilizzato per passare i dati di input alla funzione. Consigliamo di utilizzare l'input `InputPayload` per funzionalità aggiuntive.  
▬Tipo: stringa  
Obbligatorio: noOutput

StatusCode  
Codice di stato HTTP .

FunctionError  
Se presente, indica che si è verificato un errore durante l'esecuzione della funzione. I dettagli sull'errore sono inclusi nel payload di risposta.

LogResult  
I log di codifica base64 per la chiamata della funzione Lambda. I log sono presenti solo se il tipo di chiamata è `RequestResponse` e sono stati richiesti i log.

Carico utile  
Rappresentazione JSON dell'oggetto restituito dalla funzione Lambda. Il payload è presente solo se il tipo di chiamata è `RequestResponse`.

Di seguito è riportata una parte del runbook `AWS-PatchInstanceWithRollback` che dimostra come fare riferimento agli output dall'operazione `aws:invokeLambdaFunction`.

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

```
- name: IdentifyRootVolume
  action: aws:invokeLambdaFunction
  inputs:
    FunctionName: "IdentifyRootVolumeLambda-{{automation:EXECUTION_ID}}"
    Payload: '{"InstanceId": "{{InstanceId}}"}'
- name: PrePatchSnapshot
  action: aws:executeAutomation
  inputs:
    DocumentName: "AWS-CreateSnapshot"
    RuntimeParameters:
      VolumeId: "{{IdentifyRootVolume.Payload}}"
      Description: "ApplyPatchBaseline restoration case contingency"
```

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

```
{
    "name": "IdentifyRootVolume",
    "action": "aws:invokeLambdaFunction",
    "inputs": {
      "FunctionName": "IdentifyRootVolumeLambda-{{automation:EXECUTION_ID}}",
      "Payload": "{\"InstanceId\": \"{{InstanceId}}\"}"
    }
  },
  {
    "name": "PrePatchSnapshot",
    "action": "aws:executeAutomation",
    "inputs": {
      "DocumentName": "AWS-CreateSnapshot",
      "RuntimeParameters": {
        "VolumeId": "{{IdentifyRootVolume.Payload}}",
        "Description": "ApplyPatchBaseline restoration case contingency"
      }
    }
  }
```

------

# `aws:loop`: intera sui passaggi di un'automazione
<a name="automation-action-loop"></a>

Questa operazione esegue un'iterazione su un sottoinsieme di passaggi in un runbook Automation. È possibile scegliere un ciclo di stile `do while` o `for each`. Per costruire un ciclo `do while`, utilizza il parametro di input `LoopCondition`. Per costruire un ciclo `for each`, utilizza i parametri di input `Iterators` e `IteratorDataType`. Quando utilizzi un'azione `aws:loop`, specifica solo il parametro di input `Iterators` o `LoopCondition`. Il numero massimo di iterazioni è 100.

La proprietà `onCancel` può essere utilizzata solo per i passaggi definiti all'interno di un ciclo. La proprietà `onCancel` non è supportata per l'azione `aws:loop`. La proprietà `onFailure` può essere utilizzata per un'operazione `aws:loop`, ma solo se si verifica un errore imprevisto che impedisce la corretta esecuzione del passaggio. Se si definiscono le proprietà `onFailure` per i passaggi all'interno di un ciclo, l'operazione `aws:loop` eredita tali proprietà e reagisce di conseguenza quando si verifica un errore.

**Esempi**  
Di seguito sono riportati alcuni esempi di come costruire i diversi tipi di operazioni di un ciclo.

------
#### [ do while ]

```
name: RepeatMyLambdaFunctionUntilOutputIsReturned
action: aws:loop
inputs:
    Steps:
    - name: invokeMyLambda
        action: aws:invokeLambdaFunction
        inputs:
        FunctionName: LambdaFunctionName
        outputs:
        - Name: ShouldRetry
            Selector: $.Retry
            Type: Boolean
    LoopCondition:
        Variable: "{{ invokeMyLambda.ShouldRetry }}"
        BooleanEquals: true
    MaxIterations: 3
```

------
#### [ for each ]

```
name: stopAllInstancesWithWaitTime
action: aws:loop
inputs:
    Iterators: "{{ DescribeInstancesStep.InstanceIds }}"
    IteratorDataType: "String"
    Steps:
    - name: stopOneInstance
        action: aws:changeInstanceState
        inputs:
        InstanceIds:
            - "{{stopAllInstancesWithWaitTime.CurrentIteratorValue}}"
        CheckStateOnly: false
        DesiredState: stopped
    - name: wait10Seconds
        action: aws:sleep
        inputs:
        Duration: PT10S
```

------

**Input**  
Di seguito è riportato l'input.

Iterators  
L'elenco degli elementi per i passaggi su cui eseguire l'iterazione. Il numero massimo di iteratori è 100.  
Tipo: StringList  
Obbligatorio: no

IteratorDataType  
Un parametro facoltativo per specificare il tipo di dati di `Iterators`. Un valore per questo parametro può essere fornito insieme al parametro di input `Iterators`. Se non si specifica un valore per questo parametro e `Iterators`, sarà necessario specificare un valore per il parametro `LoopCondition`.  
Tipo: String  
Valori validi: Boolean \$1 Integer \$1 String \$1 StringMap  
Predefinito: String  
Obbligatorio: no

LoopCondition  
Costituito da una `Variable` e una condizione dell'operatore da valutare. Se non si specifica un valore per questo parametro, allora sarà necessario specificare i valori per i parametri `Iterators` e `IteratorDataType`. È possibile utilizzare valutazioni complesse degli operatori utilizzando una combinazione degli operatori `And`, `Not` e `Or`. La condizione viene valutata dopo il completamento dei passaggi del ciclo. Se la condizione è `true` e il valore `MaxIterations` non è stato raggiunto, i passaggi del ciclo saranno eseguiti nuovamente. Le condizioni dell'operatore sono le seguenti:  

**Operazioni di stringa**
+ StringEquals
+ EqualsIgnoreCase
+ StartsWith
+ EndsWith
+ Contiene

**Operazioni numeriche**
+ NumericEquals
+ NumericGreater
+ NumericLesser
+ NumericGreaterOrEquals
+ NumericLesser
+ NumericLesserOrEquals

**Operazioni booleane**
+ BooleanEquals
Tipo: StringMap  
Obbligatorio: no

MaxIterations  
Il numero massimo di volte che vengono eseguiti i passaggi del ciclo. Una volta raggiunto il valore specificato per questo input, il ciclo smette di funzionare anche se `LoopCondition` è ancora `true` o se ci sono oggetti rimanenti nel parametro `Iterators`.  
Tipo: numero intero  
Valori validi: 1-100  
Obbligatorio: no

Fasi  
L'elenco di passaggi da eseguire nel ciclo. Funzionano come un runbook nidificato. In questi passaggi è possibile accedere al valore corrente dell'iteratore per un ciclo `for each` utilizzando la sintassi `{{loopStepName.CurrentIteratorValue}}`. È inoltre possibile accedere a un valore intero dell'iterazione corrente per entrambi i tipi di ciclo utilizzando la sintassi `{{loopStepName.CurrentIteration}}`.  
Tipo: elenco di passaggi  
Obbligatorio: sìOutput

CurrentIteration  
L'iterazione del ciclo corrente come numero intero. I valori di iterazione iniziano da 1.  
Tipo: numero intero

CurrentIteratorValue  
Il valore dell'iteratore corrente come stringa. Questo output è presente solo nei cicli `for each`.  
Tipo: String

# `aws:pause`: sospensione di un'automazione
<a name="automation-action-pause"></a>

Questa operazione sospende l'esecuzione dell'automazione. Una volta sospesa, lo stato dell'automazione è *Waiting* (In attesa). Per continuare l'automazione, utilizza l'operazione [SendAutomationSignal](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendAutomationSignal.html)API con il tipo di `Resume` segnale. Ti consigliamo di usare l'operazione `aws:sleep` o `aws:approve` per un controllo più granulare dei flussi di lavoro.

**Nota**  
Il timeout predefinito per questa azione è di 7 giorni (60.4800 secondi) e il valore massimo è di 30 giorni (259.2000 secondi). Puoi limitare o estendere il timeout specificando il parametro `timeoutSeconds` per una fase `aws:pause`.

**Input**  
Di seguito è riportato l'input.

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

```
name: pauseThis
action: aws:pause
timeoutSeconds: 1209600
inputs: {}
```

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

```
{
    "name": "pauseThis",
    "action": "aws:pause",
    "timeoutSeconds": "1209600",
    "inputs": {}
}
```

------Output

Nessuno  


# `aws:runCommand`: esecuzione di un comando su un'istanza gestita
<a name="automation-action-runcommand"></a>

Esegue i comandi specificati.

**Nota**  
L'automazione supporta solo l'*output* di un'operazione AWS Systems Manager Run Command. Un runbook può includere più operazioni Run Command, ma l'output è supportato solo per un'operazione alla volta.

**Input**  
Questa operazione supporta la maggior parte dei parametri dell'operazione SendCommand. Per ulteriori informazioni, consulta [SendCommand](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html).

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

```
- name: checkMembership
  action: 'aws:runCommand'
  inputs:
    DocumentName: AWS-RunPowerShellScript
    InstanceIds:
      - '{{InstanceIds}}'
    Parameters:
      commands:
        - (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
```

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

```
{
    "name": "checkMembership",
    "action": "aws:runCommand",
    "inputs": {
        "DocumentName": "AWS-RunPowerShellScript",
        "InstanceIds": [
            "{{InstanceIds}}"
        ],
        "Parameters": {
            "commands": [
                "(Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain"
            ]
        }
    }
}
```

------

DocumentName  
Se il documento di tipo Comando è di tua proprietà o AWS, specifica il nome del documento. Se stai usando un documento condiviso con te da un Account AWS differente, specifica il nome della risorsa Amazon (ARN) del documento. Per ulteriori informazioni sull'utilizzo di documenti condivisi, consulta [Utilizzo di documenti SSM condivisi](documents-ssm-sharing.md#using-shared-documents).  
Tipo: stringa  
Obbligatorio: sì

InstanceIds  
L'istanza IDs in cui si desidera eseguire il comando. È possibile specificare un massimo di 50 IDs.   
È inoltre possibile utilizzare il parametro `{{RESOURCE_ID}}` pseudo al posto dell'istanza IDs per eseguire il comando su tutte le istanze del gruppo di destinazione. Per ulteriori informazioni sugli pseudoparametri, consulta [Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione](maintenance-window-tasks-pseudo-parameters.md).  
Un'altra alternativa consiste nell'inviare comandi a un parco istanze utilizzando il parametro `Targets`. Il parametro `Targets` accetta i tag di Amazon Elastic Compute Cloud (Amazon EC2). Per ulteriori informazioni su come utilizzare il parametro `Targets`, consulta [Esecuzione di comandi su vasta scala](send-commands-multiple.md).  
Tipo: StringList  
Obbligatorio: No (se non si specifica InstanceIds o non si utilizza il parametro `{{RESOURCE_ID}}` pseudo, è necessario specificare il parametro). `Targets`

Targets  
Una matrice di criteri di ricerca che individua le istanze utilizzando una combinazione Chiave e Valore specificata dall'utente. `Targets`è obbligatorio se non si forniscono una o più istanze IDs nella chiamata. Per ulteriori informazioni su come utilizzare il parametro `Targets`, consulta [Esecuzione di comandi su vasta scala](send-commands-multiple.md).  
Tipo: MapList (Lo schema della mappa nell'elenco deve corrispondere all'oggetto.) Per ulteriori informazioni, consulta [Target](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_Target.html) (Destinazione) nella *Documentazione di riferimento dell'API di AWS Systems Manager *.  
Obbligatorio: No (se non si specifica`Targets`, è necessario specificare InstanceIds o utilizzare lo `{{RESOURCE_ID}}` pseudo parametro.)  
Di seguito è riportato un esempio.  

```
- name: checkMembership
  action: aws:runCommand
  inputs:
    DocumentName: AWS-RunPowerShellScript
    Targets:
      - Key: tag:Stage
        Values:
          - Gamma
          - Beta
      - Key: tag-key
        Values:
          - Suite
    Parameters:
      commands:
        - (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
```

```
{
    "name": "checkMembership",
    "action": "aws:runCommand",
    "inputs": {
        "DocumentName": "AWS-RunPowerShellScript",
        "Targets": [                   
            {
                "Key": "tag:Stage",
                "Values": [
                    "Gamma", "Beta"
                ]
            },
            {
                "Key": "tag:Application",
                "Values": [
                    "Suite"
                ]
            }
        ],
        "Parameters": {
            "commands": [
                "(Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain"
            ]
        }
    }
}
```

Parameters  
Parametri obbligatori e facoltativi specificati nel documento.  
Tipo: Map  
Obbligatorio: no

CloudWatchOutputConfig  
Opzioni di configurazione per l'invio dell'output dei comandi ad Amazon CloudWatch Logs. Per ulteriori informazioni sull'invio dell'output del comando a CloudWatch Logs, consulta. [Configurazione di Amazon CloudWatch Logs per Run Command](sysman-rc-setting-up-cwlogs.md)  
Tipo: StringMap (Lo schema della mappa deve corrispondere all'oggetto. Per ulteriori informazioni, [CloudWatchOutputConfig](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CloudWatchOutputConfig.html)consulta l'*AWS Systems Manager API Reference*).  
Obbligatorio: no  
Di seguito è riportato un esempio.  

```
- name: checkMembership
  action: aws:runCommand
  inputs:
    DocumentName: AWS-RunPowerShellScript
    InstanceIds:
      - "{{InstanceIds}}"
    Parameters:
      commands:
        - "(Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain"
    CloudWatchOutputConfig:
      CloudWatchLogGroupName: CloudWatchGroupForSSMAutomationService
      CloudWatchOutputEnabled: true
```

```
{
    "name": "checkMembership",
    "action": "aws:runCommand",
    "inputs": {
        "DocumentName": "AWS-RunPowerShellScript",
        "InstanceIds": [
            "{{InstanceIds}}"
        ],
        "Parameters": {
            "commands": [
                "(Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain"
            ]
        },
        "CloudWatchOutputConfig" : { 
                "CloudWatchLogGroupName": "CloudWatchGroupForSSMAutomationService",
                "CloudWatchOutputEnabled": true
        }
    }
}
```

Comment  
Informazioni definite dall'utente sul comando.  
▬Tipo: stringa  
Obbligatorio: no

DocumentHash  
Hash del documento.  
▬Tipo: stringa  
Obbligatorio: no

DocumentHashType  
Tipo di hash.  
Tipo: String  
Valori validi: `Sha256` \$1 `Sha1`  
Obbligatorio: no

NotificationConfig  
Configurazioni per l'invio delle notifiche.  
Obbligatorio: no

OutputS3 BucketName  
Nome del bucket S3 per le risposte dell'output del comando. Il nodo gestito deve disporre delle autorizzazioni, affinché il bucket S3 registri correttamente l'output.  
▬Tipo: stringa  
Obbligatorio: no

OutputS3 KeyPrefix  
Prefisso.  
▬Tipo: stringa  
Obbligatorio: no

ServiceRoleArn  
L'ARN del ruolo AWS Identity and Access Management (IAM).  
▬Tipo: stringa  
Obbligatorio: no

TimeoutSeconds  
La quantità di tempo, in secondi, di attesa per l'invio di un comando AWS Systems Manager SSM Agent su un'istanza. Se il comando non viene ricevuto da SSM Agent sull'istanza prima che venga raggiunto il valore specificato, lo stato del comando cambia in `Delivery Timed Out`.  
Tipo: Integer  
Obbligatorio: no  
Valori validi: 30-2592000Output

CommandId  
ID del comando.

Status  
Stato del comando.

ResponseCode  
Codice di risposta del comando. Se il documento eseguito presenta più di un passaggio, non viene restituito un valore per questo output.

Output  
Output del comando. Se il comando è rivolto a un tag o a più istanze, non viene restituito alcun valore di output. È possibile utilizzare le operazioni API `GetCommandInvocation` e `ListCommandInvocations` per recuperare l'output di singole istanze.

# `aws:runInstances`: avvio di un'istanza di Amazon EC2
<a name="automation-action-runinstance"></a>

Avvia una nuova istanza di Amazon Elastic Compute Cloud (Amazon EC2).

**Nota**  
L'azione `aws:runInstances` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**  
L'operazione supporta la maggior parte dei parametri API. Per ulteriori informazioni, consulta la documentazione dell'[RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)API.

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

```
name: launchInstance
action: aws:runInstances
maxAttempts: 3
timeoutSeconds: 1200
onFailure: Abort
inputs:
  ImageId: ami-12345678
  InstanceType: t2.micro
  MinInstanceCount: 1
  MaxInstanceCount: 1
  IamInstanceProfileName: myRunCmdRole
  TagSpecifications:
  - ResourceType: instance
    Tags:
    - Key: LaunchedBy
      Value: SSMAutomation
    - Key: Category
      Value: HighAvailabilityFleetHost
```

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

```
{
   "name":"launchInstance",
   "action":"aws:runInstances",
   "maxAttempts":3,
   "timeoutSeconds":1200,
   "onFailure":"Abort",
   "inputs":{
      "ImageId":"ami-12345678",
      "InstanceType":"t2.micro",
      "MinInstanceCount":1,
      "MaxInstanceCount":1,
      "IamInstanceProfileName":"myRunCmdRole",
      "TagSpecifications":[
         {
            "ResourceType":"instance",
            "Tags":[
               {
                  "Key":"LaunchedBy",
                  "Value":"SSMAutomation"
               },
               {
                  "Key":"Category",
                  "Value":"HighAvailabilityFleetHost"
               }
            ]
         }
      ]
   }
}
```

------

AdditionalInfo  
Riservata.  
▬Tipo: stringa  
Obbligatorio: no

BlockDeviceMappings  
Dispositivi a blocchi per l'istanza.  
Tipo: MapList  
Obbligatorio: no

ClientToken  
Identificatore univoco per assicurare l'idempotenza della richiesta.  
▬Tipo: stringa  
Obbligatorio: no

DisableApiTermination  
Attiva o disattiva la terminazione dell'API dell'istanza.  
Tipo: Booleano  
Obbligatorio: no

EbsOptimized  
Attiva o disattiva l'ottimizzazione di Amazon Elastic Block Store (Amazon EBS).  
Tipo: Booleano  
Obbligatorio: no

IamInstanceProfileArn  
L'Amazon Resource Name (ARN) del profilo dell'istanza AWS Identity and Access Management (IAM) per l'istanza.  
▬Tipo: stringa  
Obbligatorio: no

IamInstanceProfileName  
Nome del profilo dell'istanza IAM per l'istanza.  
▬Tipo: stringa  
Obbligatorio: no

ImageId  
L'ID del Amazon Machine Image (AMI).  
Tipo: stringa  
Obbligatorio: sì

InstanceInitiatedShutdownBehavior  
Indica se l'istanza viene arrestata o terminata in caso di arresto del sistema.  
▬Tipo: stringa  
Obbligatorio: no

InstanceType  
Il tipo di istanza.  
Se non viene fornito un valore di un tipo di istanza, viene utilizzato il tipo di istanza m1.small.
▬Tipo: stringa  
Obbligatorio: no

KernelId  
ID del kernel.  
▬Tipo: stringa  
Obbligatorio: no

KeyName  
Nome della coppia di chiavi.  
▬Tipo: stringa  
Obbligatorio: no

MaxInstanceCount  
Numero massimo di istanze da avviare.  
▬Tipo: stringa  
Obbligatorio: no

MetadataOptions  
Le opzioni dei metadati per l'istanza. Per ulteriori informazioni, consulta [InstanceMetadataOptionsRequest](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceMetadataOptionsRequest.html).  
Tipo: StringMap  
Obbligatorio: no

MinInstanceCount  
Numero minimo di istanze da avviare.  
▬Tipo: stringa  
Obbligatorio: no

Monitoraggio  
Attiva o disattiva il monitoraggio dettagliato.  
Tipo: Booleano  
Obbligatorio: no

NetworkInterfaces  
Interfacce di rete.  
Tipo: MapList  
Obbligatorio: no

Placement  
Posizionamento dell'istanza.  
Tipo: StringMap  
Obbligatorio: no

PrivateIpAddress  
L' IPv4 indirizzo principale.  
▬Tipo: stringa  
Obbligatorio: no

RamdiskId  
L'ID del disco RAM.  
▬Tipo: stringa  
Obbligatorio: no

SecurityGroupIds  
I gruppi IDs di sicurezza per l'istanza.  
Tipo: StringList  
Obbligatorio: no

SecurityGroups  
Nomi dei gruppi di sicurezza per l'istanza.  
Tipo: StringList  
Obbligatorio: no

SubnetId  
L'ID sottorete.  
▬Tipo: stringa  
Obbligatorio: no

TagSpecifications  
I tag da applicare alle risorse durante il lancio. È possibile contrassegnare mediante tag solo le istanze e i volumi all'avvio. I tag specificati vengono applicati a tutti i volumi o le istanze che vengono creati durante il lancio. Per contrassegnare mediante tag un'istanza dopo che è stata avviata, utilizza l'operazione [`aws:createTags`— Crea tag per AWS le risorse](automation-action-createtag.md).  
Tipo: MapList (per ulteriori informazioni, vedere [TagSpecification](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TagSpecification.html).)  
Obbligatorio: no

UserData  
Script fornito sotto forma di valore letterale di stringa. Se viene immesso un valore letterale, deve essere con codifica Base64.  
▬Tipo: stringa  
Obbligatorio: noOutput

InstanceIds  
Le IDs istanze.

InstanceStates  
Lo stato attuale dell'istanza.

# `aws:sleep`: ritardo di un'automazione
<a name="automation-action-sleep"></a>

Ritarda l'automazione per un periodo di tempo specificato. Questa operazione usa valori di data/ora in formato ISO (International Organization for Standardization) 8601. Per ulteriori informazioni su questo formato di data e ora, consulta [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).

**Input**  
È possibile ritardare un'automazione per una durata specificata. 

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

```
name: sleep
action: aws:sleep
inputs:
  Duration: PT10M
```

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

```
{
   "name":"sleep",
   "action":"aws:sleep",
   "inputs":{
      "Duration":"PT10M"
   }
}
```

------

È anche possibile ritardare un'automazione fino alla data e all'ora specificate. Se la data e l'ora specificate sono trascorse, l'operazione viene eseguita immediatamente. 

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

```
name: sleep
action: aws:sleep
inputs:
  Timestamp: '2020-01-01T01:00:00Z'
```

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

```
{
    "name": "sleep",
    "action": "aws:sleep",
    "inputs": {
        "Timestamp": "2020-01-01T01:00:00Z"
    }
}
```

------

**Nota**  
L'automazione supporta un ritardo massimo di 604.799 secondi (7 giorni).

Durata  
Durata in formato ISO 8601. Non è possibile specificare una durata negativa.   
▬Tipo: stringa  
Obbligatorio: no

Time stamp  
Timestamp in formato ISO 8601. Se non si specifica un valore per questo parametro, è necessario specificare un valore per il parametro `Duration`.   
▬Tipo: stringa  
Obbligatorio: noOutput

Nessuno  


# `aws:updateVariable`: aggiorna un valore per una variabile di runbook
<a name="automation-action-update-variable"></a>

Questa azione aggiorna un valore per una variabile di runbook. Il tipo di dati per il valore deve corrispondere al tipo di dati della variabile da aggiornare. Le conversioni dei tipi di dati non sono supportate. La proprietà `onCancel` non è supportata per l'azione `aws:updateVariable`.

**Input**  
Di seguito è riportato l'input.

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

```
name: updateStringList
action: aws:updateVariable
inputs:
    Name: variable:variable name
    Value:
    - "1"
    - "2"
```

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

```
{
    "name": "updateStringList",
    "action": "aws:updateVariable",
    "inputs": {
        "Name": "variable:variable name",
        "Value": ["1","2"]
    }
}
```

------

Name  
Il nome della variabile di cui vuoi aggiornare il valore. È necessario utilizzare il formato `variable:variable name`  
Tipo: stringa  
Obbligatorio: sì

Valore  
Il nuovo valore da assegnare alla variabile. Il valore deve corrispondere al tipo di dati della variabile. Le conversioni dei tipi di dati non sono supportate.  
Tipo: Boolean \$1 Intero \$1 \$1 Stringa \$1 MapList \$1 StringList StringMap  
Obbligatorio: sì  
Vincoli:  
+ MapList può contenere un numero massimo di 200 articoli.
+ La lunghezza delle chiavi può essere minimo 1 e massimo 50.
+ StringList può essere un numero minimo di 0 elementi e un numero massimo di 50 elementi.
+ La lunghezza delle stringhe può essere minimo 1 e massimo 512.Output

Nessuno  


# `aws:waitForAwsResourceProperty`— Attendi una proprietà della AWS risorsa
<a name="automation-action-waitForAwsResourceProperty"></a>

L'operazione `aws:waitForAwsResourceProperty` consente all'automazione di attendere lo stato di una risorsa specifica o lo stato di un evento prima di continuare l'automazione. Per ulteriori esempi di utilizzo di questa operazione, consulta [Ulteriori esempi di runbook](automation-document-examples.md).

**Nota**  
Il valore di timeout predefinito per questa operazione è 3600 secondi (un'ora). Puoi limitare o estendere il timeout specificando il parametro `timeoutSeconds` per una fase `aws:waitForAwsResourceProperty`. Per ulteriori informazioni ed esempi su come utilizzare questa operazione, consulta [Gestione dei timeout nei runbook](automation-handling-timeouts.md).

**Nota**  
L'azione `aws:waitForAwsResourceProperty` supporta un nuovo tentativo di limitazione (della larghezza di banda della rete) automatico. Per ulteriori informazioni, consulta [Configurazione della ripetizione dei tentativi automatica per le operazioni di limitazione (della larghezza di banda della rete)](automation-throttling-retry.md).

**Input**  
Gli input vengono definiti dall'operazione API selezionata.

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

```
action: aws:waitForAwsResourceProperty
inputs:
  Service: The official namespace of the service
  Api: The API operation or method name
  API operation inputs or parameters: A value
  PropertySelector: Response object
  DesiredValues:
  - Desired property value
```

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

```
{
  "action": "aws:waitForAwsResourceProperty",
  "inputs": {
    "Service":"The official namespace of the service",
    "Api":"The API operation or method name",
    "API operation inputs or parameters":"A value",
    "PropertySelector": "Response object",
    "DesiredValues": [
      "Desired property value"
    ]
  }
}
```

------

Servizio  
Lo spazio dei Servizio AWS nomi che contiene l'operazione API che si desidera eseguire. Ad esempio, lo spazio dei nomi per è. AWS Systems Manager `ssm` Il namespace per Amazon Elastic Compute Cloud (Amazon EC2) è `ec2`. *È possibile visualizzare un elenco dei Servizio AWS namespace supportati nella sezione [Servizi disponibili del Command Reference](https://docs.aws.amazon.com/cli/latest/reference/#available-services).AWS CLI *  
Tipo: stringa  
Obbligatorio: sì

Api  
Nome dell'operazione API da eseguire. Puoi visualizzare le operazioni API (definite anche metodi) scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Documentazione di riferimento ai servizi](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutte le operazioni API (metodi) per Amazon Relational Database Service (Amazon RDS) sono elencate nella seguente pagina: [Amazon RDS methods](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html) (Metodi Amazon RDS).  
Tipo: stringa  
Campo obbligatorio: sì

Input dell'operazione API  
Uno o più input dell'operazione API. Puoi visualizzare gli input disponibili (definiti anche parametri) scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Documentazione di riferimento ai servizi](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutti i metodi per Amazon RDS sono elencati nella pagina: [metodi di Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). ******Scegliete il metodo [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) e scorrete verso il basso per visualizzare i parametri disponibili, ad esempio Identifier, Name e Values. DBInstance******  

```
inputs:
  Service: The official namespace of the service
  Api: The API operation name
  API input 1: A value
  API Input 2: A value
  API Input 3: A value
```

```
"inputs":{
      "Service":"The official namespace of the service",
      "Api":"The API operation name",
      "API input 1":"A value",
      "API Input 2":"A value",
      "API Input 3":"A value"
}
```
Tipo: determinato dall'operazione API selezionata  
Obbligatorio: sì

PropertySelector  
Vai a un JSONPath attributo specifico nell'oggetto di risposta. Puoi visualizzare gli oggetti di risposta scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Documentazione di riferimento ai servizi](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutti i metodi per Amazon RDS sono elencati nella pagina: [metodi di Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). **Scegliete il metodo [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) e scorrete verso il basso fino alla sezione Struttura della risposta.** **DBInstances**è elencato come oggetto di risposta.  
Tipo: stringa  
Obbligatorio: sì

DesiredValues  
Stato previsto o stato con il quale continuare l'automazione.  
Tipo: MapList, StringList  
Obbligatorio: sì

# Variabili di sistema del servizio di automazione
<a name="automation-variables"></a>

I runbook dl servizio di automazione di AWS Systems Manager utilizzano le seguenti variabili. Per un esempio di come vengono utilizzate queste variabili, visualizza il testo JSON di origine del runbook `AWS-UpdateWindowsAmi`. 

**Per visualizzare l'origine JSON del runbook di `AWS-UpdateWindowsAmi`**

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

1. Nel pannello di navigazione, scegliere **Documents** (Documenti).

1. Nell'elenco di documenti utilizzare la barra di ricerca o i numeri alla sua destra per scegliere il runbook `AWS-UpdateWindowsAmi`.

1. Scegliere la scheda **Content** (Contenuti). 

**Variabili di sistema**  
I runbook del servizio di automazione supportano le seguenti variabili di sistema.


****  

| Variabile | Dettagli | 
| --- | --- | 
|  `global:ACCOUNT_ID`  |  L'ID dell'Account AWS dell'utente o del ruolo con il quale viene eseguita l'Automazione.  | 
|  `global:DATE`  |  Data (al momento dell'esecuzione) nel formato aaaa-MM-gg.  | 
|  `global:DATE_TIME`  |  Data e ora (al momento dell'aesecuzione) nel formato aaaa-MM-gg.  | 
|  `global:AWS_PARTITION`  |  Partizione in cui si trova la risorsa. Per le Regioni AWS standard, la partizione è `aws`. Per risorse in altre partizioni, la partizione è `aws-partitionname`. Ad esempio, la partizione per le risorse nella regione GovCloud (Stati Uniti occidentali) di AWS è `aws-us-gov`.  | 
|  `global:REGION`  |  La regione in cui viene eseguito il runbook. Ad esempio, us-east-2.  | 

**Variabili del servizio di automazione**  
I runbook del servizio di automazione supportano le seguenti variabili di automazione.


****  

| Variabile | Dettagli | 
| --- | --- | 
|  `automation:EXECUTION_ID`  |  L'identificatore univoco assegnato all'automazione corrente. Ad esempio, `1a2b3c-1a2b3c-1a2b3c-1a2b3c1a2b3c1a2b3c`.  | 

**Topics**
+ [Terminologia](#automation-terms)
+ [Scenari supportati](#automation-variables-support)
+ [Scenari non supportati](#automation-variables-unsupported)

## Terminologia
<a name="automation-terms"></a>

I seguenti termini descrivono come vengono risolte le variabili e i parametri.


****  

| Termine | Definizione | Esempio | 
| --- | --- | --- | 
|  ARN costante  |  Un Amazon Resource Name (ARN) valido senza variabili.  |  `arn:aws:iam::123456789012:role/roleName`  | 
|  Parametro Runbook  |  Parametro definito a livello di runbook (ad esempio, `instanceId`). Il parametro viene utilizzato in una sostituzione di stringa di base. Il relativo valore è fornito all'avvio dell'esecuzione.  |  <pre>{ <br />   "description": "Create Image Demo",<br />   "version": "0.3",<br />   "assumeRole": "Your_Automation_Assume_Role_ARN",<br />   "parameters":{ <br />      "instanceId": { <br />         "type": "String",<br />         "description": "Instance to create image from"<br />   }<br />}</pre>  | 
|  Variabile di sistema  |  Variabile generica sostituita nel runbook quando una qualsiasi parte del runbook viene valutata.  |  <pre>"activities": [ <br />   { <br />      "id": "copyImage",<br />      "activityType": "AWS-CopyImage",<br />      "maxAttempts": 1,<br />      "onFailure": "Continue",<br />      "inputs": { <br />         "ImageName": "{{imageName}}",<br />         "SourceImageId": "{{sourceImageId}}",<br />         "SourceRegion": "{{sourceRegion}}",<br />         "Encrypted": true,<br />         "ImageDescription": "Test CopyImage Description created on {{global:DATE}}"<br />      }<br />   }<br />]</pre>  | 
|  Variabile del servizio di automazione  |  Variabile relativa all'automazione, sostituita nel runbook quando una qualsiasi parte del runbook viene valutata.  |  <pre>{ <br />   "name": "runFixedCmds",<br />   "action": "aws:runCommand",<br />   "maxAttempts": 1,<br />   "onFailure": "Continue",<br />   "inputs": { <br />      "DocumentName": "AWS-RunPowerShellScript",<br />      "InstanceIds": [ <br />         "{{LaunchInstance.InstanceIds}}"<br />      ],<br />      "Parameters": { <br />         "commands": [ <br />            "dir",<br />            "date",<br />            "“{{outputFormat}}” -f “left”,”right”,”{{global:DATE}}”,”{{automation:EXECUTION_ID}}”<br />         ]<br />      }<br />   }<br />}</pre>  | 
|  Parametro di Systems Manager  |  Variabile definita all'interno di AWS Systems Manager Parameter Store. Non è possibile farvi riferimento direttamente nell'input della fase. Potrebbero essere necessarie autorizzazioni per accedere al parametro.  |  <pre><br />description: Launch new Windows test instance<br />schemaVersion: '0.3'<br />assumeRole: '{{AutomationAssumeRole}}'<br />parameters:<br />  AutomationAssumeRole:<br />    type: String<br />    default: ''<br />    description: >-<br />      (Required) The ARN of the role that allows Automation to perform the<br />      actions on your behalf. If no role is specified, Systems Manager<br />      Automation uses your IAM permissions to run this runbook.<br />  LatestAmi:<br />    type: String<br />    default: >-<br />      {{ssm:/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base}}<br />    description: The latest Windows Server 2016 AMI queried from the public parameter.<br />mainSteps:<br />  - name: launchInstance<br />    action: 'aws:runInstances'<br />    maxAttempts: 3<br />    timeoutSeconds: 1200<br />    onFailure: Abort<br />    inputs:<br />      ImageId: '{{LatestAmi}}'<br />...</pre>  | 

## Scenari supportati
<a name="automation-variables-support"></a>


****  

| Scenario | Commenti | Esempio | 
| --- | --- | --- | 
|  ARN costante `assumeRole` al momento della creazione.  |  Viene eseguito un controllo delle autorizzazioni per verificare che l'utente che esegue la chiamata sia autorizzato a passare `assumeRole`.  |  <pre>{<br />  "description": "Test all Automation resolvable parameters",<br />  "schemaVersion": "0.3",<br />  "assumeRole": "arn:aws:iam::123456789012:role/roleName",<br />  "parameters": { <br />  ...</pre>  | 
|  Parametro del runbook fornito per `AssumeRole` quando viene avviata l'automazione.  |  Deve essere definito nell'elenco di parametri del runbook.  |  <pre>{<br />  "description": "Test all Automation resolvable parameters",<br />  "schemaVersion": "0.3",<br />  "assumeRole": "{{dynamicARN}}",<br />  "parameters": {<br /> ...</pre>  | 
|  Valore fornito per il parametro del runbook all'avvio.  |  Il cliente fornisce il valore da utilizzare per un parametro. Gli input di esecuzione forniti all'avvio devono essere definiti nell'elenco di parametri del runbook.  |  <pre>...<br />"parameters": {<br />    "amiId": {<br />      "type": "String",<br />      "default": "ami-12345678",<br />      "description": "list of commands to run as part of first step"<br />    },<br />...</pre> Gli input per l'avvio dell'esecuzione dell'automazione includono: `{"amiId" : ["ami-12345678"] }`  | 
|  Parametro di Systems Manager referenziato all'interno del contenuto del runbook.  |  La variabile esiste nell'account del cliente, o è un parametro pubblicamente accessibile, e `AssumeRole` per il runbook ha accesso alla variabile. Viene eseguito un controllo in fase di creazione per verificare che `AssumeRole` disponga dell'accesso. Non è possibile fare riferimento al parametro direttamente nell'input della fase.  |  <pre><br />...<br />parameters:<br />    LatestAmi:<br />    type: String<br />    default: >-<br />      {{ssm:/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base}}<br />    description: The latest Windows Server 2016 AMI queried from the public parameter.<br />mainSteps:<br />  - name: launchInstance<br />    action: 'aws:runInstances'<br />    maxAttempts: 3<br />    timeoutSeconds: 1200<br />    onFailure: Abort<br />    inputs:<br />      ImageId: '{{LatestAmi}}'<br />...</pre>  | 
|  Variabile di sistema a cui viene fatto riferimento nella definizione della fase  |  Una variabile di sistema viene sostituita nel runbook all'avvio dell'automazione. Il valore inserito nel runbook fa riferimento al momento in cui viene eseguita la sostituzione. Ad esempio, il valore di una variabile temporale inserita nella fase 1 sarà diverso da quello inserito nella fase 3 a causa del tempo intercorso tra le esecuzioni delle due fasi. Non è necessario che le variabili di sistema siano impostate nell'elenco di parametri del runbook.  |  <pre>...<br />  "mainSteps": [<br />    {<br />      "name": "RunSomeCommands",<br />      "action": "aws:runCommand",<br />      "maxAttempts": 1,<br />      "onFailure": "Continue",<br />      "inputs": {<br />        "DocumentName": "AWS:RunPowerShell",<br />        "InstanceIds": ["{{LaunchInstance.InstanceIds}}"],<br />        "Parameters": {<br />            "commands" : [<br />                "echo {The time is now {{global:DATE_TIME}}}"<br />            ]<br />        }<br />    }<br />}, ... </pre>  | 
|  Variabile del servizio di automazione a cui viene fatto riferimento nella definizione della fase.  |  Non è necessario impostare le variabili del servizio di automazione nell'elenco di parametri del runbook. L'unica variabile del servizio di automazione è supportata è **automation:EXECUTION\$1ID**.  |  <pre>...<br />"mainSteps": [<br />    {<br />      "name": "invokeLambdaFunction",<br />      "action": "aws:invokeLambdaFunction",<br />      "maxAttempts": 1,<br />      "onFailure": "Continue",<br />      "inputs": {<br />        "FunctionName": "Hello-World-LambdaFunction",<br /><br />"Payload" : "{ "executionId" : "{{automation:EXECUTION_ID}}" }"<br />      }<br />    }<br />... </pre>  | 
|  Riferimento all'output della fase precedente nella definizione della fase successiva  |  Si tratta del reindirizzamento di un parametro. L'output di una fase precedente viene indicato con la sintassi `{{stepName.OutputName}}`. Questa sintassi non può essere utilizzata dal cliente per i parametri del runbook. Questo viene risolto quando viene eseguita la fase di riferimento. Il parametro non è elencato tra i parametri del runbook.  |  <pre>...<br />"mainSteps": [<br />    {<br />      "name": "LaunchInstance",<br />      "action": "aws:runInstances",<br />      "maxAttempts": 1,<br />      "onFailure": "Continue",<br />      "inputs": {<br />        "ImageId": "{{amiId}}",<br />        "MinInstanceCount": 1,<br />        "MaxInstanceCount": 2<br />      }<br />    },<br />    {<br />      "name":"changeState",<br />      "action": "aws:changeInstanceState",<br />      "maxAttempts": 1,<br />      "onFailure": "Continue",<br />      "inputs": {<br />        "InstanceIds": ["{{LaunchInstance.InstanceIds}}"],<br />        "DesiredState": "terminated"<br />      }<br />    }<br /><br />... </pre>  | 

## Scenari non supportati
<a name="automation-variables-unsupported"></a>


****  

| Scenario | Commento | Esempio | 
| --- | --- | --- | 
|  Parametro di Systems Manager fornito per `assumeRole` alla creazione  |  Non supportato.  |  <pre>...<br /><br />{<br />  "description": "Test all Automation resolvable parameters",<br />  "schemaVersion": "0.3",<br />  "assumeRole": "{{ssm:administratorRoleARN}}",<br />  "parameters": {<br /><br />... </pre>  | 
|  Parametro di Systems Manager a cui si fa riferimento nell'input della fase.  |  Restituisce un'eccezione `InvalidDocumentContent` al momento della creazione.  |  <pre><br />...<br />mainSteps:<br />  - name: launchInstance<br />    action: 'aws:runInstances'<br />    maxAttempts: 3<br />    timeoutSeconds: 1200<br />    onFailure: Abort<br />    inputs:<br />      ImageId: '{{ssm:/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base}}'<br />...</pre>  | 
|  Definizione della fase mediante variabili  |  La definizione di una fase nel runbook si basa su variabili.  |  <pre>...<br /><br />"mainSteps": [<br />    {<br />      "name": "LaunchInstance",<br />      "action": "aws:runInstances",<br />      "{{attemptModel}}": 1,<br />      "onFailure": "Continue",<br />      "inputs": {<br />        "ImageId": "ami-12345678",<br />        "MinInstanceCount": 1,<br />        "MaxInstanceCount": 2<br />      }<br /><br />...<br /><br />User supplies input : { "attemptModel" : "minAttempts" } </pre>  | 
|  Riferimento incrociato a parametri del runbook  |  L'utente fornisce un parametro di input all'avvio, che rappresenta un riferimento a un altro parametro nel runbook.  |  <pre>...<br />"parameters": {<br />    "amiId": {<br />      "type": "String",<br />      "default": "ami-7f2e6015",<br />      "description": "list of commands to run as part of first step"<br />    },<br />    "alternateAmiId": {<br />      "type": "String",<br />      "description": "The alternate AMI to try if this first fails".<br /><br />"default" : "{{amiId}}"<br />    },<br /><br />... </pre>  | 
|  Espansione multilivello  |  Il runbook definisce una variabile che restituisce il nome di una variabile. Il nome è racchiuso tra i delimitatori della variabile (*\$1\$1 \$1\$1*) e viene espanso fino al valore della variabile/parametro.  |  <pre>...<br />  "parameters": {<br />    "firstParameter": {<br />      "type": "String",<br />      "default": "param2",<br />      "description": "The parameter to reference"<br />    },<br />    "secondParameter": {<br />      "type": "String",<br />      "default" : "echo {Hello world}",<br />      "description": "What to run"<br />    }<br />  },<br />  "mainSteps": [{<br />      "name": "runFixedCmds",<br />      "action": "aws:runCommand",<br />      "maxAttempts": 1,<br />      "onFailure": "Continue",<br />      "inputs": {<br />        "DocumentName": "AWS-RunPowerShellScript",<br /><br />"InstanceIds" : "{{LaunchInstance.InstanceIds}}",<br />        "Parameters": {<br />          "commands": [ "{{ {{firstParameter}} }}"]<br /><br />}<br /><br />...<br /><br />Note: The customer intention here would be to run a command of "echo {Hello world}" </pre>  | 
|  Riferimento all'output da una fase del runbook con un altro tipo di variabile  |  L'utente fa riferimento all'output da una fase di un runbook precedente all'interno di una fase successiva. L'output ha un tipo di variabile che non soddisfa i requisiti dell'operazione nella fase successiva.  |  <pre>...<br />mainSteps:<br />- name: getImageId<br />  action: aws:executeAwsApi<br />  inputs:<br />    Service: ec2<br />    Api: DescribeImages<br />    Filters:  <br />    - Name: "name"<br />      Values: <br />      - "{{ImageName}}"<br />  outputs:<br />  - Name: ImageIdList<br />    Selector: "$.Images"<br />    Type: "StringList"<br />- name: copyMyImages<br />  action: aws:copyImage<br />  maxAttempts: 3<br />  onFailure: Abort<br />  inputs:<br />    SourceImageId: {{getImageId.ImageIdList}}<br />    SourceRegion: ap-northeast-2<br />    ImageName: Encrypted Copies of LAMP base AMI in ap-northeast-2<br />    Encrypted: true <br />... <br />Note: You must provide the type required by the Automation action. <br />In this case, aws:copyImage requires a "String" type variable but the preceding step outputs a "StringList" type variable.<br />                                        </pre>  | 

# Creazione di runbook personalizzati
<a name="automation-documents"></a>

Un runbook di automazione definisce le *azioni* che Systems Manager esegue sulle istanze gestite e su altre AWS risorse durante l'esecuzione di un'automazione. L’automazione è uno strumento di AWS Systems Manager. Un runbook contiene una o più fasi che si eseguono in ordine sequenziale. Ogni fase è riferits a una singola operazione. L'output di una fase può essere utilizzato come input in una fase successiva. 

Il processo di esecuzione di queste operazioni e delle relative fasi è chiamato *automazione*.

I tipi di azioni supportati per i runbook consentono di automatizzare un'ampia gamma di operazioni nel proprio ambiente. AWS Ad esempio, usando il tipo di `executeScript` azione, puoi incorporare un python o uno PowerShell script direttamente nel tuo runbook. (Quando si crea un runbook personalizzato, è possibile aggiungere lo script in linea o collegarlo da un bucket S3 o dal computer locale). È possibile automatizzare la gestione delle AWS CloudFormation risorse utilizzando i tipi di azioni e. `createStack` `deleteStack` Inoltre, utilizzando il tipo di `executeAwsApi` azione, una fase può eseguire *qualsiasi operazione API in qualsiasi momento* Servizio AWS, inclusa la creazione o l'eliminazione di AWS risorse, l'avvio di altri processi, l'avvio di notifiche e molto altro. 

Per un elenco di tutti i 20 tipi di operazione supportati per le fasi di automazione, consulta [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md).

AWS Systems Manager L'automazione fornisce diversi runbook con passaggi predefiniti che puoi utilizzare per eseguire attività comuni come il riavvio di una o più istanze Amazon Elastic Compute Cloud ( EC2Amazon) o la creazione di un (). Amazon Machine Image AMI Puoi anche creare i tuoi runbook e condividerli con altri Account AWS o renderli pubblici per tutti gli utenti di Automation.

I runbook sono redatti in formato YAML o JSON. Tuttavia, utilizzando lo strumento **Document Builder (Generatore documenti)** nella console del servizio di automazione di Systems Manager, è possibile creare un runbook senza doverlo creare in formato JSON o YAML nativo.

**Importante**  
Se si esegue un flusso di lavoro di automazione che chiama altri servizi utilizzando un ruolo di servizio (IAM) di AWS Identity and Access Management , tenere presente che tale ruolo di servizio deve essere configurato con l'autorizzazione per la chiamata di tali servizi. Questo requisito si applica a tutti i runbook di AWS automazione (`AWS-*`runbook) come,, e `AWS-RestartEC2Instance` runbook `AWS-ConfigureS3BucketLogging``AWS-CreateDynamoDBBackup`, solo per citarne alcuni. Questo requisito si applica anche a tutti i runbook di automazione personalizzati creati dall'utente che richiamano altri utenti Servizi AWS utilizzando azioni che richiamano altri servizi. Ad esempio, se utilizzi le operazioni `aws:executeAwsApi`, `aws:createStack` o `aws:copyImage`, devi configurare il ruolo di servizio con l'autorizzazione per richiamare tali servizi. Puoi concedere le autorizzazioni ad altri Servizi AWS aggiungendo una policy inline IAM al ruolo. Per ulteriori informazioni, consulta [(Facoltativo) Aggiungi una policy in linea di automazione o una policy gestita dal cliente per richiamarne altre Servizi AWS](automation-setup-iam.md#add-inline-policy).

Per visualizzare informazioni su operazioni che è possibile specificare in runbook, consulta [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md).

Per informazioni sull'utilizzo di per AWS Toolkit for Visual Studio Code creare runbook, vedere i [documenti Working with Systems Manager Automation](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/systems-manager-automation-docs.html) nella *Guida per l'AWS Toolkit for Visual Studio Code utente*.

Per informazioni sull'utilizzo del visual designer per creare un runbook personalizzato, consulta [Esperienza di progettazione visiva per i runbook Automation](automation-visual-designer.md). 

**Contents**
+ [Esperienza di progettazione visiva per i runbook Automation](automation-visual-designer.md)
  + [Panoramica dell'interfaccia dell'esperienza di progettazione visiva](visual-designer-interface-overview.md)
    + [Browser delle operazioni](visual-designer-interface-overview.md#visual-designer-actions)
    + [Canvas](visual-designer-interface-overview.md#visual-designer-canvas)
    + [Modulo](visual-designer-interface-overview.md#visual-designer-form)
    + [Tasti di scelta rapida](visual-designer-interface-overview.md#visual-designer-keyboard-shortcuts)
  + [Utilizzo dell'esperienza di progettazione visiva](visual-designer-use.md)
    + [Creazione di un flusso di lavoro del runbook](visual-designer-use.md#visual-designer-create-runbook-workflow)
    + [Progettazione di un runbook](visual-designer-use.md#visual-designer-build)
    + [Aggiornamento del runbook](visual-designer-use.md#visual-designer-update-runbook)
    + [Esportazione del runbook](visual-designer-use.md#visual-designer-export-runbook)
  + [Configurazione di input e output per le tue operazioni](visual-designer-action-inputs-outputs.md)
    + [Specifica dei dati di input per un'operazione](visual-designer-action-inputs-outputs.md#providing-input)
    + [Definizione dei dati di output per un'azione](visual-designer-action-inputs-outputs.md#defining-output)
  + [Gestione degli errori con l'esperienza di progettazione visiva](visual-designer-error-handling.md)
    + [Nuovo tentativo dell'azione in caso di errore](visual-designer-error-handling.md#retry-actions)
    + [Timeout](visual-designer-error-handling.md#timeout-seconds)
    + [Operazioni non riuscite](visual-designer-error-handling.md#failure-actions)
    + [Operazioni annullate](visual-designer-error-handling.md#cancel-actions)
    + [Operazioni critiche](visual-designer-error-handling.md#critical-actions)
    + [Termine delle azioni](visual-designer-error-handling.md#end-actions)
  + [Tutorial: Creazione di un runbook utilizzando l'esperienza di progettazione visiva](visual-designer-tutorial.md)
    + [Fase 1: Passaggio all'esperienza di progettazione visiva](visual-designer-tutorial.md#navigate-console)
    + [Fase 2: Creazione di un flusso di lavoro](visual-designer-tutorial.md#create-workflow)
    + [Fase 3: Revisione del codice generato automaticamente](visual-designer-tutorial.md#view-generated-code)
    + [Fase 4: Esecuzione del nuovo runbook](visual-designer-tutorial.md#use-tutorial-runbook)
    + [Fase 5: rimozione](visual-designer-tutorial.md#cleanup-tutorial-runbook)
+ [Creazione di runbook del servizio di automazione](automation-authoring-runbooks.md)
  + [Identificazione del caso d'uso](automation-authoring-runbooks.md#automation-authoring-runbooks-use-case)
  + [Configurazione dell'ambiente di sviluppo](automation-authoring-runbooks.md#automation-authoring-runbooks-environment)
  + [Sviluppo di contenuti del runbook](automation-authoring-runbooks.md#automation-authoring-runbooks-developing-content)
  + [Esempio 1: Creazione di runbook padre-figlio](automation-authoring-runbooks-parent-child-example.md)
    + [Creazione del runbook figlio](automation-authoring-runbooks-parent-child-example.md#automation-authoring-runbooks-child-runbook)
    + [Creazione del runbook padre](automation-authoring-runbooks-parent-child-example.md#automation-authoring-runbooks-parent-runbook)
  + [Esempio 2: Runbook con script](automation-authoring-runbooks-scripted-example.md)
  + [Ulteriori esempi di runbook](automation-document-examples.md)
    + [Implementazione di architettura VPC e controller di dominio Microsoft Active Directory](automation-document-architecture-deployment-example.md)
    + [Ripristino di un volume radice dall'ultimo snapshot](automation-document-instance-recovery-example.md)
    + [Creazione di un'AMI e una copia tra regioni](automation-document-backup-maintenance-example.md)
+ [Creazione di parametri di input che popolano le risorse AWS](populating-input-parameters.md)
+ [Utilizzo di Generatore di documenti per la creazione di runbook](automation-document-builder.md)
  + [Creazione di un runbook utilizzando Generatore di documenti](automation-document-builder.md#create-runbook)
  + [Creazione di un runbook che esegue script](automation-document-builder.md#create-runbook-scripts)
+ [Utilizzo di script nei runbook](automation-document-script-considerations.md)
  + [Autorizzazioni per l'utilizzo di runbook](automation-document-script-considerations.md#script-permissions)
  + [Aggiunta di script ai runbook](automation-document-script-considerations.md#adding-scripts)
  + [Vincoli di script per i runbook](automation-document-script-considerations.md#script-constraints)
+ [Utilizzo di istruzioni condizionali nei runbook](automation-branch-condition.md)
  + [Utilizzo dell'agente `aws:branch`](automation-branch-condition.md#branch-action-explained)
    + [Creazione di una fase `aws:branch` in un runbook](automation-branch-condition.md#create-branch-action)
      + [Informazioni sulla creazione della variabile di output](automation-branch-condition.md#branch-action-output)
    + [Esempio di runbook `aws:branch`](automation-branch-condition.md#branch-runbook-examples)
    + [Creazione di automazioni con branching complesso con operatori](automation-branch-condition.md#branch-operators)
  + [Esempi di utilizzo delle opzioni condizionali](automation-branch-condition.md#conditional-examples)
+ [Utilizzo degli output delle operazioni come input](automation-action-outputs-inputs.md)
  + [Utilizzo JSONPath nei runbook](automation-action-outputs-inputs.md#automation-action-json-path)
+ [Creazione di integrazioni webhook per Automazione](creating-webhook-integrations.md)
  + [Creazione di integrazioni (console)](creating-webhook-integrations.md#creating-integrations-console)
  + [Creazione di integrazioni (riga di comando)](creating-webhook-integrations.md#creating-integrations-commandline)
  + [Creazione di webhook per integrazioni](creating-webhook-integrations.md#creating-webhooks)
+ [Gestione dei timeout nei runbook](automation-handling-timeouts.md)

# Esperienza di progettazione visiva per i runbook Automation
<a name="automation-visual-designer"></a>

AWS Systems Manager L'automazione offre un'esperienza di progettazione visiva a basso codice che consente di creare runbook di automazione. L'esperienza di progettazione visiva fornisce un' drag-and-dropinterfaccia con la possibilità di aggiungere il proprio codice in modo da poter creare e modificare i runbook più facilmente. Con l'esperienza di progettazione visiva puoi completare le seguenti operazioni:
+ Controlla le istruzioni condizionali.
+ Controllare come l'input e l'output vengono filtrati o trasformati per ogni azione.
+ Configura la gestione degli errori.
+ Creare prototipi di nuovi runbook.
+ Usare i tuoi runbook prototipati come punto di partenza per lo sviluppo locale con il AWS Toolkit for Visual Studio Code.

Quando crei o modifichi un runbook, puoi accedere all'esperienza di progettazione visiva dalla [console di Automation](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/). Man mano che crei un runbook, l'esperienza di progettazione visiva convalida le operazioni e genera automaticamente il codice. Puoi rivedere il codice generato o esportarlo per lo sviluppo locale. Al termine, sarà possibile salvare il runbook, eseguirlo ed esaminare i risultati nella console di Systems Manager Automation. 

**Topics**
+ [Panoramica dell'interfaccia](visual-designer-interface-overview.md)
+ [Utilizzo dell'esperienza di progettazione visiva](visual-designer-use.md)
+ [Configurazione di input e output](visual-designer-action-inputs-outputs.md)
+ [Gestione degli errori con l'esperienza di progettazione visiva](visual-designer-error-handling.md)
+ [Tutorial: Creazione di un runbook utilizzando l'esperienza di progettazione visiva](visual-designer-tutorial.md)

# Panoramica dell'interfaccia dell'esperienza di progettazione visiva
<a name="visual-designer-interface-overview"></a>

L'esperienza di progettazione visiva per Systems Manager Automation è una progettazione di flussi di lavoro visivi con low code che consente di creare runbook Automation.

Scopri l'esperienza di progettazione visiva con una panoramica dei componenti dell'interfaccia:

![\[Componenti dell'esperienza di progettazione visiva\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_overview.png)

+ Il browser **Actions** contiene le schede **Actions** e **Runbooks**. **AWS APIs**
+ Nell'*area di disegno* è possibile trascinare e rilasciare le operazioni nel grafico del flusso di lavoro, modificare l'ordine delle operazioni e selezionare le operazioni da configurare o visualizzare.
+ Il pannello **Modulo** consente di visualizzare e modificare le proprietà di qualsiasi operazione selezionata nell'area di disegno. Seleziona l'interruttore **Contenuto** per visualizzare YAML o JSON per il runbook, con l'operazione correntemente selezionata evidenziata. 

I link **informativi** aprono un pannello con informazioni contestuali quando hai bisogno di aiuto. Questi pannelli includono anche collegamenti ad argomenti correlati nella documentazione di Systems Manager Automation. 

## Browser delle operazioni
<a name="visual-designer-actions"></a>

Dal browser **Operazioni**, puoi selezionare le operazioni da trascinare nel grafico del flusso di lavoro. Puoi cercare tutte le operazioni utilizzando il campo di ricerca nella parte superiore del browser **Operazioni**. Il browser **Operazioni** contiene le seguenti schede:
+ La scheda **Operazioni** fornisce un elenco di azioni di automazione che puoi trascinare nel grafico del flusso di lavoro del runbook nell'area di disegno.
+ La **AWS APIs**scheda fornisce un elenco di quelle AWS APIs che puoi trascinare nel grafico del flusso di lavoro del runbook nell'area di disegno.
+ La scheda **Runbooks fornisce diversi ready-to-use runbook** riutilizzabili come elementi costitutivi che è possibile utilizzare per una varietà di casi d'uso. Ad esempio, puoi utilizzare i runbook per eseguire attività di correzione comuni su istanze Amazon EC2 nel tuo flusso di lavoro senza dover ricreare le stesse operazioni.

![\[Browser Operazioni dell'esperienza di progettazione visiva\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_actions_multi_view.png)


## Canvas
<a name="visual-designer-canvas"></a>

Dopo aver scelto un'operazione da aggiungere all'automazione, trascinarla nell'area di disegno e inserirla nel grafico del flusso di lavoro. Puoi anche trascinare e rilasciare le operazioni per spostarle in punti diversi del flusso di lavoro del runbook. Se il flusso di lavoro è complesso, potrebbe non essere possibile visualizzarlo tutto nel pannello dell'area di lavoro. Usa i controlli nella parte superiore dell'area di disegno per ingrandire o ridurre una selezione. Per visualizzare diverse parti di un flusso di lavoro, puoi trascinare il grafico del flusso nell'area di lavoro. 

Trascina un'azione dal browser **Operazioni**, quindi rilasciala nel grafico del flusso di lavoro del runbook. Una riga mostra dove verrà posizionato nel flusso di lavoro. Per modificare l'ordine di un'operazione, puoi trascinarla in una posizione del flusso diversa. La nuova azione è stata aggiunta al flusso di lavoro e il relativo codice viene generato automaticamente.

![\[Area di disegno dell'esperienza di progettazione visiva\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_canvas.png)


## Modulo
<a name="visual-designer-form"></a>

Dopo aver aggiunto un'operazione al flusso di lavoro del runbook, puoi configurarla in base al tuo caso d'uso. Scegli l'operazione che desideri configurare e ne vedrai i parametri e le opzioni nel pannello **Modulo**. Puoi vedere il codice YAML o JSON anche selezionando l'interruttore **Contenuto**. Il codice associato all'operazione selezionata viene evidenziato.

![\[Pannello Modulo dell'esperienza di progettazione visiva\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_form.png)


![\[Pannello dei contenuti dell'esperienza di progettazione visiva\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_content.png)


## Tasti di scelta rapida
<a name="visual-designer-keyboard-shortcuts"></a>

L'esperienza di progettazione visiva supporta le scelte rapide da tastiera mostrate nella tabella seguente.


| Tasto di scelta rapida | Funzione | 
| --- | --- | 
| CTRL\$1Z | Annulla l'ultima operazione. | 
| CTRL\$1MAIUSC\$1Z | Ripeti l'ultima operazione. | 
| Alt \$1 C | Centra il flusso di lavoro nell'area di lavoro. | 
| Backspace | Rimuovi tutti gli stati selezionati. | 
| Elimina | Rimuovi tutti gli stati selezionati. | 
| CTRL\$1D | Duplica lo stato selezionato. | 

# Utilizzo dell'esperienza di progettazione visiva
<a name="visual-designer-use"></a>

Impara a creare, modificare ed eseguire flussi di lavoro di runbook utilizzando l'esperienza di progettazione visiva. Quando il flusso di lavoro è pronto, puoi salvarlo o esportarlo. Puoi anche utilizzare l'esperienza di progettazione visiva per la prototipazione rapida. 

## Creazione di un flusso di lavoro del runbook
<a name="visual-designer-create-runbook-workflow"></a>

1. Accedi alla [console di Systems Manager Automation](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/).

1. Scegli **Crea runbook**.

1. Nella casella **Nome**, immetti un nome per il runbook, ad esempio `MyNewRunbook`.

1. Accanto agli interruttori **Progettazione** e **Codice**, seleziona l'icona a forma di matita e inserisci un nome per il runbook.

Ora puoi progettare un flusso di lavoro per il tuo nuovo runbook.

## Progettazione di un runbook
<a name="visual-designer-build"></a>

 Per progettare un flusso di lavoro del runbook utilizzando l'esperienza di progettazione visiva, trascina un'operazione di automazione dal browser **Operazioni** all'area di lavoro, posizionandola dove desideri all'interno del flusso di lavoro del runbook. Puoi anche riordinare le operazioni nel tuo flusso di lavoro trascinandole in una posizione diversa. Quando trascini un'azione nell'area di lavoro, viene visualizzata una linea nel punto in cui puoi trascinarla. Dopo che un'operazione è stata inserita nell'area di lavoro, il relativo codice viene generato automaticamente e aggiunto all'interno del contenuto del runbook.

Se conosci il nome dell'operazione che desideri aggiungere, utilizza la casella di ricerca nella parte superiore del browser **Operazioni** per individuare l'operazione.

Dopo aver trascinato un'operazione nell'area di lavoro, configurala utilizzando il pannello **Modulo** sulla destra. Questo pannello contiene le schede **Generale**, **Input**, **Output** e **Configurazione** per ogni operazione di automazione o operazione API inserita nell'area di lavoro. Ad esempio, la scheda **Generale** contiene le sezioni seguenti:
+ **Nome fase** identifica la fase. Specifica un valore univoco per il nome della fase.
+ **Descrizione** ti aiuta a descrivere cosa sta facendo l'operazione nel flusso di lavoro del runbook.

La scheda **Input** contiene campi che variano in base all'operazione. Ad esempio, l'operazione di automazione `aws:executeScript` contiene le sezioni seguenti:
+ In **Runtime**, scegliere il linguaggio da utilizzare per eseguire lo script fornito.
+ Il **gestore** è il nome della funzione. È necessario assicurarsi che la funzione definita nel gestore abbia due parametri, `events` e `context`. Il runtime di PowerShell non supporta questo parametro. 
+ **Script** è uno script incorporato che si desidera eseguire durante il flusso di lavoro.
+ (Facoltativo) **Allegato** è destinato agli script autonomi o ai file .zip che possono essere richiamati dall'operazione. Questo parametro è obbligatorio per i runbook JSON.

La scheda **Output** consente di specificare i valori che si desidera generare da un'operazione. È possibile fare riferimento ai valori di output nelle operazioni successive del flusso di lavoro o generare output da operazioni a scopo di registrazione. Non tutte le operazioni avranno una scheda **Output** perché non tutte le operazioni supportano gli output. Ad esempio, l'operazione `aws:pause` non supporta gli output. Per le operazioni che supportano gli output, la scheda **Output** è composta dalle seguenti sezioni:
+ **Nome** è il nome da utilizzare per il valore di output. È possibile fare riferimento agli output nelle operazioni successive del flusso di lavoro.
+ Il **selettore** è una stringa di espressione JSONPath che inizia con `"$."` e che viene utilizzata per selezionare uno o più componenti all'interno di un elemento JSON.
+ **Tipo** è il tipo di dati per il valore di output. Ad esempio, un tipo di dati `String` o `Integer`.

La scheda **Configurazione** contiene proprietà e opzioni utilizzabili da tutte le operazioni di automazione. L'operazione è costituita dalle seguenti sezioni:
+ La proprietà **Numero massimo di tentativi** indica il numero di tentativi di ripetizione di un'operazione in caso di esito negativo.
+ La proprietà **Secondi di timeout** specifica il valore di timeout per un'operazione.
+ La proprietà **Is critical** determina se l'errore dell'operazione interrompe l'intera automazione.
+ La proprietà **Fase successiva** determina l'operazione successiva dell'automazione nel runbook.
+ La proprietà **In caso di errore** determina l'operazione successiva dell'automazione nel runbook se l'operazione non riesce.
+ La proprietà **In caso di annullamento** determina l'operazione successiva dell'automazione nel runbook se l'operazione viene annullata da un utente.

Per eliminare un'operazione, puoi usare backspace, la barra degli strumenti sopra l'area di lavoro oppure fare clic con il pulsante destro del mouse e scegliere **Elimina operazione**.

Man mano che il flusso di lavoro cresce, potrebbe non rientrare nell'area di lavoro. Per adattare il flusso di lavoro all'area di lavoro, prova una delle seguenti opzioni: 
+ Utilizza i controlli nei pannelli laterali per ridimensionare o chiudere i pannelli.
+ Usa la barra degli strumenti nella parte superiore dell'area di lavoro per ingrandire o ridurre il grafico del flusso di lavoro.

## Aggiornamento del runbook
<a name="visual-designer-update-runbook"></a>

Puoi aggiornare un flusso di lavoro del runbook esistente creando una nuova versione del runbook. Gli aggiornamenti ai runbook possono essere effettuati utilizzando l'esperienza di progettazione visiva o modificando direttamente il codice. Per aggiornare un runbook esistente, completa la procedura descritta di seguito.

1. Accedi alla [console di Systems Manager Automation](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/).

1. Scegli il runbook da aggiornare.

1. Scegliere **Create new version (Crea nuova versione)**.

1. L'esperienza di progettazione visiva ha due riquadri: un riquadro del codice e un riquadro del flusso di lavoro dell'elemento visivo. Scegli **Progettazione** nel riquadro del flusso di lavoro dell'elemento visivo per modificare il flusso di lavoro con l'esperienza di progettazione visiva. Al termine, scegli **Creazione di una nuova versione** per salvare le modifiche e uscire.

1. (Facoltativo) Usa il riquadro del codice per modificare il contenuto del runbook in YAML o JSON.

## Esportazione del runbook
<a name="visual-designer-export-runbook"></a>

Per esportare il codice YAML o JSON del flusso di lavoro del runbook e anche un grafico del flusso di lavoro, utilizza la seguente procedura: 

1. Scegli il tuo runbook nella console **Documenti**.

1. Scegliere **Create new version (Crea nuova versione)**.

1. Nel menu a discesa **Operazioni**, scegli se esportare il grafico o il runbook e quale formato preferisci.

# Configurazione di input e output per le tue operazioni
<a name="visual-designer-action-inputs-outputs"></a>

Ogni operazione di automazione risponde in base all'input che riceve. Nella maggior parte dei casi, si passa quindi l'output alle operazioni successive. Nell'esperienza di progettazione visiva, puoi configurare i dati di input e output di un'azione nelle schede **Input** e **Output** del riquadro **Modulo**.

Per informazioni dettagliate su come definire e usare l'output per le operazioni di automazione, consulta [Utilizzo degli output delle operazioni come input](automation-action-outputs-inputs.md). 

## Specifica dei dati di input per un'operazione
<a name="providing-input"></a>

Ogni operazione di automazione ha uno o più input per i quali è necessario fornire un valore. Il valore fornito per l'input di un'azione è determinato dal tipo e dal formato di dati accettati dall'azione. Ad esempio, le operazioni `aws:sleep` richiedono un valore di stringa in formato ISO 8601 per l'input `Duration`.

In genere, si utilizzano operazioni nel flusso di lavoro del runbook che restituiscono l'output che si desidera utilizzare nelle operazioni successive. È importante assicurarsi che i valori di input siano corretti per evitare errori nel flusso di lavoro del runbook. I valori di input sono importanti anche perché determinano se l'azione restituisce l'output previsto. Ad esempio, quando si utilizza l'operazione `aws:executeAwsApi`, è necessario assicurarsi di fornire il valore giusto per il funzionamento dell'API.

## Definizione dei dati di output per un'azione
<a name="defining-output"></a>

Alcune operazioni di automazione restituiscono l'output dopo aver eseguito le operazioni definite. Le operazioni che restituiscono un output hanno output predefiniti o consentono di definire gli output autonomamente. Ad esempio, l'operazione `aws:createImage` ha output predefiniti che restituiscono un `ImageId` e `ImageState`. Comparativamente, con l'operazione `aws:executeAwsApi` è possibile definire gli output desiderati dall'operazione API specificata. Di conseguenza, è possibile restituire uno o più valori da una singola operazione API da utilizzare nelle azioni successive.

Per definire i propri output per un'operazione di automazione è necessario specificare un nome dell'output, il tipo di dati e il valore dell'output. Per continuare a utilizzare l'operazione `aws:executeAwsApi` come esempio, supponiamo che tu stia chiamando l'operazione API `DescribeInstances` da Amazon EC2. In questo esempio, vuoi restituire, o emettere, lo `State` di un'istanza Amazon EC2 e ramificare il flusso di lavoro del runbook in base all'output. Scegli di assegnare un nome all'output **InstanceState** e utilizza il tipo di dati **String**. 

Il processo per definire il valore effettivo dell'output varia a seconda dell'azione. Ad esempio, se si utilizza l'operazione `aws:executeScript`, è necessario utilizzare le istruzioni `return` nelle funzioni per fornire i dati agli output. Con altre operazioni come `aws:executeAwsApi`, `aws:waitForAwsResourceProperty` e `aws:assertAwsResourceProperty`, è necessario un `Selector`. Il `Selector`, o `PropertySelector` come definito da alcune operazioni, è una stringa JSONPath utilizzata per elaborare la risposta JSON da un'operazione API. È importante capire com'è strutturato l'oggetto di risposta JSON di un'operazione API in modo da poter selezionare il valore corretto per l'output. Utilizzando l'operazione API `DescribeInstances` menzionata in precedenza, vedi il seguente esempio di risposta JSON:

```
{
  "reservationSet": {
    "item": {
      "reservationId": "r-1234567890abcdef0",
      "ownerId": 123456789012,
      "groupSet": "",
      "instancesSet": {
        "item": {
          "instanceId": "i-1234567890abcdef0",
          "imageId": "ami-bff32ccc",
          "instanceState": {
            "code": 16,
            "name": "running"
          },
          "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal",
          "dnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com",
          "reason": "",
          "keyName": "my_keypair",
          "amiLaunchIndex": 0,
          "productCodes": "",
          "instanceType": "t2.micro",
          "launchTime": "2018-05-08T16:46:19.000Z",
          "placement": {
            "availabilityZone": "eu-west-1c",
            "groupName": "",
            "tenancy": "default"
          },
          "monitoring": {
            "state": "disabled"
          },
          "subnetId": "subnet-56f5f000",
          "vpcId": "vpc-11112222",
          "privateIpAddress": "192.168.1.88",
          "ipAddress": "54.194.252.215",
          "sourceDestCheck": true,
          "groupSet": {
            "item": {
              "groupId": "sg-e4076000",
              "groupName": "SecurityGroup1"
            }
          },
          "architecture": "x86_64",
          "rootDeviceType": "ebs",
          "rootDeviceName": "/dev/xvda",
          "blockDeviceMapping": {
            "item": {
              "deviceName": "/dev/xvda",
              "ebs": {
                "volumeId": "vol-1234567890abcdef0",
                "status": "attached",
                "attachTime": "2015-12-22T10:44:09.000Z",
                "deleteOnTermination": true
              }
            }
          },
          "virtualizationType": "hvm",
          "clientToken": "xMcwG14507example",
          "tagSet": {
            "item": {
              "key": "Name",
              "value": "Server_1"
            }
          },
          "hypervisor": "xen",
          "networkInterfaceSet": {
            "item": {
              "networkInterfaceId": "eni-551ba000",
              "subnetId": "subnet-56f5f000",
              "vpcId": "vpc-11112222",
              "description": "Primary network interface",
              "ownerId": 123456789012,
              "status": "in-use",
              "macAddress": "02:dd:2c:5e:01:69",
              "privateIpAddress": "192.168.1.88",
              "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal",
              "sourceDestCheck": true,
              "groupSet": {
                "item": {
                  "groupId": "sg-e4076000",
                  "groupName": "SecurityGroup1"
                }
              },
              "attachment": {
                "attachmentId": "eni-attach-39697adc",
                "deviceIndex": 0,
                "status": "attached",
                "attachTime": "2018-05-08T16:46:19.000Z",
                "deleteOnTermination": true
              },
              "association": {
                "publicIp": "54.194.252.215",
                "publicDnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com",
                "ipOwnerId": "amazon"
              },
              "privateIpAddressesSet": {
                "item": {
                  "privateIpAddress": "192.168.1.88",
                  "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal",
                  "primary": true,
                  "association": {
                    "publicIp": "54.194.252.215",
                    "publicDnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com",
                    "ipOwnerId": "amazon"
                  }
                }
              },
              "ipv6AddressesSet": {
                "item": {
                  "ipv6Address": "2001:db8:1234:1a2b::123"
                }
              }
            }
          },
          "iamInstanceProfile": {
            "arn": "arn:aws:iam::123456789012:instance-profile/AdminRole",
            "id": "ABCAJEDNCAA64SSD123AB"
          },
          "ebsOptimized": false,
          "cpuOptions": {
            "coreCount": 1,
            "threadsPerCore": 1
          }
        }
      }
    }
  }
}
```

Nell'oggetto di risposta JSON, l'istanza `State` è nidificata in un oggetto `Instances`, che è nidificato nell'oggetto `Reservations`. Per restituire il valore dell'istanza `State`, usa la seguente stringa per il `Selector` in modo che il valore possa essere utilizzato nel nostro output: **\$1.Reservations[0].Instances[0].State.Name**.

Per fare riferimento a un valore di output nelle operazioni successive del flusso di lavoro del runbook, viene utilizzato il seguente formato: `{{ StepName.NameOfOutput }}`. Ad esempio, **\$1\$1 GetInstanceState.InstanceState \$1\$1**. Nell'esperienza di progettazione visiva, puoi scegliere i valori di output da utilizzare nelle operazioni successive utilizzando il menu a discesa per l'input. Quando si utilizzano gli output in operazioni successive, il tipo di dati dell'output deve corrispondere al tipo di dati per l'input. In questo esempio, l'output `InstanceState` è una `String`. Pertanto, per utilizzare il valore nell'input di un'azione successiva, l'input deve accettare un `String`.

# Gestione degli errori con l'esperienza di progettazione visiva
<a name="visual-designer-error-handling"></a>

Per impostazione predefinita, quando un'azione segnala un errore, Automation interrompe completamente il flusso di lavoro del runbook. Questo perché il valore predefinito per la proprietà `onFailure` su tutte le operazioni è `Abort`. Puoi configurare il modo in cui Automation gestisce gli errori nel flusso di lavoro del runbook. Anche se hai configurato la gestione degli errori, alcuni errori potrebbero comunque causare il fallimento di un'automazione. Per ulteriori informazioni, consulta [Risoluzione dei problemi dl servizio di automazione di Systems Manager](automation-troubleshooting.md). Nell'esperienza di progettazione visiva, la gestione degli errori viene configurata nel pannello **Configurazione**.

![\[Opzioni di gestione degli errori\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_error_handling.png)


## Nuovo tentativo dell'azione in caso di errore
<a name="retry-actions"></a>

Per ripetere un'azione in caso di errore, specifica un valore per la proprietà **Numero massimo di tentativi**. Il valore predefinito è 1. Se si specifica un valore maggiore di 1, l'azione non viene considerata non riuscita finché tutti i nuovi tentativi non hanno restituito un esito negativo.

## Timeout
<a name="timeout-seconds"></a>

È possibile configurare un timeout per le operazioni per impostare il numero massimo di secondi in cui l'azione può essere eseguita prima che abbia esito negativo. Per configurare un timeout, inserisci il numero di secondi che l'azione deve attendere prima che l'azione abbia esito negativo nella proprietà **Secondi di timeout**. Se il timeout viene raggiunto e il valore dell'azione ha un valore di `Max attempts` che è maggiore di 1, la fase non viene considerata scaduta finché non vengono eseguiti tutti i nuovi tentativi.

## Operazioni non riuscite
<a name="failure-actions"></a>

Per impostazione predefinita, quando un'azione segnala un errore, Automation interrompe completamente il flusso di lavoro del runbook. È possibile modificare questo comportamento specificando un valore alternativo per la proprietà **In caso di errore** delle operazioni nel runbook. Se desideri che il flusso di lavoro continui con la fase successiva del runbook, scegli **Continua**. Se desideri che il flusso di lavoro passi a una fase successiva diversa nel runbook, scegli **Fase** e inserisci il nome della fase.

## Operazioni annullate
<a name="cancel-actions"></a>

Per impostazione predefinita, quando un'operazione viene annullata da un utente, Automation interrompe completamente il flusso di lavoro del runbook. È possibile modificare questo comportamento specificando un valore alternativo per la proprietà **In caso di annullamento** delle operazioni nel runbook. Se desideri che il flusso di lavoro passi a una fase successiva diversa nel runbook, scegli **Fase** e inserisci il nome della fase.

## Operazioni critiche
<a name="critical-actions"></a>

È possibile designare un'operazione come *critica*, vale a dire che determina lo stato generale dei report dell'automazione. Se una fase con questa definizione ha esito negativo, Automation riporta lo stato finale come `Failed`, indipendentemente dalla riuscita di altre operazioni. Per configurare un'azione come critica, lascia il valore predefinito su **True** per la proprietà **Is critical**.

## Termine delle azioni
<a name="end-actions"></a>

La proprietà **Is end** arresta l'automazione alla fine dell'operazione specificata. Il valore predefinito per questa proprietà è `false`. Se si configura questa proprietà per un'operazione, l'automazione si interrompe indipendentemente dal fatto che l'operazione riesca o meno. Questa proprietà viene spesso utilizzata con operazioni `aws:branch` per gestire valori di input imprevisti o non definiti. L'esempio seguente mostra un runbook che prevede uno stato dell'istanza di `running`, `stopping` o `stopped`. Se un'istanza si trova in uno stato diverso, l'automazione termina.

![\[Esempio Is end per l'esperienza di progettazione visiva\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_is_end_example.png)


# Tutorial: Creazione di un runbook utilizzando l'esperienza di progettazione visiva
<a name="visual-designer-tutorial"></a>

Questo tutorial ti illustrerà le basi per utilizzare l'esperienza di progettazione visiva fornita da Systems Manager Automation. Nell'esperienza di progettazione visiva, è possibile creare un runbook che utilizza più operazioni. È possibile utilizzare la funzionalità di trascinamento e rilascio per disporre le operazioni nell'area di lavoro. È possibile anche cercare, selezionare e configurare queste operazioni. Quindi, è possibile visualizzare il codice YAML generato automaticamente per il flusso di lavoro del runbook, uscire dall'esperienza di progettazione visiva, eseguire il runbook ed esaminare i dettagli di esecuzione.

Questo tutorial mostra anche come aggiornare il runbook e visualizzare la nuova versione. Alla fine del tutorial, eseguirai una fase di pulizia ed eliminerai il runbook.

Dopo aver completato questo tutorial, saprai come usare l'esperienza di progettazione visiva per creare un runbook. Saprai anche come aggiornare, eseguire ed eliminare il runbook.

**Nota**  
Prima di iniziare questo tutorial, assicurati di completare [Configurazione del servizio di automazione](automation-setup.md).

**Topics**
+ [Fase 1: Passaggio all'esperienza di progettazione visiva](#navigate-console)
+ [Fase 2: Creazione di un flusso di lavoro](#create-workflow)
+ [Fase 3: Revisione del codice generato automaticamente](#view-generated-code)
+ [Fase 4: Esecuzione del nuovo runbook](#use-tutorial-runbook)
+ [Fase 5: rimozione](#cleanup-tutorial-runbook)

## Fase 1: Passaggio all'esperienza di progettazione visiva
<a name="navigate-console"></a>

1. Accedi alla [console di Systems Manager Automation](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/).

1. Scegli **Crea un runbook automazione**.

## Fase 2: Creazione di un flusso di lavoro
<a name="create-workflow"></a>

Nell'esperienza di progettazione visiva, un flusso di lavoro è una rappresentazione grafica del runbook nell'area di lavoro. È possibile usare l'esperienza di progettazione visiva per definire, configurare ed esaminare le singole operazioni del tuo runbook.

**Creazione di un flusso di lavoro**

1. Accanto agli interruttori **Progettazione** e **Codice**, seleziona l'icona a forma di matita e inserisci un nome per il runbook. Per questo tutorial, digita **VisualDesignExperienceTutorial**.  
![\[Assegnazione di un nome al runbook per l'esperienza di progettazione visiva\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_tutorial_name.png)

1. Nella sezione **Attributi del documento** del pannello **Modulo**, espandi il menu a discesa **Parametri di input** e seleziona **Aggiungi un parametro**.

   1. Nel campo **Nome del parametro**, immetti **InstanceId**.

   1. Nel menu a discesa **Tipo**, scegli **AWS::EC2::Instance**.

   1. Seleziona l'interruttore **Richiesto**.  
![\[Creazione di un parametro per il runbook\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_actions_tutorial_parameter.png)

1. Nel **AWS APIs**browser, accedi **DescribeInstances** alla barra di ricerca.

1. Trascina un' DescribeInstancesazione di **Amazon EC2** sull'area di disegno vuota.

1. In **Nome fase**, immetti un valore. Per questo tutorial, è possibile utilizzare il nome **GetInstanceState**.  
![\[Scegli un'operazione API per la descrizione delle istanze di Amazon EC2.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_tutorial_api_action.png)

   1. Espandi il menu a discesa **Input aggiuntivi** e, nel campo **Nome input**, inserisci **InstanceIds**.

   1. Scegli la scheda **Input**.

   1. Nel campo **Valore di input**, scegli l'input del documento **InstanceId**. Fa riferimento al valore del parametro di input creato all'inizio della procedura. Poiché l'**InstanceIds**input per l'`DescribeInstances`azione accetta `StringList` valori, è necessario racchiudere l'**InstanceId**input tra parentesi quadre. È necessario che il codice YAML per il **valore di input** corrisponda al seguente: **['\$1\$1 InstanceId \$1\$1']**.

   1. Nella scheda **Output**, seleziona **Aggiungi un output** e inserisci **InstanceState** nel campo **Nome**.

   1. Nel campo **Selettore**, inserisci **\$1.Reservations[0].Instances[0].State.Name**.

   1. Dal menu a discesa **Tipo**, scegli **Stringa**.

1. Trascina un'azione **Ramo** dal browser **Operazioni** e rilasciala al di sotto della fase **`GetInstanceState`**. 

1. In **Nome fase**, immetti un valore. Per questo tutorial, utilizza il nome `BranchOnInstanceState`.

   Per definire la logica di ramificazione, completa le operazioni seguenti:

   1. Scegli lo stato **`Branch`** nell'area di lavoro. Quindi, in **Input** e **Scelte**, seleziona l'icona a forma di matita per modificare la **Regola \$1 1**.

   1. Scegli **Aggiungi condizione**.

   1. Nella finestra di dialogo **Condizioni per la regola \$1 1**, scegli l'output della fase **GetInstanceState.InstanceState** dal menu a discesa **Variabile**.

   1. Per **Operatore**, scegli **è uguale a**.

   1. Per **Valore**, scegli **Stringa** dall'elenco a discesa. Specificare **stopped**.  
![\[Definisci una condizione per un'azione di ramificazione.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_tutorial_condition.png)

   1. Seleziona **Salva condizioni**.

   1. Scegli **Aggiungi una nuova regola di scelta**.

   1. Scegli **Aggiungi condizioni** per la **Regola \$1 2**.

   1. Nella finestra di dialogo **Condizioni per la regola \$1 2**, scegli l'output della fase **GetInstanceState.InstanceState** dal menu a discesa **Variabile**.

   1. Per **Operatore**, scegli **è uguale a**.

   1. Per **Valore**, scegli **Stringa** dall'elenco a discesa. Specificare **stopping**.

   1. Seleziona **Salva condizioni**.

   1. Scegli **Aggiungi una nuova regola di scelta**.

   1. Scegli **Aggiungi condizioni** per **Regola \$1 3**.

   1. Nella finestra di dialogo **Condizioni per la regola \$1 3**, scegli l'output della fase **GetInstanceState.InstanceState** dal menu a discesa **Variabile**.

   1. Per **Operatore**, scegli **è uguale a**.

   1. Per **Valore**, scegli **Stringa** dall'elenco a discesa. Specificare **running**.

   1. Seleziona **Salva condizioni**.

   1. In **Regola predefinita**, scegli **Vai alla fine** per **Fase predefinita**.

1. Trascina **un'azione Cambia lo stato di un'istanza** nella casella vuota **Trascina l'azione qui** sotto **\$1\$1 GetInstanceState. InstanceState \$1\$1 == condizione «interrotta».**

   1. Per **Nome fase**, immetti **StartInstance**.

   1. Nella scheda **Input**, in **Istanza IDs**, scegli il valore di input del **InstanceId**documento dal menu a discesa.

   1. Per **Stato desiderato**, specificare **`running`**.

1. Trascina un'azione **Attendi l'azione relativa alla AWS risorsa** nella casella vuota **Trascina l'azione qui** sotto **\$1\$1. GetInstanceState InstanceState \$1\$1 == condizione di «arresto».**

1. In **Nome fase**, immetti un valore. Per questo tutorial, utilizza il nome `WaitForInstanceStop`.

   1. Per il campo **Servizio**, scegli **Amazon EC2**.

   1. Per il campo **API**, scegli. **DescribeInstances**

   1. Per il campo **Selettore di proprietà**, immetti **\$1.Reservations[0].Instances[0].State.Name**.

   1. Per il parametro **Valori desiderati**, immetti **`["stopped"]`**.

   1. Nella scheda ****WaitForInstanceStop**Configurazione** dell'azione, scegli **StartInstance**dal menu a discesa **Passaggio successivo**.

1. Trascina un **comando Esegui sull'azione dell'istanza** nella casella vuota **Trascina l'azione qui** sotto **\$1\$1. GetInstanceState InstanceState \$1\$1 == condizione «in esecuzione».**

1. Per **Nome fase**, immetti **SayHello**.

   1. Nella scheda **Input**, immetti **AWS-RunShellScript** per il parametro **Nome del documento**.

   1. Per **InstanceIds**, scegli il valore di input del **InstanceId**documento dal menu a discesa.

   1. Espandi il menu a discesa **Input aggiuntivi** e, dal menu a discesa **Nome input**, scegli **Parametri**.

   1. Nel campo **Valore di input**, immetti **`{"commands": "echo 'Hello World'"}`**.

1. Controlla il runbook completato nell'area di lavoro e seleziona **Crea runbook** per salvare il runbook del tutorial.  
![\[Rivedi e crea il runbook.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/visual_designer_tutorial_complete.png)

## Fase 3: Revisione del codice generato automaticamente
<a name="view-generated-code"></a>

Man mano che trascini e rilasci le operazioni dal browser **Operazioni** nell'area di lavoro, l'esperienza di progettazione visiva compone automaticamente il contenuto YAML o JSON del runbook in tempo reale. È possibile visualizzare e modificare questo codice. Per visualizzare il codice generato automaticamente, seleziona **Codice** per **Progettazione** e l'interruttore **Codice**.

## Fase 4: Esecuzione del nuovo runbook
<a name="use-tutorial-runbook"></a>

Dopo aver creato il runbook, è possibile eseguire l'automazione.

**Esecuzione del nuovo runbook Automation**

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 **Automazione**, quindi **Esegui automazione**.

1. Nell'elenco **Documento di automazione**, scegli un runbook. Scegli una o più opzioni nel pannello **Categorie di documenti** per filtrare i documenti SSM in base al loro scopo. Per visualizzare un runbook di cui si è proprietari, scegliere la scheda **Posseduto da me**. Per visualizzare un runbook condiviso con l'account, scegliere la scheda **Condiviso con me**. Per visualizzare tutti i runbook, scegliere la scheda **Tutti i documenti**.
**Nota**  
È possibile visualizzare informazioni su un runbook scegliendo il nome del runbook.

1. Nella sezione **Dettagli documento** verifica che l'opzione **Versione documento** sia impostata sulla versione che si desidera eseguire. Il sistema include le seguenti opzioni di versione: 
   + **Versione predefinita al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e viene assegnata una nuova versione predefinita.
   + **Ultima versione al runtime**: scegli questa opzione se il runbook Automation viene aggiornato periodicamente e si desidera che venga eseguita la versione aggiornata più di recente.
   + **1 (predefinita)**: scegli questa opzione per eseguire la prima versione del documento (quella predefinita).

1. Scegli **Next (Successivo)**.

1. Nella pagina **Esegui il runbook Automation**, scegli **Esecuzione semplice**.

1. Nella sezione **Input parameters (Parametri di input)** specifica i parametri obbligatori. Facoltativamente, puoi scegliere un ruolo di servizio IAM dall'**AutomationAssumeRole**elenco.

1. (Facoltativo) Scegli un CloudWatch allarme Amazon da applicare alla tua automazione per il monitoraggio. Per collegare un CloudWatch allarme alla tua automazione, il responsabile IAM che avvia l'automazione deve disporre dell'autorizzazione per l'`iam:createServiceLinkedRole`azione. Per ulteriori informazioni sugli CloudWatch allarmi, consulta [Usare gli CloudWatch allarmi Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html). Se l'allarme si attiva, l'automazione viene interrotta. Se utilizzi AWS CloudTrail, vedrai la chiamata API nel tuo percorso. 

1. Scegli **Esegui**. 

## Fase 5: rimozione
<a name="cleanup-tutorial-runbook"></a>

**Eliminazione del runbook**

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 la scheda **Di mia proprietà**.

1. Individua il **VisualDesignExperienceTutorial**runbook.

1. Seleziona il pulsante nella pagina della scheda documento, quindi scegli **Elimina documento** dal menu a discesa **Operazioni**.

# Creazione di runbook del servizio di automazione
<a name="automation-authoring-runbooks"></a>

Ogni runbook di Automation, uno strumento in AWS Systems Manager, definisce un'automazione. I runbook del servizio di automazione definiscono le operazioni eseguite durante un'automazione. Nel contenuto del runbook, definisci i parametri di input, gli output e le azioni che Systems Manager esegue sulle istanze e sulle risorse gestite. AWS 

Il servizio di automazione include numerosi runbook predefiniti che puoi utilizzare per eseguire processi comuni, ad esempio il riavvio di una o più istanze di Amazon Elastic Compute Cloud (Amazon EC2) o la creazione di un'Amazon Machine Image (AMI). Tuttavia, i casi d'uso potrebbero estendersi oltre le funzionalità dei runbook predefiniti. In questo caso, è possibile creare runbook personalizzati e modificarli in base alle proprie esigenze.

Un runbook è costituito da operazioni di automazione, parametri per tali operazioni e parametri di input specificati. Il contenuto di un runbook viene scritto in YAML o JSON. Se non si ha familiarità con YAML o JSON, consigliamo di utilizzare il visual designer o di documentarsi su entrambi i linguaggi di markup prima di tentare di creare un runbook personalizzato. Per ulteriori informazioni sul visual designer, consulta [Esperienza di progettazione visiva per i runbook Automation](automation-visual-designer.md).

Le sezioni seguenti consentono di creare il primo runbook.

## Identificazione del caso d'uso
<a name="automation-authoring-runbooks-use-case"></a>

La prima fase nella creazione di un runbook consiste nell'identificare il caso d'uso. Ad esempio, è stato pianificato il runbook `AWS-CreateImage` per l'esecuzione quotidiana su tutte le istanze di Amazon EC2 di produzione. Alla fine del mese, si decide di disporre di più immagini di quante sia necessario per i punti di ripristino. Andando avanti, si desidera eliminare automaticamente l'AMI più vecchia di un'istanza di Amazon EC2 quando viene creata una nuova AMI. A tale scopo, è possibile creare un nuovo runbook che esegue le seguenti operazioni:

1. Esegue l'operazione `aws:createImage` e specifica l'ID di istanza nella descrizione dell'immagine.

1. Esegue l'operazione `aws:waitForAwsResourceProperty` per verificare lo stato dell'immagine fino a quando non è `available`.

1. Dopo che lo stato dell'immagine è `available`, l'operazione `aws:executeScript` esegue uno script Python personalizzato che raccoglie gli ID di tutte le immagini associate all'istanza Amazon EC2. Lo script esegue questa operazione filtrando, utilizzando l'ID di istanza nella descrizione dell'immagine specificata al momento della creazione. Quindi, lo script ordina l'elenco delle immagini IDs in base all'immagine e restituisce l'ID `creationDate` della più vecchia. AMI

1. Infine, l'operazione `aws:deleteImage` viene eseguita per eliminare l'AMI più vecchia utilizzando l'ID dell'output della fase precedente.

In questo scenario, si stava già utilizzando il runbook `AWS-CreateImage`, ma si è scoperto che il caso d'uso richiedeva una maggiore flessibilità. Si tratta di una situazione comune perché possono esserci sovrapposizioni tra runbook e operazioni di automazione. Di conseguenza, potrebbe essere necessario modificare i runbook o le operazioni da utilizzare per risolvere il caso d'uso.

Ad esempio, le operazioni `aws:executeScript` e `aws:invokeLambdaFunction` permettono entrambe di eseguire script personalizzati come parte dell'automazione. Per scegliere tra di loro, potresti preferire `aws:invokeLambdaFunction` a causa dei linguaggi di runtime aggiuntivi supportati. Tuttavia, potresti preferire `aws:executeScript` perché consente di creare il contenuto dello script direttamente nei runbook YAML e di fornire il contenuto dello script come allegati per i runbook JSON. Si potrebbe anche considerare più semplice `aws:executeScript` in termini di configurazione di AWS Identity and Access Management (IAM). Poiché utilizza le autorizzazioni fornite in`AutomationAssumeRole`, `aws:executeScript` non richiede un ruolo di esecuzione della AWS Lambda funzione aggiuntivo.

In un determinato scenario, un'operazione potrebbe fornire maggiore flessibilità o funzionalità aggiuntive rispetto a un'altra. Pertanto, si consiglia di esaminare i parametri di input disponibili per il runbook o l'operazione che si desidera utilizzare per determinare il caso d'uso e le preferenze più adatte.

## Configurazione dell'ambiente di sviluppo
<a name="automation-authoring-runbooks-environment"></a>

Dopo aver identificato il caso d'uso e i runbook predefiniti o le operazioni di automazione che si desidera utilizzare nel runbook, è il momento di configurare l'ambiente di sviluppo per il contenuto del runbook. Per sviluppare i contenuti del runbook, si consiglia di utilizzare la console Systems Manager Documents AWS Toolkit for Visual Studio Code anziché la console Systems Manager Documents. 

Toolkit for VS Code è un'estensione open source per Visual Studio Code (VS Code) che offre più funzionalità rispetto alla console Documenti di Systems Manager. Le funzionalità utili includono la convalida dello schema sia per YAML che per JSON, frammenti per i tipi di operazioni di automazione e il supporto di completamento automatico per varie opzioni sia in YAML che JSON. 

Per ulteriori informazioni sull'installazione del Toolkit for VS Code, consulta [Installazione di AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html). Per ulteriori informazioni su come utilizzare Toolkit for VS Code per lo sviluppo di runbook, consulta [Utilizzo dei documenti del servizio di automazione di Systems Manager](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/systems-manager-automation-docs.html) nella *AWS Toolkit for Visual Studio Code Guida per l'utente di *.

## Sviluppo di contenuti del runbook
<a name="automation-authoring-runbooks-developing-content"></a>

Con l'identificazione del caso d'uso e la configurazione dell'ambiente, è possibile sviluppare il contenuto per il runbook. Il caso d'uso e le preferenze determinano in gran parte le operazioni di automazione o i runbook utilizzati nel contenuto del runbook. Alcune operazioni supportano solo un sottoinsieme di parametri di input rispetto a un'altra operazione che consente di eseguire un processo simile. Altre operazioni hanno output specifici, come `aws:createImage`, dove alcune operazioni consentono di definire i propri output, come `aws:executeAwsApi`. 

Se non si ha la certezza di come utilizzare un'operazione particolare nel runbook, si consiglia di esaminare la voce corrispondente per l'operazione in [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md). Si consiglia inoltre di esaminare il contenuto dei runbook predefiniti per visualizzare esempi reali di come queste operazioni vengono utilizzate. Per altri esempi di applicazioni reali dei runbook, consulta [Ulteriori esempi di runbook](automation-document-examples.md).

Per dimostrare le differenze di semplicità e flessibilità offerte dal contenuto del runbook, le esercitazioni seguenti forniscono un esempio di come applicare patch a gruppi di istanze Amazon EC2 per fasi:
+ [Esempio 1: Creazione di runbook padre-figlio](automation-authoring-runbooks-parent-child-example.md): in questo esempio vengono utilizzati due runbook in una relazione padre-figlio. Il runbook padre avvia un'automazione del controllo della velocità del runbook figlio. 
+ [Esempio 2: Runbook con script](automation-authoring-runbooks-scripted-example.md): in questo esempio viene illustrato come eseguire gli stessi processi dell'esempio 1 condensando il contenuto in un singolo runbook e utilizzando script nel runbook.

# Esempio 1: Creazione di runbook padre-figlio
<a name="automation-authoring-runbooks-parent-child-example"></a>

L'esempio seguente illustra come creare due runbook in cui vengono applicate le patch a gruppi taggati di istanze Amazon Elastic Compute Cloud (Amazon EC2) in fasi. Questi runbook vengono utilizzati in una relazione padre-figlio con il runbook padre utilizzato per avviare un'automazione del controllo della velocità del runbook figlio. Per ulteriori informazioni sulle automazioni per il controllo della velocità, consulta [Esegui operazioni automatizzate su larga scala](running-automations-scale.md). Per ulteriori informazioni sulle operazioni di automazione utilizzate in questo esempio, consulta [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md).

## Creazione del runbook figlio
<a name="automation-authoring-runbooks-child-runbook"></a>

Questo runbook di esempio si occupa dello scenario riportato di seguito. Emily è ingegnere di sistema presso AnyCompany Consultants, LLC. Deve configurare il servizio di patch per gruppi di istanze Amazon Elastic Compute Cloud (Amazon EC2) che ospitano i database primari e secondari. Le applicazioni accedono a questi database 24 ore al giorno, quindi una delle istanze del database deve essere sempre disponibile. 

Decide che applicare patch alle istanze per fasi è l'approccio migliore. Il gruppo primario di istanze di database verrà applicato per primo, seguito dal gruppo secondario di istanze di database. Inoltre, per evitare di incorrere in costi aggiuntivi lasciando le istanze in esecuzione precedentemente arrestate, Emily desidera che le istanze con patch vengano restituite allo stato originale, prima che si verifichi l'applicazione delle patch. 

Emily identifica i gruppi primari e secondari delle istanze di database in base ai tag associati alle istanze. Decide di creare un runbook padre che avvia un'automazione del controllo della velocità di un runbook figlio. In questo modo, può definire come destinazione i tag associati ai gruppi primari e secondari delle istanze di database e gestire la simultaneità delle automazioni figlio. Dopo aver esaminato i documenti di Systems Manager (SSM) disponibili per l'applicazione di patch, sceglie il documento `AWS-RunPatchBaseline`. Utilizzando questo documento SSM, i colleghi possono esaminare le informazioni di conformità delle patch associate al termine dell'operazione di applicazione delle patch.

Per iniziare a creare il contenuto del runbook, Emily esamina le operazioni di automazione disponibili e inizia a creare il contenuto per il runbook figlio nel modo seguente:

1. Innanzitutto, fornisce i valori per lo schema e la descrizione del runbook e definisce i parametri di input per il runbook figlio.

   Utilizzando il parametro `AutomationAssumeRole`, Emily e i suoi colleghi possono utilizzare un ruolo IAM esistente che consente al servizio di automazione di eseguire le operazioni nel runbook per loro conto. Emily utilizza il parametro `InstanceId` per determinare l'istanza a cui deve essere applicata la patch. Facoltativamente, è possibile utilizzare i parametri `Operation`, `RebootOption` e `SnapshotId` per fornire valori per documentare i parametri per `AWS-RunPatchBaseline`. Per evitare che vengano forniti valori non validi a tali parametri del documento, definisce la proprietà `allowedValues` in base alle esigenze.

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

   ```
   schemaVersion: '0.3'
   description: 'An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.'
   assumeRole: '{{AutomationAssumeRole}}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: >-
         '(Optional) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the
         actions on your behalf. If no role is specified, Systems Manager
         Automation uses your IAM permissions to operate this runbook.'
       default: ''
     InstanceId:
       type: String
       description: >-
         '(Required) The instance you want to patch.'
     SnapshotId:
       type: String
       description: '(Optional) The snapshot ID to use to retrieve a patch baseline snapshot.'
       default: ''
     RebootOption:
       type: String
       description: '(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.'
       allowedValues:
         - NoReboot
         - RebootIfNeeded
       default: RebootIfNeeded
     Operation:
       type: String
       description: '(Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.'
       allowedValues:
         - Install
         - Scan
       default: Install
   ```

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

   ```
   {
      "schemaVersion":"0.3",
      "description":"An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.",
      "assumeRole":"{{AutomationAssumeRole}}",
      "parameters":{
         "AutomationAssumeRole":{
            "type":"String",
            "description":"(Optional) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.",
            "default":""
         },
         "InstanceId":{
            "type":"String",
            "description":"(Required) The instance you want to patch."
         },
         "SnapshotId":{
            "type":"String",
            "description":"(Optional) The snapshot ID to use to retrieve a patch baseline snapshot.",
            "default":""
         },
         "RebootOption":{
            "type":"String",
            "description":"(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.",
            "allowedValues":[
               "NoReboot",
               "RebootIfNeeded"
            ],
            "default":"RebootIfNeeded"
         },
         "Operation":{
            "type":"String",
            "description":"(Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.",
            "allowedValues":[
               "Install",
               "Scan"
            ],
            "default":"Install"
         }
      }
   },
   ```

------

1. Con gli elementi di primo livello definiti, Emily procede con la creazione delle operazioni che compongono i `mainSteps` del runbook. La prima fase restituisce lo stato corrente dell'istanza di destinazione specificata nel parametro di input `InstanceId` utilizzando l'operazione `aws:executeAwsApi`. L'output di questa operazione viene utilizzato nelle operazioni successive.

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

   ```
   mainSteps:
     - name: getInstanceState
       action: 'aws:executeAwsApi'
       onFailure: Abort
       inputs:
         inputs:
         Service: ec2
         Api: DescribeInstances
         InstanceIds:
           - '{{InstanceId}}'
       outputs:
         - Name: instanceState
           Selector: '$.Reservations[0].Instances[0].State.Name'
           Type: String
       nextStep: branchOnInstanceState
   ```

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

   ```
   "mainSteps":[
         {
            "name":"getInstanceState",
            "action":"aws:executeAwsApi",
            "onFailure":"Abort",
            "inputs":{
               "inputs":null,
               "Service":"ec2",
               "Api":"DescribeInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ]
            },
            "outputs":[
               {
                  "Name":"instanceState",
                  "Selector":"$.Reservations[0].Instances[0].State.Name",
                  "Type":"String"
               }
            ],
            "nextStep":"branchOnInstanceState"
         },
   ```

------

1. Anziché avviare manualmente e tenere traccia dello stato originale di ogni istanza a cui è necessario applicare la patch, Emily utilizza l'output dell'operazione precedente per diramare l'automazione in base allo stato dell'istanza di destinazione. Ciò consente all'automazione di eseguire fasi diverse a seconda delle condizioni definite nell'operazione `aws:branch` e migliora l'efficienza complessiva dell'automazione senza intervento manuale.

   Se lo stato dell'istanza è già `running`, l'automazione procede con l'applicazione di patch all'istanza con il documento `AWS-RunPatchBaseline` che utilizza l'operazione `aws:runCommand`.

   Se lo stato dell'istanza è `stopping`, l'automazione verifica l'istanza per raggiungere lo stato `stopped` utilizzando l'operazione `aws:waitForAwsResourceProperty`, avvia l'istanza utilizzando l'operazione `executeAwsApi` e verifica l'istanza per raggiungere uno stato `running` prima di applicare patch all'istanza.

   Se lo stato dell'istanza è `stopped`, l'automazione avvia l'istanza ed esegue una verifica, affinché l'istanza raggiunga lo stato `running` prima di applicare patch all'istanza utilizzando le stesse operazioni.

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

   ```
   - name: branchOnInstanceState
       action: 'aws:branch'
       onFailure: Abort
       inputs:
         Choices:
           - NextStep: startInstance
              Variable: '{{getInstanceState.instanceState}}'
              StringEquals: stopped
            - NextStep: verifyInstanceStopped
              Variable: '{{getInstanceState.instanceState}}'
              StringEquals: stopping
            - NextStep: patchInstance
              Variable: '{{getInstanceState.instanceState}}'
              StringEquals: running
       isEnd: true
     - name: startInstance
       action: 'aws:executeAwsApi'
       onFailure: Abort
       inputs:
         Service: ec2
         Api: StartInstances
         InstanceIds:
           - '{{InstanceId}}'
       nextStep: verifyInstanceRunning
     - name: verifyInstanceRunning
       action: 'aws:waitForAwsResourceProperty'
       timeoutSeconds: 120
       inputs:
         Service: ec2
         Api: DescribeInstances
         InstanceIds:
           - '{{InstanceId}}'
         PropertySelector: '$.Reservations[0].Instances[0].State.Name'
         DesiredValues:
           - running
       nextStep: patchInstance
     - name: verifyInstanceStopped
       action: 'aws:waitForAwsResourceProperty'
       timeoutSeconds: 120
       inputs:
         Service: ec2
         Api: DescribeInstances
         InstanceIds:
           - '{{InstanceId}}'
         PropertySelector: '$.Reservations[0].Instances[0].State.Name'
         DesiredValues:
           - stopped
         nextStep: startInstance
     - name: patchInstance
       action: 'aws:runCommand'
       onFailure: Abort
       timeoutSeconds: 5400
       inputs:
         DocumentName: 'AWS-RunPatchBaseline'
         InstanceIds: 
         - '{{InstanceId}}'
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
   ```

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

   ```
   {
            "name":"branchOnInstanceState",
            "action":"aws:branch",
            "onFailure":"Abort",
            "inputs":{
               "Choices":[
                  {
                     "NextStep":"startInstance",
                     "Variable":"{{getInstanceState.instanceState}}",
                     "StringEquals":"stopped"
                  },
                  {
                     "Or":[
                        {
                           "Variable":"{{getInstanceState.instanceState}}",
                           "StringEquals":"stopping"
                        }
                     ],
                     "NextStep":"verifyInstanceStopped"
                  },
                  {
                     "NextStep":"patchInstance",
                     "Variable":"{{getInstanceState.instanceState}}",
                     "StringEquals":"running"
                  }
               ]
            },
            "isEnd":true
         },
         {
            "name":"startInstance",
            "action":"aws:executeAwsApi",
            "onFailure":"Abort",
            "inputs":{
               "Service":"ec2",
               "Api":"StartInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ]
            },
            "nextStep":"verifyInstanceRunning"
         },
         {
            "name":"verifyInstanceRunning",
            "action":"aws:waitForAwsResourceProperty",
            "timeoutSeconds":120,
            "inputs":{
               "Service":"ec2",
               "Api":"DescribeInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ],
               "PropertySelector":"$.Reservations[0].Instances[0].State.Name",
               "DesiredValues":[
                  "running"
               ]
            },
            "nextStep":"patchInstance"
         },
         {
            "name":"verifyInstanceStopped",
            "action":"aws:waitForAwsResourceProperty",
            "timeoutSeconds":120,
            "inputs":{
               "Service":"ec2",
               "Api":"DescribeInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ],
               "PropertySelector":"$.Reservations[0].Instances[0].State.Name",
               "DesiredValues":[
                  "stopped"
               ],
               "nextStep":"startInstance"
            }
         },
         {
            "name":"patchInstance",
            "action":"aws:runCommand",
            "onFailure":"Abort",
            "timeoutSeconds":5400,
            "inputs":{
               "DocumentName":"AWS-RunPatchBaseline",
               "InstanceIds":[
                  "{{InstanceId}}"
               ],
               "Parameters":{
                  "SnapshotId":"{{SnapshotId}}",
                  "RebootOption":"{{RebootOption}}",
                  "Operation":"{{Operation}}"
               }
            }
         },
   ```

------

1. Al termine dell'operazione di applicazione delle patch, Emily desidera che l'automazione restituisca l'istanza di destinazione allo stesso stato in cui si trovava prima dell'avvio dell'automazione. Lo fa utilizzando nuovamente l'output della prima operazione. L'automazione si ramifica sulla base dello stato originale dell'istanza di destinazione utilizzando l'operazione `aws:branch`. Se l'istanza si trovava in precedenza in uno stato diverso da `running`, l'istanza viene arrestata. Altrimenti, se lo stato dell'istanza è `running`, l'automazione termina.

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

   ```
   - name: branchOnOriginalInstanceState
       action: 'aws:branch'
       onFailure: Abort
       inputs:
         Choices:
           - NextStep: stopInstance
             Not: 
               Variable: '{{getInstanceState.instanceState}}'
               StringEquals: running
       isEnd: true
     - name: stopInstance
       action: 'aws:executeAwsApi'
       onFailure: Abort
       inputs:
         Service: ec2
         Api: StopInstances
         InstanceIds:
           - '{{InstanceId}}'
   ```

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

   ```
   {
            "name":"branchOnOriginalInstanceState",
            "action":"aws:branch",
            "onFailure":"Abort",
            "inputs":{
               "Choices":[
                  {
                     "NextStep":"stopInstance",
                     "Not":{
                        "Variable":"{{getInstanceState.instanceState}}",
                        "StringEquals":"running"
                     }
                  }
               ]
            },
            "isEnd":true
         },
         {
            "name":"stopInstance",
            "action":"aws:executeAwsApi",
            "onFailure":"Abort",
            "inputs":{
               "Service":"ec2",
               "Api":"StopInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ]
            }
         }
      ]
   }
   ```

------

1. Emily esamina il contenuto completo del runbook per bambini e lo crea nella stessa istanza Account AWS e Regione AWS in quella di destinazione. Ora è pronta a continuare con la creazione del contenuto del runbook padre. Di seguito è riportato il contenuto del runbook figlio completato.

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

   ```
   schemaVersion: '0.3'
   description: 'An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.'
   assumeRole: '{{AutomationAssumeRole}}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: >-
         '(Optional) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the
         actions on your behalf. If no role is specified, Systems Manager
         Automation uses your IAM permissions to operate this runbook.'
       default: ''
     InstanceId:
       type: String
       description: >-
         '(Required) The instance you want to patch.'
     SnapshotId:
       type: String
       description: '(Optional) The snapshot ID to use to retrieve a patch baseline snapshot.'
       default: ''
     RebootOption:
       type: String
       description: '(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.'
       allowedValues:
         - NoReboot
         - RebootIfNeeded
       default: RebootIfNeeded
     Operation:
       type: String
       description: '(Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.'
       allowedValues:
         - Install
         - Scan
       default: Install
   mainSteps:
     - name: getInstanceState
       action: 'aws:executeAwsApi'
       onFailure: Abort
       inputs:
         inputs:
         Service: ec2
         Api: DescribeInstances
         InstanceIds:
           - '{{InstanceId}}'
       outputs:
         - Name: instanceState
           Selector: '$.Reservations[0].Instances[0].State.Name'
           Type: String
       nextStep: branchOnInstanceState
     - name: branchOnInstanceState
       action: 'aws:branch'
       onFailure: Abort
       inputs:
         Choices:
           - NextStep: startInstance
             Variable: '{{getInstanceState.instanceState}}'
             StringEquals: stopped
           - Or:
               - Variable: '{{getInstanceState.instanceState}}'
                 StringEquals: stopping
             NextStep: verifyInstanceStopped
           - NextStep: patchInstance
             Variable: '{{getInstanceState.instanceState}}'
             StringEquals: running
       isEnd: true
     - name: startInstance
       action: 'aws:executeAwsApi'
       onFailure: Abort
       inputs:
         Service: ec2
         Api: StartInstances
         InstanceIds:
           - '{{InstanceId}}'
       nextStep: verifyInstanceRunning
     - name: verifyInstanceRunning
       action: 'aws:waitForAwsResourceProperty'
       timeoutSeconds: 120
       inputs:
         Service: ec2
         Api: DescribeInstances
         InstanceIds:
           - '{{InstanceId}}'
         PropertySelector: '$.Reservations[0].Instances[0].State.Name'
         DesiredValues:
           - running
       nextStep: patchInstance
     - name: verifyInstanceStopped
       action: 'aws:waitForAwsResourceProperty'
       timeoutSeconds: 120
       inputs:
         Service: ec2
         Api: DescribeInstances
         InstanceIds:
           - '{{InstanceId}}'
         PropertySelector: '$.Reservations[0].Instances[0].State.Name'
         DesiredValues:
           - stopped
         nextStep: startInstance
     - name: patchInstance
       action: 'aws:runCommand'
       onFailure: Abort
       timeoutSeconds: 5400
       inputs:
         DocumentName: 'AWS-RunPatchBaseline'
         InstanceIds: 
         - '{{InstanceId}}'
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
     - name: branchOnOriginalInstanceState
       action: 'aws:branch'
       onFailure: Abort
       inputs:
         Choices:
           - NextStep: stopInstance
             Not: 
               Variable: '{{getInstanceState.instanceState}}'
               StringEquals: running
       isEnd: true
     - name: stopInstance
       action: 'aws:executeAwsApi'
       onFailure: Abort
       inputs:
         Service: ec2
         Api: StopInstances
         InstanceIds:
           - '{{InstanceId}}'
   ```

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

   ```
   {
      "schemaVersion":"0.3",
      "description":"An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.",
      "assumeRole":"{{AutomationAssumeRole}}",
      "parameters":{
         "AutomationAssumeRole":{
            "type":"String",
            "description":"'(Optional) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.'",
            "default":""
         },
         "InstanceId":{
            "type":"String",
            "description":"'(Required) The instance you want to patch.'"
         },
         "SnapshotId":{
            "type":"String",
            "description":"(Optional) The snapshot ID to use to retrieve a patch baseline snapshot.",
            "default":""
         },
         "RebootOption":{
            "type":"String",
            "description":"(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.",
            "allowedValues":[
               "NoReboot",
               "RebootIfNeeded"
            ],
            "default":"RebootIfNeeded"
         },
         "Operation":{
            "type":"String",
            "description":"(Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.",
            "allowedValues":[
               "Install",
               "Scan"
            ],
            "default":"Install"
         }
      },
      "mainSteps":[
         {
            "name":"getInstanceState",
            "action":"aws:executeAwsApi",
            "onFailure":"Abort",
            "inputs":{
               "inputs":null,
               "Service":"ec2",
               "Api":"DescribeInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ]
            },
            "outputs":[
               {
                  "Name":"instanceState",
                  "Selector":"$.Reservations[0].Instances[0].State.Name",
                  "Type":"String"
               }
            ],
            "nextStep":"branchOnInstanceState"
         },
         {
            "name":"branchOnInstanceState",
            "action":"aws:branch",
            "onFailure":"Abort",
            "inputs":{
               "Choices":[
                  {
                     "NextStep":"startInstance",
                     "Variable":"{{getInstanceState.instanceState}}",
                     "StringEquals":"stopped"
                  },
                  {
                     "Or":[
                        {
                           "Variable":"{{getInstanceState.instanceState}}",
                           "StringEquals":"stopping"
                        }
                     ],
                     "NextStep":"verifyInstanceStopped"
                  },
                  {
                     "NextStep":"patchInstance",
                     "Variable":"{{getInstanceState.instanceState}}",
                     "StringEquals":"running"
                  }
               ]
            },
            "isEnd":true
         },
         {
            "name":"startInstance",
            "action":"aws:executeAwsApi",
            "onFailure":"Abort",
            "inputs":{
               "Service":"ec2",
               "Api":"StartInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ]
            },
            "nextStep":"verifyInstanceRunning"
         },
         {
            "name":"verifyInstanceRunning",
            "action":"aws:waitForAwsResourceProperty",
            "timeoutSeconds":120,
            "inputs":{
               "Service":"ec2",
               "Api":"DescribeInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ],
               "PropertySelector":"$.Reservations[0].Instances[0].State.Name",
               "DesiredValues":[
                  "running"
               ]
            },
            "nextStep":"patchInstance"
         },
         {
            "name":"verifyInstanceStopped",
            "action":"aws:waitForAwsResourceProperty",
            "timeoutSeconds":120,
            "inputs":{
               "Service":"ec2",
               "Api":"DescribeInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ],
               "PropertySelector":"$.Reservations[0].Instances[0].State.Name",
               "DesiredValues":[
                  "stopped"
               ],
               "nextStep":"startInstance"
            }
         },
         {
            "name":"patchInstance",
            "action":"aws:runCommand",
            "onFailure":"Abort",
            "timeoutSeconds":5400,
            "inputs":{
               "DocumentName":"AWS-RunPatchBaseline",
               "InstanceIds":[
                  "{{InstanceId}}"
               ],
               "Parameters":{
                  "SnapshotId":"{{SnapshotId}}",
                  "RebootOption":"{{RebootOption}}",
                  "Operation":"{{Operation}}"
               }
            }
         },
         {
            "name":"branchOnOriginalInstanceState",
            "action":"aws:branch",
            "onFailure":"Abort",
            "inputs":{
               "Choices":[
                  {
                     "NextStep":"stopInstance",
                     "Not":{
                        "Variable":"{{getInstanceState.instanceState}}",
                        "StringEquals":"running"
                     }
                  }
               ]
            },
            "isEnd":true
         },
         {
            "name":"stopInstance",
            "action":"aws:executeAwsApi",
            "onFailure":"Abort",
            "inputs":{
               "Service":"ec2",
               "Api":"StopInstances",
               "InstanceIds":[
                  "{{InstanceId}}"
               ]
            }
         }
      ]
   }
   ```

------

Per ulteriori informazioni sulle operazioni di automazione utilizzate in questo esempio, consulta [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md).

## Creazione del runbook padre
<a name="automation-authoring-runbooks-parent-runbook"></a>

Questo runbook di esempio continua lo scenario descritto nella sezione precedente. Ora che Emily ha creato il runbook figlio, inizia a creare il contenuto per il runbook padre nel modo seguente:

1. Innanzitutto, fornisce i valori per lo schema e la descrizione del runbook e definisce i parametri di input per il runbook padre.

   Utilizzando il parametro `AutomationAssumeRole`, Emily e i suoi colleghi possono utilizzare un ruolo IAM esistente che consente al servizio di automazione di eseguire le operazioni nel runbook per loro conto. Emily utilizza i parametri `PatchGroupPrimaryKey` e `PatchGroupPrimaryValue` per specificare il tag associato al gruppo primario di istanze di database a cui verrà applicata la patch. Lei usa i parametri `PatchGroupSecondaryKey` e `PatchGroupSecondaryValue` per specificare il tag associato al gruppo secondario di istanze di database a cui verrà applicata la patch.

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

   ```
   description: 'An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.'
   schemaVersion: '0.3'
   assumeRole: '{{AutomationAssumeRole}}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: '(Optional) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.'
       default: ''
     PatchGroupPrimaryKey:
       type: String
       description: '(Required) The key of the tag for the primary group of instances you want to patch.''
     PatchGroupPrimaryValue:
       type: String
       description: '(Required) The value of the tag for the primary group of instances you want to patch.'
     PatchGroupSecondaryKey:
       type: String
       description: '(Required) The key of the tag for the secondary group of instances you want to patch.'
     PatchGroupSecondaryValue:
       type: String
       description: '(Required) The value of the tag for the secondary group of instances you want to patch.'
   ```

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

   ```
   {
      "schemaVersion": "0.3",
      "description": "An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.",
      "assumeRole": "{{AutomationAssumeRole}}",
      "parameters": {
         "AutomationAssumeRole": {
            "type": "String",
            "description": "(Optional) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.",
            "default": ""
         },
         "PatchGroupPrimaryKey": {
            "type": "String",
            "description": "(Required) The key of the tag for the primary group of instances you want to patch."
         },
         "PatchGroupPrimaryValue": {
            "type": "String",
            "description": "(Required) The value of the tag for the primary group of instances you want to patch."
         },
         "PatchGroupSecondaryKey": {
            "type": "String",
            "description": "(Required) The key of the tag for the secondary group of instances you want to patch."
         },
         "PatchGroupSecondaryValue": {
            "type": "String",
            "description": "(Required) The value of the tag for the secondary group of instances you want to patch."
         }
      }
   },
   ```

------

1. Con gli elementi di primo livello definiti, Emily procede con la creazione delle operazioni che compongono i `mainSteps` del runbook. 

   La prima operazione avvia un'automazione del controllo della velocità utilizzando il runbook figlio appena creato e destinato alle istanze associate al tag specificato nei parametri di input `PatchGroupPrimaryKey` e `PatchGroupPrimaryValue`. Utilizza i valori forniti ai parametri di input per specificare la chiave e il valore del tag associato al gruppo primario di istanze di database a cui desidera applicare patch.

   Una volta completata la prima automazione, la seconda operazione avvia un'altra automazione del controllo della velocità utilizzando il runbook figlio che si rivolge alle istanze associate al tag specificato nei parametri di input `PatchGroupSecondaryKey` e `PatchGroupSecondaryValue`. Utilizza i valori forniti ai parametri di input per specificare la chiave e il valore del tag associato al gruppo secondario di istanze di database a cui desidera applicare patch.

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

   ```
   mainSteps:
     - name: patchPrimaryTargets
       action: 'aws:executeAutomation'
       onFailure: Abort
       timeoutSeconds: 7200
       inputs:
         DocumentName: RunbookTutorialChildAutomation
         Targets:
           - Key: 'tag:{{PatchGroupPrimaryKey}}'
             Values:
               - '{{PatchGroupPrimaryValue}}'
         TargetParameterName: 'InstanceId'
     - name: patchSecondaryTargets
       action: 'aws:executeAutomation'
       onFailure: Abort
       timeoutSeconds: 7200
       inputs:
         DocumentName: RunbookTutorialChildAutomation
         Targets:
           - Key: 'tag:{{PatchGroupSecondaryKey}}'
             Values:
               - '{{PatchGroupSecondaryValue}}'
         TargetParameterName: 'InstanceId'
   ```

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

   ```
   "mainSteps":[
         {
            "name":"patchPrimaryTargets",
            "action":"aws:executeAutomation",
            "onFailure":"Abort",
            "timeoutSeconds":7200,
            "inputs":{
               "DocumentName":"RunbookTutorialChildAutomation",
               "Targets":[
                  {
                     "Key":"tag:{{PatchGroupPrimaryKey}}",
                     "Values":[
                        "{{PatchGroupPrimaryValue}}"
                     ]
                  }
               ],
               "TargetParameterName":"InstanceId"
            }
         },
         {
            "name":"patchSecondaryTargets",
            "action":"aws:executeAutomation",
            "onFailure":"Abort",
            "timeoutSeconds":7200,
            "inputs":{
               "DocumentName":"RunbookTutorialChildAutomation",
               "Targets":[
                  {
                     "Key":"tag:{{PatchGroupSecondaryKey}}",
                     "Values":[
                        "{{PatchGroupSecondaryValue}}"
                     ]
                  }
               ],
               "TargetParameterName":"InstanceId"
            }
         }
      ]
   }
   ```

------

1. Emily esamina il contenuto completo del runbook principale e crea il runbook nella stessa istanza e in quella di destinazione. Account AWS Regione AWS Ora, è pronta a testare i suoi runbook per assicurarsi che l'automazione funzioni come desiderato prima di implementarli nell'ambiente di produzione. Di seguito è riportato il contenuto del runbook padre completato.

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

   ```
   description: An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.
   schemaVersion: '0.3'
   assumeRole: '{{AutomationAssumeRole}}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: '(Optional) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.'
       default: ''
     PatchGroupPrimaryKey:
       type: String
       description: (Required) The key of the tag for the primary group of instances you want to patch.
     PatchGroupPrimaryValue:
       type: String
       description: '(Required) The value of the tag for the primary group of instances you want to patch. '
     PatchGroupSecondaryKey:
       type: String
       description: (Required) The key of the tag for the secondary group of instances you want to patch.
     PatchGroupSecondaryValue:
       type: String
       description: '(Required) The value of the tag for the secondary group of instances you want to patch.  '
   mainSteps:
     - name: patchPrimaryTargets
       action: 'aws:executeAutomation'
       onFailure: Abort
       timeoutSeconds: 7200
       inputs:
         DocumentName: RunbookTutorialChildAutomation
         Targets:
           - Key: 'tag:{{PatchGroupPrimaryKey}}'
             Values:
               - '{{PatchGroupPrimaryValue}}'
         TargetParameterName: 'InstanceId'
     - name: patchSecondaryTargets
       action: 'aws:executeAutomation'
       onFailure: Abort
       timeoutSeconds: 7200
       inputs:
         DocumentName: RunbookTutorialChildAutomation
         Targets:
           - Key: 'tag:{{PatchGroupSecondaryKey}}'
             Values:
               - '{{PatchGroupSecondaryValue}}'
         TargetParameterName: 'InstanceId'
   ```

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

   ```
   {
      "description":"An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.",
      "schemaVersion":"0.3",
      "assumeRole":"{{AutomationAssumeRole}}",
      "parameters":{
         "AutomationAssumeRole":{
            "type":"String",
            "description":"(Optional) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.",
            "default":""
         },
         "PatchGroupPrimaryKey":{
            "type":"String",
            "description":"(Required) The key of the tag for the primary group of instances you want to patch."
         },
         "PatchGroupPrimaryValue":{
            "type":"String",
            "description":"(Required) The value of the tag for the primary group of instances you want to patch. "
         },
         "PatchGroupSecondaryKey":{
            "type":"String",
            "description":"(Required) The key of the tag for the secondary group of instances you want to patch."
         },
         "PatchGroupSecondaryValue":{
            "type":"String",
            "description":"(Required) The value of the tag for the secondary group of instances you want to patch.  "
         }
      },
      "mainSteps":[
         {
            "name":"patchPrimaryTargets",
            "action":"aws:executeAutomation",
            "onFailure":"Abort",
            "timeoutSeconds":7200,
            "inputs":{
               "DocumentName":"RunbookTutorialChildAutomation",
               "Targets":[
                  {
                     "Key":"tag:{{PatchGroupPrimaryKey}}",
                     "Values":[
                        "{{PatchGroupPrimaryValue}}"
                     ]
                  }
               ],
               "TargetParameterName":"InstanceId"
            }
         },
         {
            "name":"patchSecondaryTargets",
            "action":"aws:executeAutomation",
            "onFailure":"Abort",
            "timeoutSeconds":7200,
            "inputs":{
               "DocumentName":"RunbookTutorialChildAutomation",
               "Targets":[
                  {
                     "Key":"tag:{{PatchGroupSecondaryKey}}",
                     "Values":[
                        "{{PatchGroupSecondaryValue}}"
                     ]
                  }
               ],
               "TargetParameterName":"InstanceId"
            }
         }
      ]
   }
   ```

------

Per ulteriori informazioni sulle operazioni di automazione utilizzate in questo esempio, consulta [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md).

# Esempio 2: Runbook con script
<a name="automation-authoring-runbooks-scripted-example"></a>

Questo runbook di esempio si occupa dello scenario riportato di seguito. Emily è ingegnere di sistema presso AnyCompany Consultants, LLC. In precedenza, ha creato due runbook utilizzati in una relazione padre-figlio a gruppi di patch di istanze Amazon Elastic Compute Cloud (Amazon EC2) che ospitano i database primari e secondari. Le applicazioni accedono a questi database 24 ore al giorno, quindi una delle istanze del database deve essere sempre disponibile. 

Sulla base di questo requisito, ha creato una soluzione per l'applicazione di patch alle istanze in fasi utilizzando il documento `AWS-RunPatchBaseline` di Systems Manager (SSM). Utilizzando questo documento SSM, i colleghi possono esaminare le informazioni di conformità delle patch associate al termine dell'operazione di applicazione delle patch. 

Il gruppo primario di istanze di database viene applicato per primo, seguito dal gruppo secondario di istanze di database. Inoltre, per evitare di incorrere in costi aggiuntivi lasciando le istanze in esecuzione precedentemente arrestate, Emily si è assicurata che l'automazione restituisse le istanze con patch allo stato originale prima che si verificasse l'applicazione delle patch. Emily ha utilizzato tag associati ai gruppi primari e secondari di istanze di database per identificare quali istanze devono essere applicate le patch nell'ordine desiderato.

La sua soluzione automatizzata esistente funziona, ma vuole migliorare la sua soluzione, se possibile. Per facilitare la manutenzione del contenuto del runbook e facilitare la risoluzione dei problemi, desidera condensare l'automazione in un unico runbook e semplificare il numero di parametri di input. Inoltre, vorrebbe evitare di creare più automazioni figlio. 

Dopo aver esaminato le operazioni di automazione disponibili, Emily determina di poter migliorare la sua soluzione utilizzando l'operazione `aws:executeScript` per eseguire i suoi script Python personalizzati. Ora inizia a creare il contenuto per il runbook nel modo seguente:

1. Innanzitutto, fornisce i valori per lo schema e la descrizione del runbook e definisce i parametri di input per il runbook padre.

   Utilizzando il parametro `AutomationAssumeRole`, Emily e i suoi colleghi possono utilizzare un ruolo IAM esistente che consente al servizio di automazione di eseguire le operazioni nel runbook per loro conto. A differenza dell'[Esempio 1](automation-authoring-runbooks-parent-child-example.md), il parametro `AutomationAssumeRole` è ora richiesto e non è facoltativo. Poiché questo runbook include `aws:executeScript` azioni, è sempre necessario un ruolo di servizio AWS Identity and Access Management (IAM) (o assumi un ruolo). Questo requisito è necessario, perché alcuni degli script Python specificati per le operazioni chiamano operazioni API di AWS .

   Emily utilizza i parametri `PrimaryPatchGroupTag` e `SecondaryPatchGroupTag` per specificare i tag associati al gruppo primario e secondario di istanze del database a cui verrà applicata la patch. Per semplificare i parametri di input richiesti, decide di utilizzare i parametri `StringMap` anziché utilizzare più parametri `String` come nel caso del runbook dell’esempio 1. Facoltativamente, è possibile utilizzare i parametri `Operation`, `RebootOption` e `SnapshotId` per fornire valori per documentare i parametri per `AWS-RunPatchBaseline`. Per evitare che vengano forniti valori non validi a tali parametri del documento, definisce la proprietà `allowedValues` in base alle esigenze.

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

   ```
   description: 'An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.'
   schemaVersion: '0.3'
   assumeRole: '{{AutomationAssumeRole}}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: '(Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.'
     PrimaryPatchGroupTag:
       type: StringMap
       description: '(Required) The tag for the primary group of instances you want to patch. Specify a key-value pair. Example: {"key" : "value"}'
     SecondaryPatchGroupTag:
       type: StringMap
       description: '(Required) The tag for the secondary group of instances you want to patch. Specify a key-value pair. Example: {"key" : "value"}'
     SnapshotId:
       type: String
       description: '(Optional) The snapshot ID to use to retrieve a patch baseline snapshot.'
       default: ''
     RebootOption:
       type: String
       description: '(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.'
       allowedValues:
         - NoReboot
         - RebootIfNeeded
       default: RebootIfNeeded
     Operation:
       type: String
       description: '(Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.'
       allowedValues:
         - Install
         - Scan
       default: Install
   ```

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

   ```
   {
      "description":"An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.",
      "schemaVersion":"0.3",
      "assumeRole":"{{AutomationAssumeRole}}",
      "parameters":{
         "AutomationAssumeRole":{
            "type":"String",
            "description":"(Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook."
         },
         "PrimaryPatchGroupTag":{
            "type":"StringMap",
            "description":"(Required) The tag for the primary group of instances you want to patch. Specify a key-value pair. Example: {\"key\" : \"value\"}"
         },
         "SecondaryPatchGroupTag":{
            "type":"StringMap",
            "description":"(Required) The tag for the secondary group of instances you want to patch. Specify a key-value pair. Example: {\"key\" : \"value\"}"
         },
         "SnapshotId":{
            "type":"String",
            "description":"(Optional) The snapshot ID to use to retrieve a patch baseline snapshot.",
            "default":""
         },
         "RebootOption":{
            "type":"String",
            "description":"(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.",
            "allowedValues":[
               "NoReboot",
               "RebootIfNeeded"
            ],
            "default":"RebootIfNeeded"
         },
         "Operation":{
            "type":"String",
            "description":"(Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.",
            "allowedValues":[
               "Install",
               "Scan"
            ],
            "default":"Install"
         }
      }
   },
   ```

------

1. Con gli elementi di primo livello definiti, Emily procede con la creazione delle operazioni che compongono i `mainSteps` del runbook. Il primo passaggio raccoglie tutte le istanze associate al tag specificato nel `PrimaryPatchGroupTag` parametro e restituisce un `StringMap` parametro contenente l'ID dell'istanza e lo stato corrente dell'istanza. IDs L'output di questa operazione viene utilizzato nelle operazioni successive. 

   Il parametro di input dello `script` non è supportato per i runbook JSON. I runbook JSON devono fornire contenuto di script utilizzando il `attachment` parametro di input allegato.

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

   ```
   mainSteps:
     - name: getPrimaryInstanceState
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: getInstanceStates
         InputPayload:
           primaryTag: '{{PrimaryPatchGroupTag}}'
         Script: |-
           def getInstanceStates(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             tag = events['primaryTag']
             tagKey, tagValue = list(tag.items())[0]
             instanceQuery = ec2.describe_instances(
             Filters=[
                 {
                     "Name": "tag:" + tagKey,
                     "Values": [tagValue]
                 }]
             )
             if not instanceQuery['Reservations']:
                 noInstancesForTagString = "No instances found for specified tag."
                 return({ 'noInstancesFound' : noInstancesForTagString })
             else:
                 queryResponse = instanceQuery['Reservations']
                 originalInstanceStates = {}
                 for results in queryResponse:
                     instanceSet = results['Instances']
                     for instance in instanceSet:
                         instanceId = instance['InstanceId']
                         originalInstanceStates[instanceId] = instance['State']['Name']
                 return originalInstanceStates
       outputs:
         - Name: originalInstanceStates
           Selector: $.Payload
           Type: StringMap
       nextStep: verifyPrimaryInstancesRunning
   ```

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

   ```
   "mainSteps":[
         {
            "name":"getPrimaryInstanceState",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"getInstanceStates",
               "InputPayload":{
                  "primaryTag":"{{PrimaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"originalInstanceStates",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               }
            ],
            "nextStep":"verifyPrimaryInstancesRunning"
         },
   ```

------

1. Emily utilizza l'output dell'operazione precedente in un'altra operazione `aws:executeScript` per verificare che tutte le istanze associate al tag specificato nel parametro `PrimaryPatchGroupTag` siano nello stato `running`.

   Se lo stato dell'istanza è già `running` o `shutting-down`, lo script continua a scorrere le istanze rimanenti.

   Se lo stato dell'istanza è `stopping`, lo script esegue la verifica per l'istanza perché raggiunga lo stato `stopped` e avvia l'istanza.

   Se lo stato dell'istanza è `stopped`, lo script avvia l'istanza.

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

   ```
   - name: verifyPrimaryInstancesRunning
       action: 'aws:executeScript'
       timeoutSeconds: 600
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: verifyInstancesRunning
         InputPayload:
           targetInstances: '{{getPrimaryInstanceState.originalInstanceStates}}'
         Script: |-
           def verifyInstancesRunning(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
               if instanceDict[instance] == 'stopped':
                   print("The target instance " + instance + " is stopped. The instance will now be started.")
                   ec2.start_instances(
                       InstanceIds=[instance]
                       )
               elif instanceDict[instance] == 'stopping':
                   print("The target instance " + instance + " is stopping. Polling for instance to reach stopped state.")
                   while instanceDict[instance] != 'stopped':
                       poll = ec2.get_waiter('instance_stopped')
                       poll.wait(
                           InstanceIds=[instance]
                       )
                   ec2.start_instances(
                       InstanceIds=[instance]
                   )
               else:
                 pass
       nextStep: waitForPrimaryRunningInstances
   ```

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

   ```
   {
            "name":"verifyPrimaryInstancesRunning",
            "action":"aws:executeScript",
            "timeoutSeconds":600,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"verifyInstancesRunning",
               "InputPayload":{
                  "targetInstances":"{{getPrimaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"waitForPrimaryRunningInstances"
         },
   ```

------

1. Emily verifica che tutte le istanze associate al tag specificato nel parametro `PrimaryPatchGroupTag` siano stati avviati o già in uno stato `running`. Quindi utilizza un altro script per verificare che tutte le istanze, incluse quelle avviate nell'operazione precedente, abbiano raggiunto lo stato `running`.

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

   ```
   - name: waitForPrimaryRunningInstances
       action: 'aws:executeScript'
       timeoutSeconds: 300
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: waitForRunningInstances
         InputPayload:
           targetInstances: '{{getPrimaryInstanceState.originalInstanceStates}}'
         Script: |-
           def waitForRunningInstances(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
                 poll = ec2.get_waiter('instance_running')
                 poll.wait(
                     InstanceIds=[instance]
                 )
       nextStep: returnPrimaryTagKey
   ```

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

   ```
   {
            "name":"waitForPrimaryRunningInstances",
            "action":"aws:executeScript",
            "timeoutSeconds":300,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"waitForRunningInstances",
               "InputPayload":{
                  "targetInstances":"{{getPrimaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"returnPrimaryTagKey"
         },
   ```

------

1. Emily usa altri due script per restituire valori singoli della chiave `String` e del valore del tag specificato nel parametro `PrimaryPatchGroupTag`. I valori restituiti da queste operazioni le permettono di fornire i valori direttamente al parametro `Targets` per il documento `AWS-RunPatchBaseline`. L'automazione procede quindi con l'applicazione di patch all'istanza con il documento `AWS-RunPatchBaseline` tramite l'operazione `aws:runCommand`.

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

   ```
   - name: returnPrimaryTagKey
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnTagValues
         InputPayload:
           primaryTag: '{{PrimaryPatchGroupTag}}'
         Script: |-
           def returnTagValues(events,context):
             tag = events['primaryTag']
             tagKey = list(tag)[0]
             stringKey = "tag:" + tagKey
             return {'tagKey' : stringKey}
       outputs:
         - Name: Payload
           Selector: $.Payload
           Type: StringMap
         - Name: primaryPatchGroupKey
           Selector: $.Payload.tagKey
           Type: String
       nextStep: returnPrimaryTagValue
     - name: returnPrimaryTagValue
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnTagValues
         InputPayload:
           primaryTag: '{{PrimaryPatchGroupTag}}'
         Script: |-
           def returnTagValues(events,context):
             tag = events['primaryTag']
             tagKey = list(tag)[0]
             tagValue = tag[tagKey]
             return {'tagValue' : tagValue}
       outputs:
         - Name: Payload
           Selector: $.Payload
           Type: StringMap
         - Name: primaryPatchGroupValue
           Selector: $.Payload.tagValue
           Type: String
       nextStep: patchPrimaryInstances
     - name: patchPrimaryInstances
       action: 'aws:runCommand'
       onFailure: Abort
       timeoutSeconds: 7200
       inputs:
         DocumentName: AWS-RunPatchBaseline
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
         Targets:
           - Key: '{{returnPrimaryTagKey.primaryPatchGroupKey}}'
             Values:
               - '{{returnPrimaryTagValue.primaryPatchGroupValue}}'
         MaxConcurrency: 10%
         MaxErrors: 10%
       nextStep: returnPrimaryToOriginalState
   ```

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

   ```
   {
            "name":"returnPrimaryTagKey",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnTagValues",
               "InputPayload":{
                  "primaryTag":"{{PrimaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"Payload",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               },
               {
                  "Name":"primaryPatchGroupKey",
                  "Selector":"$.Payload.tagKey",
                  "Type":"String"
               }
            ],
            "nextStep":"returnPrimaryTagValue"
         },
         {
            "name":"returnPrimaryTagValue",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnTagValues",
               "InputPayload":{
                  "primaryTag":"{{PrimaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"Payload",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               },
               {
                  "Name":"primaryPatchGroupValue",
                  "Selector":"$.Payload.tagValue",
                  "Type":"String"
               }
            ],
            "nextStep":"patchPrimaryInstances"
         },
         {
            "name":"patchPrimaryInstances",
            "action":"aws:runCommand",
            "onFailure":"Abort",
            "timeoutSeconds":7200,
            "inputs":{
               "DocumentName":"AWS-RunPatchBaseline",
               "Parameters":{
                  "SnapshotId":"{{SnapshotId}}",
                  "RebootOption":"{{RebootOption}}",
                  "Operation":"{{Operation}}"
               },
               "Targets":[
                  {
                     "Key":"{{returnPrimaryTagKey.primaryPatchGroupKey}}",
                     "Values":[
                        "{{returnPrimaryTagValue.primaryPatchGroupValue}}"
                     ]
                  }
               ],
               "MaxConcurrency":"10%",
               "MaxErrors":"10%"
            },
            "nextStep":"returnPrimaryToOriginalState"
         },
   ```

------

1. Al termine dell'operazione di applicazione delle patch, Emily desidera che l'automazione restituisca le istanze di destinazione associate al tag specificato nel parametro `PrimaryPatchGroupTag` allo stesso stato in cui si trovavano prima dell'avvio dell'automazione. Lo fa utilizzando nuovamente l'output della prima operazione in uno script. In base allo stato originale dell'istanza di destinazione, se l'istanza si trovava in precedenza in uno stato diverso da `running`, l'istanza viene arrestata. Altrimenti, se lo stato dell'istanza è `running`, lo script continua a scorrere le istanze rimanenti.

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

   ```
   - name: returnPrimaryToOriginalState
       action: 'aws:executeScript'
       timeoutSeconds: 600
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnToOriginalState
         InputPayload:
           targetInstances: '{{getPrimaryInstanceState.originalInstanceStates}}'
         Script: |-
           def returnToOriginalState(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
               if instanceDict[instance] == 'stopped' or instanceDict[instance] == 'stopping':
                   ec2.stop_instances(
                       InstanceIds=[instance]
                       )
               else:
                 pass
       nextStep: getSecondaryInstanceState
   ```

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

   ```
   {
            "name":"returnPrimaryToOriginalState",
            "action":"aws:executeScript",
            "timeoutSeconds":600,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnToOriginalState",
               "InputPayload":{
                  "targetInstances":"{{getPrimaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"getSecondaryInstanceState"
         },
   ```

------

1. L'operazione di applicazione delle patch viene completata per le istanze associate al tag specificato nel parametro `PrimaryPatchGroupTag`. Ora Emily duplica tutte le operazioni precedenti nel contenuto del runbook per definire come destinazione le istanze associate al tag specificato nel parametro `SecondaryPatchGroupTag`.

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

   ```
   - name: getSecondaryInstanceState
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: getInstanceStates
         InputPayload:
           secondaryTag: '{{SecondaryPatchGroupTag}}'
         Script: |-
           def getInstanceStates(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             tag = events['secondaryTag']
             tagKey, tagValue = list(tag.items())[0]
             instanceQuery = ec2.describe_instances(
             Filters=[
                 {
                     "Name": "tag:" + tagKey,
                     "Values": [tagValue]
                 }]
             )
             if not instanceQuery['Reservations']:
                 noInstancesForTagString = "No instances found for specified tag."
                 return({ 'noInstancesFound' : noInstancesForTagString })
             else:
                 queryResponse = instanceQuery['Reservations']
                 originalInstanceStates = {}
                 for results in queryResponse:
                     instanceSet = results['Instances']
                     for instance in instanceSet:
                         instanceId = instance['InstanceId']
                         originalInstanceStates[instanceId] = instance['State']['Name']
                 return originalInstanceStates
       outputs:
         - Name: originalInstanceStates
           Selector: $.Payload
           Type: StringMap
       nextStep: verifySecondaryInstancesRunning
     - name: verifySecondaryInstancesRunning
       action: 'aws:executeScript'
       timeoutSeconds: 600
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: verifyInstancesRunning
         InputPayload:
           targetInstances: '{{getSecondaryInstanceState.originalInstanceStates}}'
         Script: |-
           def verifyInstancesRunning(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
               if instanceDict[instance] == 'stopped':
                   print("The target instance " + instance + " is stopped. The instance will now be started.")
                   ec2.start_instances(
                       InstanceIds=[instance]
                       )
               elif instanceDict[instance] == 'stopping':
                   print("The target instance " + instance + " is stopping. Polling for instance to reach stopped state.")
                   while instanceDict[instance] != 'stopped':
                       poll = ec2.get_waiter('instance_stopped')
                       poll.wait(
                           InstanceIds=[instance]
                       )
                   ec2.start_instances(
                       InstanceIds=[instance]
                   )
               else:
                 pass
       nextStep: waitForSecondaryRunningInstances
     - name: waitForSecondaryRunningInstances
       action: 'aws:executeScript'
       timeoutSeconds: 300
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: waitForRunningInstances
         InputPayload:
           targetInstances: '{{getSecondaryInstanceState.originalInstanceStates}}'
         Script: |-
           def waitForRunningInstances(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
                 poll = ec2.get_waiter('instance_running')
                 poll.wait(
                     InstanceIds=[instance]
                 )
       nextStep: returnSecondaryTagKey
     - name: returnSecondaryTagKey
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnTagValues
         InputPayload:
           secondaryTag: '{{SecondaryPatchGroupTag}}'
         Script: |-
           def returnTagValues(events,context):
             tag = events['secondaryTag']
             tagKey = list(tag)[0]
             stringKey = "tag:" + tagKey
             return {'tagKey' : stringKey}
       outputs:
         - Name: Payload
           Selector: $.Payload
           Type: StringMap
         - Name: secondaryPatchGroupKey
           Selector: $.Payload.tagKey
           Type: String
       nextStep: returnSecondaryTagValue
     - name: returnSecondaryTagValue
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnTagValues
         InputPayload:
           secondaryTag: '{{SecondaryPatchGroupTag}}'
         Script: |-
           def returnTagValues(events,context):
             tag = events['secondaryTag']
             tagKey = list(tag)[0]
             tagValue = tag[tagKey]
             return {'tagValue' : tagValue}
       outputs:
         - Name: Payload
           Selector: $.Payload
           Type: StringMap
         - Name: secondaryPatchGroupValue
           Selector: $.Payload.tagValue
           Type: String
       nextStep: patchSecondaryInstances
     - name: patchSecondaryInstances
       action: 'aws:runCommand'
       onFailure: Abort
       timeoutSeconds: 7200
       inputs:
         DocumentName: AWS-RunPatchBaseline
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
         Targets:
           - Key: '{{returnSecondaryTagKey.secondaryPatchGroupKey}}'
             Values:
             - '{{returnSecondaryTagValue.secondaryPatchGroupValue}}'
         MaxConcurrency: 10%
         MaxErrors: 10%
       nextStep: returnSecondaryToOriginalState
     - name: returnSecondaryToOriginalState
       action: 'aws:executeScript'
       timeoutSeconds: 600
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnToOriginalState
         InputPayload:
           targetInstances: '{{getSecondaryInstanceState.originalInstanceStates}}'
         Script: |-
           def returnToOriginalState(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
               if instanceDict[instance] == 'stopped' or instanceDict[instance] == 'stopping':
                   ec2.stop_instances(
                       InstanceIds=[instance]
                       )
               else:
                 pass
   ```

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

   ```
   {
            "name":"getSecondaryInstanceState",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"getInstanceStates",
               "InputPayload":{
                  "secondaryTag":"{{SecondaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"originalInstanceStates",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               }
            ],
            "nextStep":"verifySecondaryInstancesRunning"
         },
         {
            "name":"verifySecondaryInstancesRunning",
            "action":"aws:executeScript",
            "timeoutSeconds":600,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"verifyInstancesRunning",
               "InputPayload":{
                  "targetInstances":"{{getSecondaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"waitForSecondaryRunningInstances"
         },
         {
            "name":"waitForSecondaryRunningInstances",
            "action":"aws:executeScript",
            "timeoutSeconds":300,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"waitForRunningInstances",
               "InputPayload":{
                  "targetInstances":"{{getSecondaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"returnSecondaryTagKey"
         },
         {
            "name":"returnSecondaryTagKey",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnTagValues",
               "InputPayload":{
                  "secondaryTag":"{{SecondaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"Payload",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               },
               {
                  "Name":"secondaryPatchGroupKey",
                  "Selector":"$.Payload.tagKey",
                  "Type":"String"
               }
            ],
            "nextStep":"returnSecondaryTagValue"
         },
         {
            "name":"returnSecondaryTagValue",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnTagValues",
               "InputPayload":{
                  "secondaryTag":"{{SecondaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"Payload",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               },
               {
                  "Name":"secondaryPatchGroupValue",
                  "Selector":"$.Payload.tagValue",
                  "Type":"String"
               }
            ],
            "nextStep":"patchSecondaryInstances"
         },
         {
            "name":"patchSecondaryInstances",
            "action":"aws:runCommand",
            "onFailure":"Abort",
            "timeoutSeconds":7200,
            "inputs":{
               "DocumentName":"AWS-RunPatchBaseline",
               "Parameters":{
                  "SnapshotId":"{{SnapshotId}}",
                  "RebootOption":"{{RebootOption}}",
                  "Operation":"{{Operation}}"
               },
               "Targets":[
                  {
                     "Key":"{{returnSecondaryTagKey.secondaryPatchGroupKey}}",
                     "Values":[
                        "{{returnSecondaryTagValue.secondaryPatchGroupValue}}"
                     ]
                  }
               ],
               "MaxConcurrency":"10%",
               "MaxErrors":"10%"
            },
            "nextStep":"returnSecondaryToOriginalState"
         },
         {
            "name":"returnSecondaryToOriginalState",
            "action":"aws:executeScript",
            "timeoutSeconds":600,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnToOriginalState",
               "InputPayload":{
                  "targetInstances":"{{getSecondaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            }
         }
      ]
   }
   ```

------

1. Emily esamina il contenuto del runbook completato con script e lo crea nella stessa istanza e in quella di destinazione. Account AWS Regione AWS Ora è pronta a testare il runbook per assicurarsi che l'automazione funzioni come desiderato prima di implementarla nell'ambiente di produzione. Di seguito è riportato il contenuto completato del runbook con script.

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

   ```
   description: An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.
   schemaVersion: '0.3'
   assumeRole: '{{AutomationAssumeRole}}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: '(Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook.'
     PrimaryPatchGroupTag:
       type: StringMap
       description: '(Required) The tag for the primary group of instances you want to patch. Specify a key-value pair. Example: {"key" : "value"}'
     SecondaryPatchGroupTag:
       type: StringMap
       description: '(Required) The tag for the secondary group of instances you want to patch. Specify a key-value pair. Example: {"key" : "value"}'
     SnapshotId:
       type: String
       description: '(Optional) The snapshot ID to use to retrieve a patch baseline snapshot.'
       default: ''
     RebootOption:
       type: String
       description: '(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.'
       allowedValues:
         - NoReboot
         - RebootIfNeeded
       default: RebootIfNeeded
     Operation:
       type: String
       description: '(Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.'
       allowedValues:
         - Install
         - Scan
       default: Install
   mainSteps:
     - name: getPrimaryInstanceState
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: getInstanceStates
         InputPayload:
           primaryTag: '{{PrimaryPatchGroupTag}}'
         Script: |-
           def getInstanceStates(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             tag = events['primaryTag']
             tagKey, tagValue = list(tag.items())[0]
             instanceQuery = ec2.describe_instances(
             Filters=[
                 {
                     "Name": "tag:" + tagKey,
                     "Values": [tagValue]
                 }]
             )
             if not instanceQuery['Reservations']:
                 noInstancesForTagString = "No instances found for specified tag."
                 return({ 'noInstancesFound' : noInstancesForTagString })
             else:
                 queryResponse = instanceQuery['Reservations']
                 originalInstanceStates = {}
                 for results in queryResponse:
                     instanceSet = results['Instances']
                     for instance in instanceSet:
                         instanceId = instance['InstanceId']
                         originalInstanceStates[instanceId] = instance['State']['Name']
                 return originalInstanceStates
       outputs:
         - Name: originalInstanceStates
           Selector: $.Payload
           Type: StringMap
       nextStep: verifyPrimaryInstancesRunning
     - name: verifyPrimaryInstancesRunning
       action: 'aws:executeScript'
       timeoutSeconds: 600
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: verifyInstancesRunning
         InputPayload:
           targetInstances: '{{getPrimaryInstanceState.originalInstanceStates}}'
         Script: |-
           def verifyInstancesRunning(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
               if instanceDict[instance] == 'stopped':
                   print("The target instance " + instance + " is stopped. The instance will now be started.")
                   ec2.start_instances(
                       InstanceIds=[instance]
                       )
               elif instanceDict[instance] == 'stopping':
                   print("The target instance " + instance + " is stopping. Polling for instance to reach stopped state.")
                   while instanceDict[instance] != 'stopped':
                       poll = ec2.get_waiter('instance_stopped')
                       poll.wait(
                           InstanceIds=[instance]
                       )
                   ec2.start_instances(
                       InstanceIds=[instance]
                   )
               else:
                 pass
       nextStep: waitForPrimaryRunningInstances
     - name: waitForPrimaryRunningInstances
       action: 'aws:executeScript'
       timeoutSeconds: 300
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: waitForRunningInstances
         InputPayload:
           targetInstances: '{{getPrimaryInstanceState.originalInstanceStates}}'
         Script: |-
           def waitForRunningInstances(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
                 poll = ec2.get_waiter('instance_running')
                 poll.wait(
                     InstanceIds=[instance]
                 )
       nextStep: returnPrimaryTagKey
     - name: returnPrimaryTagKey
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnTagValues
         InputPayload:
           primaryTag: '{{PrimaryPatchGroupTag}}'
         Script: |-
           def returnTagValues(events,context):
             tag = events['primaryTag']
             tagKey = list(tag)[0]
             stringKey = "tag:" + tagKey
             return {'tagKey' : stringKey}
       outputs:
         - Name: Payload
           Selector: $.Payload
           Type: StringMap
         - Name: primaryPatchGroupKey
           Selector: $.Payload.tagKey
           Type: String
       nextStep: returnPrimaryTagValue
     - name: returnPrimaryTagValue
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnTagValues
         InputPayload:
           primaryTag: '{{PrimaryPatchGroupTag}}'
         Script: |-
           def returnTagValues(events,context):
             tag = events['primaryTag']
             tagKey = list(tag)[0]
             tagValue = tag[tagKey]
             return {'tagValue' : tagValue}
       outputs:
         - Name: Payload
           Selector: $.Payload
           Type: StringMap
         - Name: primaryPatchGroupValue
           Selector: $.Payload.tagValue
           Type: String
       nextStep: patchPrimaryInstances
     - name: patchPrimaryInstances
       action: 'aws:runCommand'
       onFailure: Abort
       timeoutSeconds: 7200
       inputs:
         DocumentName: AWS-RunPatchBaseline
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
         Targets:
           - Key: '{{returnPrimaryTagKey.primaryPatchGroupKey}}'
             Values:
               - '{{returnPrimaryTagValue.primaryPatchGroupValue}}'
         MaxConcurrency: 10%
         MaxErrors: 10%
       nextStep: returnPrimaryToOriginalState
     - name: returnPrimaryToOriginalState
       action: 'aws:executeScript'
       timeoutSeconds: 600
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnToOriginalState
         InputPayload:
           targetInstances: '{{getPrimaryInstanceState.originalInstanceStates}}'
         Script: |-
           def returnToOriginalState(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
               if instanceDict[instance] == 'stopped' or instanceDict[instance] == 'stopping':
                   ec2.stop_instances(
                       InstanceIds=[instance]
                       )
               else:
                 pass
       nextStep: getSecondaryInstanceState
     - name: getSecondaryInstanceState
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: getInstanceStates
         InputPayload:
           secondaryTag: '{{SecondaryPatchGroupTag}}'
         Script: |-
           def getInstanceStates(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             tag = events['secondaryTag']
             tagKey, tagValue = list(tag.items())[0]
             instanceQuery = ec2.describe_instances(
             Filters=[
                 {
                     "Name": "tag:" + tagKey,
                     "Values": [tagValue]
                 }]
             )
             if not instanceQuery['Reservations']:
                 noInstancesForTagString = "No instances found for specified tag."
                 return({ 'noInstancesFound' : noInstancesForTagString })
             else:
                 queryResponse = instanceQuery['Reservations']
                 originalInstanceStates = {}
                 for results in queryResponse:
                     instanceSet = results['Instances']
                     for instance in instanceSet:
                         instanceId = instance['InstanceId']
                         originalInstanceStates[instanceId] = instance['State']['Name']
                 return originalInstanceStates
       outputs:
         - Name: originalInstanceStates
           Selector: $.Payload
           Type: StringMap
       nextStep: verifySecondaryInstancesRunning
     - name: verifySecondaryInstancesRunning
       action: 'aws:executeScript'
       timeoutSeconds: 600
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: verifyInstancesRunning
         InputPayload:
           targetInstances: '{{getSecondaryInstanceState.originalInstanceStates}}'
         Script: |-
           def verifyInstancesRunning(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
               if instanceDict[instance] == 'stopped':
                   print("The target instance " + instance + " is stopped. The instance will now be started.")
                   ec2.start_instances(
                       InstanceIds=[instance]
                       )
               elif instanceDict[instance] == 'stopping':
                   print("The target instance " + instance + " is stopping. Polling for instance to reach stopped state.")
                   while instanceDict[instance] != 'stopped':
                       poll = ec2.get_waiter('instance_stopped')
                       poll.wait(
                           InstanceIds=[instance]
                       )
                   ec2.start_instances(
                       InstanceIds=[instance]
                   )
               else:
                 pass
       nextStep: waitForSecondaryRunningInstances
     - name: waitForSecondaryRunningInstances
       action: 'aws:executeScript'
       timeoutSeconds: 300
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: waitForRunningInstances
         InputPayload:
           targetInstances: '{{getSecondaryInstanceState.originalInstanceStates}}'
         Script: |-
           def waitForRunningInstances(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
                 poll = ec2.get_waiter('instance_running')
                 poll.wait(
                     InstanceIds=[instance]
                 )
       nextStep: returnSecondaryTagKey
     - name: returnSecondaryTagKey
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnTagValues
         InputPayload:
           secondaryTag: '{{SecondaryPatchGroupTag}}'
         Script: |-
           def returnTagValues(events,context):
             tag = events['secondaryTag']
             tagKey = list(tag)[0]
             stringKey = "tag:" + tagKey
             return {'tagKey' : stringKey}
       outputs:
         - Name: Payload
           Selector: $.Payload
           Type: StringMap
         - Name: secondaryPatchGroupKey
           Selector: $.Payload.tagKey
           Type: String
       nextStep: returnSecondaryTagValue
     - name: returnSecondaryTagValue
       action: 'aws:executeScript'
       timeoutSeconds: 120
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnTagValues
         InputPayload:
           secondaryTag: '{{SecondaryPatchGroupTag}}'
         Script: |-
           def returnTagValues(events,context):
             tag = events['secondaryTag']
             tagKey = list(tag)[0]
             tagValue = tag[tagKey]
             return {'tagValue' : tagValue}
       outputs:
         - Name: Payload
           Selector: $.Payload
           Type: StringMap
         - Name: secondaryPatchGroupValue
           Selector: $.Payload.tagValue
           Type: String
       nextStep: patchSecondaryInstances
     - name: patchSecondaryInstances
       action: 'aws:runCommand'
       onFailure: Abort
       timeoutSeconds: 7200
       inputs:
         DocumentName: AWS-RunPatchBaseline
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
         Targets:
           - Key: '{{returnSecondaryTagKey.secondaryPatchGroupKey}}'
             Values:
             - '{{returnSecondaryTagValue.secondaryPatchGroupValue}}'
         MaxConcurrency: 10%
         MaxErrors: 10%
       nextStep: returnSecondaryToOriginalState
     - name: returnSecondaryToOriginalState
       action: 'aws:executeScript'
       timeoutSeconds: 600
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: returnToOriginalState
         InputPayload:
           targetInstances: '{{getSecondaryInstanceState.originalInstanceStates}}'
         Script: |-
           def returnToOriginalState(events,context):
             import boto3
   
             #Initialize client
             ec2 = boto3.client('ec2')
             instanceDict = events['targetInstances']
             for instance in instanceDict:
               if instanceDict[instance] == 'stopped' or instanceDict[instance] == 'stopping':
                   ec2.stop_instances(
                       InstanceIds=[instance]
                       )
               else:
                 pass
   ```

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

   ```
   {
      "description":"An example of an Automation runbook that patches groups of Amazon EC2 instances in stages.",
      "schemaVersion":"0.3",
      "assumeRole":"{{AutomationAssumeRole}}",
      "parameters":{
         "AutomationAssumeRole":{
            "type":"String",
            "description":"(Required) The Amazon Resource Name (ARN) of the IAM role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to operate this runbook."
         },
         "PrimaryPatchGroupTag":{
            "type":"StringMap",
            "description":"(Required) The tag for the primary group of instances you want to patch. Specify a key-value pair. Example: {\"key\" : \"value\"}"
         },
         "SecondaryPatchGroupTag":{
            "type":"StringMap",
            "description":"(Required) The tag for the secondary group of instances you want to patch. Specify a key-value pair. Example: {\"key\" : \"value\"}"
         },
         "SnapshotId":{
            "type":"String",
            "description":"(Optional) The snapshot ID to use to retrieve a patch baseline snapshot.",
            "default":""
         },
         "RebootOption":{
            "type":"String",
            "description":"(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.",
            "allowedValues":[
               "NoReboot",
               "RebootIfNeeded"
            ],
            "default":"RebootIfNeeded"
         },
         "Operation":{
            "type":"String",
            "description":"(Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.",
            "allowedValues":[
               "Install",
               "Scan"
            ],
            "default":"Install"
         }
      },
      "mainSteps":[
         {
            "name":"getPrimaryInstanceState",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"getInstanceStates",
               "InputPayload":{
                  "primaryTag":"{{PrimaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"originalInstanceStates",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               }
            ],
            "nextStep":"verifyPrimaryInstancesRunning"
         },
         {
            "name":"verifyPrimaryInstancesRunning",
            "action":"aws:executeScript",
            "timeoutSeconds":600,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"verifyInstancesRunning",
               "InputPayload":{
                  "targetInstances":"{{getPrimaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"waitForPrimaryRunningInstances"
         },
         {
            "name":"waitForPrimaryRunningInstances",
            "action":"aws:executeScript",
            "timeoutSeconds":300,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"waitForRunningInstances",
               "InputPayload":{
                  "targetInstances":"{{getPrimaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"returnPrimaryTagKey"
         },
         {
            "name":"returnPrimaryTagKey",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnTagValues",
               "InputPayload":{
                  "primaryTag":"{{PrimaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"Payload",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               },
               {
                  "Name":"primaryPatchGroupKey",
                  "Selector":"$.Payload.tagKey",
                  "Type":"String"
               }
            ],
            "nextStep":"returnPrimaryTagValue"
         },
         {
            "name":"returnPrimaryTagValue",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnTagValues",
               "InputPayload":{
                  "primaryTag":"{{PrimaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"Payload",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               },
               {
                  "Name":"primaryPatchGroupValue",
                  "Selector":"$.Payload.tagValue",
                  "Type":"String"
               }
            ],
            "nextStep":"patchPrimaryInstances"
         },
         {
            "name":"patchPrimaryInstances",
            "action":"aws:runCommand",
            "onFailure":"Abort",
            "timeoutSeconds":7200,
            "inputs":{
               "DocumentName":"AWS-RunPatchBaseline",
               "Parameters":{
                  "SnapshotId":"{{SnapshotId}}",
                  "RebootOption":"{{RebootOption}}",
                  "Operation":"{{Operation}}"
               },
               "Targets":[
                  {
                     "Key":"{{returnPrimaryTagKey.primaryPatchGroupKey}}",
                     "Values":[
                        "{{returnPrimaryTagValue.primaryPatchGroupValue}}"
                     ]
                  }
               ],
               "MaxConcurrency":"10%",
               "MaxErrors":"10%"
            },
            "nextStep":"returnPrimaryToOriginalState"
         },
         {
            "name":"returnPrimaryToOriginalState",
            "action":"aws:executeScript",
            "timeoutSeconds":600,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnToOriginalState",
               "InputPayload":{
                  "targetInstances":"{{getPrimaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"getSecondaryInstanceState"
         },
         {
            "name":"getSecondaryInstanceState",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"getInstanceStates",
               "InputPayload":{
                  "secondaryTag":"{{SecondaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"originalInstanceStates",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               }
            ],
            "nextStep":"verifySecondaryInstancesRunning"
         },
         {
            "name":"verifySecondaryInstancesRunning",
            "action":"aws:executeScript",
            "timeoutSeconds":600,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"verifyInstancesRunning",
               "InputPayload":{
                  "targetInstances":"{{getSecondaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"waitForSecondaryRunningInstances"
         },
         {
            "name":"waitForSecondaryRunningInstances",
            "action":"aws:executeScript",
            "timeoutSeconds":300,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"waitForRunningInstances",
               "InputPayload":{
                  "targetInstances":"{{getSecondaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            },
            "nextStep":"returnSecondaryTagKey"
         },
         {
            "name":"returnSecondaryTagKey",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnTagValues",
               "InputPayload":{
                  "secondaryTag":"{{SecondaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"Payload",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               },
               {
                  "Name":"secondaryPatchGroupKey",
                  "Selector":"$.Payload.tagKey",
                  "Type":"String"
               }
            ],
            "nextStep":"returnSecondaryTagValue"
         },
         {
            "name":"returnSecondaryTagValue",
            "action":"aws:executeScript",
            "timeoutSeconds":120,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnTagValues",
               "InputPayload":{
                  "secondaryTag":"{{SecondaryPatchGroupTag}}"
               },
               "Script":"..."
            },
            "outputs":[
               {
                  "Name":"Payload",
                  "Selector":"$.Payload",
                  "Type":"StringMap"
               },
               {
                  "Name":"secondaryPatchGroupValue",
                  "Selector":"$.Payload.tagValue",
                  "Type":"String"
               }
            ],
            "nextStep":"patchSecondaryInstances"
         },
         {
            "name":"patchSecondaryInstances",
            "action":"aws:runCommand",
            "onFailure":"Abort",
            "timeoutSeconds":7200,
            "inputs":{
               "DocumentName":"AWS-RunPatchBaseline",
               "Parameters":{
                  "SnapshotId":"{{SnapshotId}}",
                  "RebootOption":"{{RebootOption}}",
                  "Operation":"{{Operation}}"
               },
               "Targets":[
                  {
                     "Key":"{{returnSecondaryTagKey.secondaryPatchGroupKey}}",
                     "Values":[
                        "{{returnSecondaryTagValue.secondaryPatchGroupValue}}"
                     ]
                  }
               ],
               "MaxConcurrency":"10%",
               "MaxErrors":"10%"
            },
            "nextStep":"returnSecondaryToOriginalState"
         },
         {
            "name":"returnSecondaryToOriginalState",
            "action":"aws:executeScript",
            "timeoutSeconds":600,
            "onFailure":"Abort",
            "inputs":{
               "Runtime":"python3.11",
               "Handler":"returnToOriginalState",
               "InputPayload":{
                  "targetInstances":"{{getSecondaryInstanceState.originalInstanceStates}}"
               },
               "Script":"..."
            }
         }
      ]
   }
   ```

------

Per ulteriori informazioni sulle operazioni di automazione utilizzate in questo esempio, consulta [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md).

# Ulteriori esempi di runbook
<a name="automation-document-examples"></a>

Il seguente runbook di esempio mostra come utilizzare le azioni di AWS Systems Manager automazione per automatizzare le attività comuni di distribuzione, risoluzione dei problemi e manutenzione.

**Nota**  
Gli esempi di runbook in questa sezione vengono forniti per illustrare come creare runbook personalizzati per supportare le specifiche esigenze operative. Questi runbook non sono destinati all'uso in ambienti di produzione così come sono. Tuttavia, è possibile personalizzarli per uso personale.

**Topics**
+ [Implementazione di architettura VPC e controller di dominio Microsoft Active Directory](automation-document-architecture-deployment-example.md)
+ [Ripristino di un volume radice dall'ultimo snapshot](automation-document-instance-recovery-example.md)
+ [Creazione di un'AMI e una copia tra regioni](automation-document-backup-maintenance-example.md)

# Implementazione di architettura VPC e controller di dominio Microsoft Active Directory
<a name="automation-document-architecture-deployment-example"></a>

Per aumentare l'efficienza e standardizzare i processi comuni, è possibile scegliere di automatizzare le implementazioni. Ciò è utile se si distribuisce regolarmente la stessa architettura su più account e Regioni AWS. L'automazione delle implementazioni dell'architettura può anche ridurre il rischio di errori umani che possono verificarsi durante l'implementazione manuale dell'architettura. AWS Systems Manager Le azioni di automazione possono aiutarti a raggiungere questo obiettivo. L’automazione è uno strumento di AWS Systems Manager.

Il AWS Systems Manager runbook di esempio seguente esegue queste azioni:
+ Recupera l'Amazon Machine Image (AMI) per Windows Server 2016 più recente mediante Parameter Store di Systems Manager per l'utilizzo durante l'avvio delle istanze di EC2, che verranno configurate come controller di dominio. Parameter Store è uno strumento di AWS Systems Manager.
+ Utilizza l'azione di `aws:executeAwsApi` automazione per richiamare diverse operazioni AWS API per creare l'architettura VPC. Le istanze del controller di dominio vengono avviate in sottoreti private e si connettono a Internet tramite un gateway NAT. Ciò consente allo strumento SSM Agent sulle istanze di accedere agli endpoint necessari di Systems Manager.
+ Utilizza l'azione di `aws:waitForAwsResourceProperty` automazione per confermare che le istanze avviate dall'azione precedente sono `Online` destinate. AWS Systems Manager
+ Utilizza l'operazione di automazione `aws:runCommand` per configurare le istanze avviate come controller di dominio Microsoft Active Directory.

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

```
    ---
    description: Custom Automation Deployment Example
    schemaVersion: '0.3'
    parameters:
      AutomationAssumeRole:
        type: String
        default: ''
        description: >-
          (Optional) The ARN of the role that allows Automation to perform the
          actions on your behalf. If no role is specified, Systems Manager
          Automation uses your IAM permissions to run this runbook.
    mainSteps:
      - name: getLatestWindowsAmi
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ssm
          Api: GetParameter
          Name: >-
            /aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base
        outputs:
          - Name: amiId
            Selector: $.Parameter.Value
            Type: String
        nextStep: createSSMInstanceRole
      - name: createSSMInstanceRole
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: iam
          Api: CreateRole
          AssumeRolePolicyDocument: >-
            {"Version": "2012-10-17",		 	 	 "Statement":[{"Effect":"Allow","Principal":{"Service":["ec2.amazonaws.com"]},"Action":["sts:AssumeRole"]}]}
          RoleName: sampleSSMInstanceRole
        nextStep: attachManagedSSMPolicy
      - name: attachManagedSSMPolicy
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: iam
          Api: AttachRolePolicy
          PolicyArn: 'arn:aws:iam::aws:policy/service-role/AmazonSSMManagedInstanceCore'
          RoleName: sampleSSMInstanceRole
        nextStep: createSSMInstanceProfile
      - name: createSSMInstanceProfile
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: iam
          Api: CreateInstanceProfile
          InstanceProfileName: sampleSSMInstanceRole
        outputs:
          - Name: instanceProfileArn
            Selector: $.InstanceProfile.Arn
            Type: String
        nextStep: addSSMInstanceRoleToProfile
      - name: addSSMInstanceRoleToProfile
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: iam
          Api: AddRoleToInstanceProfile
          InstanceProfileName: sampleSSMInstanceRole
          RoleName: sampleSSMInstanceRole
        nextStep: createVpc
      - name: createVpc
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateVpc
          CidrBlock: 10.0.100.0/22
        outputs:
          - Name: vpcId
            Selector: $.Vpc.VpcId
            Type: String
        nextStep: getMainRtb
      - name: getMainRtb
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: DescribeRouteTables
          Filters:
            - Name: vpc-id
              Values:
                - '{{ createVpc.vpcId }}'
        outputs:
          - Name: mainRtbId
            Selector: '$.RouteTables[0].RouteTableId'
            Type: String
        nextStep: verifyMainRtb
      - name: verifyMainRtb
        action: aws:assertAwsResourceProperty
        onFailure: Abort
        inputs:
          Service: ec2
          Api: DescribeRouteTables
          RouteTableIds:
            - '{{ getMainRtb.mainRtbId }}'
          PropertySelector: '$.RouteTables[0].Associations[0].Main'
          DesiredValues:
            - 'True'
        nextStep: createPubSubnet
      - name: createPubSubnet
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateSubnet
          CidrBlock: 10.0.103.0/24
          AvailabilityZone: us-west-2c
          VpcId: '{{ createVpc.vpcId }}'
        outputs:
          - Name: pubSubnetId
            Selector: $.Subnet.SubnetId
            Type: String
        nextStep: createPubRtb
      - name: createPubRtb
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateRouteTable
          VpcId: '{{ createVpc.vpcId }}'
        outputs:
          - Name: pubRtbId
            Selector: $.RouteTable.RouteTableId
            Type: String
        nextStep: createIgw
      - name: createIgw
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateInternetGateway
        outputs:
          - Name: igwId
            Selector: $.InternetGateway.InternetGatewayId
            Type: String
        nextStep: attachIgw
      - name: attachIgw
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: AttachInternetGateway
          InternetGatewayId: '{{ createIgw.igwId }}'
          VpcId: '{{ createVpc.vpcId }}'
        nextStep: allocateEip
      - name: allocateEip
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: AllocateAddress
          Domain: vpc
        outputs:
          - Name: eipAllocationId
            Selector: $.AllocationId
            Type: String
        nextStep: createNatGw
      - name: createNatGw
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateNatGateway
          AllocationId: '{{ allocateEip.eipAllocationId }}'
          SubnetId: '{{ createPubSubnet.pubSubnetId }}'
        outputs:
          - Name: natGwId
            Selector: $.NatGateway.NatGatewayId
            Type: String
        nextStep: verifyNatGwAvailable
      - name: verifyNatGwAvailable
        action: aws:waitForAwsResourceProperty
        timeoutSeconds: 150
        inputs:
          Service: ec2
          Api: DescribeNatGateways
          NatGatewayIds:
            - '{{ createNatGw.natGwId }}'
          PropertySelector: '$.NatGateways[0].State'
          DesiredValues:
            - available
        nextStep: createNatRoute
      - name: createNatRoute
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateRoute
          DestinationCidrBlock: 0.0.0.0/0
          NatGatewayId: '{{ createNatGw.natGwId }}'
          RouteTableId: '{{ getMainRtb.mainRtbId }}'
        nextStep: createPubRoute
      - name: createPubRoute
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateRoute
          DestinationCidrBlock: 0.0.0.0/0
          GatewayId: '{{ createIgw.igwId }}'
          RouteTableId: '{{ createPubRtb.pubRtbId }}'
        nextStep: setPubSubAssoc
      - name: setPubSubAssoc
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: AssociateRouteTable
          RouteTableId: '{{ createPubRtb.pubRtbId }}'
          SubnetId: '{{ createPubSubnet.pubSubnetId }}'
      - name: createDhcpOptions
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateDhcpOptions
          DhcpConfigurations:
            - Key: domain-name-servers
              Values:
                - '10.0.100.50,10.0.101.50'
            - Key: domain-name
              Values:
                - sample.com
        outputs:
          - Name: dhcpOptionsId
            Selector: $.DhcpOptions.DhcpOptionsId
            Type: String
        nextStep: createDCSubnet1
      - name: createDCSubnet1
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateSubnet
          CidrBlock: 10.0.100.0/24
          AvailabilityZone: us-west-2a
          VpcId: '{{ createVpc.vpcId }}'
        outputs:
          - Name: firstSubnetId
            Selector: $.Subnet.SubnetId
            Type: String
        nextStep: createDCSubnet2
      - name: createDCSubnet2
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateSubnet
          CidrBlock: 10.0.101.0/24
          AvailabilityZone: us-west-2b
          VpcId: '{{ createVpc.vpcId }}'
        outputs:
          - Name: secondSubnetId
            Selector: $.Subnet.SubnetId
            Type: String
        nextStep: createDCSecGroup
      - name: createDCSecGroup
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: CreateSecurityGroup
          GroupName: SampleDCSecGroup
          Description: Security Group for Sample Domain Controllers
          VpcId: '{{ createVpc.vpcId }}'
        outputs:
          - Name: dcSecGroupId
            Selector: $.GroupId
            Type: String
        nextStep: authIngressDCTraffic
      - name: authIngressDCTraffic
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: AuthorizeSecurityGroupIngress
          GroupId: '{{ createDCSecGroup.dcSecGroupId }}'
          IpPermissions:
            - FromPort: -1
              IpProtocol: '-1'
              IpRanges:
                - CidrIp: 0.0.0.0/0
                  Description: Allow all traffic between Domain Controllers
        nextStep: verifyInstanceProfile
      - name: verifyInstanceProfile
        action: aws:waitForAwsResourceProperty
        maxAttempts: 5
        onFailure: Abort
        inputs:
          Service: iam
          Api: ListInstanceProfilesForRole
          RoleName: sampleSSMInstanceRole
          PropertySelector: '$.InstanceProfiles[0].Arn'
          DesiredValues:
            - '{{ createSSMInstanceProfile.instanceProfileArn }}'
        nextStep: iamEventualConsistency
      - name: iamEventualConsistency
        action: aws:sleep
        inputs:
          Duration: PT2M
        nextStep: launchDC1
      - name: launchDC1
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: RunInstances
          BlockDeviceMappings:
            - DeviceName: /dev/sda1
              Ebs:
                DeleteOnTermination: true
                VolumeSize: 50
                VolumeType: gp2
            - DeviceName: xvdf
              Ebs:
                DeleteOnTermination: true
                VolumeSize: 100
                VolumeType: gp2
          IamInstanceProfile:
            Arn: '{{ createSSMInstanceProfile.instanceProfileArn }}'
          ImageId: '{{ getLatestWindowsAmi.amiId }}'
          InstanceType: t2.micro
          MaxCount: 1
          MinCount: 1
          PrivateIpAddress: 10.0.100.50
          SecurityGroupIds:
            - '{{ createDCSecGroup.dcSecGroupId }}'
          SubnetId: '{{ createDCSubnet1.firstSubnetId }}'
          TagSpecifications:
            - ResourceType: instance
              Tags:
                - Key: Name
                  Value: SampleDC1
        outputs:
          - Name: pdcInstanceId
            Selector: '$.Instances[0].InstanceId'
            Type: String
        nextStep: launchDC2
      - name: launchDC2
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: RunInstances
          BlockDeviceMappings:
            - DeviceName: /dev/sda1
              Ebs:
                DeleteOnTermination: true
                VolumeSize: 50
                VolumeType: gp2
            - DeviceName: xvdf
              Ebs:
                DeleteOnTermination: true
                VolumeSize: 100
                VolumeType: gp2
          IamInstanceProfile:
            Arn: '{{ createSSMInstanceProfile.instanceProfileArn }}'
          ImageId: '{{ getLatestWindowsAmi.amiId }}'
          InstanceType: t2.micro
          MaxCount: 1
          MinCount: 1
          PrivateIpAddress: 10.0.101.50
          SecurityGroupIds:
            - '{{ createDCSecGroup.dcSecGroupId }}'
          SubnetId: '{{ createDCSubnet2.secondSubnetId }}'
          TagSpecifications:
            - ResourceType: instance
              Tags:
                - Key: Name
                  Value: SampleDC2
        outputs:
          - Name: adcInstanceId
            Selector: '$.Instances[0].InstanceId'
            Type: String
        nextStep: verifyDCInstanceState
      - name: verifyDCInstanceState
        action: aws:waitForAwsResourceProperty
        inputs:
          Service: ec2
          Api: DescribeInstanceStatus
          IncludeAllInstances: true
          InstanceIds:
            - '{{ launchDC1.pdcInstanceId }}'
            - '{{ launchDC2.adcInstanceId }}'
          PropertySelector: '$.InstanceStatuses..InstanceState.Name'
          DesiredValues:
            - running
        nextStep: verifyInstancesOnlineSSM
      - name: verifyInstancesOnlineSSM
        action: aws:waitForAwsResourceProperty
        timeoutSeconds: 600
        inputs:
          Service: ssm
          Api: DescribeInstanceInformation
          InstanceInformationFilterList:
            - key: InstanceIds
              valueSet:
                - '{{ launchDC1.pdcInstanceId }}'
                - '{{ launchDC2.adcInstanceId }}'
          PropertySelector: '$.InstanceInformationList..PingStatus'
          DesiredValues:
            - Online
        nextStep: installADRoles
      - name: installADRoles
        action: aws:runCommand
        inputs:
          DocumentName: AWS-RunPowerShellScript
          InstanceIds:
            - '{{ launchDC1.pdcInstanceId }}'
            - '{{ launchDC2.adcInstanceId }}'
          Parameters:
            commands: |-
              try {
                  Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
              }
              catch {
                  Write-Error "Failed to install ADDS Role."
              }
        nextStep: setAdminPassword
      - name: setAdminPassword
        action: aws:runCommand
        inputs:
          DocumentName: AWS-RunPowerShellScript
          InstanceIds:
            - '{{ launchDC1.pdcInstanceId }}'
          Parameters:
            commands:
              - net user Administrator "sampleAdminPass123!"
        nextStep: createForest
      - name: createForest
        action: aws:runCommand
        inputs:
          DocumentName: AWS-RunPowerShellScript
          InstanceIds:
            - '{{ launchDC1.pdcInstanceId }}'
          Parameters:
            commands: |-
              $dsrmPass = 'sample123!' | ConvertTo-SecureString -asPlainText -Force
              try {
                  Install-ADDSForest -DomainName "sample.com" -DomainMode 6 -ForestMode 6 -InstallDNS -DatabasePath "D:\NTDS" -SysvolPath "D:\SYSVOL" -SafeModeAdministratorPassword $dsrmPass -Force
              }
              catch {
                  Write-Error $_
              }
              try {
                  Add-DnsServerForwarder -IPAddress "10.0.100.2"
              }
              catch {
                  Write-Error $_
              }
        nextStep: associateDhcpOptions
      - name: associateDhcpOptions
        action: aws:executeAwsApi
        onFailure: Abort
        inputs:
          Service: ec2
          Api: AssociateDhcpOptions
          DhcpOptionsId: '{{ createDhcpOptions.dhcpOptionsId }}'
          VpcId: '{{ createVpc.vpcId }}'
        nextStep: waitForADServices
      - name: waitForADServices
        action: aws:sleep
        inputs:
          Duration: PT1M
        nextStep: promoteADC
      - name: promoteADC
        action: aws:runCommand
        inputs:
          DocumentName: AWS-RunPowerShellScript
          InstanceIds:
            - '{{ launchDC2.adcInstanceId }}'
          Parameters:
            commands: |-
              ipconfig /renew
              $dsrmPass = 'sample123!' | ConvertTo-SecureString -asPlainText -Force
              $domAdminUser = "sample\Administrator"
              $domAdminPass = "sampleAdminPass123!" | ConvertTo-SecureString -asPlainText -Force
              $domAdminCred = New-Object System.Management.Automation.PSCredential($domAdminUser,$domAdminPass)
    
              try {
                  Install-ADDSDomainController -DomainName "sample.com" -InstallDNS -DatabasePath "D:\NTDS" -SysvolPath "D:\SYSVOL" -SafeModeAdministratorPassword $dsrmPass -Credential $domAdminCred -Force
              }
              catch {
                  Write-Error $_
              }
```

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

```
{
      "description": "Custom Automation Deployment Example",
      "schemaVersion": "0.3",
      "assumeRole": "{{ AutomationAssumeRole }}",
      "parameters": {
        "AutomationAssumeRole": {
          "type": "String",
          "description": "(Optional) The ARN of the role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to run this runbook.",
          "default": ""
        }
      },
      "mainSteps": [
        {
          "name": "getLatestWindowsAmi",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ssm",
            "Api": "GetParameter",
            "Name": "/aws/service/ami-windows-latest/Windows_Server-2016-English-Full-Base"
          },
          "outputs": [
            {
              "Name": "amiId",
              "Selector": "$.Parameter.Value",
              "Type": "String"
            }
          ],
          "nextStep": "createSSMInstanceRole"
        },
        {
          "name": "createSSMInstanceRole",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "iam",
            "Api": "CreateRole",
            "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":[\"ec2.amazonaws.com\"]},\"Action\":[\"sts:AssumeRole\"]}]}",
            "RoleName": "sampleSSMInstanceRole"
          },
          "nextStep": "attachManagedSSMPolicy"
        },
        {
          "name": "attachManagedSSMPolicy",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "iam",
            "Api": "AttachRolePolicy",
            "PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonSSMManagedInstanceCore",
            "RoleName": "sampleSSMInstanceRole"
          },
          "nextStep": "createSSMInstanceProfile"
        },
        {
          "name": "createSSMInstanceProfile",
          "action":"aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "iam",
            "Api": "CreateInstanceProfile",
            "InstanceProfileName": "sampleSSMInstanceRole"
          },
          "outputs": [
            {
              "Name": "instanceProfileArn",
              "Selector": "$.InstanceProfile.Arn",
              "Type": "String"
            }
          ],
          "nextStep": "addSSMInstanceRoleToProfile"
        },
        {
          "name": "addSSMInstanceRoleToProfile",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "iam",
            "Api": "AddRoleToInstanceProfile",
            "InstanceProfileName": "sampleSSMInstanceRole",
            "RoleName": "sampleSSMInstanceRole"
          },
          "nextStep": "createVpc"
        },
        {
          "name": "createVpc",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateVpc",
            "CidrBlock": "10.0.100.0/22"
          },
          "outputs": [
            {
              "Name": "vpcId",
              "Selector": "$.Vpc.VpcId",
              "Type": "String"
            }
          ],
          "nextStep": "getMainRtb"
        },
        {
          "name": "getMainRtb",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "DescribeRouteTables",
            "Filters": [
              {
                "Name": "vpc-id",
                "Values": ["{{ createVpc.vpcId }}"]
              }
            ]
          },
          "outputs": [
            {
              "Name": "mainRtbId",
              "Selector": "$.RouteTables[0].RouteTableId",
              "Type": "String"
            }
          ],
          "nextStep": "verifyMainRtb"
        },
        {
          "name": "verifyMainRtb",
          "action": "aws:assertAwsResourceProperty",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "DescribeRouteTables",
            "RouteTableIds": ["{{ getMainRtb.mainRtbId }}"],
            "PropertySelector": "$.RouteTables[0].Associations[0].Main",
            "DesiredValues": ["True"]
          },
          "nextStep": "createPubSubnet"
        },
        {
          "name": "createPubSubnet",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateSubnet",
            "CidrBlock": "10.0.103.0/24",
            "AvailabilityZone": "us-west-2c",
            "VpcId": "{{ createVpc.vpcId }}"
          },
          "outputs":[
            {
              "Name": "pubSubnetId",
              "Selector": "$.Subnet.SubnetId",
              "Type": "String"
            }
          ],
          "nextStep": "createPubRtb"
        },
        {
          "name": "createPubRtb",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateRouteTable",
            "VpcId": "{{ createVpc.vpcId }}"
          },
          "outputs": [
            {
              "Name": "pubRtbId",
              "Selector": "$.RouteTable.RouteTableId",
              "Type": "String"
            }
          ],
          "nextStep": "createIgw"
        },
        {
          "name": "createIgw",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateInternetGateway"
          },
          "outputs": [
            {
              "Name": "igwId",
              "Selector": "$.InternetGateway.InternetGatewayId",
              "Type": "String"
            }
          ],
          "nextStep": "attachIgw"
        },
        {
          "name": "attachIgw",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "AttachInternetGateway",
            "InternetGatewayId": "{{ createIgw.igwId }}",
            "VpcId": "{{ createVpc.vpcId }}"
          },
          "nextStep": "allocateEip"
        },
        {
          "name": "allocateEip",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "AllocateAddress",
            "Domain": "vpc"
          },
          "outputs": [
            {
              "Name": "eipAllocationId",
              "Selector": "$.AllocationId",
              "Type": "String"
            }
          ],
          "nextStep": "createNatGw"
        },
        {
          "name": "createNatGw",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateNatGateway",
            "AllocationId": "{{ allocateEip.eipAllocationId }}",
            "SubnetId": "{{ createPubSubnet.pubSubnetId }}"
          },
          "outputs":[
            {
              "Name": "natGwId",
              "Selector": "$.NatGateway.NatGatewayId",
              "Type": "String"
            }
          ],
          "nextStep": "verifyNatGwAvailable"
        },
        {
          "name": "verifyNatGwAvailable",
          "action": "aws:waitForAwsResourceProperty",
          "timeoutSeconds": 150,
          "inputs": {
            "Service": "ec2",
            "Api": "DescribeNatGateways",
            "NatGatewayIds": [
              "{{ createNatGw.natGwId }}"
            ],
            "PropertySelector": "$.NatGateways[0].State",
            "DesiredValues": [
              "available"
            ]
          },
          "nextStep": "createNatRoute"
        },
        {
          "name": "createNatRoute",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateRoute",
            "DestinationCidrBlock": "0.0.0.0/0",
            "NatGatewayId": "{{ createNatGw.natGwId }}",
            "RouteTableId": "{{ getMainRtb.mainRtbId }}"
          },
          "nextStep": "createPubRoute"
        },
        {
          "name": "createPubRoute",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateRoute",
            "DestinationCidrBlock": "0.0.0.0/0",
            "GatewayId": "{{ createIgw.igwId }}",
            "RouteTableId": "{{ createPubRtb.pubRtbId }}"
          },
          "nextStep": "setPubSubAssoc"
        },
        {
          "name": "setPubSubAssoc",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "AssociateRouteTable",
            "RouteTableId": "{{ createPubRtb.pubRtbId }}",
            "SubnetId": "{{ createPubSubnet.pubSubnetId }}"
          }
        },
        {
          "name": "createDhcpOptions",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateDhcpOptions",
            "DhcpConfigurations": [
              {
                "Key": "domain-name-servers",
                "Values": ["10.0.100.50,10.0.101.50"]
              },
              {
                "Key": "domain-name",
                "Values": ["sample.com"]
              }
            ]
          },
          "outputs": [
            {
              "Name": "dhcpOptionsId",
              "Selector": "$.DhcpOptions.DhcpOptionsId",
              "Type": "String"
            }
          ],
          "nextStep": "createDCSubnet1"
        },
        {
          "name": "createDCSubnet1",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateSubnet",
            "CidrBlock": "10.0.100.0/24",
            "AvailabilityZone": "us-west-2a",
            "VpcId": "{{ createVpc.vpcId }}"
          },
          "outputs": [
            {
              "Name": "firstSubnetId",
              "Selector": "$.Subnet.SubnetId",
              "Type": "String"
            }
          ],
          "nextStep": "createDCSubnet2"
        },
        {
          "name": "createDCSubnet2",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateSubnet",
            "CidrBlock": "10.0.101.0/24",
            "AvailabilityZone": "us-west-2b",
            "VpcId": "{{ createVpc.vpcId }}"
          },
          "outputs": [
            {
              "Name": "secondSubnetId",
              "Selector": "$.Subnet.SubnetId",
              "Type": "String"
            }
          ],
          "nextStep": "createDCSecGroup"
        },
        {
          "name": "createDCSecGroup",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "CreateSecurityGroup",
            "GroupName": "SampleDCSecGroup",
            "Description": "Security Group for Example Domain Controllers",
            "VpcId": "{{ createVpc.vpcId }}"
          },
          "outputs": [
            {
              "Name": "dcSecGroupId",
              "Selector": "$.GroupId",
              "Type": "String"
            }
          ],
          "nextStep": "authIngressDCTraffic"
        },
        {
          "name": "authIngressDCTraffic",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "AuthorizeSecurityGroupIngress",
            "GroupId": "{{ createDCSecGroup.dcSecGroupId }}",
            "IpPermissions": [
              {
                "FromPort": -1,
                "IpProtocol": "-1",
                "IpRanges": [
                  {
                    "CidrIp": "0.0.0.0/0",
                    "Description": "Allow all traffic between Domain Controllers"
                  }
                ]
              }
            ]
          },
          "nextStep": "verifyInstanceProfile"
        },
        {
          "name": "verifyInstanceProfile",
          "action": "aws:waitForAwsResourceProperty",
          "maxAttempts": 5,
          "onFailure": "Abort",
          "inputs": {
            "Service": "iam",
            "Api": "ListInstanceProfilesForRole",
            "RoleName": "sampleSSMInstanceRole",
            "PropertySelector": "$.InstanceProfiles[0].Arn",
            "DesiredValues": [
              "{{ createSSMInstanceProfile.instanceProfileArn }}"
            ]
          },
          "nextStep": "iamEventualConsistency"
        },
        {
          "name": "iamEventualConsistency",
          "action": "aws:sleep",
          "inputs": {
            "Duration": "PT2M"
          },
          "nextStep": "launchDC1"
        },
        {
          "name": "launchDC1",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "RunInstances",
            "BlockDeviceMappings": [
              {
                "DeviceName": "/dev/sda1",
                "Ebs": {
                  "DeleteOnTermination": true,
                  "VolumeSize": 50,
                  "VolumeType": "gp2"
                }
              },
              {
                "DeviceName": "xvdf",
                "Ebs": {
                  "DeleteOnTermination": true,
                  "VolumeSize": 100,
                  "VolumeType": "gp2"
                }
              }
            ],
            "IamInstanceProfile": {
              "Arn": "{{ createSSMInstanceProfile.instanceProfileArn }}"
            },
            "ImageId": "{{ getLatestWindowsAmi.amiId }}",
            "InstanceType": "t2.micro",
            "MaxCount": 1,
            "MinCount": 1,
            "PrivateIpAddress": "10.0.100.50",
            "SecurityGroupIds": [
              "{{ createDCSecGroup.dcSecGroupId }}"
            ],
            "SubnetId": "{{ createDCSubnet1.firstSubnetId }}",
            "TagSpecifications": [
              {
                "ResourceType": "instance",
                "Tags": [
                  {
                    "Key": "Name",
                    "Value": "SampleDC1"
                  }
                ]
              }
            ]
          },
          "outputs": [
            {
              "Name": "pdcInstanceId",
              "Selector": "$.Instances[0].InstanceId",
              "Type": "String"
            }
          ],
          "nextStep": "launchDC2"
        },
        {
          "name": "launchDC2",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "RunInstances",
            "BlockDeviceMappings": [
              {
                "DeviceName": "/dev/sda1",
                "Ebs": {
                  "DeleteOnTermination": true,
                  "VolumeSize": 50,
                  "VolumeType": "gp2"
                }
              },
              {
                "DeviceName": "xvdf",
                "Ebs": {
                  "DeleteOnTermination": true,
                  "VolumeSize": 100,
                  "VolumeType": "gp2"
                }
              }
            ],
            "IamInstanceProfile": {
              "Arn": "{{ createSSMInstanceProfile.instanceProfileArn }}"
            },
            "ImageId": "{{ getLatestWindowsAmi.amiId }}",
            "InstanceType": "t2.micro",
            "MaxCount": 1,
            "MinCount": 1,
            "PrivateIpAddress": "10.0.101.50",
            "SecurityGroupIds": [
              "{{ createDCSecGroup.dcSecGroupId }}"
            ],
            "SubnetId": "{{ createDCSubnet2.secondSubnetId }}",
            "TagSpecifications": [
              {
                "ResourceType": "instance",
                "Tags": [
                  {
                    "Key": "Name",
                    "Value": "SampleDC2"
                  }
                ]
              }
            ]
          },
          "outputs": [
            {
              "Name": "adcInstanceId",
              "Selector": "$.Instances[0].InstanceId",
              "Type": "String"
            }
          ],
          "nextStep": "verifyDCInstanceState"
        },
        {
          "name": "verifyDCInstanceState",
          "action": "aws:waitForAwsResourceProperty",
          "inputs": {
            "Service": "ec2",
            "Api": "DescribeInstanceStatus",
            "IncludeAllInstances": true,
            "InstanceIds": [
              "{{ launchDC1.pdcInstanceId }}",
              "{{ launchDC2.adcInstanceId }}"
            ],
            "PropertySelector": "$.InstanceStatuses[0].InstanceState.Name",
            "DesiredValues": [
              "running"
            ]
          },
          "nextStep": "verifyInstancesOnlineSSM"
        },
        {
          "name": "verifyInstancesOnlineSSM",
          "action": "aws:waitForAwsResourceProperty",
          "timeoutSeconds": 600,
          "inputs": {
            "Service": "ssm",
            "Api": "DescribeInstanceInformation",
            "InstanceInformationFilterList": [
              {
                "key": "InstanceIds",
                "valueSet": [
                  "{{ launchDC1.pdcInstanceId }}",
                  "{{ launchDC2.adcInstanceId }}"
                ]
              }
            ],
            "PropertySelector": "$.InstanceInformationList[0].PingStatus",
            "DesiredValues": [
              "Online"
            ]
          },
          "nextStep": "installADRoles"
        },
        {
          "name": "installADRoles",
          "action": "aws:runCommand",
          "inputs": {
            "DocumentName": "AWS-RunPowerShellScript",
            "InstanceIds": [
              "{{ launchDC1.pdcInstanceId }}",
              "{{ launchDC2.adcInstanceId }}"
            ],
            "Parameters": {
              "commands": [
                "try {",
                "  Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools",
                "}",
                "catch {",
                "  Write-Error \"Failed to install ADDS Role.\"",
                "}"
              ]
            }
          },
          "nextStep": "setAdminPassword"
        },
        {
          "name": "setAdminPassword",
          "action": "aws:runCommand",
          "inputs": {
            "DocumentName": "AWS-RunPowerShellScript",
            "InstanceIds": [
              "{{ launchDC1.pdcInstanceId }}"
            ],
            "Parameters": {
              "commands": [
                "net user Administrator \"sampleAdminPass123!\""
              ]
            }
          },
          "nextStep": "createForest"
        },
        {
          "name": "createForest",
          "action": "aws:runCommand",
          "inputs": {
            "DocumentName": "AWS-RunPowerShellScript",
            "InstanceIds": [
              "{{ launchDC1.pdcInstanceId }}"
            ],
            "Parameters": {
              "commands": [
                "$dsrmPass = 'sample123!' | ConvertTo-SecureString -asPlainText -Force",
                "try {",
                "   Install-ADDSForest -DomainName \"sample.com\" -DomainMode 6 -ForestMode 6 -InstallDNS -DatabasePath \"D:\\NTDS\" -SysvolPath \"D:\\SYSVOL\" -SafeModeAdministratorPassword $dsrmPass -Force",
                "}",
                "catch {",
                "   Write-Error $_",
                "}",
                "try {",
                "   Add-DnsServerForwarder -IPAddress \"10.0.100.2\"",
                "}",
                "catch {",
                "   Write-Error $_",
                "}"
              ]
            }
          },
          "nextStep": "associateDhcpOptions"
        },
        {
          "name": "associateDhcpOptions",
          "action": "aws:executeAwsApi",
          "onFailure": "Abort",
          "inputs": {
            "Service": "ec2",
            "Api": "AssociateDhcpOptions",
            "DhcpOptionsId": "{{ createDhcpOptions.dhcpOptionsId }}",
            "VpcId": "{{ createVpc.vpcId }}"
          },
          "nextStep": "waitForADServices"
        },
        {
          "name": "waitForADServices",
          "action": "aws:sleep",
          "inputs": {
            "Duration": "PT1M"
          },
          "nextStep": "promoteADC"
        },
        {
          "name": "promoteADC",
          "action": "aws:runCommand",
          "inputs": {
            "DocumentName": "AWS-RunPowerShellScript",
            "InstanceIds": [
              "{{ launchDC2.adcInstanceId }}"
            ],
            "Parameters": {
              "commands": [
                "ipconfig /renew",
                "$dsrmPass = 'sample123!' | ConvertTo-SecureString -asPlainText -Force",
                "$domAdminUser = \"sample\\Administrator\"",
                "$domAdminPass = \"sampleAdminPass123!\" | ConvertTo-SecureString -asPlainText -Force",
                "$domAdminCred = New-Object System.Management.Automation.PSCredential($domAdminUser,$domAdminPass)",
                "try {",
                "   Install-ADDSDomainController -DomainName \"sample.com\" -InstallDNS -DatabasePath \"D:\\NTDS\" -SysvolPath \"D:\\SYSVOL\" -SafeModeAdministratorPassword $dsrmPass -Credential $domAdminCred -Force",
                "}",
                "catch {",
                "   Write-Error $_",
                "}"
              ]
            }
          }
        }
      ]
    }
```

------

# Ripristino di un volume radice dall'ultimo snapshot
<a name="automation-document-instance-recovery-example"></a>

Il sistema operativo su un volume radice può danneggiarsi per vari motivi. Ad esempio, a seguito di un'operazione di patch, le istanze potrebbero non riuscire ad avviarsi correttamente a causa di un kernel o di un registro di sistema danneggiato. L'automazione delle attività di risoluzione dei problemi più comuni, come il ripristino di un volume root dall'ultima istantanea scattata prima dell'operazione di patching, può ridurre i tempi di inattività e accelerare le attività di risoluzione dei problemi. AWS Systems Manager Le azioni di automazione possono aiutarti a raggiungere questo obiettivo. L’automazione è uno strumento di AWS Systems Manager.

Il AWS Systems Manager runbook di esempio seguente esegue queste azioni: 
+ Utilizza l'operazione di automazione `aws:executeAwsApi` per recuperare i dettagli dal volume principale dell'istanza.
+ Utilizza l'operazione di automazione `aws:executeScript` per recuperare lo snapshot più recente per il volume radice.
+ Utilizza l'operazione di automazione `aws:branch` per continuare l'automazione se viene trovato uno snapshot per il volume radice.

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

```
    ---
    description: Custom Automation Troubleshooting Example
    schemaVersion: '0.3'
    assumeRole: "{{ AutomationAssumeRole }}"
    parameters:
      AutomationAssumeRole:
        type: String
        description: "(Required) The ARN of the role that allows Automation to perform
          the actions on your behalf. If no role is specified, Systems Manager Automation
          uses your IAM permissions to use this runbook."
        default: ''
      InstanceId:
          type: String
          description: "(Required) The Instance Id whose root EBS volume you want to restore the latest Snapshot."
          default: ''
    mainSteps:
    - name: getInstanceDetails
      action: aws:executeAwsApi
      onFailure: Abort
      inputs:
        Service: ec2
        Api: DescribeInstances
        InstanceIds:
        - "{{ InstanceId }}"
      outputs:
        - Name: availabilityZone
          Selector: "$.Reservations[0].Instances[0].Placement.AvailabilityZone"
          Type: String
        - Name: rootDeviceName
          Selector: "$.Reservations[0].Instances[0].RootDeviceName"
          Type: String
      nextStep: getRootVolumeId
    - name: getRootVolumeId
      action: aws:executeAwsApi
      onFailure: Abort
      inputs:
        Service: ec2
        Api: DescribeVolumes
        Filters:
        -  Name: attachment.device
           Values: ["{{ getInstanceDetails.rootDeviceName }}"]
        -  Name: attachment.instance-id
           Values: ["{{ InstanceId }}"]
      outputs:
        - Name: rootVolumeId
          Selector: "$.Volumes[0].VolumeId"
          Type: String
      nextStep: getSnapshotsByStartTime
    - name: getSnapshotsByStartTime
      action: aws:executeScript
      timeoutSeconds: 45
      onFailure: Abort
      inputs:
        Runtime: python3.11
        Handler: getSnapshotsByStartTime
        InputPayload:
          rootVolumeId : "{{ getRootVolumeId.rootVolumeId }}"
        Script: |-
          def getSnapshotsByStartTime(events,context):
            import boto3
    
            #Initialize client
            ec2 = boto3.client('ec2')
            rootVolumeId = events['rootVolumeId']
            snapshotsQuery = ec2.describe_snapshots(
              Filters=[
                {
                  "Name": "volume-id",
                  "Values": [rootVolumeId]
                }
              ]
            )
            if not snapshotsQuery['Snapshots']:
              noSnapshotFoundString = "NoSnapshotFound"
              return { 'noSnapshotFound' : noSnapshotFoundString }
            else:
              jsonSnapshots = snapshotsQuery['Snapshots']
              sortedSnapshots = sorted(jsonSnapshots, key=lambda k: k['StartTime'], reverse=True)
              latestSortedSnapshotId = sortedSnapshots[0]['SnapshotId']
              return { 'latestSnapshotId' : latestSortedSnapshotId }
      outputs:
      - Name: Payload
        Selector: $.Payload
        Type: StringMap
      - Name: latestSnapshotId
        Selector: $.Payload.latestSnapshotId
        Type: String
      - Name: noSnapshotFound
        Selector: $.Payload.noSnapshotFound
        Type: String 
      nextStep: branchFromResults
    - name: branchFromResults
      action: aws:branch
      onFailure: Abort
      inputs:
        Choices:
        - NextStep: createNewRootVolumeFromSnapshot
          Not:
            Variable: "{{ getSnapshotsByStartTime.noSnapshotFound }}"
            StringEquals: "NoSnapshotFound"
      isEnd: true
    - name: createNewRootVolumeFromSnapshot
      action: aws:executeAwsApi
      onFailure: Abort
      inputs:
        Service: ec2
        Api: CreateVolume
        AvailabilityZone: "{{ getInstanceDetails.availabilityZone }}"
        SnapshotId: "{{ getSnapshotsByStartTime.latestSnapshotId }}"
      outputs:
        - Name: newRootVolumeId
          Selector: "$.VolumeId"
          Type: String
      nextStep: stopInstance
    - name: stopInstance
      action: aws:executeAwsApi
      onFailure: Abort
      inputs:
        Service: ec2
        Api: StopInstances
        InstanceIds:
        - "{{ InstanceId }}"
      nextStep: verifyVolumeAvailability
    - name: verifyVolumeAvailability
      action: aws:waitForAwsResourceProperty
      timeoutSeconds: 120
      inputs:
        Service: ec2
        Api: DescribeVolumes
        VolumeIds:
        - "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
        PropertySelector: "$.Volumes[0].State"
        DesiredValues:
        - "available"
      nextStep: verifyInstanceStopped
    - name: verifyInstanceStopped
      action: aws:waitForAwsResourceProperty
      timeoutSeconds: 120
      inputs:
        Service: ec2
        Api: DescribeInstances
        InstanceIds:
        - "{{ InstanceId }}"
        PropertySelector: "$.Reservations[0].Instances[0].State.Name"
        DesiredValues:
        - "stopped"
      nextStep: detachRootVolume
    - name: detachRootVolume
      action: aws:executeAwsApi
      onFailure: Abort
      inputs:
        Service: ec2
        Api: DetachVolume
        VolumeId: "{{ getRootVolumeId.rootVolumeId }}"
      nextStep: verifyRootVolumeDetached
    - name: verifyRootVolumeDetached
      action: aws:waitForAwsResourceProperty
      timeoutSeconds: 30
      inputs:
        Service: ec2
        Api: DescribeVolumes
        VolumeIds:
        - "{{ getRootVolumeId.rootVolumeId }}"
        PropertySelector: "$.Volumes[0].State"
        DesiredValues:
        - "available"
      nextStep: attachNewRootVolume
    - name: attachNewRootVolume
      action: aws:executeAwsApi
      onFailure: Abort
      inputs:
        Service: ec2
        Api: AttachVolume
        Device: "{{ getInstanceDetails.rootDeviceName }}"
        InstanceId: "{{ InstanceId }}"
        VolumeId: "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
      nextStep: verifyNewRootVolumeAttached
    - name: verifyNewRootVolumeAttached
      action: aws:waitForAwsResourceProperty
      timeoutSeconds: 30
      inputs:
        Service: ec2
        Api: DescribeVolumes
        VolumeIds:
        - "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
        PropertySelector: "$.Volumes[0].Attachments[0].State"
        DesiredValues:
        - "attached"
      nextStep: startInstance
    - name: startInstance
      action: aws:executeAwsApi
      onFailure: Abort
      inputs:
        Service: ec2
        Api: StartInstances
        InstanceIds:
        - "{{ InstanceId }}"
```

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

```
    {
       "description": "Custom Automation Troubleshooting Example",
       "schemaVersion": "0.3",
       "assumeRole": "{{ AutomationAssumeRole }}",
       "parameters": {
          "AutomationAssumeRole": {
             "type": "String",
             "description": "(Required) The ARN of the role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to run this runbook.",
             "default": ""
          },
          "InstanceId": {
             "type": "String",
             "description": "(Required) The Instance Id whose root EBS volume you want to restore the latest Snapshot.",
             "default": ""
          }
       },
       "mainSteps": [
          {
             "name": "getInstanceDetails",
             "action": "aws:executeAwsApi",
             "onFailure": "Abort",
             "inputs": {
                "Service": "ec2",
                "Api": "DescribeInstances",
                "InstanceIds": [
                   "{{ InstanceId }}"
                ]
             },
             "outputs": [
                {
                   "Name": "availabilityZone",
                   "Selector": "$.Reservations[0].Instances[0].Placement.AvailabilityZone",
                   "Type": "String"
                },
                {
                   "Name": "rootDeviceName",
                   "Selector": "$.Reservations[0].Instances[0].RootDeviceName",
                   "Type": "String"
                }
             ],
             "nextStep": "getRootVolumeId"
          },
          {
             "name": "getRootVolumeId",
             "action": "aws:executeAwsApi",
             "onFailure": "Abort",
             "inputs": {
                "Service": "ec2",
                "Api": "DescribeVolumes",
                "Filters": [
                   {
                      "Name": "attachment.device",
                      "Values": [
                         "{{ getInstanceDetails.rootDeviceName }}"
                      ]
                   },
                   {
                      "Name": "attachment.instance-id",
                      "Values": [
                         "{{ InstanceId }}"
                      ]
                   }
                ]
             },
             "outputs": [
                {
                   "Name": "rootVolumeId",
                   "Selector": "$.Volumes[0].VolumeId",
                   "Type": "String"
                }
             ],
             "nextStep": "getSnapshotsByStartTime"
          },
          {
             "name": "getSnapshotsByStartTime",
             "action": "aws:executeScript",
             "timeoutSeconds": 45,
             "onFailure": "Continue",
             "inputs": {
                "Runtime": "python3.11",
                "Handler": "getSnapshotsByStartTime",
                "InputPayload": {
                   "rootVolumeId": "{{ getRootVolumeId.rootVolumeId }}"
                },
                "Attachment": "getSnapshotsByStartTime.py"
             },
             "outputs": [
                {
                   "Name": "Payload",
                   "Selector": "$.Payload",
                   "Type": "StringMap"
                },
                {
                   "Name": "latestSnapshotId",
                   "Selector": "$.Payload.latestSnapshotId",
                   "Type": "String"
                },
                {
                   "Name": "noSnapshotFound",
                   "Selector": "$.Payload.noSnapshotFound",
                   "Type": "String"
                }
             ],
             "nextStep": "branchFromResults"
          },
          {
             "name": "branchFromResults",
             "action": "aws:branch",
             "onFailure": "Abort",
             "inputs": {
                "Choices": [
                   {
                      "NextStep": "createNewRootVolumeFromSnapshot",
                      "Not": {
                         "Variable": "{{ getSnapshotsByStartTime.noSnapshotFound }}",
                         "StringEquals": "NoSnapshotFound"
                      }
                   }
                ]
             },
             "isEnd": true
          },
          {
             "name": "createNewRootVolumeFromSnapshot",
             "action": "aws:executeAwsApi",
             "onFailure": "Abort",
             "inputs": {
                "Service": "ec2",
                "Api": "CreateVolume",
                "AvailabilityZone": "{{ getInstanceDetails.availabilityZone }}",
                "SnapshotId": "{{ getSnapshotsByStartTime.latestSnapshotId }}"
             },
             "outputs": [
                {
                   "Name": "newRootVolumeId",
                   "Selector": "$.VolumeId",
                   "Type": "String"
                }
             ],
             "nextStep": "stopInstance"
          },
          {
             "name": "stopInstance",
             "action": "aws:executeAwsApi",
             "onFailure": "Abort",
             "inputs": {
                "Service": "ec2",
                "Api": "StopInstances",
                "InstanceIds": [
                   "{{ InstanceId }}"
                ]
             },
             "nextStep": "verifyVolumeAvailability"
          },
          {
             "name": "verifyVolumeAvailability",
             "action": "aws:waitForAwsResourceProperty",
             "timeoutSeconds": 120,
             "inputs": {
                "Service": "ec2",
                "Api": "DescribeVolumes",
                "VolumeIds": [
                   "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
                ],
                "PropertySelector": "$.Volumes[0].State",
                "DesiredValues": [
                   "available"
                ]
             },
             "nextStep": "verifyInstanceStopped"
          },
          {
             "name": "verifyInstanceStopped",
             "action": "aws:waitForAwsResourceProperty",
             "timeoutSeconds": 120,
             "inputs": {
                "Service": "ec2",
                "Api": "DescribeInstances",
                "InstanceIds": [
                   "{{ InstanceId }}"
                ],
                "PropertySelector": "$.Reservations[0].Instances[0].State.Name",
                "DesiredValues": [
                   "stopped"
                ]
             },
             "nextStep": "detachRootVolume"
          },
          {
             "name": "detachRootVolume",
             "action": "aws:executeAwsApi",
             "onFailure": "Abort",
             "inputs": {
                "Service": "ec2",
                "Api": "DetachVolume",
                "VolumeId": "{{ getRootVolumeId.rootVolumeId }}"
             },
             "nextStep": "verifyRootVolumeDetached"
          },
          {
             "name": "verifyRootVolumeDetached",
             "action": "aws:waitForAwsResourceProperty",
             "timeoutSeconds": 30,
             "inputs": {
                "Service": "ec2",
                "Api": "DescribeVolumes",
                "VolumeIds": [
                   "{{ getRootVolumeId.rootVolumeId }}"
                ],
                "PropertySelector": "$.Volumes[0].State",
                "DesiredValues": [
                   "available"
                ]
             },
             "nextStep": "attachNewRootVolume"
          },
          {
             "name": "attachNewRootVolume",
             "action": "aws:executeAwsApi",
             "onFailure": "Abort",
             "inputs": {
                "Service": "ec2",
                "Api": "AttachVolume",
                "Device": "{{ getInstanceDetails.rootDeviceName }}",
                "InstanceId": "{{ InstanceId }}",
                "VolumeId": "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
             },
             "nextStep": "verifyNewRootVolumeAttached"
          },
          {
             "name": "verifyNewRootVolumeAttached",
             "action": "aws:waitForAwsResourceProperty",
             "timeoutSeconds": 30,
             "inputs": {
                "Service": "ec2",
                "Api": "DescribeVolumes",
                "VolumeIds": [
                   "{{ createNewRootVolumeFromSnapshot.newRootVolumeId }}"
                ],
                "PropertySelector": "$.Volumes[0].Attachments[0].State",
                "DesiredValues": [
                   "attached"
                ]
             },
             "nextStep": "startInstance"
          },
          {
             "name": "startInstance",
             "action": "aws:executeAwsApi",
             "onFailure": "Abort",
             "inputs": {
                "Service": "ec2",
                "Api": "StartInstances",
                "InstanceIds": [
                   "{{ InstanceId }}"
                ]
             }
          }
       ],
       "files": {
            "getSnapshotsByStartTime.py": {
                "checksums": {
                    "sha256": "sampleETagValue"
                }
            }
        }
    }
```

------

# Creazione di un'AMI e una copia tra regioni
<a name="automation-document-backup-maintenance-example"></a>

La creazione di un'Amazon Machine Image (AMI) di un'istanza è un processo comune utilizzato nel backup e nel ripristino. È inoltre possibile scegliere di copiare un'AMI in un'altra Regione AWS come parte di un'architettura di disaster recovery. L'automazione delle attività di manutenzione comuni può ridurre i tempi di inattività se un problema richiede il failover. AWS Systems Manager Le azioni di automazione possono aiutarti a raggiungere questo obiettivo. L’automazione è uno strumento di AWS Systems Manager.

Il AWS Systems Manager runbook di esempio seguente esegue queste azioni:
+ Utilizza l'operazione di automazione `aws:executeAwsApi` per creare un'AMI.
+ Utilizza l'operazione di automazione `aws:waitForAwsResourceProperty` per confermare la disponibilità dell'AMI.
+ Utilizza l'operazione di automazione `aws:executeScript` per copiare l'AMI nella regione di destinazione.

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

```
    ---
    description: Custom Automation Backup and Recovery Example
    schemaVersion: '0.3'
    assumeRole: "{{ AutomationAssumeRole }}"
    parameters:
      AutomationAssumeRole:
        type: String
        description: "(Required) The ARN of the role that allows Automation to perform
          the actions on your behalf. If no role is specified, Systems Manager Automation
          uses your IAM permissions to use this runbook."
        default: ''
      InstanceId:
        type: String
        description: "(Required) The ID of the EC2 instance."
        default: ''
    mainSteps:
    - name: createImage
      action: aws:executeAwsApi
      onFailure: Abort
      inputs:
        Service: ec2
        Api: CreateImage
        InstanceId: "{{ InstanceId }}"
        Name: "Automation Image for {{ InstanceId }}"
        NoReboot: false
      outputs:
        - Name: newImageId
          Selector: "$.ImageId"
          Type: String
      nextStep: verifyImageAvailability
    - name: verifyImageAvailability
      action: aws:waitForAwsResourceProperty
      timeoutSeconds: 600
      inputs:
        Service: ec2
        Api: DescribeImages
        ImageIds:
        - "{{ createImage.newImageId }}"
        PropertySelector: "$.Images[0].State"
        DesiredValues:
        - available
      nextStep: copyImage
    - name: copyImage
      action: aws:executeScript
      timeoutSeconds: 45
      onFailure: Abort
      inputs:
        Runtime: python3.11
        Handler: crossRegionImageCopy
        InputPayload:
          newImageId : "{{ createImage.newImageId }}"
        Script: |-
          def crossRegionImageCopy(events,context):
            import boto3
    
            #Initialize client
            ec2 = boto3.client('ec2', region_name='us-east-1')
            newImageId = events['newImageId']
    
            ec2.copy_image(
              Name='DR Copy for ' + newImageId,
              SourceImageId=newImageId,
              SourceRegion='us-west-2'
            )
```

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

```
    {
       "description": "Custom Automation Backup and Recovery Example",
       "schemaVersion": "0.3",
       "assumeRole": "{{ AutomationAssumeRole }}",
       "parameters": {
          "AutomationAssumeRole": {
             "type": "String",
             "description": "(Required) The ARN of the role that allows Automation to perform\nthe actions on your behalf. If no role is specified, Systems Manager Automation\nuses your IAM permissions to run this runbook.",
             "default": ""
          },
          "InstanceId": {
             "type": "String",
             "description": "(Required) The ID of the EC2 instance.",
             "default": ""
          }
       },
       "mainSteps": [
          {
             "name": "createImage",
             "action": "aws:executeAwsApi",
             "onFailure": "Abort",
             "inputs": {
                "Service": "ec2",
                "Api": "CreateImage",
                "InstanceId": "{{ InstanceId }}",
                "Name": "Automation Image for {{ InstanceId }}",
                "NoReboot": false
             },
             "outputs": [
                {
                   "Name": "newImageId",
                   "Selector": "$.ImageId",
                   "Type": "String"
                }
             ],
             "nextStep": "verifyImageAvailability"
          },
          {
             "name": "verifyImageAvailability",
             "action": "aws:waitForAwsResourceProperty",
             "timeoutSeconds": 600,
             "inputs": {
                "Service": "ec2",
                "Api": "DescribeImages",
                "ImageIds": [
                   "{{ createImage.newImageId }}"
                ],
                "PropertySelector": "$.Images[0].State",
                "DesiredValues": [
                   "available"
                ]
             },
             "nextStep": "copyImage"
          },
          {
             "name": "copyImage",
             "action": "aws:executeScript",
             "timeoutSeconds": 45,
             "onFailure": "Abort",
             "inputs": {
                "Runtime": "python3.11",
                "Handler": "crossRegionImageCopy",
                "InputPayload": {
                   "newImageId": "{{ createImage.newImageId }}"
                },
                "Attachment": "crossRegionImageCopy.py"
             }
          }
       ],
       "files": {
            "crossRegionImageCopy.py": {
                "checksums": {
                    "sha256": "sampleETagValue"
                }
            }
        }
    }
```

------

# Creazione di parametri di input che popolano le risorse AWS
<a name="populating-input-parameters"></a>

Automation, uno strumento di Systems Manager, popola AWS le risorse Console di gestione AWS che corrispondono al tipo di risorsa definito per un parametro di input. Le risorse nel tuo Account AWS che corrispondono al tipo di risorsa vengono visualizzati in un menu a tendina da cui scegliere. Puoi definire i tipi di parametri di input per le istanze Amazon Elastic Compute Cloud (Amazon EC2), i bucket Amazon Simple Storage Service (Amazon S3) e i ruoli (IAM). AWS Identity and Access Management Le definizioni dei tipi supportate e le espressioni regolari utilizzate per individuare le risorse corrispondenti sono le seguenti:
+ `AWS::EC2::Instance::Id` - `^m?i-([a-z0-9]{8}|[a-z0-9]{17})$`
+ `List<AWS::EC2::Instance::Id>` - `^m?i-([a-z0-9]{8}|[a-z0-9]{17})$`
+ `AWS::S3::Bucket::Name` - `^[0-9a-z][a-z0-9\\-\\.]{3,63}$`
+ `List<AWS::S3::Bucket::Name>` - `^[0-9a-z][a-z0-9\\-\\.]{3,63}$`
+ `AWS::IAM::Role::Arn` - `^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$`
+ `List<AWS::IAM::Role::Arn>` - `^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):iam::[0-9]{12}:role/.*$`

Di seguito è riportato un esempio di tipi di parametri di input definiti nel contenuto del runbook.

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

```
description: Enables encryption on an Amazon S3 bucket
schemaVersion: '0.3'
assumeRole: '{{ AutomationAssumeRole }}'
parameters:
  BucketName:
    type: 'AWS::S3::Bucket::Name'
    description: (Required) The name of the Amazon S3 bucket you want to encrypt.
  SSEAlgorithm:
    type: String
    description: (Optional) The server-side encryption algorithm to use for the default encryption.
    default: AES256
  AutomationAssumeRole:
    type: 'AWS::IAM::Role::Arn'
    description: (Optional) The Amazon Resource Name (ARN) of the role that allows Automation to perform the actions on your behalf.
    default: ''
mainSteps:
  - name: enableBucketEncryption
    action: 'aws:executeAwsApi'
    inputs:
      Service: s3
      Api: PutBucketEncryption
      Bucket: '{{BucketName}}'
      ServerSideEncryptionConfiguration:
        Rules:
          - ApplyServerSideEncryptionByDefault:
              SSEAlgorithm: '{{SSEAlgorithm}}'
    isEnd: true
```

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

```
{
   "description": "Enables encryption on an Amazon S3 bucket",
   "schemaVersion": "0.3",
   "assumeRole": "{{ AutomationAssumeRole }}",
   "parameters": {
      "BucketName": {
         "type": "AWS::S3::Bucket::Name",
         "description": "(Required) The name of the Amazon S3 bucket you want to encrypt."
      },
      "SSEAlgorithm": {
         "type": "String",
         "description": "(Optional) The server-side encryption algorithm to use for the default encryption.",
         "default": "AES256"
      },
      "AutomationAssumeRole": {
         "type": "AWS::IAM::Role::Arn",
         "description": "(Optional) The Amazon Resource Name (ARN) of the role that allows Automation to perform the actions on your behalf.",
         "default": ""
      }
   },
   "mainSteps": [
      {
         "name": "enableBucketEncryption",
         "action": "aws:executeAwsApi",
         "inputs": {
            "Service": "s3",
            "Api": "PutBucketEncryption",
            "Bucket": "{{BucketName}}",
            "ServerSideEncryptionConfiguration": {
               "Rules": [
                  {
                     "ApplyServerSideEncryptionByDefault": {
                        "SSEAlgorithm": "{{SSEAlgorithm}}"
                     }
                  }
               ]
            }
         },
         "isEnd": true
      }
   ]
}
```

------

# Utilizzo di Generatore di documenti per la creazione di runbook
<a name="automation-document-builder"></a>

Se i runbook AWS Systems Manager pubblici non supportano tutte le azioni che desideri eseguire sulle tue AWS risorse, puoi creare i tuoi runbook. Per creare un runbook personalizzato, puoi creare manualmente un file locale in formato YAML o JSON con le operazioni di automazione appropriate. In alternativa, puoi utilizzare Generatore di documenti nella console di Automazione Systems Manager per creare un runbook personalizzato.

Utilizzando Generatore di documenti, puoi aggiungere operazioni di automazione al runbook personalizzato e fornire i parametri richiesti senza dover utilizzare la sintassi JSON o YAML. Dopo aver aggiunto fasi e creato il runbook, il sistema converte le operazioni aggiunte nel formato YAML che Systems Manager può utilizzare per eseguire l'automazione.

Inoltre, i runbook supportano l'uso di Markdown, un linguaggio di markup, che consente di aggiungere descrizioni in stile wiki ai runbook e alle singole fasi all'interno del runbook. Per ulteriori informazioni sull'utilizzo di Markdown, consulta [Utilizzo di Markdown in AWS](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html).

## Creazione di un runbook utilizzando Generatore di documenti
<a name="create-runbook"></a>

**Prima di iniziare**  
Ti consigliamo di leggere le diverse operazioni che è possibile utilizzare all'interno di un runbook. Per ulteriori informazioni, consulta [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md).

**Per creare un runbook utilizzando Generatore di documenti**

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 **Crea automazione**.

1. Per **Nome**, inserisci un nome descrittivo per il runbook.

1. Per **Descrizione documento**, specificare la descrizione dello stile markdown per il runbook. È possibile fornire istruzioni per l'utilizzo del runbook, delle fasi numerate o di qualsiasi altro tipo di informazioni per descrivere il runbook. Fare riferimento al testo predefinito per informazioni sulla formattazione del contenuto.
**Suggerimento**  
Passare da **Nascondi anteprima** a **Mostra anteprima** e viceversa per vedere come appare il contenuto della descrizione durante la composizione.

1. (Facoltativo) Per **Ruolo presunto**, inserisci il nome o l'ARN di un ruolo di servizio per eseguire operazioni per tuo conto. Se non si specifica un ruolo, il servizio di automazione utilizza le autorizzazioni di accesso dell'utente che esegue l'automazione.
**Importante**  
Per i runbook non di proprietà di Amazon che utilizzano l'operazione `aws:executeScript`, è necessario specificare un ruolo. Per informazioni, consulta [Autorizzazioni per l'utilizzo di runbook](automation-document-script-considerations.md#script-permissions).

1. (Facoltativo) Per **Output**, inserisci eventuali output per l'automazione di questo runbook per renderli disponibili per altri processi. 

   Ad esempio, se il runbook crea una nuova AMI, puoi specificare [». CreateImage ImageId«], quindi utilizzate questo output per creare nuove istanze in un'automazione successiva.

1. (Facoltativo) Espandi la sezione **Parametri di input** ed effettua le seguenti operazioni.

   1. Per **Nome parametro**, inserisci un nome descrittivo per il parametro del runbook che si sta creando.

   1. Per **Tipo**, scegli un tipo per il parametro, ad esempio `String` o `MapList`.

   1. Per **Obbligatorio**, effettua una delle seguenti operazioni: 
      + Seleziona **Sì**, se per questo parametro del runbook deve essere fornito un valore durante il runtime.
      + Seleziona **No**, se il parametro non è richiesto e (facoltativo) inserire un valore di parametro predefinito in **Valore predefinito**.

   1. Per **Descrizione**, inserisci una descrizione per il parametro del runbook.
**Nota**  
Per aggiungere altri parametri del runbook, sceglie **Aggiungi un parametro**. Per rimuovere un parametro del runbook, seleziona il pulsante **X** (Rimuovi).

1. (Facoltativo) Espandi la sezione **Tipo di destinazione** e scegli un tipo di destinazione per definire i tipi di risorse su cui è possibile eseguire l'automazione. Ad esempio, per utilizzare un runbook sulle istanze di EC2, scegli `/AWS::EC2::Instance`.
**Nota**  
Se si specifica un valore di “`/`“, il runbook può essere eseguito su tutti i tipi di risorse. Per un elenco dei tipi di risorse validi, consulta [Informazioni di riferimento sui tipi di proprietà e di risorse di AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) nella *Guida per l'utente di AWS CloudFormation *.

1. (Facoltativo) Espandi la sezione **Tag documento** e inserisci una o più coppie chiave-valore tag da applicare al runbook. I tag semplificano l'identificazione, l'organizzazione e la ricerca delle risorse.

1. Nella sezione **Fase 1** fornisci le seguenti informazioni.
   + Per **Nome fase**, inserisci un nome descrittivo per la prima fase dell'automazione.
   + Per **Tipo di operazione**, seleziona il tipo di operazione da utilizzare per questa fase.

     Per un elenco e informazioni sui tipi di operazione disponibili, consulta [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md).
   + In **Descrizione**, inserisci una descrizione per la fase di automazione. È possibile utilizzare Markdown per formattare il testo.
   + A seconda del **Tipo di operazione** selezionato, inserisci gli input necessari per il tipo di operazione nella sezione **Input della fase**. Ad esempio, se è stata selezionata l'operazione `aws:approve`, è necessario specificare un valore per la proprietà `Approvers`.

     Per informazioni sui campi di input della fase, consulta la voce in [Riferimento alle operazioni del servizio di automazione di Systems Manager](automation-actions.md) relativa al tipo di operazione selezionato. Ad esempio: [`aws:executeStateMachine`— Esegui una macchina a AWS Step Functions stati](automation-action-executeStateMachine.md).
   + (Facoltativo) Per **Input aggiuntivi**, fornisci eventuali valori di input aggiuntivi necessari per il runbook. I tipi di input disponibili dipendono dal tipo di operazione selezionato per la fase. (Si noti che alcuni tipi di operazione richiedono valori di input.)
**Nota**  
Per aggiungere altri input, selezionare **Aggiungi input facoltativo**. Per rimuovere un input, scegli il pulsante **X** (Rimuovi).
   + (Facoltativo) Per **Output**, inserisci eventuali output per questa fase per renderli disponibili per altri processi.
**Nota**  
**Output** non è disponibile per tutti i tipi di operazione.
   + (Facoltativo) Espandi la sezione **Proprietà comuni** e specifica le proprietà per le operazioni comuni a tutte le operazioni di automazione. Ad esempio, per i **Secondi di timeout**, è possibile fornire un valore in secondi per specificare per quanto tempo è possibile eseguire la fase prima che venga arrestata.

     Per ulteriori informazioni, consulta [Proprietà condivise da tutte le operazioni](automation-actions.md#automation-common).
**Nota**  
Per aggiungere altre fasi, seleziona **Aggiungi fase** e ripeti la procedura per la creazione di una fase. Per rimuovere una fase, seleziona **Rimuovi fase**.

1. Scegli **Crea automazione** per salvare il runbook.

## Creazione di un runbook che esegue script
<a name="create-runbook-scripts"></a>

La procedura seguente mostra come utilizzare Generatore di documenti nella console di Automazione AWS Systems Manager per creare un runbook personalizzato che esegue uno script.

La prima fase del runbook creato esegue uno script per avviare un'istanza Amazon Elastic Compute Cloud (Amazon EC2). Nella seconda fase viene eseguito un altro script per monitorare il controllo dello stato dell'istanza da modificare in `ok`. Quindi, viene riportato uno stato generale di `Success` per l'automazione.

**Prima di iniziare**  
Effettuare le operazioni seguenti:
+ Verificare di disporre dei privilegi di amministratore o di disporre delle autorizzazioni appropriate per accedere a Systems Manager in AWS Identity and Access Management (IAM). 

  Per informazioni, consulta [Verifica dell'accesso utente per runbook](automation-setup.md#automation-setup-user-access).
+ Verificare di disporre di un ruolo di servizio IAM per il servizio di automazione (noto anche come *ruolo presunto*) nell' Account AWS. Il ruolo è necessario perché questa procedura dettagliata utilizza l'operazione `aws:executeScript`. 

  Per ulteriori informazioni sulla creazione di questo ruolo, consulta [Configurazione di un accesso al ruolo di servizio (ruolo presunto) per le automazioni](automation-setup.md#automation-setup-configure-role). 

  Per informazioni sul requisito del ruolo di servizio IAM per l'esecuzione di `aws:executeScript`, consulta [Autorizzazioni per l'utilizzo di runbook](automation-document-script-considerations.md#script-permissions).
+ Accertati di disporre dell'autorizzazione per avviare le istanze EC2. 

  Per ulteriori informazioni, consulta [IAM e Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#intro-to-iam) nella *Guida per l'utente di Amazon EC2*.

**Per creare un runbook personalizzato che esegue script utilizzando Generatore di documenti**

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 **Crea automazione**.

1. Per **Nome**, digita questo nome descrittivo per il runbook: **LaunchInstanceAndCheckStatus**.

1. (Facoltativo) Per **Descrizione documento**, sostituisci il testo predefinito con una descrizione per questo runbook, utilizzando Markdown. Di seguito è riportato un esempio di :

   ```
   ##Title: LaunchInstanceAndCheckState
       -----
       **Purpose**: This runbook first launches an EC2 instance using the AMI ID provided in the parameter ```imageId```. The second step of this runbook 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 2023 AMI ID available. | {{ ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64 }}
   ```

1. In **Ruolo presunto**, inserisci l'ARN del ruolo di servizio IAM per il servizio di automazione (Ruolo presunto) per l'automazione, nel formato **arn:aws:iam::111122223333:role/AutomationServiceRole**. Sostituisci il tuo Account AWS ID con 111122223333.

   Il ruolo specificato viene utilizzato per fornire le autorizzazioni necessarie per avviare l'automazione.
**Importante**  
Per i runbook non di proprietà di Amazon che utilizzano l'operazione `aws:executeScript`, è necessario specificare un ruolo. Per informazioni, consulta [Autorizzazioni per l'utilizzo di runbook](automation-document-script-considerations.md#script-permissions).

1. Espandi **Parametri di input** e procedi come segue.

   1. Per **Nome parametro**, inserisci **imageId**.

   1. In **Tipo**, scegli **String**.

   1. Per **Obbligatorio**, scegli `No`. 

   1. Per **Valore predefinito**, inserisci quanto segue.

      ```
      {{ ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64 }}
      ```
**Nota**  
Questo valore avvia un'istanza Amazon EC2 utilizzando l'ID Amazon Linux Amazon Machine Image 2023 AMI () più recente. Se si desidera utilizzare un AMI diverso, sostituire il valore con il proprio ID AMI.

   1. Per **Descrizione**, inserisci quanto segue.

      ```
      (Optional) The AMI ID to use for launching the instance. The default value uses the latest released Amazon Linux 2023 AMI ID.
      ```

1. Scegli **Aggiungi un parametro** per creare il secondo parametro, **tagValue** e inserisci quanto segue.

   1. Per **Nome parametro**, inserisci **tagValue**.

   1. In **Tipo**, scegli **String**.

   1. Per **Obbligatorio**, scegli `No`. 

   1. In **Valore predefinito**, inserisci **LaunchedBySsmAutomation**. Questo aggiunge il valore di coppia di chiavi tag `Name:LaunchedBySsmAutomation` all'istanza.

   1. Per **Descrizione**, inserisci quanto segue.

      ```
      (Optional) The tag value to add to the instance. The default value is LaunchedBySsmAutomation.
      ```

1. Scegli **Aggiungi un parametro** per creare il terzo parametro, **instanceType** e inserisci le informazioni seguenti.

   1. Per **Nome parametro**, inserisci **instanceType**.

   1. In **Tipo**, scegli **String**.

   1. Per **Obbligatorio**, scegli `No`. 

   1. In **Valore predefinito**, inserisci **t2.micro**.

   1. Per **Descrizione parametro**, inserisci quanto segue.

      ```
      (Optional) The instance type to use for the instance. The default value is t2.micro.
      ```

1. Espandi **Tipo di destinazione** e scegli **"/"**.

1. (Facoltativo) Espandi **Tag documento** per applicare i tag delle risorse al runbook. Per **Chiave tag**, inserisci **Purpose** e per **Valore tag**, inserisci **LaunchInstanceAndCheckState**.

1. Nella sezione **Fase 1**, completa i passaggi seguenti.

   1. Per **Nome della fase**, inserisci questo nome descrittivo di fase per la prima fase dell'automazione: **LaunchEc2Instance**.

   1. Per **Tipo operazione**, scegli **Esegui uno script** (**aws:executeScript**).

   1. In **Descrizione**, inserisci una descrizione per la fase di automazione, ad esempio la seguente.

      ```
      **About This Step**
          
          This step first launches an EC2 instance using the ```aws:executeScript``` action and the provided script.
      ```

   1. Espandi **Input**.

   1. In **Runtime**, scegli il linguaggio di runtime da utilizzare per eseguire lo script fornito.

   1. Per **Gestore**, inserisci **launch\$1instance**. Questo è il nome della funzione dichiarato nello script seguente.
**Nota**  
Questo non è richiesto per. PowerShell

   1. Per **Script**, sostituire i contenuti predefiniti con i seguenti. Assicurarsi di abbinare lo script con il valore di runtime corrispondente.

------
#### [ Python ]

      ```
      def launch_instance(events, context):
            import boto3
            ec2 = boto3.client('ec2')
          
            image_id = events['image_id']
            tag_value = events['tag_value']
            instance_type = events['instance_type']
          
            tag_config = {'ResourceType': 'instance', 'Tags': [{'Key':'Name', 'Value':tag_value}]}
          
            res = ec2.run_instances(ImageId=image_id, InstanceType=instance_type, MaxCount=1, MinCount=1, TagSpecifications=[tag_config])
          
            instance_id = res['Instances'][0]['InstanceId']
          
            print('[INFO] 1 EC2 instance is successfully launched', instance_id)
          
            return { 'InstanceId' : instance_id }
      ```

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

      ```
      Install-Module AWS.Tools.EC2 -Force
          Import-Module AWS.Tools.EC2
          
          $payload = $env:InputPayload | ConvertFrom-Json
          
          $imageid = $payload.image_id
          
          $tagvalue = $payload.tag_value
          
          $instanceType = $payload.instance_type
          
          $type = New-Object Amazon.EC2.InstanceType -ArgumentList $instanceType
          
          $resource = New-Object Amazon.EC2.ResourceType -ArgumentList 'instance'
          
          $tag = @{Key='Name';Value=$tagValue}
          
          $tagSpecs = New-Object Amazon.EC2.Model.TagSpecification
          
          $tagSpecs.ResourceType = $resource
          
          $tagSpecs.Tags.Add($tag)
          
          $res = New-EC2Instance -ImageId $imageId -MinCount 1 -MaxCount 1 -InstanceType $type -TagSpecification $tagSpecs
          
          return @{'InstanceId'=$res.Instances.InstanceId}
      ```

------

   1. Espandi **Input aggiuntivi**. 

   1. Per **Inserisci il nome**, scegli **InputPayload**. Per **Valore di input**, inserisci i seguenti dati YAML. 

      ```
      image_id: "{{ imageId }}"
          tag_value: "{{ tagValue }}"
          instance_type: "{{ instanceType }}"
      ```

1. Espandi **Output** ed effettua le seguenti operazioni:
   + In **Nome**, inserisci **payload**.
   + Per **Selettore**, inserisci **\$1.Payload**.
   + In **Tipo**, scegli `StringMap`.

1. Scegli **Aggiungi fase** per aggiungere una seconda fase al runbook. La seconda fase interroga lo stato dell'istanza avviata nella fase 1 e attende fino a quando lo stato restituito è `ok`.

1. Nella sezione **Fase 2** effettua le seguenti operazioni.

   1. Per **Nome fase**, inserisci questo nome descrittivo per la seconda fase dell'automazione: **WaitForInstanceStatusOk**.

   1. Per **Tipo operazione**, scegli **Esegui uno script** (**aws:executeScript**).

   1. In **Descrizione**, inserisci una descrizione per la fase di automazione, ad esempio la seguente.

      ```
      **About This Step**
          
          The script continuously polls the instance status check value for the instance launched in Step 1 until the ```ok``` status is returned.
      ```

   1. In **Runtime**, scegli il linguaggio di runtime da utilizzare per l'esecuzione dello script fornito.

   1. Per **Gestore**, inserisci **poll\$1instance**. Questo è il nome della funzione dichiarato nello script seguente.
**Nota**  
Questo non è necessario per PowerShell.

   1. Per **Script**, sostituire i contenuti predefiniti con i seguenti. Assicurarsi di abbinare lo script con il valore di runtime corrispondente.

------
#### [ Python ]

      ```
      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}
      ```

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

      ```
          Install-Module AWS.Tools.EC2 -Force
          
          $inputPayload = $env:InputPayload | ConvertFrom-Json
          
          $instanceId = $inputPayload.payload.InstanceId
          
          $status = Get-EC2InstanceStatus -InstanceId $instanceId
          
          while ($status.Status.Status -ne 'ok'){
             Write-Host 'Polling get status of the instance', $instanceId
          
             Start-Sleep -Seconds 5
          
             $status = Get-EC2InstanceStatus -InstanceId $instanceId
          }
          
          return @{Status = $status.Status.Status; InstanceId = $instanceId}
      ```

------

   1. Espandi **Input aggiuntivi**. 

   1. Per **Inserisci il nome**, scegli **InputPayload**. Per **Valore di input**, inserisci quanto segue:

      ```
      {{ LaunchEc2Instance.payload }}
      ```

1. Scegliere **Create automation (Crea automazione)** per salvare il runbook.

# Utilizzo di script nei runbook
<a name="automation-document-script-considerations"></a>

I runbook Automation supportano l'esecuzione di script come parte dell'automazione. L'automazione è uno strumento di AWS Systems Manager. Utilizzando i runbook, è possibile eseguire script direttamente in AWS senza dover creare un ambiente di calcolo separato per eseguire gli script. Poiché i runbook possono eseguire passaggi di script insieme ad altri tipi di fasi di automazione, ad esempio le approvazioni, è possibile di intervenire manualmente in situazioni critiche o ambigue. Puoi inviare l'output `aws:executeScript` delle azioni nei tuoi runbook ad Amazon CloudWatch Logs. Per ulteriori informazioni, consulta [Registrazione dell'output dell'azione di automazione con CloudWatch Logs](automation-action-logging.md).

## Autorizzazioni per l'utilizzo di runbook
<a name="script-permissions"></a>

Per utilizzare un runbook, Systems Manager deve utilizzare le autorizzazioni di un ruolo AWS Identity and Access Management (IAM). Il metodo utilizzato dal servizio di automazione per stabilire quali autorizzazioni del ruolo utilizzare dipende da alcuni fattori e dal fatto che una fase utilizza o meno l'operazione `aws:executeScript`. 

Per i runbook che non utilizzano `aws:executeScript`, il servizio di automazione utilizza una delle due fonti di autorizzazione:
+ Le autorizzazioni di un ruolo di servizio IAM, o ruolo presunto, specificate nel runbook o passate come parametro.
+ Se non viene specificato alcun ruolo di servizio IAM, le autorizzazioni dell'utente che ha avviato l'automazione. 

Quando una fase di un runbook include l'`aws:executeScript`azione, tuttavia, è sempre richiesto un ruolo di servizio IAM (Assume role) se il Python PowerShell o lo script specificato per l'azione richiamano AWS qualsiasi operazione API. Il servizio di automazione verifica questo ruolo nell'ordine seguente:
+ Le autorizzazioni di un ruolo di servizio IAM, o ruolo presunto, specificate nel runbook o passate come parametro.
+ Se non viene trovato alcun ruolo, Automation tenta di eseguire il Python o PowerShell lo script specificato per `aws:executeScript` senza alcuna autorizzazione. Se lo script chiama un'operazione AWS API (ad esempio l'operazione Amazon EC2`CreateImage`) o tenta di agire su una AWS risorsa (come un'istanza EC2), il passaggio contenente lo script ha esito negativo e Systems Manager restituisce un messaggio di errore che riporta l'errore. 

## Aggiunta di script ai runbook
<a name="adding-scripts"></a>

È possibile aggiungere script ai runbook includendo lo script in linea come parte di una fase nel runbook. È inoltre possibile allegare script al runbook caricando gli script dal computer locale o specificando un bucket di Amazon Simple Storage Service (Amazon S3) in cui si trovano gli script. Al termine di una fase che esegue uno script, l'output dello script è disponibile come oggetto JSON, che è possibile utilizzare come input per le fasi successive nel runbook. Per ulteriori informazioni sull'operazione `aws:executeScript` e su come utilizzare gli allegati per gli script, consulta [`aws:executeScript`: esecuzione di uno script](automation-action-executeScript.md).

## Vincoli di script per i runbook
<a name="script-constraints"></a>

I runbook applicano un limite di cinque file allegati. Gli script possono avere la forma di uno script Python (.py), PowerShell uno script Core (.ps1) o allegati come contenuto all'interno di un file.zip.

# Utilizzo di istruzioni condizionali nei runbook
<a name="automation-branch-condition"></a>

Per impostazione predefinita, le fasi definite nella sezione `mainSteps` di un runbook vengono eseguite in ordine sequenziale. Al completamento di un'operazione viene avviata l'esecuzione dell'operazione successiva specificata nella sezione `mainSteps`. Inoltre, se l'esecuzione di un'operazione ha esito negativo, l'intera automazione avrà esito negativo (per impostazione predefinita). È possibile utilizzare l'operazione di automazione `aws:branch` e le opzioni disponibili nel runbook descritte in questa sezione per creare automazioni che eseguono il *branching condizionale*. Ciò significa che è possibile creare automazioni che passano a una fase diversa dopo aver valutato le diverse scelte disponibili o che rispondono in modo dinamico alle modifiche in seguito al completamento di una fase. Ecco un elenco di opzioni che è possibile utilizzare per creare automazioni dinamiche:
+ **`aws:branch`**: questa operazione di automazione consente di creare un'automazione dinamica che valuta le diverse scelte disponibili in una singola fase e quindi passa a una fase diversa nel runbook in base ai risultati di tale valutazione.
+ **`nextStep`**: questa opzione specifica la successiva fase in un'automazione da elaborare dopo il completamento di una fase. 
+ **`isEnd`**: questa opzione arresta l'automazione alla fine di una fase specifica. Il valore predefinito di questa opzione è "false".
+ **`isCritical`**: questa opzione designa una fase come fase critica per il corretto completamento dell'automazione. Se una fase con questa definizione ha esito negativo, il servizio di automazione restituisce come stato finale dell'automazione il valore `Failed`. Il valore predefinito per questa opzione è `true`.
+ **`onFailure`**: questa opzione indica se, in caso di errore, l'automazione deve interrompersi, continuare o passare a un'altra fase. Il valore predefinito di questa opzione è "abort".

Nella sezione seguente viene descritto l'operazione di automazione `aws:branch`. Per ulteriori informazioni sulle opzioni `nextStep`, `isEnd`, `isCritical` e `onFailure`, consulta [Esempio di runbook `aws:branch`](#branch-runbook-examples).

## Utilizzo dell'agente `aws:branch`
<a name="branch-action-explained"></a>

L'operazione `aws:branch` rende disponibile la maggior parte delle opzioni di branching condizionale per le automazioni. Come indicato in precedenza, questa operazione consente all'automazione di valutare più condizioni in un'unica fase e quindi di passare a una nuova fase in base ai risultati di tale valutazione. L'operazione `aws:branch` è simile a un'istruzione `IF-ELIF-ELSE` in un ambiente di programmazione.

Di seguito viene riportato un esempio YAML di una fase `aws:branch`:

```
- name: ChooseOSforCommands
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runPowerShellCommand
      Variable: "{{GetInstance.platform}}"
      StringEquals: Windows
    - NextStep: runShellCommand
      Variable: "{{GetInstance.platform}}"
      StringEquals: Linux
    Default:
      PostProcessing
```

Quando per una fase viene specificata l'operazione `aws:branch`, è necessario specificare l'elemento `Choices` che l'automazione deve valutare. L'automazione può valutare l'elemento `Choices` in base al valore di un parametro specificato nella sezione `Parameters` del runbook. L'automazione può inoltre valutare l'elemento `Choices` in base all'output di una fase precedente.

L'automazione valuta ogni scelta utilizzando un'espressione booleana. Se la valutazione stabilisce che la prima scelta abbia il valore `true`, l'automazione passa alla fase definita per tale scelta. Se la valutazione stabilisce che la prima scelta abbia il valore `false`, l'automazione valuta la scelta successiva. Se la fase include tre o più elementi `Choices`, l'automazione valuta ogni scelta in ordine sequenziale finché la valutazione di una scelta non restituisce `true`. L'automazione passa quindi alla fase definita per la scelta di tipo `true`.

Se nessuna delle `Choices` restituisce `true`, l'automazione controlla se la fase contiene un valore `Default`. Un valore `Default` definisce una fase a cui l'automazione deve passare se nessuna delle scelte restituisce `true`. Se non è stato specificato alcun valore di `Default` per la fase, l'automazione elabora la fase successiva nel runbook.

Ecco un `aws:branch` passaggio in YAML chiamato **choose OSfrom** Parameter. La fase include due elementi `Choices`: (`NextStep: runWindowsCommand`) e (`NextStep: runLinuxCommand`). L'automazione valuta questi elementi `Choices` per determinare il comando da eseguire per il sistema operativo appropriato. L'elemento `Variable` per ciascuna scelta usa `{{OSName}}`, ovvero un parametro che l'autore del runbook ha definito nella sezione `Parameters` del runbook.

```
mainSteps:
- name: chooseOSfromParameter
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runWindowsCommand
      Variable: "{{OSName}}"
      StringEquals: Windows
    - NextStep: runLinuxCommand
      Variable: "{{OSName}}"
      StringEquals: Linux
```

**Ecco un `aws:branch` passaggio in YAML chiamato choose Output. OSfrom** La fase include due elementi `Choices`: (`NextStep: runPowerShellCommand`) e (`NextStep: runShellCommand`). L'automazione valuta questi elementi `Choices` per determinare il comando da eseguire per il sistema operativo appropriato. L'elemento `Variable` per ciascuna scelta usa `{{GetInstance.platform}}`, ovvero l'output da una fase precedente nel runbook. Questo esempio include anche un'opzione denominata `Default`. Se l'automazione valuta entrambi gli elementi `Choices` e nessuna delle due scelte restituisce `true`, l'automazione passa alla fase denominata `PostProcessing`.

```
mainSteps:
- name: chooseOSfromOutput
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runPowerShellCommand
      Variable: "{{GetInstance.platform}}"
      StringEquals: Windows
    - NextStep: runShellCommand
      Variable: "{{GetInstance.platform}}"
      StringEquals: Linux
    Default:
      PostProcessing
```

### Creazione di una fase `aws:branch` in un runbook
<a name="create-branch-action"></a>

Quando in un runbook viene creata una fase `aws:branch`, viene definito l'elemento `Choices` che l'automazione deve valutare per determinare a quale fase successiva deve passare. Come specificato precedentemente, gli elementi `Choices` vengono valutati utilizzando un'espressione booleana. Ogni scelta deve definire le seguenti opzioni:
+ **NextStep**: Il passaggio successivo del runbook da elaborare se la scelta designata è. `true`
+ **Variabile**: specifica il nome di un parametro definito nella sezione `Parameters` del runbook, una variabile definita nella sezione `Variables`, oppure specifica un oggetto di output da una fase precedente.

  Specifica i valori delle variabili utilizzando il formato seguente.

  `Variable: "{{variable name}}"`

  Specifica i valori dei parametri utilizzando il formato seguente.

  `Variable: "{{parameter name}}"`

  Specificare le variabili degli oggetti di output utilizzando il formato seguente:

  `Variable: "{{previousStepName.outputName}}"`
**Nota**  
La creazione della variabile di output è descritta in dettaglio nella sezione successiva, [Informazioni sulla creazione della variabile di output](#branch-action-output).
+ **Operation**: i criteri utilizzati per valutare la scelta, ad esempio `StringEquals: Linux`. L'operazione `aws:branch` supporta le operazioni seguenti:

**Operazioni di stringa**
  + StringEquals
  + EqualsIgnoreCase
  + StartsWith
  + EndsWith
  + Contiene

**Operazioni numeriche**
  + NumericEquals
  + NumericGreater
  + NumericLesser
  + NumericGreaterOrEquals
  + NumericLesser
  + NumericLesserOrEquals

**Operazioni booleane**
  + BooleanEquals
**Importante**  
Quando si crea un runbook, il sistema convalida ogni operazione nel runbook. Se un'operazione non è supportata, il sistema restituisce un errore quando si tenta di creare il runbook.
+ **Default**: specificare una fase di fallback (alternativa) a cui l'automazione deve passare, se nessuno degli elementi `Choices` restituisce `true`.
**Nota**  
Se non si desidera specificare un valore `Default`, è possibile specificare l'opzione `isEnd`. Se nessuno degli elementi `Choices` restituisce `true` e non viene specificato alcun valore `Default`, l'automazione viene arrestata alla fine della fase.

Utilizza i seguenti modelli per creare la fase `aws:branch` nei runbook: Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

```
mainSteps:
- name: step name
  action: aws:branch
  inputs:
    Choices:
    - NextStep: step to jump to if evaluation for this choice is true
      Variable: "{{parameter name or output from previous step}}"
      Operation type: Operation value
    - NextStep: step to jump to if evaluation for this choice is true
      Variable: "{{parameter name or output from previous step}}"
      Operation type: Operation value
    Default:
      step to jump to if all choices are false
```

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

```
{
   "mainSteps":[
      {
         "name":"a name for the step",
         "action":"aws:branch",
         "inputs":{
            "Choices":[
               {
                  "NextStep":"step to jump to if evaluation for this choice is true",
                  "Variable":"{{parameter name or output from previous step}}",
                  "Operation type":"Operation value"
               },
               {
                  "NextStep":"step to jump to if evaluation for this choice is true",
                  "Variable":"{{parameter name or output from previous step}}",
                  "Operation type":"Operation value"
               }
            ],
            "Default":"step to jump to if all choices are false"
         }
      }
   ]
}
```

------

#### Informazioni sulla creazione della variabile di output
<a name="branch-action-output"></a>

Per creare una scelta `aws:branch` che fa riferimento all'output restituito da una fase precedente, è necessario identificare il nome della fase precedente e il nome del campo di output. È quindi possibile combinare i nomi della fase e del campo utilizzando il formato seguente.

`Variable: "{{previousStepName.outputName}}"`

Ad esempio, la prima fase dell'esempio riportato di seguito è denominata `GetInstance`. In `outputs` è presente un campo denominato `platform`. Nella seconda fase (`ChooseOSforCommands`), l'autore vuole fare riferimento all'output del campo "platform" come variabile. Per creare la variabile, è sufficiente combinare il nome del passaggio (GetInstance) e il nome del campo di output (piattaforma) da creare`Variable: "{{GetInstance.platform}}"`.

```
mainSteps:
- Name: GetInstance
  action: aws:executeAwsApi
  inputs:
    Service: ssm
    Api: DescribeInstanceInformation
    Filters:
    - Key: InstanceIds
      Values: ["{{ InstanceId }}"]
  outputs:
  - Name: myInstance
    Selector: "$.InstanceInformationList[0].InstanceId"
    Type: String
  - Name: platform
    Selector: "$.InstanceInformationList[0].PlatformType"
    Type: String
- name: ChooseOSforCommands
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runPowerShellCommand
      Variable: "{{GetInstance.platform}}"
      StringEquals: Windows
    - NextStep: runShellCommand
      Variable: "{{GetInstance.platform}}"
      StringEquals: Linux
    Default:
      Sleep
```

Ecco un esempio che mostra come *"Variable": "\$1\$1 describeInstance.Platform \$1\$1"* viene creato dal passaggio precedente e dall'output.

```
- name: describeInstance
  action: aws:executeAwsApi
  onFailure: Abort
  inputs:
    Service: ec2
    Api: DescribeInstances
    InstanceIds:
    - "{{ InstanceId }}"
  outputs:
  - Name: Platform
    Selector: "$.Reservations[0].Instances[0].Platform"
    Type: String
  nextStep: branchOnInstancePlatform
- name: branchOnInstancePlatform
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runEC2RescueForWindows
      Variable: "{{ describeInstance.Platform }}"
      StringEquals: windows
    Default: runEC2RescueForLinux
```

### Esempio di runbook `aws:branch`
<a name="branch-runbook-examples"></a>

Di seguito sono elencati alcuni runbook di esempio che utilizzano `aws:branch`.

**Esempio 1: utilizzo di `aws:branch` con una variabile di output per eseguire comandi in base al tipo di sistema operativo**

Nella prima fase di questo esempio (`GetInstance`), l'autore del runbook utilizza l'operazione `aws:executeAwsApi` per chiamare l'operazione API `ssm` `DescribeInstanceInformation`. L'autore usa questa operazione per determinare il tipo di sistema operativo utilizzato da un'istanza. L'operazione `aws:executeAwsApi` restituisce l'ID dell'istanza e il tipo di piattaforma.

Nella seconda fase (`ChooseOSforCommands`) l'autore usa l'operazione `aws:branch` con due elementi `Choices` (`NextStep: runPowerShellCommand`) e (`NextStep: runShellCommand`). L'automazione valuta il sistema operativo dell'istanza utilizzando l'output della fase precedente (`Variable: "{{GetInstance.platform}}"`). L'automazione passa a una fase relativa al sistema operativo designato.

```
---
schemaVersion: '0.3'
assumeRole: "{{AutomationAssumeRole}}"
parameters:
  AutomationAssumeRole:
    default: ""
    type: String
mainSteps:
- name: GetInstance
  action: aws:executeAwsApi
  inputs:
    Service: ssm
    Api: DescribeInstanceInformation
  outputs:
  - Name: myInstance
    Selector: "$.InstanceInformationList[0].InstanceId"
    Type: String
  - Name: platform
    Selector: "$.InstanceInformationList[0].PlatformType"
    Type: String
- name: ChooseOSforCommands
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runPowerShellCommand
      Variable: "{{GetInstance.platform}}"
      StringEquals: Windows
    - NextStep: runShellCommand
      Variable: "{{GetInstance.platform}}"
      StringEquals: Linux
    Default:
      Sleep
- name: runShellCommand
  action: aws:runCommand
  inputs:
    DocumentName: AWS-RunShellScript
    InstanceIds:
    - "{{GetInstance.myInstance}}"
    Parameters:
      commands:
      - ls
  isEnd: true
- name: runPowerShellCommand
  action: aws:runCommand
  inputs:
    DocumentName: AWS-RunPowerShellScript
    InstanceIds:
    - "{{GetInstance.myInstance}}"
    Parameters:
      commands:
      - ls
  isEnd: true
- name: Sleep
  action: aws:sleep
  inputs:
    Duration: PT3S
```

**Esempio 2: utilizzo di `aws:branch` con una variabile di parametro per eseguire comandi in base al tipo di sistema operativo**

L'autore del runbook definisce diverse opzioni di parametro all'inizio del documento nella sezione `parameters`. Uno dei parametri è denominato `OperatingSystemName`. Nella prima fase (`ChooseOS`) l'autore usa l'operazione `aws:branch` con due `Choices` (`NextStep: runWindowsCommand`) e (`NextStep: runLinuxCommand`). La variabile per questi elementi `Choices` fa riferimento all'opzione di parametro specificato nella sezione parametri (`Variable: "{{OperatingSystemName}}"`). Quando l'utente esegue questo runbook, deve specificare un valore di runtime per `OperatingSystemName`. L'automazione utilizza il parametro di runtime durante la valutazione di `Choices`. L'automazione passa a una fase per il sistema operativo designato in base al parametro di runtime specificato per `OperatingSystemName`.

```
---
schemaVersion: '0.3'
assumeRole: "{{AutomationAssumeRole}}"
parameters:
  AutomationAssumeRole:
    default: ""
    type: String
  OperatingSystemName:
    type: String
  LinuxInstanceId:
    type: String
  WindowsInstanceId:
    type: String
mainSteps:
- name: ChooseOS
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runWindowsCommand
      Variable: "{{OperatingSystemName}}"
      StringEquals: windows
    - NextStep: runLinuxCommand
      Variable: "{{OperatingSystemName}}"
      StringEquals: linux
    Default:
      Sleep
- name: runLinuxCommand
  action: aws:runCommand
  inputs:
    DocumentName: "AWS-RunShellScript"
    InstanceIds:
    - "{{LinuxInstanceId}}"
    Parameters:
      commands:
      - ls
  isEnd: true
- name: runWindowsCommand
  action: aws:runCommand
  inputs:
    DocumentName: "AWS-RunPowerShellScript"
    InstanceIds:
    - "{{WindowsInstanceId}}"
    Parameters:
      commands:
      - date
  isEnd: true
- name: Sleep
  action: aws:sleep
  inputs:
    Duration: PT3S
```

### Creazione di automazioni con branching complesso con operatori
<a name="branch-operators"></a>

Puoi creare automazioni con branching complesso utilizzando gli operatori `And`, `Or` e `Not` nelle fasi `aws:branch`.

**Operatore "And"**  
Utilizza l'operatore `And` quando vuoi che più variabili restituiscano `true` per una scelta. Nell'esempio seguente la prima scelta valuta se un'istanza è `running` e usa il sistema operativo `Windows`. Se la valutazione di *entrambe* le variabili restituisce "true", l'automazione passa alla fase `runPowerShellCommand`. Se una o più variabili restituisce `false`, l'automazione valuta le variabili della seconda scelta.

```
mainSteps:
- name: switch2
  action: aws:branch
  inputs:
    Choices:
    - And:
      - Variable: "{{GetInstance.pingStatus}}"
        StringEquals: running
      - Variable: "{{GetInstance.platform}}"
        StringEquals: Windows
      NextStep: runPowerShellCommand

    - And:
      - Variable: "{{GetInstance.pingStatus}}"
        StringEquals: running
      - Variable: "{{GetInstance.platform}}"
        StringEquals: Linux
      NextStep: runShellCommand
    Default:
      sleep3
```

**Operatore "Or"**  
Utilizza l'operatore `Or` quando vuoi che una *qualsiasi* di più variabili restituisca "true" per una scelta. Nell'esempio seguente la prima scelta valuta se una stringa di parametro è `Windows` e se l'output da una fase AWS Lambda è "true". Se la valutazione determina che *una* di queste variabili restituisce "true", l'automazione passa alla fase `RunPowerShellCommand`. Se entrambe le variabili restituiscono "false", l'automazione valuta le variabili della seconda scelta.

```
- Or:
  - Variable: "{{parameter1}}"
    StringEquals: Windows
  - Variable: "{{BooleanParam1}}"
    BooleanEquals: true
  NextStep: RunPowershellCommand
- Or:
  - Variable: "{{parameter2}}"
    StringEquals: Linux
  - Variable: "{{BooleanParam2}}"
    BooleanEquals: true
  NextStep: RunShellScript
```

**Operatore "Not"**  
Utilizza l'operatore `Not` quando vuoi passare a una fase definita quando una variabile *non* restituisce "true". Nell'esempio seguente la prima scelta valuta se una stringa di parametro è `Not Linux`. Se la valutazione determina che la variabile non è Linux, l'automazione passa alla fase `sleep2`. Se la valutazione della prima scelta determina che *è* Linux, l'automazione valuta la scelta successiva.

```
mainSteps:
- name: switch
  action: aws:branch
  inputs:
    Choices:
    - NextStep: sleep2
      Not:
        Variable: "{{testParam}}"
        StringEquals: Linux
    - NextStep: sleep1
      Variable: "{{testParam}}"
      StringEquals: Windows
    Default:
      sleep3
```

## Esempi di utilizzo delle opzioni condizionali
<a name="conditional-examples"></a>

In questa sezione sono riportati diversi esempi di come utilizzare le opzioni dinamiche in un runbook. Ogni esempio in questa sezione estende le funzionalità del runbook seguente. Il runbook include due operazioni. La prima operazione è denominata `InstallMsiPackage`. Utilizza l'operazione `aws:runCommand` per installare un'applicazione su un'istanza di Windows Server. La seconda operazione è denominata `TestInstall`. Utilizza l'operazione `aws:invokeLambdaFunction` per eseguire un test dell'applicazione installata se l'applicazione è stata installata correttamente. La fase una specifica `onFailure: Abort`. Ciò significa che se l'applicazione non è stata installata correttamente, l'automazione viene interrotta prima della fase due.

**Esempio 1: runbook con due operazioni lineari**

```
---
schemaVersion: '0.3'
description: Install MSI package and run validation.
assumeRole: "{{automationAssumeRole}}"
parameters:
  automationAssumeRole:
    type: String
    description: "(Required) Assume role."
  packageName:
    type: String
    description: "(Required) MSI package to be installed."
  instanceIds:
    type: String
    description: "(Required) Comma separated list of instances."
mainSteps:
- name: InstallMsiPackage
  action: aws:runCommand
  maxAttempts: 2
  onFailure: Abort
  inputs:
    InstanceIds:
    - "{{instanceIds}}"
    DocumentName: AWS-RunPowerShellScript
    Parameters:
      commands:
      - msiexec /i {{packageName}}
- name: TestInstall
  action: aws:invokeLambdaFunction
  maxAttempts: 1
  timeoutSeconds: 500
  inputs:
    FunctionName: TestLambdaFunction
...
```

**Creazione di un'automazione dinamica che passa a fasi diverse mediante l'opzione `onFailure`**

L'esempio seguente utilizza le opzioni `onFailure: step:step name`, `nextStep` e `isEnd` per creare un'automazione dinamica. In questo esempio, se l'`InstallMsiPackage`azione fallisce, l'automazione passa a un'azione chiamata *PostFailure*(`onFailure: step:PostFailure`) per eseguire una AWS Lambda funzione per eseguire un'azione nel caso in cui l'installazione non riesca. Se l'installazione ha esito positivo, l'automazione passa all' TestInstall azione (). `nextStep: TestInstall` Le fasi `TestInstall` e `PostFailure` usano entrambe l'opzione `isEnd` (`isEnd: true`) in modo tale che l'automazione termini al completamento di una di queste due fasi.

**Nota**  
L'uso dell'opzione `isEnd` nell'ultima fase della sezione `mainSteps` è facoltativo. Se l'ultima fase non passa ad altre fasi, l'automazione viene interrotta dopo l'esecuzione dell'operazione nell'ultima fase.

**Esempio 2: un'automazione dinamica che passa a diverse fasi**

```
mainSteps
- name: InstallMsiPackage
  action: aws:runCommand
  onFailure: step:PostFailure
  maxAttempts: 2
  inputs:
    InstanceIds:
    - "{{instanceIds}}"
    DocumentName: AWS-RunPowerShellScript
    Parameters:
      commands:
      - msiexec /i {{packageName}}
  nextStep: TestInstall
- name: TestInstall
  action: aws:invokeLambdaFunction
  maxAttempts: 1
  timeoutSeconds: 500
  inputs:
    FunctionName: TestLambdaFunction
  isEnd: true
- name: PostFailure
  action: aws:invokeLambdaFunction
  maxAttempts: 1
  timeoutSeconds: 500
  inputs:
    FunctionName: PostFailureRecoveryLambdaFunction
  isEnd: true
...
```

**Nota**  
Prima di elaborare un runbook, il sistema verifica che il runbook non crei un loop infinito. Se viene rilevato un loop infinito, il servizio di automazione restituisce un errore e una traccia a forma di cerchio che evidenzia le fasi che causano il loop.

**Creazione di un'automazione dinamica che definisce le fasi critiche**

È possibile specificare una fase come fase critica per il successo complessivo dell'automazione. Se una fase critica ha esito negativo, il servizio di automazione indica lo stato dell'automazione come `Failed`, anche se una o più fasi sono state eseguite correttamente. Nell'esempio seguente, l'utente identifica il *VerifyDependencies*passaggio se il *InstallMsiPackage*passaggio fallisce (). `onFailure: step:VerifyDependencies` L'utente specifica che la fase `InstallMsiPackage` non è una fase critica (`isCritical: false`). In questo esempio, se l'applicazione non viene installata, il servizio di automazione elabora la fase `VerifyDependencies` per determinare se mancano una o più dipendenze; è proprio la mancanza di una dipendenza il motivo che ha causato la mancata installazione dell'applicazione. 

**Esempio 3: definizione delle fasi critiche per l'automazione **

```
---
name: InstallMsiPackage
action: aws:runCommand
onFailure: step:VerifyDependencies
isCritical: false
maxAttempts: 2
inputs:
  InstanceIds:
  - "{{instanceIds}}"
  DocumentName: AWS-RunPowerShellScript
  Parameters:
    commands:
    - msiexec /i {{packageName}}
nextStep: TestPackage
...
```

# Utilizzo degli output delle operazioni come input
<a name="automation-action-outputs-inputs"></a>

Diverse operazioni di automazione restituiscono output predefiniti. Puoi passare questi output come input ai passaggi successivi nel runbook usando il formato `{{stepName.outputName}}`. Puoi inoltre definire output personalizzati per varie operazioni di automazione nei tuoi runbook. Ciò consente di eseguire script o richiamare operazioni API per altre Servizi AWS volte in modo da poter riutilizzare i valori come input nelle azioni successive. I tipi di parametri nei runbook sono statici. Ciò significa che il tipo di parametro non può essere modificato dopo che è stato definito. Per definire l'output di un passaggio, completa i seguenti campi:
+ Nome (obbligatorio): il nome dell'output utilizzato per fare riferimento al valore di output nei passaggi successivi.
+ Selettore: (Obbligatorio) L' JSONPath espressione utilizzata per determinare il valore di output.
+ Tipo: (facoltativo) il tipo di dati del valore restituito dal campo del selettore. I valori di tipo validi sono `String`, `Integer`, `Boolean`, `StringList`, `StringMap`, `MapList`. Il valore predefinito è `String`.

Se il valore di un output non corrisponde al tipo di dati specificato, Automation prova a convertire il tipo di dati. Ad esempio, se il valore restituito è un `Integer`, ma il `Type` specificato è `String`, allora il valore dell'output finale è un valore `String`. Sono supportati i seguenti tipi di conversione:
+ I valori `String` possono essere convertiti in `StringList`, `Integer` e `Boolean`.
+ I valori `Integer` possono essere convertiti in `String`, e `StringList`.
+ I valori `Boolean` possono essere convertiti in `String`, e `StringList`.
+ I valori `StringList`, `IntegerList` o `BooleanList` contenenti un elemento possono essere convertiti in `String``Integer` o `Boolean`.

Quando si utilizzano parametri o output con operazioni di automazione, il tipo di dati non può essere modificato dinamicamente all'interno dell'input di un'operazione.

Di seguito è riportato un runbook di esempio che illustra come definire gli output delle operazioni e come utilizzare tale valore come input per un'operazione successiva. l runbook eseguono le operazioni seguenti:
+ Utilizza l'`aws:executeAwsApi`azione per richiamare l'operazione dell' DescribeImages API Amazon EC2 per ottenere il nome di uno specifico Windows Server 2016. AMI Restituisce l'ID immagine come `ImageId`.
+ Utilizza l'`aws:executeAwsApi`azione per richiamare l'operazione dell' RunInstances API Amazon EC2 per avviare un'istanza che utilizza l'operazione del `ImageId` passaggio precedente. Restituisce l'ID di istanza come `InstanceId`.
+ Utilizza l'` aws:waitForAwsResourceProperty`azione per eseguire il polling dell'operazione dell'API Amazon DescribeInstanceStatus EC2 per attendere che l'istanza `running` raggiunga lo stato. Il timeout dell'operazione è pari a 60 secondi. Si verifica il timeout della fase se l'istanza non raggiunge lo stato `running` dopo 60 secondi dall'avvio del polling.
+ Utilizza l'operazione `aws:assertAwsResourceProperty` per chiamare l'operazione API `DescribeInstanceStatus` di Amazon EC2 per affermare che l'istanza si trova nello stato `running`. La fase ha esito negativo se lo stato dell'istanza non è `running`.

```
---
description: Sample runbook using AWS API operations
schemaVersion: '0.3'
assumeRole: "{{ AutomationAssumeRole }}"
parameters:
  AutomationAssumeRole:
    type: String
    description: "(Optional) The ARN of the role that allows Automation to perform the actions on your behalf."
    default: ''
  ImageName:
    type: String
    description: "(Optional) Image Name to launch EC2 instance with."
    default: "Windows_Server-2022-English-Full-Base*"
mainSteps:
- name: getImageId
  action: aws:executeAwsApi
  inputs:
    Service: ec2
    Api: DescribeImages
    Filters:  
    - Name: "name"
      Values: 
      - "{{ ImageName }}"
  outputs:
  - Name: ImageId
    Selector: "$.Images[0].ImageId"
    Type: "String"
- name: launchOneInstance
  action: aws:executeAwsApi
  inputs:
    Service: ec2
    Api: RunInstances
    ImageId: "{{ getImageId.ImageId }}"
    MaxCount: 1
    MinCount: 1
  outputs:
  - Name: InstanceId
    Selector: "$.Instances[0].InstanceId"
    Type: "String"
- name: waitUntilInstanceStateRunning
  action: aws:waitForAwsResourceProperty
  timeoutSeconds: 60
  inputs:
    Service: ec2
    Api: DescribeInstanceStatus
    InstanceIds:
    - "{{ launchOneInstance.InstanceId }}"
    PropertySelector: "$.InstanceStatuses[0].InstanceState.Name"
    DesiredValues:
    - running
- name: assertInstanceStateRunning
  action: aws:assertAwsResourceProperty
  inputs:
    Service: ec2
    Api: DescribeInstanceStatus
    InstanceIds:
    - "{{ launchOneInstance.InstanceId }}"
    PropertySelector: "$.InstanceStatuses[0].InstanceState.Name"
    DesiredValues:
    - running
outputs:
- "launchOneInstance.InstanceId"
...
```

Ciascuna delle operazioni di automazione precedentemente descritte consente di chiamare un'operazione API specifica specificando il namespace del servizio, il nome dell'operazione API, i parametri di input e i parametri di output. Gli input vengono definiti dall'operazione API selezionata. Puoi visualizzare le operazioni API (definite anche metodi) scegliendo un servizio nel pannello di navigazione a sinistra nella pagina [Services Reference (Informazioni di riferimento relative ai servizi)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html). Scegliere un metodo nella sezione **Client** del servizio che si desidera chiamare. Ad esempio, tutte le operazioni API (metodi) per Amazon Relational Database Service (Amazon RDS) sono elencate nella seguente pagina: [Amazon RDS methods (Metodi di Amazon RDS)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html).

Puoi visualizzare lo schema per ciascuna operazione di automazione nelle seguenti posizioni:
+ [`aws:assertAwsResourceProperty`— Affermare uno stato di AWS risorsa o uno stato di evento](automation-action-assertAwsResourceProperty.md)
+ [`aws:executeAwsApi`— Chiama ed esegui operazioni AWS API](automation-action-executeAwsApi.md)
+ [`aws:waitForAwsResourceProperty`— Attendi una proprietà della AWS risorsa](automation-action-waitForAwsResourceProperty.md)

Gli schemi includono le descrizioni dei campi obbligatori per l'utilizzo di ciascuna operazione.

**Utilizzo dei campi Selector/PropertySelector**  
Per ogni operazione di automazione è necessario specificare un output `Selector` (per `aws:executeAwsApi`) o un `PropertySelector` (per `aws:assertAwsResourceProperty` e `aws:waitForAwsResourceProperty`). Questi campi vengono utilizzati per elaborare la risposta JSON da un'operazione AWS API. Questi campi utilizzano la JSONPath sintassi.

Ecco un esempio che illustra questo concetto per l'operazione `aws:executeAwsAPi`.

```
---
mainSteps:
- name: getImageId
  action: aws:executeAwsApi
  inputs:
    Service: ec2
    Api: DescribeImages
    Filters:  
      - Name: "name"
        Values: 
          - "{{ ImageName }}"
  outputs:
    - Name: ImageId
      Selector: "$.Images[0].ImageId"
      Type: "String"
...
```

Nella fase `aws:executeAwsApi` dell'elemento `getImageId`, l'automazione richiama l'operazione API `DescribeImages` e riceve una risposta da `ec2`. L'automazione applica quindi `Selector - "$.Images[0].ImageId"` alla risposta API e assegna il valore selezionato alla variabile di output `ImageId`. Altre fasi della stessa automazione possono utilizzare il valore di `ImageId` specificando `"{{ getImageId.ImageId }}"`.

Ecco un esempio che illustra questo concetto per l'operazione `aws:waitForAwsResourceProperty`:

```
---
- name: waitUntilInstanceStateRunning
  action: aws:waitForAwsResourceProperty
  # timeout is strongly encouraged for action - aws:waitForAwsResourceProperty
  timeoutSeconds: 60
  inputs:
    Service: ec2
    Api: DescribeInstanceStatus
    InstanceIds:
    - "{{ launchOneInstance.InstanceId }}"
    PropertySelector: "$.InstanceStatuses[0].InstanceState.Name"
    DesiredValues:
    - running
...
```

Nella fase `aws:waitForAwsResourceProperty` dell'elemento `waitUntilInstanceStateRunning`, l'automazione richiama l'operazione API `DescribeInstanceStatus` e riceve una risposta da `ec2`. L'automazione applica quindi `PropertySelector - "$.InstanceStatuses[0].InstanceState.Name"` alla risposta e verifica se il valore restituito specificato corrisponde a un valore nell'elenco `DesiredValues` (in questo caso `running`). La fase ripete il processo finché la risposta non restituisce lo stato di istanza `running`. 

## Utilizzo JSONPath nei runbook
<a name="automation-action-json-path"></a>

Un' JSONPath espressione è una stringa che inizia con «\$1». utilizzato per selezionare uno o più componenti all'interno di un elemento JSON. L'elenco seguente include informazioni sugli JSONPath operatori supportati da Systems Manager Automation:
+ **Dot-notated child (.)**: da utilizzare con un oggetto JSON. Questo operatore seleziona il valore di una chiave specifica.
+ **Deep-scan (..)**: da utilizzare con un elemento JSON. Questo operatore analizza il livello dell'elemento JSON per livello e seleziona un elenco di valori con la chiave specificata. Si noti che il tipo restituito di questo operatore è sempre un array JSON. Nel contesto di un tipo di output di un'azione di automazione, l'operatore può essere uno StringList o MapList.
+ **Array-Index ([ ])**: da utilizzare con un array JSON. Questo operatore recupera il valore di un indice specifico.
+ **Filtro ([? (*expression*)])**: da utilizzare con un array JSON. Questo operatore filtra i valori dell'array JSON che corrispondono ai criteri definiti nell'espressione del filtro. Le espressioni di filtro possono utilizzare solo i seguenti operatori: ==, \$1=, >, <, >= o <=. La combinazione di più espressioni di filtro con AND (&&) o OR (\$1\$1) non è supportata. Si noti che il tipo restituito di questo operatore è sempre un array JSON. 

Per comprendere meglio JSONPath gli operatori, consulta la seguente risposta JSON dell'operazione dell'API ec2`DescribeInstances`. Di seguito sono riportati diversi esempi che mostrano risultati diversi applicando JSONPath espressioni diverse alla risposta dell'operazione `DescribeInstances` API.

```
{
    "NextToken": "abcdefg",
    "Reservations": [
        {
            "OwnerId": "123456789012",
            "ReservationId": "r-abcd12345678910",
            "Instances": [
                {
                    "ImageId": "ami-12345678",
                    "BlockDeviceMappings": [
                        {
                            "Ebs": {
                                "DeleteOnTermination": true,
                                "Status": "attached",
                                "VolumeId": "vol-000000000000"
                            },
                            "DeviceName": "/dev/xvda"
                        }
                    ],
                    "State": {
                        "Code": 16,
                        "Name": "running"
                    }
                }
            ],
            "Groups": []
        },
        {
            "OwnerId": "123456789012",
            "ReservationId": "r-12345678910abcd",
            "Instances": [
                {
                    "ImageId": "ami-12345678",
                    "BlockDeviceMappings": [
                        {
                            "Ebs": {
                                "DeleteOnTermination": true,
                                "Status": "attached",
                                "VolumeId": "vol-111111111111"
                            },
                            "DeviceName": "/dev/xvda"
                        }
                    ],
                    "State": {
                        "Code": 80,
                        "Name": "stopped"
                    }
                }
            ],
            "Groups": []
        }
    ]
}
```

**JSONPath Esempio 1: ottieni una stringa specifica da una risposta JSON**

```
JSONPath: 
$.Reservations[0].Instances[0].ImageId 

Returns:
"ami-12345678"

Type: String
```

**JSONPath Esempio 2: ottieni un booleano specifico da una risposta JSON**

```
JSONPath:
$.Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.DeleteOnTermination
        
Returns:
true

Type: Boolean
```

**JSONPath Esempio 3: ottieni un numero intero specifico da una risposta JSON**

```
JSONPath:
$.Reservations[0].Instances[0].State.Code
        
Returns:
16

Type: Integer
```

**JSONPath Esempio 4: scansiona in profondità una risposta JSON, quindi ottieni tutti i valori per VolumeId StringList** 

```
JSONPath:
$.Reservations..BlockDeviceMappings..VolumeId
        
Returns:
[
   "vol-000000000000",
   "vol-111111111111"
]

Type: StringList
```

**JSONPath Esempio 5: ottieni un BlockDeviceMappings oggetto specifico come StringMap**

```
JSONPath:
$.Reservations[0].Instances[0].BlockDeviceMappings[0]
        
Returns:
{
   "Ebs" : {
      "DeleteOnTermination" : true,
      "Status" : "attached",
      "VolumeId" : "vol-000000000000"
   },
   "DeviceName" : "/dev/xvda"
}

Type: StringMap
```

**JSONPath Esempio 6: scansiona in profondità una risposta JSON, quindi ottieni tutti gli oggetti State come MapList**

```
JSONPath:
$.Reservations..Instances..State 
    
Returns:
[
   {
      "Code" : 16,
      "Name" : "running"
   },
   {
      "Code" : 80,
      "Name" : "stopped"
   }
]

Type: MapList
```

**JSONPath Esempio 7: filtro per le istanze nello stato `running`**

```
JSONPath:
$.Reservations..Instances[?(@.State.Name == 'running')]

Returns:
[
  {
    "ImageId": "ami-12345678",
    "BlockDeviceMappings": [
      {
        "Ebs": {
          "DeleteOnTermination": true,
          "Status": "attached",
          "VolumeId": "vol-000000000000"
        },
        "DeviceName": "/dev/xvda"
      }
    ],
    "State": {
      "Code": 16,
      "Name": "running"
    }
  }
]

Type: MapList
```

**JSONPath Esempio 8: restituisce `ImageId` le istanze che non si trovano nello stato `running`**

```
JSONPath:
$.Reservations..Instances[?(@.State.Name != 'running')].ImageId

Returns:
[
  "ami-12345678"
]

Type: StringList | String
```

# Creazione di integrazioni webhook per Automazione
<a name="creating-webhook-integrations"></a>

Creare un'integrazione ti permette di inviare messaggi utilizzando webhook durante un'automazione. Le integrazioni possono essere richiamate durante un'automazione utilizzando l'operazione `aws:invokeWebhook` nel tuo runbook. Se non hai ancora creato un webhook, consulta [Creazione di webhook per integrazioni](#creating-webhooks). Per ulteriori informazioni sulle operazioni di `aws:invokeWebhook`, consulta [`aws:invokeWebhook`: richiamo dell'integrazione di un webhook di Automation](invoke-webhook.md).

Come illustrato nelle procedure seguenti, puoi creare un'integrazione utilizzando la console di Systems Manager Automation o lo strumento a riga di comando desiderato. 

## Creazione di integrazioni (console)
<a name="creating-integrations-console"></a>

**Creazione di un'integrazione per Automazione (console)**

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 **Automazione**.

1. Seleziona la scheda **Integrazioni**.

1. Seleziona **Aggiungi integrazione** e scegli **Webhook**.

1. Inserisci i valori obbligatori e tutti i valori facoltativi che desideri includere per l'integrazione.

1. Scegli **Aggiungi** per creare l'integrazione.

## Creazione di integrazioni (riga di comando)
<a name="creating-integrations-commandline"></a>

Per creare un'integrazione utilizzando gli strumenti a riga di comando, devi creare il parametro `SecureString` obbligatorio per un'integrazione. L'automazione utilizza un namespace riservato in Parameter Store, uno strumento di Systems Manager, per archiviare informazioni sulla tua integrazione. Se crei un'integrazione utilizzando Console di gestione AWS, Automation gestisce questo processo per te. Dopo namespace, devi specificare il tipo di integrazione che desideri creare e quindi il nome dell'integrazione. Attualmente, Automation supporta integrazioni di tipo `webhook`.

I campi supportati per le integrazioni di tipo `webhook` sono i seguenti:
+ Description
+ headers
+ payload
+ URL

**Prima di iniziare**  
Se non l'hai già fatto, installa e configura AWS Command Line Interface (AWS CLI) o AWS Strumenti per PowerShell. Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

**Per creare un'integrazione per Automazione (riga di comando)**
+ Esegui i comandi seguenti per creare il parametro `SecureString` obbligatorio per un'integrazione. Sostituisci ogni *example resource placeholder* con le tue informazioni. Il namespace di `/d9d01087-4a3f-49e0-b0b4-d568d7826553/ssm/integrations/webhook/` è riservato in Parameter Store per le integrazioni. Il nome del tuo paramento deve utilizzare questo namespace seguito dal nome dell'integrazione. Ad esempio, `/d9d01087-4a3f-49e0-b0b4-d568d7826553/ssm/integrations/webhook/myWebhookIntegration`.

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

  ```
  aws ssm put-parameter \
      --name "/d9d01087-4a3f-49e0-b0b4-d568d7826553/ssm/integrations/webhook/myWebhookIntegration" \
      --type "SecureString" \
      --data-type "aws:ssm:integration" \
      --value '{"description": "My first webhook integration for Automation.", "url": "myWebHookURL"}'
  ```

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

  ```
  aws ssm put-parameter ^
      --name "/d9d01087-4a3f-49e0-b0b4-d568d7826553/ssm/integrations/webhook/myWebhookIntegration" ^
      --type "SecureString" ^
      --data-type "aws:ssm:integration" ^
      --value  "{\"description\":\"My first webhook integration for Automation.\",\"url\":\"myWebHookURL\"}"
  ```

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

  ```
  Write-SSMParameter `
      -Name "/d9d01087-4a3f-49e0-b0b4-d568d7826553/ssm/integrations/webhook/myWebhookIntegration" `
      -Type "SecureString"
      -DataType "aws:ssm:integration"
      -Value '{"description": "My first webhook integration for Automation.", "url": "myWebHookURL"}'
  ```

------

## Creazione di webhook per integrazioni
<a name="creating-webhooks"></a>

Quando crei webhook con il provider, nota quanto segue:
+ Il protocollo deve essere HTTPS.
+ Sono supportate le intestazioni delle richieste personalizzate.
+ È possibile specificare un corpo della richiesta predefinito.
+ Il corpo della richiesta predefinito può essere ignorato quando viene richiamata un'integrazione utilizzando l'operazione `aws:invokeWebhook`.

# Gestione dei timeout nei runbook
<a name="automation-handling-timeouts"></a>

La proprietà `timeoutSeconds` è condivisa da tutte le operazioni di automazione. Puoi utilizzare questa proprietà per specificare il valore di timeout di esecuzione per un'operazione. Inoltre, puoi modificare il modo in cui un timeout dell'operazione influisce sull'automazione e sullo stato di esecuzione generale. Puoi eseguire questa operazione definendo anche le proprietà condivise `onFailure` e `isCritical` per un'operazione.

Ad esempio, a seconda del caso d'uso, è possibile che l'automazione continui con un'operazione diversa e non influisca sullo stato generale dell'automazione se si verifica il timeout di un'operazione. In questo esempio, specifichi il tempo di attesa prima del timeout dell'operazione utilizzando la proprietà `timeoutSeconds`. Quindi specifichi l'operazione, o la fase, che l'automazione deve eseguire in caso di timeout. Specifica un valore utilizzando il formato `step:step name` per la proprietà `onFailure` anziché il valore predefinito `Abort`. Per impostazione predefinita, se si verifica il timeout di un'operazione, lo stato di esecuzione di automazione è `Timed Out`. Per evitare che un timeout influisca sullo stato di esecuzione di automazione, specifica `false` per la proprietà `isCritical`.

Nell'esempio seguente viene illustrato come definire le proprietà condivise per un'operazione descritta in questo scenario.

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

```
- name: verifyImageAvailability
  action: 'aws:waitForAwsResourceProperty'
  timeoutSeconds: 600
  isCritical: false
  onFailure: 'step:getCurrentImageState'
  inputs:
    Service: ec2
    Api: DescribeImages
    ImageIds:
      - '{{ createImage.newImageId }}'
    PropertySelector: '$.Images[0].State'
    DesiredValues:
      - available
  nextStep: copyImage
```

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

```
{
    "name": "verifyImageAvailability",
    "action": "aws:waitForAwsResourceProperty",
    "timeoutSeconds": 600,
    "isCritical": false,
    "onFailure": "step:getCurrentImageState",
    "inputs": {
        "Service": "ec2",
        "Api": "DescribeImages",
        "ImageIds": [
            "{{ createImage.newImageId }}"
        ],
        "PropertySelector": "$.Images[0].State",
        "DesiredValues": [
            "available"
        ]
    },
    "nextStep": "copyImage"
}
```

------

Per ulteriori informazioni sulle proprietà condivise da tutte le operazioni di automazione, consulta [Proprietà condivise da tutte le operazioni](automation-actions.md#automation-common).

# Riferimento al runbook dell’Automazione Systems Manager
<a name="automation-documents-reference"></a>

Per aiutarti a iniziare rapidamente, AWS Systems Manager fornisce runbook predefiniti. Questi runbook sono gestiti da Amazon Web Services Supporto AWS e AWS Config. Il Runbook Reference descrive ciascuno dei runbook predefiniti forniti da Systems Manager e. Supporto AWS Config Per ulteriori informazioni, consulta [Documentazione di riferimento al runbook Automazione Systems Manager](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide).

# Tutorial
<a name="automation-tutorials"></a>

I tutorial seguenti ti consentono di utilizzare Automazione AWS Systems Manager per i casi d'uso più comuni. Questi tutorial illustrano come utilizzare i runbook personali, quelli predefiniti forniti da Automazione e altri strumenti di Systems Manager con altri Servizi AWS.

**Contents**
+ [Aggiornamento degli AMIs](automation-tutorial-update-ami.md)
  + [Aggiornamento di un'AMI Linux](automation-tutorial-update-patch-linux-ami.md)
  + [Aggiornamento di un'AMI Linux (AWS CLI)](automation-tutorial-update-ami.md#update-patch-linux-ami-cli)
  + [Aggiornamento di un'Windows Server AMI](automation-tutorial-update-patch-windows-ami.md)
  + [Aggiorna un golden AMI usando Automation AWS Lambda, e Parameter Store](automation-tutorial-update-patch-golden-ami.md)
    + [Processo 1: creazione di un parametro nel Parameter Store di Systems Manager](automation-tutorial-update-patch-golden-ami.md#create-parameter-ami)
    + [Attività 2: creare un ruolo IAM per AWS Lambda](automation-tutorial-update-patch-golden-ami.md#create-lambda-role)
    + [Attività 3: Creare una AWS Lambda funzione](automation-tutorial-update-patch-golden-ami.md#create-lambda-function)
    + [Processo 4: creazione di un runbook e applicazione di patch all'AMI](automation-tutorial-update-patch-golden-ami.md#create-custom-ami-update-runbook)
  + [Aggiornamento delle AMIs tramite automazione e Jenkins](automation-tutorial-update-patch-ami-jenkins-integration.md)
  + [Aggiornamento delle AMIs per i gruppi Auto Scaling](automation-tutorial-update-patch-windows-ami-autoscaling.md)
    + [Crea il runbook **Patch AMIAnd UpdateASG**](automation-tutorial-update-patch-windows-ami-autoscaling.md#create-autoscaling-update-runbook)
+ [Utilizzo dei Supporto AWS runbook self-service](automation-tutorial-support-runbooks.md)
  + [Esegui lo strumento EC2 Rescue su istanze irraggiungibili](automation-ec2rescue.md)
    + [Come funziona](automation-ec2rescue.md#automation-ec2rescue-how)
    + [Prima di iniziare](automation-ec2rescue.md#automation-ec2rescue-begin)
      + [Concessione delle autorizzazioni `AWSSupport-EC2Rescue` per eseguire operazioni sulle istanze](automation-ec2rescue.md#automation-ec2rescue-access)
        + [Concessione delle autorizzazioni mediante policy IAM](automation-ec2rescue.md#automation-ec2rescue-access-iam)
        + [Concessione delle autorizzazioni utilizzando un modello CloudFormation](automation-ec2rescue.md#automation-ec2rescue-access-cfn)
    + [Esecuzione del servizio di automazione](automation-ec2rescue.md#automation-ec2rescue-executing)
  + [Ripristino di password e chiavi SSH sulle istanze EC2](automation-ec2reset.md)
    + [Come funziona](automation-ec2reset.md#automation-ec2reset-how)
    + [Prima di iniziare](automation-ec2reset.md#automation-ec2reset-begin)
      + [Concessione delle autorizzazioni a AWSSupport-EC 2Rescue per eseguire azioni sulle istanze](automation-ec2reset.md#automation-ec2reset-access)
        + [Concessione delle autorizzazioni mediante policy IAM](automation-ec2reset.md#automation-ec2reset-access-iam)
        + [Concessione delle autorizzazioni utilizzando un modello CloudFormation](automation-ec2reset.md#automation-ec2reset-access-cfn)
    + [Esecuzione del servizio di automazione](automation-ec2reset.md#automation-ec2reset-executing)
+ [Trasmissione dei dati ad Automazione tramite trasformatori di input](automation-tutorial-eventbridge-input-transformers.md)

# Aggiornamento degli AMIs
<a name="automation-tutorial-update-ami"></a>

I tutorial seguenti illustrano come aggiornare le Amazon Machine Image (AMIs) per includere le patch più recenti.

**Topics**
+ [Aggiornamento di un'AMI Linux](automation-tutorial-update-patch-linux-ami.md)
+ [Aggiornamento di un'AMI Linux (AWS CLI)](#update-patch-linux-ami-cli)
+ [Aggiornamento di un'Windows Server AMI](automation-tutorial-update-patch-windows-ami.md)
+ [Aggiorna un golden AMI usando Automation AWS Lambda, e Parameter Store](automation-tutorial-update-patch-golden-ami.md)
+ [Aggiornamento delle AMIs tramite automazione e Jenkins](automation-tutorial-update-patch-ami-jenkins-integration.md)
+ [Aggiornamento delle AMIs per i gruppi Auto Scaling](automation-tutorial-update-patch-windows-ami-autoscaling.md)

# Aggiornamento di un'AMI Linux
<a name="automation-tutorial-update-patch-linux-ami"></a>

Questa procedura guidata di Automazione Systems Manager illustra come utilizzare la console o la AWS CLI e il runbook `AWS-UpdateLinuxAmi` per aggiornare un'AMI Linux con le patch più recenti dei pacchetti specificati. L'automazione è uno strumento di AWS Systems Manager. Il runbook `AWS-UpdateLinuxAmi` automatizza l'installazione anche di altri pacchetti e configurazioni specifici del sito. È possibile aggiornare un'ampia gamma di distribuzioni Linux utilizzando questa procedura guidata, tra cui Ubuntu Server, Red Hat Enterprise Linux (RHEL) oppure Amazon Linux AMIs. Per un elenco completo delle versioni Linux supportate, consulta [Prerequisiti di Patch Manager](patch-manager-prerequisites.md).

Il runbook `AWS-UpdateLinuxAmi` ti permette di automatizzare i processi di manutenzione delle immagini senza dover creare il runbook in JSON o YAML. È possibile utilizzare il runbook `AWS-UpdateLinuxAmi` per eseguire i tipi di processi seguenti.
+ Aggiornamento di tutti i pacchetti di distribuzione e del software Amazon su Amazon Linux, Red Hat Enterprise Linux o Ubuntu Server Amazon Machine Image (AMI). Questo è il comportamento predefinito del runbook.
+ Installa AWS Systems Manager SSM Agent su un'immagine esistente per abilitare gli strumenti di Systems Manager, come l'esecuzione di comandi remoti utilizzando AWS Systems Manager Run Command o la raccolta dell'inventario software utilizzando Inventory.
+ Installazione di pacchetti software aggiuntivi.

**Prima di iniziare**  
Prima di iniziare a lavorare con i runbook, configurate i ruoli e, facoltativamente, EventBridge per l'automazione. Per ulteriori informazioni, consulta [Configurazione del servizio di automazione](automation-setup.md). Questa procedura dettagliata richiede inoltre di specificare il nome di un profilo di istanza AWS Identity and Access Management (IAM). Per ulteriori informazioni sulla creazione di un profilo dell'istanza IAM, consulta la pagina [Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager](setup-instance-permissions.md).

Il runbook `AWS-UpdateLinuxAmi` accetta i parametri di input seguenti.


****  

| Parametro | Tipo | Description | 
| --- | --- | --- | 
|  SourceAmiId  |  Stringa  |  (Obbligatorio) L'ID origine di AMI.  | 
|  IamInstanceProfileName  |  Stringa  |  (Obbligatorio) Il nome del ruolo del profilo dell'istanza IAM creato in [Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager](setup-instance-permissions.md). Il ruolo del profilo dell'istanza concede le autorizzazioni al servizio di automazione per eseguire operazioni sulle istanze, ad esempio l'esecuzione di comandi o l'avvio e l'arresto dei servizi. Il runbook utilizza solo il nome del ruolo del profilo dell'istanza. Se si specifica l'Amazon Resource Name (ARN), l'automazione ha esito negativo.  | 
|  AutomationAssumeRole  |  Stringa  |  (Obbligatorio) Nome del ruolo di servizio IAM creato in [Configurazione del servizio di automazione](automation-setup.md). Il ruolo di servizio (definito anche ruolo presunto) concede l'autorizzazione al servizio di automazione di assumere il ruolo IAM e di eseguire operazioni a nome dell'utente. Ad esempio, il ruolo di servizio permette al servizio di automazione di creare una nuova AMI quando viene eseguita l'operazione `aws:createImage` in un runbook. Per questo parametro, è necessario specificare l'ARN completo.  | 
|  TargetAmiName  |  Stringa  |  (Facoltativo) Nome della nuova AMI dopo la creazione. Il nome predefinito è una stringa generata dal sistema contenente l'ID dell'AMI di origine e la data/ora di creazione.  | 
|  InstanceType  |  Stringa  |  (Facoltativo) Tipo di istanza da avviare come host del workspace. I tipi di istanza variano in base alla regione. Il tipo predefinito è t2.micro.  | 
|  PreUpdateScript  |  Stringa  |  (Facoltativo) URL di uno script da eseguire prima dell'applicazione degli aggiornamenti. L'impostazione predefinita (\$1"none\$1") non prevede l'esecuzione di uno script.  | 
|  PostUpdateScript  |  Stringa  |  (Facoltativo) URL di uno script da eseguire dopo l'applicazione degli aggiornamenti ai pacchetti. L'impostazione predefinita (\$1"none\$1") non prevede l'esecuzione di uno script.  | 
|  IncludePackages  |  Stringa  |  (Facoltativo) Vengono aggiornati solo i pacchetti specificati. Per impostazione predefinita (\$1"all\$1"), vengono applicati tutti gli aggiornamenti disponibili.  | 
|  ExcludePackages  |  Stringa  |  (Facoltativo) Nomi dei pacchetti da non aggiornare, in tutte le condizioni. Per impostazione predefinita (\$1"none\$1"), non viene escluso alcun pacchetto.  | 

**Fasi di automazione**  
Il runbook `AWS-UpdateLinuxAmi` include le seguenti operazioni di automazione, per impostazione predefinita.

**Fase 1: launchInstance (operazione `aws:runInstances`) **  
Questa fase avvia un'istanza utilizzando i dati utente di Amazon Elastic Compute Cloud (Amazon EC2) e un ruolo del profilo dell'istanza IAM. I dati utente installano l'SSM Agent appropriato, in base al sistema operativo. L'installazione di SSM Agent consente di utilizzare gli strumenti di Systems Manager, ad esempio Run Command, State Manager e Inventario.

**Fase 2: aggiornamento OSSoftware (`aws:runCommand`azione) **  
Questa fase esegue i comandi seguenti sull'istanza avviata:  
+ Scarica uno script di aggiornamento da Amazon S3.
+ Esegue uno script facoltativo prima dell'aggiornamento.
+ Aggiorna i pacchetti di distribuzione e il software di Amazon.
+ Esegue uno script facoltativo dopo l'aggiornamento.
Il log di esecuzione viene memorizzato nella cartella /tmp in modo che l'utente possa visualizzarlo in un secondo momento.  
Se si desidera aggiornare uno specifico set di pacchetti, è possibile specificare l'elenco di pacchetti utilizzando il parametro `IncludePackages`. Quando tale elenco viene specificato, il sistema tenta di aggiornare solo i pacchetti specificati e le relative dipendenze. Non verrà eseguito alcun altro aggiornamento. Per impostazione predefinita, quando non vengono specificati pacchetti da *includere*, il programma aggiorna tutti i pacchetti disponibili.  
Se si desidera escludere dall'aggiornamento uno specifico set di pacchetti, è possibile specificare l'elenco di pacchetti utilizzando il parametro `ExcludePackages`. Quando tale elenco viene specificato, questi pacchetti conservano la propria versione corrente, indipendente dalle altre opzioni specificate. Per impostazione predefinita, quando non sono vengono specificati pacchetti da *escludere*, non verrà escluso alcun pacchetto.

**Fase 3: stopInstance (operazione `aws:changeInstanceState`)**  
Questa fase arresta l'istanza aggiornata.

**Fase 4: createImage (operazione `aws:createImage`) **  
Questa fase crea una nuova AMI con un nome dettagliato che lo lega all'ID di origine e all'ora di creazione. Ad esempio: «AMIGenerato da EC2 Automation su \$1\$1global:DATE\$1time\$1\$1 da \$1\$1\$1SourceAmiId\$1» dove DATE\$1TIME e SourceID rappresentano le variabili di automazione.

**Fase 5: terminateInstance (operazione `aws:changeInstanceState`) **  
Questa fase esegue la pulizia dell'automazione mediante l'arresto dell'istanza in esecuzione.

**Output**  
L'automazione restituisce il nuovo ID dell'AMI come output.

**Nota**  
Per impostazione predefinita, quando il servizio di automazione esegue il runbook `AWS-UpdateLinuxAmi`, il sistema crea un'istanza temporanea nel VPC predefinito (172.30.0.0/16). Se il VPC predefinito è stato eliminato, verrà restituito l'errore seguente:  
`VPC not defined 400`  
Per risolvere questo problema, è necessario creare una copia del runbook `AWS-UpdateLinuxAmi` e specificare un ID di sottorete. Per ulteriori informazioni, consulta [VPC non definito 400](automation-troubleshooting.md#automation-trbl-common-vpc).

**Per creare un'AMI con patch applicate utilizzando il servizio di automazione (AWS Systems Manager)**

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

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

1. Scegli **Esegui automazione**.

1. Nell'elenco **Automation document (Documento di automazione)** scegliere `AWS-UpdateLinuxAmi`.

1. Nella sezione **Dettagli del documento**, verifica che l'opzione **Versione del documento** sia impostata su **Versione predefinita al runtime**.

1. Scegliere **Next (Successivo)**.

1. Nella sezione **Execution Mode (Modalità esecuzione)**, scegliere **Simple Execution (Esecuzione semplice)**.

1. Nella sezione **Input parameters (Inserisci parametri)** inserire le informazioni raccolte nella sezione **Before you begin (Prima di iniziare)**.

1. Scegliere **Execute (Esegui)**. La console visualizza lo stato dell'esecuzione del servizio di automazione.

Al termine dell'automazione, avviare un'istanza di test dall'AMI aggiornata per verificare le modifiche.

**Nota**  
Se una fase qualsiasi dell'automazione ha esito negativo, le informazioni sul malfunzionamento vengono elencate nella pagina **Automation Executions (Esecuzioni di automazioni)**. L'automazione è stata progettata per terminare l'istanza temporanea dopo il corretto completamento di tutti i processi. Se una fase ha esito negativo, il sistema potrebbe non terminare l'istanza. Pertanto, se una fase ha esito negativo, terminare manualmente l'istanza temporanea.

## Aggiornamento di un'AMI Linux (AWS CLI)
<a name="update-patch-linux-ami-cli"></a>

Questa procedura dettagliata di AWS Systems Manager automazione mostra come utilizzare il `AWS-UpdateLinuxAmi` runbook AWS Command Line Interface (AWS CLI) e Systems Manager per applicare automaticamente patch a Linux Amazon Machine Image (AMI) con le versioni più recenti dei pacchetti specificati. L'automazione è uno strumento di AWS Systems Manager. Il runbook `AWS-UpdateLinuxAmi` automatizza l'installazione anche di altri pacchetti e configurazioni specifici del sito. È possibile aggiornare un'ampia gamma di distribuzioni Linux utilizzando questa procedura guidata, tra cui Ubuntu Server, Red Hat Enterprise Linux (RHEL) oppure Amazon Linux AMIs. Per un elenco completo delle versioni Linux supportate, consulta [Prerequisiti di Patch Manager](patch-manager-prerequisites.md).

Il runbook `AWS-UpdateLinuxAmi` permette di automatizzare i processi di manutenzione delle immagini senza dover creare il runbook in JSON o YAML. È possibile utilizzare il runbook `AWS-UpdateLinuxAmi` per eseguire i tipi di processi seguenti.
+ Aggiornamento di tutti i pacchetti di distribuzione e del software Amazon su Amazon Linux, RHEL o Ubuntu Server Amazon Machine Image (AMI). Questo è il comportamento predefinito del runbook.
+ Installa AWS Systems Manager SSM Agent su un'immagine esistente per abilitare le funzionalità di Systems Manager, come l'esecuzione di comandi remoti utilizzando AWS Systems Manager Run Command o la raccolta dell'inventario software utilizzando Inventory.
+ Installazione di pacchetti software aggiuntivi.

**Prima di iniziare**  
Prima di iniziare a lavorare con i runbook, configurate i ruoli e, facoltativamente, EventBridge per l'automazione. Per ulteriori informazioni, consulta [Configurazione del servizio di automazione](automation-setup.md). Questa procedura dettagliata richiede inoltre di specificare il nome di un profilo di istanza AWS Identity and Access Management (IAM). Per ulteriori informazioni sulla creazione di un profilo dell'istanza IAM, consulta la pagina [Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager](setup-instance-permissions.md).

Il runbook `AWS-UpdateLinuxAmi` accetta i parametri di input seguenti.


****  

| Parametro | Tipo | Description | 
| --- | --- | --- | 
|  SourceAmiId  |  Stringa  |  (Obbligatorio) L'ID origine di AMI. Puoi fare riferimento automaticamente all'ID più recente di un Amazon EC2 AMI per Linux utilizzando un parametro AWS Systems Manager Parameter Store *pubblico*. Per ulteriori informazioni, consulta [Query per l'AMI IDs utilizzo più recente di Amazon Linux AWS Systems ManagerParameter Store](https://aws.amazon.com/blogs/compute/query-for-the-latest-amazon-linux-ami-ids-using-aws-systems-manager-parameter-store/).  | 
|  IamInstanceProfileName  |  Stringa  |  (Obbligatorio) Il nome del ruolo del profilo dell'istanza IAM creato in [Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager](setup-instance-permissions.md). Il ruolo del profilo dell'istanza concede le autorizzazioni al servizio di automazione per eseguire operazioni sulle istanze, ad esempio l'esecuzione di comandi o l'avvio e l'arresto dei servizi. Il runbook utilizza solo il nome del ruolo del profilo dell'istanza.  | 
|  AutomationAssumeRole  |  Stringa  |  (Obbligatorio) Nome del ruolo di servizio IAM creato in [Configurazione del servizio di automazione](automation-setup.md). Il ruolo di servizio (definito anche ruolo presunto) concede l'autorizzazione al servizio di automazione di assumere il ruolo IAM e di eseguire operazioni a nome dell'utente. Ad esempio, il ruolo di servizio permette al servizio di automazione di creare una nuova AMI quando viene eseguita l'operazione `aws:createImage` in un runbook. Per questo parametro, è necessario specificare l'ARN completo.  | 
|  TargetAmiName  |  Stringa  |  (Facoltativo) Nome della nuova AMI dopo la creazione. Il nome predefinito è una stringa generata dal sistema contenente l'ID dell'AMI di origine e la data/ora di creazione.  | 
|  InstanceType  |  Stringa  |  (Facoltativo) Tipo di istanza da avviare come host del workspace. I tipi di istanza variano in base alla regione. Il tipo predefinito è t2.micro.  | 
|  PreUpdateScript  |  Stringa  |  (Facoltativo) URL di uno script da eseguire prima dell'applicazione degli aggiornamenti. L'impostazione predefinita (\$1"none\$1") non prevede l'esecuzione di uno script.  | 
|  PostUpdateScript  |  Stringa  |  (Facoltativo) URL di uno script da eseguire dopo l'applicazione degli aggiornamenti ai pacchetti. L'impostazione predefinita (\$1"none\$1") non prevede l'esecuzione di uno script.  | 
|  IncludePackages  |  Stringa  |  (Facoltativo) Vengono aggiornati solo i pacchetti specificati. Per impostazione predefinita (\$1"all\$1"), vengono applicati tutti gli aggiornamenti disponibili.  | 
|  ExcludePackages  |  Stringa  |  (Facoltativo) Nomi dei pacchetti da non aggiornare, in tutte le condizioni. Per impostazione predefinita (\$1"none\$1"), non viene escluso alcun pacchetto.  | 

**Fasi di automazione**  
Per impostazione predefinita, il runbook `AWS-UpdateLinuxAmi` include le seguenti fasi.

**Fase 1: launchInstance (operazione `aws:runInstances`) **  
Questo passaggio avvia un'istanza utilizzando i dati utente di Amazon Elastic Compute Cloud EC2 (Amazon) e un ruolo di profilo dell'istanza IAM. I dati utente installano l'SSM Agent appropriato, in base al sistema operativo. L'installazione di SSM Agent consente di utilizzare gli strumenti di Systems Manager, ad esempio Run Command, State Manager e Inventario.

**Fase 2: aggiornamento OSSoftware (`aws:runCommand`azione) **  
Questa fase esegue i comandi seguenti sull'istanza avviata:  
+ Scarica uno script di aggiornamento da Amazon Simple Storage Service (Amazon S3).
+ Esegue uno script facoltativo prima dell'aggiornamento.
+ Aggiorna i pacchetti di distribuzione e il software di Amazon.
+ Esegue uno script facoltativo dopo l'aggiornamento.
Il log di esecuzione viene memorizzato nella cartella /tmp in modo che l'utente possa visualizzarlo in un secondo momento.  
Se si desidera aggiornare uno specifico set di pacchetti, è possibile specificare l'elenco di pacchetti utilizzando il parametro `IncludePackages`. Quando tale elenco viene specificato, il sistema tenta di aggiornare solo i pacchetti specificati e le relative dipendenze. Non verrà eseguito alcun altro aggiornamento. Per impostazione predefinita, quando non vengono specificati pacchetti da *includere*, il programma aggiorna tutti i pacchetti disponibili.  
Se si desidera escludere dall'aggiornamento uno specifico set di pacchetti, è possibile specificare l'elenco di pacchetti utilizzando il parametro `ExcludePackages`. Quando tale elenco viene specificato, questi pacchetti conservano la propria versione corrente, indipendente dalle altre opzioni specificate. Per impostazione predefinita, quando non sono vengono specificati pacchetti da *escludere*, non verrà escluso alcun pacchetto.

**Fase 3: stopInstance (operazione `aws:changeInstanceState`)**  
Questa fase arresta l'istanza aggiornata.

**Fase 4: createImage (operazione `aws:createImage`) **  
Questa fase crea una nuova AMI con un nome dettagliato che lo lega all'ID di origine e all'ora di creazione. Ad esempio: «AMI generato dall' EC2 automazione su \$1\$1global:DATE\$1time\$1\$1 da \$1\$1\$1\$1» dove DATE\$1TIME e SourceAmiId SourceID rappresentano le variabili di automazione.

**Fase 5: terminateInstance (operazione `aws:changeInstanceState`) **  
Questa fase esegue la pulizia dell'automazione mediante l'arresto dell'istanza in esecuzione.

**Output**  
L'automazione restituisce il nuovo ID dell'AMI come output.

**Nota**  
Per impostazione predefinita, quando il servizio di automazione esegue il runbook `AWS-UpdateLinuxAmi`, il sistema crea un'istanza temporanea nel VPC predefinito (172.30.0.0/16). Se il VPC predefinito è stato eliminato, verrà restituito l'errore seguente:  
`VPC not defined 400`  
Per risolvere questo problema, è necessario creare una copia del runbook `AWS-UpdateLinuxAmi` e specificare un ID di sottorete. Per ulteriori informazioni, consulta [VPC non definito 400](automation-troubleshooting.md#automation-trbl-common-vpc).

**Per creare un'AMI con patch applicate utilizzando il servizio di automazione**

1. Installa e configura (), se non l'hai già fatto. AWS Command Line Interface AWS CLI

   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. Eseguire il comando seguente per eseguire il runbook `AWS-UpdateLinuxAmi`. Sostituisci ogni *example resource placeholder* con le tue informazioni.

   ```
   aws ssm start-automation-execution \
       --document-name "AWS-UpdateLinuxAmi" \
       --parameters \
       SourceAmiId=AMI ID, \
       IamInstanceProfileName=IAM instance profile, \
       AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'
   ```

   Il comando restituisce un ID di esecuzione. Copia questo ID negli appunti. L'ID può essere utilizzato per visualizzare lo stato dell'automazione.

   ```
   {
       "AutomationExecutionId": "automation execution ID"
   }
   ```

1. Per visualizzare l'automazione utilizzando il AWS CLI, esegui il seguente comando:

   ```
   aws ssm describe-automation-executions
   ```

1. Eseguire il comando seguente per visualizzare i dettagli relativi al progresso dell'automazione. Sostituiscila *automation execution ID* con le tue informazioni.

   ```
   aws ssm get-automation-execution --automation-execution-id automation execution ID
   ```

   Il completamento del processo di aggiornamento può richiedere 30 minuti o un intervallo maggiore.
**Nota**  
È inoltre possibile monitorare lo stato dell'automazione nella console. Nell'elenco, scegliere l'automazione appena eseguita e quindi scegliere la scheda **Steps (Fasi)**. In questa scheda è riportato lo stato delle operazioni dell'automazione.

Al termine dell'automazione, avviare un'istanza di test dall'AMI aggiornata per verificare le modifiche.

**Nota**  
Se una fase qualsiasi dell'automazione ha esito negativo, le informazioni sul malfunzionamento vengono elencate nella pagina **Automation Executions (Esecuzioni di automazioni)**. L'automazione è stata progettata per terminare l'istanza temporanea dopo il corretto completamento di tutti i processi. Se una fase ha esito negativo, il sistema potrebbe non terminare l'istanza. Pertanto, se una fase ha esito negativo, terminare manualmente l'istanza temporanea.

# Aggiornamento di un'Windows Server AMI
<a name="automation-tutorial-update-patch-windows-ami"></a>

Il runbook `AWS-UpdateWindowsAmi` consente di automatizzare i processi di manutenzione delle immagini sull'Amazon Machine Image (AMI) di Amazon Windows senza dover creare il runbook in formato JSON o YAML. Questo runbook è supportato per Windows Server 2008 R2 o versioni successive. È possibile utilizzare il runbook `AWS-UpdateWindowsAmi` per eseguire i tipi di processi seguenti.
+ Installazione di tutti gli aggiornamenti di Windows e aggiornamento del software Amazon (comportamento predefinito).
+ Installazione di aggiornamenti di Windows specifici e aggiornamento del software Amazon.
+ Personalizzazione di un'AMI tramite script.

**Prima di iniziare**  
Prima di iniziare a lavorare con i runbook, [configurare i ruoli per il servizio di automazione](automation-setup-iam.md) per aggiungere una policy `iam:PassRole` che fa riferimento all'ARN del profilo dell'istanza a cui si desidera concedere l'accesso. Facoltativamente, configura Amazon EventBridge for Automation, uno strumento in AWS Systems Manager. Per ulteriori informazioni, consulta [Configurazione del servizio di automazione](automation-setup.md). Questa procedura dettagliata richiede anche di specificare il nome di un profilo di istanza AWS Identity and Access Management (IAM). Per ulteriori informazioni sulla creazione di un profilo dell'istanza IAM, consulta la pagina [Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager](setup-instance-permissions.md).

**Nota**  
Gli aggiornamenti di AWS Systems Manager SSM Agent sono in genere distribuiti in regioni diverse in momenti diversi. Quando personalizzi o aggiorni un'AMI, usa solo il codice sorgente AMIs pubblicato per la regione in cui lavori. Questo assicura di utilizzare la versione più recente di SSM Agent rilasciato per tale regione e pertanto di evitare problemi di compatibilità.

Il runbook `AWS-UpdateWindowsAmi` accetta i parametri di input seguenti.


****  

| Parametro | Tipo | Description | 
| --- | --- | --- | 
|  SourceAmiId  |  Stringa  |  (Obbligatorio) L'ID origine di AMI. È possibile fare automaticamente riferimento alla versione più recente di ID dell'AMI di Windows Server utilizzando un parametro *pubblico* di Parameter Store di Systems Manager. Per ulteriori informazioni, consulta [Query for the latest Windows AMI IDs using AWS Systems ManagerParameter Store](https://aws.amazon.com/blogs/mt/query-for-the-latest-windows-ami-using-systems-manager-parameter-store/).  | 
|  SubnetId  |  Stringa  |  (Facoltativo) La sottorete in cui si desidera avviare l'istanza temporanea. Se è stato eliminato il VPC predefinito, è necessario specificare un valore per questo parametro.  | 
|  IamInstanceProfileName  |  Stringa  |  (Obbligatorio) Il nome del ruolo del profilo dell'istanza IAM creato in [Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager](setup-instance-permissions.md). Il ruolo del profilo dell'istanza concede le autorizzazioni al servizio di automazione per eseguire operazioni sulle istanze, ad esempio l'esecuzione di comandi o l'avvio e l'arresto dei servizi. Il runbook utilizza solo il nome del ruolo del profilo dell'istanza.  | 
|  AutomationAssumeRole  |  Stringa  |  (Obbligatorio) Nome del ruolo di servizio IAM creato in [Configurazione del servizio di automazione](automation-setup.md). Il ruolo di servizio (definito anche ruolo presunto) concede l'autorizzazione al servizio di automazione di assumere il ruolo IAM e di eseguire operazioni a nome dell'utente. Ad esempio, il ruolo di servizio permette al servizio di automazione di creare una nuova AMI quando viene eseguita l'operazione `aws:createImage` in un runbook. Per questo parametro, è necessario specificare l'ARN completo.  | 
|  TargetAmiName  |  Stringa  |  (Facoltativo) Nome della nuova AMI dopo la creazione. Il nome predefinito è una stringa generata dal sistema contenente l'ID dell'AMI di origine e la data/ora di creazione.  | 
|  InstanceType  |  Stringa  |  (Facoltativo) Tipo di istanza da avviare come host del workspace. I tipi di istanza variano in base alla regione. Il tipo predefinito è t2.medium.  | 
|  PreUpdateScript  |  Stringa  |  (Facoltativo) Script da eseguire prima di aggiornare l' AMI. Inserisci uno script come parametro nel runbook oppure al runtime.  | 
|  PostUpdateScript  |  Stringa  |  (Facoltativo) Script da eseguire dopo l'aggiornamento dell'AMI. Inserisci uno script come parametro nel runbook oppure al runtime.  | 
|  IncludeKbs  |  Stringa  |  (Facoltativo) Specificare uno o più articoli della Microsoft Knowledge Base (KB) IDs da includere. È possibile installarne più di IDs uno utilizzando valori separati da virgole. Formati validi: KB9876543 o 9876543.  | 
|  ExcludeKbs  |  Stringa  |  (Facoltativo) Specificare uno o più articoli della Microsoft Knowledge Base (KB) IDs da escludere. È possibile escluderne più di IDs uno utilizzando valori separati da virgole. Formati validi: KB9876543 o 9876543.  | 
|  Categories  |  Stringa  |  (Facoltativo) Specificare una o più categorie di aggiornamento. È possibile filtrare le categorie utilizzando valori separati da virgole. Opzioni: Critical Update, Security Update, Definition Update, Update Rollup, Service Pack, Tool, Update o Driver. I formati validi includono una singola voce, ad esempio: Critical Update. In alternativa, è possibile specificare un elenco di valori separati da virgole: Critical Update,Security Update,Definition Update.  | 
|  SeverityLevels  |  Stringa  |  (Facoltativo) Specificare uno o più livelli di gravità MSRC associati a un aggiornamento. È possibile filtrare i livello di gravità utilizzando valori separati da virgole. Opzioni: Critical, Important, Low, Moderate o Unspecified. I formati validi includono una singola voce, ad esempio: Critical. In alternativa, è possibile specificare un elenco di valori separati da virgole: Critical,Important,Low.  | 

**Fasi di automazione**  
Per impostazione predefinita, il runbook `AWS-UpdateWindowsAmi` include le seguenti fasi.

**Fase 1: launchInstance (operazione `aws:runInstances`)**  
Questa fase avvia un'istanza con un ruolo del profilo dell'istanza IAM dal parametro `SourceAmiID` specificato.

**Fase 2: runPreUpdate Script (`aws:runCommand`azione)**  
Questa fase consente di specificare uno script come stringa che viene eseguita prima dell'installazione degli aggiornamenti.

**Passaggio 3: aggiorna EC2 Config (`aws:runCommand`azione)**  
Questo passaggio utilizza il `AWS-InstallPowerShellModule` runbook per scaricare un modulo AWS pubblico PowerShell . Systems Manager verifica l'integrità del modulo utilizzando un hash SHA-256. Systems Manager controlla quindi il sistema operativo per determinare se aggiornare EC2 Config o EC2 Launch. EC2Config viene eseguito su Windows Server 2008 R2 tramite Windows Server 2012 R2. EC2Launch viene eseguito su Windows Server 2016.

**Fase 4: aggiornamento SSMAgent (`aws:runCommand`azione)**  
Questa fase aggiorna SSM Agent utilizzando il runbook `AWS-UpdateSSMAgent`.

**Fase 5: aggiornamento AWSPVDriver (`aws:runCommand`azione)**  
Questo passaggio aggiorna i driver AWS PV utilizzando il `AWS-ConfigureAWSPackage` runbook.

**Fase 6: updateAwsEna NetworkDriver (azione) `aws:runCommand`**  
Questo passaggio aggiorna i driver AWS ENA Network utilizzando il `AWS-ConfigureAWSPackage` runbook.

**Fase 7: installWindowsUpdates (`aws:runCommand`azione) **  
Questa fase installa gli aggiornamenti di Windows utilizzando il runbook `AWS-InstallWindowsUpdates`. Per impostazione predefinita, Systems Manager cerca e installa tutti gli aggiornamenti mancanti. È possibile modificare il comportamento predefinito specificando uno dei parametri seguenti: `IncludeKbs`, `ExcludeKbs`, `Categories` o `SeverityLevels`. 

**Fase 8: runPostUpdate Script (`aws:runCommand`azione)**  
Questa fase consente di specificare uno script come stringa che viene eseguita dopo l'installazione degli aggiornamenti.

**Fase 9: runSysprepGeneralize (`aws:runCommand`azione) **  
Questo passaggio utilizza il `AWS-InstallPowerShellModule` runbook per scaricare un PowerShell modulo AWS pubblico. Systems Manager verifica l'integrità del modulo utilizzando un hash SHA-256. Systems Manager esegue quindi sysprep utilizzando metodi AWS supportati per EC2 Launch (Windows Server 2016) o EC2 Config (da Windows Server 2008 R2 a 2012 R2).

**Fase 10: stopInstance (operazione `aws:changeInstanceState`) **  
Questa fase arresta l'istanza aggiornata. 

**Fase 11: createImage (operazione `aws:createImage`) **  
Questa fase crea una nuova AMI con un nome dettagliato che lo lega all'ID di origine e all'ora di creazione. Ad esempio: «AMI generata da EC2 Automation su \$1\$1global:DATE\$1time\$1\$1 da \$1\$1\$1SourceAmiId\$1» dove DATE\$1TIME e SourceID rappresentano le variabili di automazione.

**Fase 12: (azione) TerminateInstance `aws:changeInstanceState` **  
Questa fase esegue la pulizia dell'automazione mediante l'arresto dell'istanza in esecuzione. 

**Output**  
Questa sezione consente di definire gli output delle varie fasi o dei vari valori di qualsiasi parametro come l'output di automazione. Per impostazione predefinita, l'output è l'ID dell'AMI aggiornata di Windows creata dall'automazione.

**Nota**  
Per impostazione predefinita, quando il servizio di automazione esegue il runbook `AWS-UpdateWindowsAmi` e crea un'istanza temporanea, il sistema usa il VPC predefinito (172.30.0.0/16). Se il VPC predefinito è stato eliminato, verrà restituito l'errore seguente:  
VPC non definito 400  
Per risolvere questo problema, è necessario creare una copia del runbook `AWS-UpdateWindowsAmi` e specificare un ID di sottorete. Per ulteriori informazioni, consulta [VPC non definito 400](automation-troubleshooting.md#automation-trbl-common-vpc).

**Per creare un'AMI Windows con patch applicate utilizzando il servizio di automazione**

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. Eseguire il comando seguente per eseguire il runbook `AWS-UpdateWindowsAmi`. Sostituisci ogni *example resource placeholder* con le tue informazioni. Il comando di esempio seguente utilizza un'AMI recente di Amazon EC2 per ridurre il numero di patch da applicare. Se si esegue il comando più di una volta, è necessario specificare un valore univoco per `targetAMIname`. I nomi per l'AMI devono essere univoci.

   ```
   aws ssm start-automation-execution \
       --document-name="AWS-UpdateWindowsAmi" \
       --parameters SourceAmiId='AMI ID',IamInstanceProfileName='IAM instance profile',AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'
   ```

   Il comando restituisce un ID di esecuzione. Copia questo ID negli appunti. L'ID può essere utilizzato per visualizzare lo stato dell'automazione.

   ```
   {
       "AutomationExecutionId": "automation execution ID"
   }
   ```

1. Per visualizzare l'automazione utilizzando il AWS CLI, esegui il seguente comando:

   ```
   aws ssm describe-automation-executions
   ```

1. Eseguire il comando seguente per visualizzare i dettagli relativi al progresso dell'automazione.

   ```
   aws ssm get-automation-execution 
       --automation-execution-id automation execution ID
   ```

**Nota**  
A seconda del numero di patch applicate, il processo di applicazione delle patch di Windows eseguito in questa automazione di esempio può richiedere 30 minuti o più.

# Aggiorna un golden AMI usando Automation AWS Lambda, e Parameter Store
<a name="automation-tutorial-update-patch-golden-ami"></a>

L'esempio seguente utilizza il modello in cui un'organizzazione gestisce e periodicamente applica patch ad AMIs di proprietà anziché crearle da AMIs di Amazon Elastic Compute Cloud (Amazon EC2).

*La procedura seguente mostra come applicare automaticamente le patch del sistema operativo (OS) a un sistema AMI che è già considerato la più recente up-to-date o la più recente.* AMI Nell'esempio, il valore predefinito del parametro `SourceAmiId` è definito da un AWS Systems Manager Parameter Store parametro chiamato`latestAmi`. Il valore di `latestAmi` viene aggiornato da una AWS Lambda funzione richiamata alla fine dell'automazione. Come risultato di questo processo di automazione, il tempo e l'impegno dedicati all'applicazione delle patch AMIs sono ridotti al minimo perché l'applicazione delle patch viene sempre applicata nella maggior parte dei casi. up-to-date AMI Parameter Storee l'automazione sono strumenti di. AWS Systems Manager

**Prima di iniziare**  
Configura i ruoli di automazione e, facoltativamente, Amazon EventBridge for Automation. Per ulteriori informazioni, consulta [Configurazione del servizio di automazione](automation-setup.md).

**Topics**
+ [Processo 1: creazione di un parametro nel Parameter Store di Systems Manager](#create-parameter-ami)
+ [Attività 2: creare un ruolo IAM per AWS Lambda](#create-lambda-role)
+ [Attività 3: Creare una AWS Lambda funzione](#create-lambda-function)
+ [Processo 4: creazione di un runbook e applicazione di patch all'AMI](#create-custom-ami-update-runbook)

## Processo 1: creazione di un parametro nel Parameter Store di Systems Manager
<a name="create-parameter-ami"></a>

In Parameter Store creare un parametro di stringa che utilizza le seguente informazioni:
+ **Nome (Nome)**: `latestAmi`.
+ **Valore**: Un ID AMI. Ad esempio: ` ami-188d6e0e`.

Per informazioni su come creare un parametro di stringa di Parameter Store, consulta [Creazione di parametri Parameter Store in Systems Manager](sysman-paramstore-su-create.md).

## Attività 2: creare un ruolo IAM per AWS Lambda
<a name="create-lambda-role"></a>

Utilizzare la procedura seguente per creare un ruolo di servizio IAM per AWS Lambda. Queste policy forniscono l'autorizzazione a Lambda per aggiornare il valore del parametro `latestAmi` utilizzando una funzione Lambda e Systems Manager.

**Per creare un ruolo di servizio IAM per Lambda**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegliere **Policies (Policy)** e **Create Policy (Crea policy)**.

1. Scegli la scheda **JSON**.

1. Sostituisci il contenuto predefinito con la seguente policy. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "logs:CreateLogGroup",
               "Resource": "arn:aws:logs:us-east-1:111122223333:*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogStream",
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-east-1:111122223333:log-group:/aws/lambda/function name:*"
               ]
           }
       ]
   }
   ```

------

1. Scegli **Successivo: Tag**.

1. (Facoltativo) Aggiungere una o più coppie tag chiave-valore per organizzare, monitorare o controllare l'accesso per questa policy. 

1. Scegli **Prossimo: Rivedi**.

1. Nella pagina **Rivedi policy**, per l'opzione **Nome** specifica un nome per la policy inline, ad esempio **amiLambda**.

1. Scegli **Crea policy**.

1. Ripetere le fasi 2 e 3.

1. Quindi incollare la policy seguente. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:PutParameter",
               "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/latestAmi"
           },
           {
               "Effect": "Allow",
               "Action": "ssm:DescribeParameters",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Scegli **Successivo: Tag**.

1. (Facoltativo) Aggiungere una o più coppie tag chiave-valore per organizzare, monitorare o controllare l'accesso per questa policy. 

1. Scegli **Prossimo: Rivedi**.

1. Nella pagina **Rivedi policy**, per l'opzione **Nome** specifica un nome per la policy inline, ad esempio **amiParameter**.

1. Scegli **Crea policy**.

1. Nel pannello di navigazione, scegli **Ruoli** e quindi **Crea ruolo**.

1. In **Caso d'uso**, scegli **Lambda**, quindi scegli **Successivo**.

1. Nella pagina **Collega autorizzazioni**, utilizza il campo **Cerca** per individuare le due policy create in precedenza.

1. Seleziona la casella di controllo accanto alle policy, quindi scegli **Successivo: Tag**.

1. Per **Role name (Nome ruolo)**, inserire un nome per il nuovo ruolo, ad esempio **lambda-ssm-role** o un altro nome che preferisci. 
**Nota**  
Poiché varie entità possono fare riferimento al ruolo, non è possibile modificare il nome del ruolo dopo averlo creato.

1. (Facoltativo) Aggiungi una o più coppie di tag chiave-valore per organizzare, monitorare o controllare l'accesso per questo ruolo, quindi scegli **Crea ruolo**.

## Attività 3: Creare una AWS Lambda funzione
<a name="create-lambda-function"></a>

Utilizzare la procedura seguente per creare una funzione Lambda che aggiorna automaticamente il valore del parametro `latestAmi`.

**Come creare una funzione Lambda**

1. Accedi a Console di gestione AWS e apri la AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Scegli **Crea funzione**.

1. Nella pagina **Create function (Crea funzione)**, scegliere **Author from scratch (Crea da zero)**.

1. Nel campo **Function name (Nome funzione)**, immettere **Automation-UpdateSsmParam**.

1. Per **Runtime**, scegli **Python 3.11**.

1. Per **Architettura**, seleziona il tipo di processore del computer che Lambda deve utilizzare per eseguire la funzione, **x86\$164** o **arm64**. 

1. Nella sezione **Autorizzazioni**, espandi **Modifica ruolo di esecuzione predefinito**.

1. Scegli **Utilizza un ruolo esistente**, quindi scegli il ruolo di servizio creato per Lambda nell'attività 2.

1. Scegli **Crea funzione**.

1. Nella sezione **Origine codice**, nella scheda **lambda\$1function**, elimina il codice precompilato nel campo, quindi incolla il seguente codice di esempio.

   ```
   from __future__ import print_function
   
   import json
   import boto3
   
   print('Loading function')
   
   
   #Updates an SSM parameter
   #Expects parameterName, parameterValue
   def lambda_handler(event, context):
       print("Received event: " + json.dumps(event, indent=2))
   
       # get SSM client
       client = boto3.client('ssm')
   
       #confirm  parameter exists before updating it
       response = client.describe_parameters(
          Filters=[
             {
              'Key': 'Name',
              'Values': [ event['parameterName'] ]
             },
           ]
       )
   
       if not response['Parameters']:
           print('No such parameter')
           return 'SSM parameter not found.'
   
       #if parameter has a Description field, update it PLUS the Value
       if 'Description' in response['Parameters'][0]:
           description = response['Parameters'][0]['Description']
           
           response = client.put_parameter(
             Name=event['parameterName'],
             Value=event['parameterValue'],
             Description=description,
             Type='String',
             Overwrite=True
           )
       
       #otherwise just update Value
       else:
           response = client.put_parameter(
             Name=event['parameterName'],
             Value=event['parameterValue'],
             Type='String',
             Overwrite=True
           )
           
       responseString = 'Updated parameter %s with value %s.' % (event['parameterName'], event['parameterValue'])
           
       return responseString
   ```

1. Scegli **File, Salva**.

1. Per testare la funzione Lambda, dal menu **Test** scegli **Configura evento di test**.

1. Nel campo **Event name (Nome evento)**, inserire un nome per l'evento di test, ad esempio **MyTestEvent**.

1. Sostituire il testo esistente con il seguente esempio JSON. *AMI ID*Sostituiscilo con le tue informazioni per impostare il `latestAmi` valore del parametro.

   ```
   {
      "parameterName":"latestAmi",
      "parameterValue":"AMI ID"
   }
   ```

1. Scegli **Save** (Salva).

1. Scegliere **Test** per testare la funzione. Nella scheda **Risultato dell'esecuzione**, lo stato deve essere riportato come **Completato**, insieme ad altri dettagli sull'aggiornamento.

## Processo 4: creazione di un runbook e applicazione di patch all'AMI
<a name="create-custom-ami-update-runbook"></a>

Utilizzare la procedura seguente per creare ed eseguire un runbook che applica patch all'AMI specificata per il parametro **latestAmi**. Al termine dell'automazione, il valore del parametro **latestAmi** viene aggiornato con l'ID dell'AMI con patch applicate. Le automazioni successive utilizzano l'AMI creata dall'esecuzione precedente.

**Per creare ed eseguire il runbook**

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. Per **Crea documento**, scegli **Automazione**.

1. In **Nome**, inserisci **UpdateMyLatestWindowsAmi**.

1. Scegliere la scheda **Editor**, quindi **Edit (Modifica)**.

1. Scegli **OK** quando richiesto.

1. Nel campo **Editor di documenti**, sostituisci il contenuto predefinito con il seguente runbook di esempio YAML.

   ```
   ---
   description: Systems Manager Automation Demo - Patch AMI and Update ASG
   schemaVersion: '0.3'
   assumeRole: '{{ AutomationAssumeRole }}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: '(Required) The ARN of the role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to execute this document.'
       default: ''
     SourceAMI:
       type: String
       description: The ID of the AMI you want to patch.
       default: '{{ ssm:latestAmi }}'
     SubnetId:
       type: String
       description: The ID of the subnet where the instance from the SourceAMI parameter is launched.
     SecurityGroupIds:
       type: StringList
       description: The IDs of the security groups to associate with the instance that's launched from the SourceAMI parameter.
     NewAMI:
       type: String
       description: The name of of newly patched AMI.
       default: 'patchedAMI-{{global:DATE_TIME}}'
     InstanceProfile:
       type: String
       description: The name of the IAM instance profile you want the source instance to use.
     SnapshotId:
       type: String
       description: (Optional) The snapshot ID to use to retrieve a patch baseline snapshot.
       default: ''
     RebootOption:
       type: String
       description: '(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.'
       allowedValues:
         - NoReboot
         - RebootIfNeeded
       default: RebootIfNeeded
     Operation:
       type: String
       description: (Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.
       allowedValues:
         - Install
         - Scan
       default: Install
   mainSteps:
     - name: startInstances
       action: 'aws:runInstances'
       timeoutSeconds: 1200
       maxAttempts: 1
       onFailure: Abort
       inputs:
         ImageId: '{{ SourceAMI }}'
         InstanceType: m5.large
         MinInstanceCount: 1
         MaxInstanceCount: 1
         IamInstanceProfileName: '{{ InstanceProfile }}'
         SubnetId: '{{ SubnetId }}'
         SecurityGroupIds: '{{ SecurityGroupIds }}'
     - name: verifyInstanceManaged
       action: 'aws:waitForAwsResourceProperty'
       timeoutSeconds: 600
       inputs:
         Service: ssm
         Api: DescribeInstanceInformation
         InstanceInformationFilterList:
           - key: InstanceIds
             valueSet:
               - '{{ startInstances.InstanceIds }}'
         PropertySelector: '$.InstanceInformationList[0].PingStatus'
         DesiredValues:
           - Online
       onFailure: 'step:terminateInstance'
     - name: installPatches
       action: 'aws:runCommand'
       timeoutSeconds: 7200
       onFailure: Abort
       inputs:
         DocumentName: AWS-RunPatchBaseline
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
     - name: stopInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: stopped
     - name: createImage
       action: 'aws:createImage'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceId: '{{ startInstances.InstanceIds }}'
         ImageName: '{{ NewAMI }}'
         NoReboot: false
         ImageDescription: Patched AMI created by Automation
     - name: terminateInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: terminated
     - name: updateSsmParam
       action: aws:invokeLambdaFunction
       timeoutSeconds: 1200
       maxAttempts: 1
       onFailure: Abort
       inputs:
           FunctionName: Automation-UpdateSsmParam
           Payload: '{"parameterName":"latestAmi", "parameterValue":"{{createImage.ImageId}}"}'
   outputs:
   - createImage.ImageId
   ```

1. Scegli **Crea automazione**.

1. Nel pannello di navigazione, scegli **Automazione**, quindi **Esegui automazione**.

1. Nella pagina **Choose document (Scegli il documento)**, scegli la scheda **Owned by me (Di mia proprietà)**.

1. Cerca il **UpdateMyLatestWindowsAmi**runbook e seleziona il pulsante nella **UpdateMyLatestWindowsAmi**scheda.

1. Scegli **Next (Successivo)**.

1. Scegliere **Simple execution (Esecuzione semplice)**.

1. Specifica i valori per il parametro di input.

1. Scegliere **Execute (Esegui)**.

1. Una volta completata l'esecuzione, scegliere **Parameter Store** nel pannello di navigazione e confermare che il nuovo valore del parametro `latestAmi` corrisponde al valore restituito dall'automazione. Puoi anche verificare che il nuovo AMI ID corrisponda all'output di Automation nella **AMIs**sezione della console Amazon EC2.

# Aggiornamento delle AMIs tramite automazione e Jenkins
<a name="automation-tutorial-update-patch-ami-jenkins-integration"></a>

Se la tua organizzazione utilizza Jenkins software in una CI/CD pipeline, puoi aggiungere Automation come fase successiva alla compilazione per preinstallare le versioni delle applicazioni in (). Amazon Machine Images AMIs L'automazione è uno strumento di AWS Systems Manager. È inoltre possibile utilizzare la funzionalità di pianificazione di Jenkins per chiamare il servizio di automazione e creare un piano personalizzato per l'applicazione di patch del sistema operativo (SO).

L'esempio seguente mostra come invocare il servizio di automazione da un server Jenkins in esecuzione on-premises o in Amazon Elastic Compute Cloud (Amazon EC2). Per l'autenticazione, il Jenkins server utilizza AWS credenziali basate su una policy IAM creata nell'esempio e allegata al profilo dell'istanza.

**Nota**  
Assicurati di seguire le best practice di sicurezza Jenkins durante la configurazione dell'istanza.

**Prima di iniziare**  
Prima di configurare il servizio di automazione con Jenkins, completa le seguenti attività:
+ Completare l'esempio descritto nell'argomento [Aggiorna un golden AMI usando Automation AWS Lambda, e Parameter Store](automation-tutorial-update-patch-golden-ami.md). L'esempio seguente utilizza il **UpdateMyLatestWindowsAmi**runbook creato in quell'esempio.
+ Configurare i ruoli IAM per il servizio di automazione. Systems Manager richiede un ruolo del profilo dell'istanza e un ARN del ruolo di servizio per elaborare le automazioni. Per ulteriori informazioni, consulta [Configurazione del servizio di automazione](automation-setup.md).

**Per creare una policy IAM per il server Jenkins**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegliere **Policies (Policy)** e **Create Policy (Crea policy)**.

1. Scegli la scheda **JSON**.

1. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:StartAutomationExecution",
               "Resource": [
                   "arn:aws:ssm:us-east-1:111122223333:document/UpdateMyLatestWindowsAmi",
                   "arn:aws:ssm:us-east-1:111122223333:automation-execution/*"
               ]
           }
       ]
   }
   ```

------

1. Scegli **Review policy (Rivedi policy)**.

1. Nella pagina **Review policy (Rivedi policy)**, per l'opzione **Name (Nome)** specificare un nome per la policy inline, ad esempio **JenkinsPolicy**.

1. Scegli **Crea policy**.

1. Nel riquadro di navigazione, seleziona **Ruoli**.

1. Scegli il profilo dell'istanza collegato al server Jenkins.

1. Nella scheda **Autorizzazioni**, scegli **Aggiungi autorizzazioni**, quindi scegli **Collega policy**.

1. Nella sezione **Altre policy di autorizzazione**, inserisci il nome della policy creata nei passaggi precedenti. Ad esempio, **JenkinsPolicy**.

1. Seleziona la casella di controllo accanto alla policy, quindi scegli **Collega policy**.

Utilizza la seguente procedura per configurarla AWS CLI sul tuo Jenkins server.

**Per configurare il server Jenkins per l'automazione**

1. Collegati al server Jenkins sulla porta 8080 utilizzando il browser preferito per accedere all'interfaccia di gestione.

1. Inserire la password trovata in `/var/lib/jenkins/secrets/initialAdminPassword`. Per visualizzare la password, eseguire il comando seguente.

   ```
   sudo cat /var/lib/jenkins/secrets/initialAdminPassword
   ```

1. Lo script di installazione di Jenkins indirizza alla pagina **Personalizzazione di Jenkins**. Selezionare **Install suggested plugins (Installazione dei plug-in suggeriti)**.

1. Al termine dell'installazione, scegli **Credenziali amministratore**, seleziona **Salva credenziali** e successivamente **Inizia a usare Jenkins**.

1. Nel pannello di navigazione a sinistra, scegli **Gestione di Jenkins** e successivamente seleziona **Gestione dei plug-in**.

1. Scegliere la scheda **Available (Disponibilità)** e quindi inserire **Amazon EC2 plugin**.

1. Selezionare la casella di controllo relativa a **Amazon EC2 plugin** e quindi selezionare **Install without restart (Installazione senza riavvio)**.

1. Al termine dell'installazione, selezionare **Go back to the top page (Torna alla pagina iniziale)**.

1. Scegli **GestisciJenkins**, quindi seleziona **Gestisci nodi e cloud**.

1. Nella sezione **Cloud**, seleziona **Aggiungi un nuovo cloud**, quindi scegli **Amazon EC2**.

1. Inserisci le tue informazioni nei campi rimanenti. Assicurati di selezionare l'opzione **Utilizza il profilo dell'istanza EC2 per ottenere le credenziali**.

Utilizza la procedura seguente per configurare il progetto Jenkins in modo che invochi il servizio di automazione.

**Per configurare il server Jenkins in modo che invochi il servizio di automazione**

1. Apri la console Jenkins nel browser Web.

1. Scegliere il progetto che si desidera configurare con il servizio di automazione, quindi scegliere **Configure (Configura)**.

1. Nella scheda **Build (Compilazione)** scegliere **Add Build Step (Aggiungi fase di compilazione)**.

1. Scegliere **Execute shell (Esegui shell)** o **Execute Windows batch command (Esegui comando batch Windows)** (a seconda del sistema operativo in uso).

1. Nel campo **Comando**, esegui un AWS CLI comando come il seguente. Sostituisci ogni *example resource placeholder* con le tue informazioni.

   ```
   aws ssm start-automation-execution \
           --document-name runbook name \
           --region Regione AWS of your source AMI \
           --parameters runbook parameters
   ```

   Il comando di esempio seguente utilizza il **UpdateMyLatestWindowsAmi**runbook e il parametro Systems Manager `latestAmi` creati in[Aggiorna un golden AMI usando Automation AWS Lambda, e Parameter Store](automation-tutorial-update-patch-golden-ami.md).

   ```
   aws ssm start-automation-execution \
           --document-name UpdateMyLatestWindowsAmi \
           --parameters \
               "sourceAMIid='{{ssm:latestAmi}}'"
           --region region
   ```

   In Jenkins, il comando è simile all'esempio illustrato nel seguente screenshot.  
![\[Un comando di esempio nel software Jenkins.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/sysman-ami-jenkins2.png)

1. Nel progetto Jenkins, scegli **Crea ora**. Jenkins restituisce un output simile al seguente.  
![\[Esempio di output di comando nel software Jenkins.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/sysman-ami-jenkins.png)

# Aggiornamento delle AMIs per i gruppi Auto Scaling
<a name="automation-tutorial-update-patch-windows-ami-autoscaling"></a>

Nell'esempio seguente aggiorna un gruppo Auto Scaling con una nuova AMI con patch applicate. Questo approccio garantisce che le nuove immagini vengano automaticamente rese disponibili nei vari ambienti di calcolo che usano gruppi Auto Scaling.

La fase finale dell'automazione in questo esempio utilizza una funzione Python per creare un nuovo modello di avvio che utilizza la nuova AMI con patch applicate. Quindi il gruppo Auto Scaling è aggiornato per utilizzare il nuovo modello di avvio. In questo tipo di scenario con dimensionamento automatico, gli utenti possono terminare le istanze esistenti nel gruppo Auto Scaling per forzare l'avvio di una nuova istanza che utilizza la nuova immagine. In alternativa, gli utenti possono attendere che siano gli eventi di scalabilità verticale o orizzontale ad avviare le istanze più recenti.

**Prima di iniziare**  
Prima di iniziare a utilizzare questo esempio, completare le attività descritte di seguito.
+ Configura i ruoli IAM per Automation, uno strumento in AWS Systems Manager. Systems Manager richiede un ruolo del profilo dell'istanza e un ARN del ruolo di servizio per elaborare le automazioni. Per ulteriori informazioni, consulta [Configurazione del servizio di automazione](automation-setup.md).

## Crea il runbook **Patch AMIAnd UpdateASG**
<a name="create-autoscaling-update-runbook"></a>

**Utilizzate la procedura seguente per creare il runbook **Patch AMIAnd UpdateASG che applica le patch** specificate per il AMI parametro SourceAMI.** Il runbook aggiorna anche un gruppo Auto Scaling utilizzando l'AMI con patch applicate più recente.

**Per creare ed eseguire il runbook**

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

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

1. Nel menu a disces **Create document (Crea un documento)**, scegliere **Automation (Automazione)**.

1. Nel campo **Name (Nome)**, inserire **PatchAMIAndUpdateASG**.

1. Scegliere la scheda **Editor**, quindi **Edit (Modifica)**.

1. Scegliere **OK** quando richiesto ed eliminare il contenuto nel campo **Document editor (Editor di documenti)**.

1. Nel campo **Document editor (Editor di documenti)** incollare il seguente contenuto del runbook di esempio YAML.

   ```
   ---
   description: Systems Manager Automation Demo - Patch AMI and Update ASG
   schemaVersion: '0.3'
   assumeRole: '{{ AutomationAssumeRole }}'
   parameters:
     AutomationAssumeRole:
       type: String
       description: '(Required) The ARN of the role that allows Automation to perform the actions on your behalf. If no role is specified, Systems Manager Automation uses your IAM permissions to execute this document.'
       default: ''
     SourceAMI:
       type: String
       description: '(Required) The ID of the AMI you want to patch.'
     SubnetId:
       type: String
       description: '(Required) The ID of the subnet where the instance from the SourceAMI parameter is launched.'
     SecurityGroupIds:
       type: StringList
       description: '(Required) The IDs of the security groups to associate with the instance launched from the SourceAMI parameter.'
     NewAMI:
       type: String
       description: '(Optional) The name of of newly patched AMI.'
       default: 'patchedAMI-{{global:DATE_TIME}}'
     TargetASG:
       type: String
       description: '(Required) The name of the Auto Scaling group you want to update.'
     InstanceProfile:
       type: String
       description: '(Required) The name of the IAM instance profile you want the source instance to use.'
     SnapshotId:
       type: String
       description: (Optional) The snapshot ID to use to retrieve a patch baseline snapshot.
       default: ''
     RebootOption:
       type: String
       description: '(Optional) Reboot behavior after a patch Install operation. If you choose NoReboot and patches are installed, the instance is marked as non-compliant until a subsequent reboot and scan.'
       allowedValues:
         - NoReboot
         - RebootIfNeeded
       default: RebootIfNeeded
     Operation:
       type: String
       description: (Optional) The update or configuration to perform on the instance. The system checks if patches specified in the patch baseline are installed on the instance. The install operation installs patches missing from the baseline.
       allowedValues:
         - Install
         - Scan
       default: Install
   mainSteps:
     - name: startInstances
       action: 'aws:runInstances'
       timeoutSeconds: 1200
       maxAttempts: 1
       onFailure: Abort
       inputs:
         ImageId: '{{ SourceAMI }}'
         InstanceType: m5.large
         MinInstanceCount: 1
         MaxInstanceCount: 1
         IamInstanceProfileName: '{{ InstanceProfile }}'
         SubnetId: '{{ SubnetId }}'
         SecurityGroupIds: '{{ SecurityGroupIds }}'
     - name: verifyInstanceManaged
       action: 'aws:waitForAwsResourceProperty'
       timeoutSeconds: 600
       inputs:
         Service: ssm
         Api: DescribeInstanceInformation
         InstanceInformationFilterList:
           - key: InstanceIds
             valueSet:
               - '{{ startInstances.InstanceIds }}'
         PropertySelector: '$.InstanceInformationList[0].PingStatus'
         DesiredValues:
           - Online
       onFailure: 'step:terminateInstance'
     - name: installPatches
       action: 'aws:runCommand'
       timeoutSeconds: 7200
       onFailure: Abort
       inputs:
         DocumentName: AWS-RunPatchBaseline
         Parameters:
           SnapshotId: '{{SnapshotId}}'
           RebootOption: '{{RebootOption}}'
           Operation: '{{Operation}}'
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
     - name: stopInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: stopped
     - name: createImage
       action: 'aws:createImage'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceId: '{{ startInstances.InstanceIds }}'
         ImageName: '{{ NewAMI }}'
         NoReboot: false
         ImageDescription: Patched AMI created by Automation
     - name: terminateInstance
       action: 'aws:changeInstanceState'
       maxAttempts: 1
       onFailure: Continue
       inputs:
         InstanceIds:
           - '{{ startInstances.InstanceIds }}'
         DesiredState: terminated
     - name: updateASG
       action: 'aws:executeScript'
       timeoutSeconds: 300
       maxAttempts: 1
       onFailure: Abort
       inputs:
         Runtime: python3.11
         Handler: update_asg
         InputPayload:
           TargetASG: '{{TargetASG}}'
           NewAMI: '{{createImage.ImageId}}'
         Script: |-
           from __future__ import print_function
           import datetime
           import json
           import time
           import boto3
   
           # create auto scaling and ec2 client
           asg = boto3.client('autoscaling')
           ec2 = boto3.client('ec2')
   
           def update_asg(event, context):
               print("Received event: " + json.dumps(event, indent=2))
   
               target_asg = event['TargetASG']
               new_ami = event['NewAMI']
   
               # get object for the ASG we're going to update, filter by name of target ASG
               asg_query = asg.describe_auto_scaling_groups(AutoScalingGroupNames=[target_asg])
               if 'AutoScalingGroups' not in asg_query or not asg_query['AutoScalingGroups']:
                   return 'No ASG found matching the value you specified.'
   
               # gets details of an instance from the ASG that we'll use to model the new launch template after
               source_instance_id = asg_query.get('AutoScalingGroups')[0]['Instances'][0]['InstanceId']
               instance_properties = ec2.describe_instances(
                   InstanceIds=[source_instance_id]
               )
               source_instance = instance_properties['Reservations'][0]['Instances'][0]
   
               # create list of security group IDs
               security_groups = []
               for group in source_instance['SecurityGroups']:
                   security_groups.append(group['GroupId'])
   
               # create a list of dictionary objects for block device mappings
               mappings = []
               for block in source_instance['BlockDeviceMappings']:
                   volume_query = ec2.describe_volumes(
                       VolumeIds=[block['Ebs']['VolumeId']]
                   )
                   volume_details = volume_query['Volumes']
                   device_name = block['DeviceName']
                   volume_size = volume_details[0]['Size']
                   volume_type = volume_details[0]['VolumeType']
                   device = {'DeviceName': device_name, 'Ebs': {'VolumeSize': volume_size, 'VolumeType': volume_type}}
                   mappings.append(device)
   
               # create new launch template using details returned from instance in the ASG and specify the newly patched AMI
               time_stamp = time.time()
               time_stamp_string = datetime.datetime.fromtimestamp(time_stamp).strftime('%m-%d-%Y_%H-%M-%S')
               new_template_name = f'{new_ami}_{time_stamp_string}'
               try:
                   ec2.create_launch_template(
                       LaunchTemplateName=new_template_name,
                       LaunchTemplateData={
                           'BlockDeviceMappings': mappings,
                           'ImageId': new_ami,
                           'InstanceType': source_instance['InstanceType'],
                           'IamInstanceProfile': {
                               'Arn': source_instance['IamInstanceProfile']['Arn']
                           },
                           'KeyName': source_instance['KeyName'],
                           'SecurityGroupIds': security_groups
                       }
                   )
               except Exception as e:
                   return f'Exception caught: {str(e)}'
               else:
                   # update ASG to use new launch template
                   asg.update_auto_scaling_group(
                       AutoScalingGroupName=target_asg,
                       LaunchTemplate={
                           'LaunchTemplateName': new_template_name
                       }
                   )
                   return f'Updated ASG {target_asg} with new launch template {new_template_name} which uses AMI {new_ami}.'
   outputs:
   - createImage.ImageId
   ```

1. Scegli **Crea automazione**.

1. Nel pannello di navigazione, scegli **Automazione**, quindi **Esegui automazione**.

1. Nella pagina **Choose document (Scegli il documento)**, scegli la scheda **Owned by me (Di mia proprietà)**.

1. Cerca il runbook **Patch AMIAnd UpdateASG** e seleziona il pulsante nella scheda **Patch AMIAnd** UpdateASG.

1. Scegli **Next (Successivo)**.

1. Scegliere **Simple execution (Esecuzione semplice)**.

1. Specifica i valori per il parametro di input. Assicurarsi che `SubnetId` e `SecurityGroupIds` da te specificati consentano l'accesso agli endpoint pubblici di Systems Manager o agli endpoint dell'interfaccia per Systems Manager.

1. Scegli **Esegui**.

1. Una volta completata l'automazione, nella console di Amazon EC2 scegli **Dimensionamento automatico**, quindi scegli **Modelli di avvio**. Controllare che il nuovo modello di avvio sia visualizzato e utilizzato dalla nuova AMI.

1. Scegli **Dimensionamento automatico**, quindi scegli **Gruppi Auto Scaling**. Accertati che il gruppo Auto Scaling utilizzi il nuovo modello di avvio.

1. Termina una o più istanze nel gruppo Auto Scaling. Le istanze di sostituzione verranno avviate utilizzando la nuova AMI.

# Utilizzo dei Supporto AWS runbook self-service
<a name="automation-tutorial-support-runbooks"></a>

Questa sezione descrive come utilizzare alcune delle automazioni self-service create dal team. Supporto AWS Queste automazioni ti aiutano a gestire le tue risorse. AWS 

**Support Automation Workflows**  
Support Automation Workflows (SAW) sono runbook di automazione scritti e gestiti dal Supporto AWS team. Questi runbook consentono di risolvere i problemi più comuni relativi alle AWS risorse, monitorare e identificare in modo proattivo i problemi di rete, raccogliere e analizzare i log e altro ancora.

I runbook SAW utilizzano il prefisso **`AWSSupport`**. Ad esempio, [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-activatewindowswithamazonlicense.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-activatewindowswithamazonlicense.html).

Inoltre, i clienti con piani di supporto Business Support\$1 e superiori AWS hanno accesso anche ai runbook che utilizzano il **`AWSPremiumSupport`**prefisso. Ad esempio, [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awspremiumsupport-troubleshootEC2diskusage.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awspremiumsupport-troubleshootEC2diskusage.html).

Per ulteriori informazioni Supporto AWS, consulta [Guida introduttiva](https://docs.aws.amazon.com/awssupport/latest/user/getting-started.html) a. Supporto AWS

**Topics**
+ [Esegui lo strumento EC2 Rescue su istanze irraggiungibili](automation-ec2rescue.md)
+ [Ripristino di password e chiavi SSH sulle istanze EC2](automation-ec2reset.md)

# Esegui lo strumento EC2 Rescue su istanze irraggiungibili
<a name="automation-ec2rescue"></a>

EC2Rescue consente di diagnosticare e risolvere i problemi relativi alle istanze di Amazon Elastic Compute Cloud (Amazon EC2) per Linux e Windows Server. È possibile eseguire lo strumento manualmente, come descritto in [Uso di Rescue per Linux Server e Utilizzo di EC2 EC2 Rescue](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Linux-Server-EC2Rescue.html) [per](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Windows-Server-EC2Rescue.html) Windows Server. In alternativa, è possibile eseguire lo strumento automaticamente utilizzando il servizio di automazione di Systems Manager e il runbook **`AWSSupport-ExecuteEC2Rescue`**. L'automazione è uno strumento di AWS Systems Manager. Il **`AWSSupport-ExecuteEC2Rescue`**runbook è progettato per eseguire una combinazione di azioni di Systems Manager, CloudFormation azioni e funzioni Lambda che automatizzano i passaggi normalmente necessari per utilizzare Rescue. EC2 

È possibile utilizzare il runbook **`AWSSupport-ExecuteEC2Rescue`** per risolvere e potenzialmente correggere i vari tipi di problemi a livello di sistema operativo (SO). Le istanze con volumi root crittografati non sono supportate. Per un elenco completo, consulta i seguenti argomenti:

**Windows**: vedi *Rescue Action* in [Using EC2 Rescue for Windows Server con la](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-cli.html#ec2rw-rescue) riga di comando.

**Linux** e **macOS**: alcuni moduli EC2 Rescue for Linux rilevano e tentano di risolvere i problemi. Per ulteriori informazioni, consulta la documentazione relativa a [https://github.com/awslabs/aws-ec2rescue-linux/tree/master/docs](https://github.com/awslabs/aws-ec2rescue-linux/tree/master/docs) per ciascun modulo su GitHub.

## Come funziona
<a name="automation-ec2rescue-how"></a>

Risoluzione dei problemi di un'istanza con il servizio di automazione e il runbook **`AWSSupport-ExecuteEC2Rescue`** funziona nel seguente modo:
+ L'utente specifica l'ID dell'istanza non raggiungibile e avvia il runbook.
+ Il sistema crea un VPC temporaneo e quindi esegue una serie di funzioni Lambda per configurare il VPC.
+ Il sistema identifica una sottorete per il VPC temporaneo nella stessa zona di disponibilità dell'istanza originale.
+ Il sistema avvia un'istanza helper temporanea e abilitata per SSM.
+ Il sistema arresta l'istanza originale e crea un backup. Collega quindi il volume root originale all'istanza helper.
+ Il sistema esegue EC2 Rescue sull'istanza helper. Run Command EC2Rescue identifica e tenta di risolvere i problemi sul volume root originale allegato. Al termine, EC2 Rescue ricollega il volume root all'istanza originale.
+ Il sistema riavvia l'istanza originale e termina l'istanza temporanea. Il sistema termina anche il VPC temporaneo e le funzioni Lambda create all'inizio dell'automazione.

## Prima di iniziare
<a name="automation-ec2rescue-begin"></a>

Prima di eseguire la seguente automazione, esegui le seguenti operazioni:
+ Copiare l'ID istanza dell'istanza non raggiungibile. Questo ID verrà specificato nella procedura.
+ Facoltativamente, recuperare l'ID di una sottorete nella stessa zona di disponibilità dell'istanza non raggiungibile. L'istanza EC2 Rescue verrà creata in questa sottorete. Se non specifichi una sottorete, Automation crea un nuovo VPC temporaneo nel tuo. Account AWS Verifica di Account AWS avere almeno un VPC disponibile. Per impostazione predefinita, puoi crearne cinque VPCs in una regione. Se ne hai già creati cinque VPCs nella regione, l'automazione fallisce senza apportare modifiche all'istanza. Per ulteriori informazioni sulle quote di Amazon VPC, consulta l'argomento relativo a [VPC e sottoreti](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-vpcs-subnets) nella *Guida utente Amazon VPC*.
+ Facoltativamente, puoi creare e specificare un ruolo AWS Identity and Access Management (IAM) per l'automazione. Se non si specifica questo ruolo, il servizio di automazione viene eseguito nel contesto dell'utente che ha eseguito l'automazione.

### Concessione delle autorizzazioni `AWSSupport-EC2Rescue` per eseguire operazioni sulle istanze
<a name="automation-ec2rescue-access"></a>

EC2Rescue necessita dell'autorizzazione per eseguire una serie di azioni sulle istanze durante l'automazione. Queste azioni richiamano i AWS Lambda servizi IAM e Amazon EC2 per tentare in modo sicuro di risolvere i problemi con le istanze. Se disponi di autorizzazioni a livello di amministratore nel tuo e/o Account AWS VPC, potresti essere in grado di eseguire l'automazione senza configurare le autorizzazioni, come descritto in questa sezione. Se non si dispone delle autorizzazioni a livello di amministratore, l'utente corrente o un amministratore deve configurare tali autorizzazioni mediante una delle opzioni riportate di seguito.
+ [Concessione delle autorizzazioni mediante policy IAM](#automation-ec2rescue-access-iam)
+ [Concessione delle autorizzazioni utilizzando un modello CloudFormation](#automation-ec2rescue-access-cfn)

#### Concessione delle autorizzazioni mediante policy IAM
<a name="automation-ec2rescue-access-iam"></a>

È possibile collegare la seguente policy IAM all'utente, al gruppo o al ruolo come policy inline. In alternativa, è possibile creare una nuova policy gestita IAM e collegarla all'utente, al gruppo o al ruolo. Per ulteriori informazioni sull'aggiunta di una policy inline all'utente, al gruppo o al ruolo, consulta la pagina [Utilizzo delle policy inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html). Per ulteriori informazioni sulla creazione di una nuova policy gestita, consulta la sezione relativa all'[uso di policy gestite](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html).

**Nota**  
Se crei una nuova policy gestita da IAM, devi anche allegare la policy gestita di **Amazon SSMAutomation Role** in modo che le tue istanze possano comunicare con l'API Systems Manager.

**Policy IAM per AWSSupport-EC 2Rescue**

*account ID*Sostituiscila con le tue informazioni.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lambda:InvokeFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction"
            ],
            "Resource": "arn:aws:lambda:*:111122223333:function:AWSSupport-EC2Rescue-*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::awssupport-ssm.*/*.template",
                "arn:aws:s3:::awssupport-ssm.*/*.zip"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:CreateRole",
                "iam:CreateInstanceProfile",
                "iam:GetRole",
                "iam:GetInstanceProfile",
                "iam:PutRolePolicy",
                "iam:DetachRolePolicy",
                "iam:AttachRolePolicy",
                "iam:PassRole",
                "iam:AddRoleToInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DeleteInstanceProfile"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/AWSSupport-EC2Rescue-*",
                "arn:aws:iam::111122223333:instance-profile/AWSSupport-EC2Rescue-*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "lambda:CreateFunction",
                "ec2:CreateVpc",
                "ec2:ModifyVpcAttribute",
                "ec2:DeleteVpc",
                "ec2:CreateInternetGateway",
                "ec2:AttachInternetGateway",
                "ec2:DetachInternetGateway",
                "ec2:DeleteInternetGateway",
                "ec2:CreateSubnet",
                "ec2:DeleteSubnet",
                "ec2:CreateRoute",
                "ec2:DeleteRoute",
                "ec2:CreateRouteTable",
                "ec2:AssociateRouteTable",
                "ec2:DisassociateRouteTable",
                "ec2:DeleteRouteTable",
                "ec2:CreateVpcEndpoint",
                "ec2:DeleteVpcEndpoints",
                "ec2:ModifyVpcEndpoint",
                "ec2:Describe*",
                "autoscaling:DescribeAutoScalingInstances"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

#### Concessione delle autorizzazioni utilizzando un modello CloudFormation
<a name="automation-ec2rescue-access-cfn"></a>

CloudFormation automatizza il processo di creazione di ruoli e policy IAM utilizzando un modello preconfigurato. Utilizza la seguente procedura per creare i ruoli e le policy IAM richiesti per EC2 Rescue Automation utilizzando. CloudFormation

**Per creare i ruoli e le politiche IAM richiesti per EC2 Rescue**

1. Scaricare [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip) ed estrarre il file `AWSSupport-EC2RescueRole.json` in una directory sul computer locale.

1. Se ti Account AWS trovi in una partizione speciale, modifica il modello per cambiare i valori ARN con quelli della tua partizione.

   Ad esempio, per le regioni della Cina, modificare i casi da `arn:aws` a `arn:aws-cn`.

1. [Accedi Console di gestione AWS e apri la CloudFormation console all'indirizzo /cloudformazione. https://console.aws.amazon.com](https://console.aws.amazon.com/cloudformation/)

1. Scegliere **Create stack (Crea stack)**, **With new resources (standard) (Con nuove risorse (standard))**.

1. Nella pagina **Create stack (Crea stack)** per **Prerequisite - Prepare template (Prerequisito - Prepara modello)**, scegliere **Template is ready (Il modello è pronto)**.

1. In **Specify template (Specifica il modello)**, scegliere **Upload a template file (Carica un file modello)**.

1. Scegliere **Choose file (Scegli file)**, quindi individuare e selezionare il file `AWSSupport-EC2RescueRole.json` dalla directory in cui è stato estratto.

1. Scegliere **Next (Successivo)**.

1. Nella pagina **Specify stack details (Specifica i dettagli dello stack)**, per il campo **Stack name (Nome stack)** inserire un nome per identificare lo stack, quindi scegliere **Next (Successivo)**.

1. (Facoltativo) Nell'area **Tag**, applica una o più name/value coppie di chiavi di tag allo stack.

   I tag sono metadati facoltativi assegnati a una risorsa. I tag consentono di categorizzare una risorsa in diversi modi, ad esempio in base allo scopo, al proprietario o all'ambiente. Ad esempio, è possibile applicare un tag uno stack per identificare il tipo di attività che esegue, i tipi di destinazioni o altre risorse coinvolte e l'ambiente in cui viene eseguito.

1. Seleziona **Next** (Successivo).

1. Nella pagina **Revisione**, esamina i dettagli dello stack, quindi scorri verso il basso e scegli l'opzione **Riconosco che CloudFormation potrebbe creare risorse IAM**.

1. Seleziona **Crea stack**.

   CloudFormation mostra lo **stato CREATE\$1IN\$1PROGRESS** per alcuni minuti. Dopo la creazione dello stack, lo stato diventa **CREATE\$1COMPLETE**. È inoltre possibile scegliere l'icona di aggiornamento per verificare lo stato del processo di creazione.

1. Nell'elenco **Stacks**, scegliere il pulsane di opzione accanto allo stack appena creato e quindi scegliere la scheda **Outputs**.

1. Annotare il **valore**. È l'ARN di. AssumeRole Si specifica questo ARN quando si esegue l'automazione nella procedura successiva, [Esecuzione del servizio di automazione](#automation-ec2rescue-executing). 

## Esecuzione del servizio di automazione
<a name="automation-ec2rescue-executing"></a>

**Importante**  
La seguente automazione arresta l'istanza non raggiungibile. L'arresto dell'istanza può causare la perdita di dati sui volumi dell'archivio dell'istanza collegati (se presenti). L'arresto dell'istanza può causare anche la modifica dell'indirizzo IP pubblico se non è associato alcun indirizzo IP elastico.

**Esecuzione del servizio di automazione `AWSSupport-ExecuteEC2Rescue`.**

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 **Automazione**.

1. Scegli **Esegui automazione**.

1. Nella sezione **Automation document (Documento di automazione)** scegliere **Owned by Amazon (Di proprietà di Amazon)** nell'elenco.

1. Nell'elenco dei runbook scegliere il pulsante nella scheda per `AWSSupport-ExecuteEC2Rescue`, quindi scegliere **Next (Successivo)**.

1. Nella pagina **Execute automation document (Esegui documento di automazione)**, scegliere **Simple execution (Esecuzione semplice)**.

1. Nella sezione **Document details (Dettagli documento)** verificare che l'opzione **Document version (Versione documento)** sia impostata sulla versione predefinita con il numero più alto. Ad esempio, **\$1DEFAULT** o **3 (default)**.

1. Nella sezione **Input parameters (Parametri di input)**, specificare i seguenti parametri: 

   1. Per **UnreachableInstanceId**, specifica l'ID dell'istanza irraggiungibile. 

   1. (Facoltativo) Per **EC2RescueInstanceType**, specifica un tipo di istanza per l'istanza EC2 Rescue. Il tipo di istanza di default è `t2.medium`.

   1. Infatti **AutomationAssumeRole**, se hai creato ruoli per questa automazione utilizzando la CloudFormation procedura descritta in precedenza in questo argomento, scegli l'ARN di AssumeRole quello che hai creato nella CloudFormation console.

   1. (Facoltativo) Per **LogDestination**, specifica un bucket S3 se desideri raccogliere i log a livello di sistema operativo durante la risoluzione dei problemi dell'istanza. I log vengono automaticamente caricati nel bucket specificato.

   1. Per **SubnetId**, specifica una sottorete in un VPC esistente nella stessa zona di disponibilità dell'istanza irraggiungibile. Per impostazione predefinita, Systems Manager crea un nuovo VPC, ma è possibile specificare una sottorete in un VPC esistente.
**Nota**  
Se l'opzione per specificare un bucket o un ID di sottorete non è disponibile, verificare nel campo **Default (Impostazione predefinita)** che si stia utilizzando la versione più recente del runbook.

1. (Facoltativo) Nell'area **Tag**, applica una o più name/value coppie di chiavi di tag per identificare l'automazione, ad esempio. `Key=Purpose,Value=EC2Rescue`

1. Scegliere **Execute (Esegui)**.

Il runbook crea un backup dell'AMI come parte dell'automazione. Tutte le altre risorse create dall'automazione vengono eliminate automaticamente, ma questa AMI rimane nell'account in uso. All'AMI viene assegnato un nome utilizzando la seguente convenzione:

AMI di backup: AWSSupport-EC 2Rescue: *UnreachableInstanceId*

È possibile individuare questa AMI nella console Amazon EC2 cercando l'ID di esecuzione dell'automazione.

# Ripristino di password e chiavi SSH sulle istanze EC2
<a name="automation-ec2reset"></a>

È possibile utilizzare il runbook `AWSSupport-ResetAccess` per riabilitare automaticamente la generazione della password dell'amministratore locale sulle istanze Amazon Elastic Compute Cloud (Amazon EC2) per Windows Server e per generare una nuova chiave SSH sulle istanze EC2 per Linux. Il `AWSSupport-ResetAccess` runbook è progettato per eseguire una combinazione di AWS Systems Manager azioni, AWS CloudFormation azioni e AWS Lambda funzioni che automatizzano i passaggi normalmente necessari per reimpostare la password dell'amministratore locale.

È possibile utilizzare Automation, uno strumento incluso nel `AWSSupport-ResetAccess` runbook AWS Systems Manager, per risolvere i seguenti problemi:

**Windows**

*Hai perso la coppia di chiavi EC2*: per risolvere questo problema, puoi usare il **AWSSupport-ResetAccess**runbook per creare una password abilitata AMI dall'istanza corrente, avviare una nuova istanza dall'AMI e selezionare una coppia di chiavi di tua proprietà.

*Perdita della password dell'amministratore locale*: per risolvere questo problema, è possibile utilizzare il runbook `AWSSupport-ResetAccess` per generare una nuova password che può essere decrittografata mediante la coppia di chiavi EC2 corrente.

**Linux**

*Perdita della coppia di chiavi EC2 oppure configurazione dell'accesso SSH all'istanza con una chiave perduta*: per risolvere questo problema, è possibile utilizzare il runbook `AWSSupport-ResetAccess` per creare una nuova chiave SSH per l'istanza corrente. Tale chiave consente di connettersi di nuovo all'istanza.

**Nota**  
Se l'istanza EC2 per Windows Server è configurata per Systems Manager, puoi anche reimpostare la password dell'amministratore locale utilizzando EC2 Rescue and AWS Systems Manager Run Command. Per ulteriori informazioni, consulta [Using EC2 Rescue for Windows Server with Systems Manager Run Command](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-ssm.html) nella *Amazon EC2 User Guide*.

**Informazioni correlate**  
[Connessione all'istanza Linux da Windows tramite PuTTY](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html) nella *Guida per l'utente di Amazon EC2*

## Come funziona
<a name="automation-ec2reset-how"></a>

Risoluzione dei problemi di un'istanza con il servizio di automazione e il runbook `AWSSupport-ResetAccess` funziona nel seguente modo:
+ L'utente specifica l'ID dell'istanza ed esegue il runbook.
+ Il sistema crea un VPC temporaneo e quindi esegue una serie di funzioni Lambda per configurare il VPC.
+ Il sistema identifica una sottorete per il VPC temporaneo nella stessa zona di disponibilità dell'istanza originale.
+ Il sistema avvia un'istanza helper temporanea e abilitata per SSM.
+ Il sistema arresta l'istanza originale e crea un backup. Collega quindi il volume root originale all'istanza helper.
+ Il sistema utilizza Rescue Run Command per eseguire EC2 Rescue sull'istanza helper. In Windows, EC2 Rescue consente la generazione di password per l'amministratore locale utilizzando EC2 Config o EC2 Launch sul volume root originale allegato. Su Linux, EC2 Rescue genera e inietta una nuova chiave SSH e salva la chiave privata, crittografata, in. Parameter Store Al termine, EC2 Rescue ricollega il volume root all'istanza originale.
+ Il sistema crea una nuova Amazon Machine Image (AMI) dell'istanza, ora che la generazione delle password è abilitata. È possibile usare questa AMI per creare una nuova istanza EC2 e associare una nuova coppia di chiavi, se necessario.
+ Il sistema riavvia l'istanza originale e termina l'istanza temporanea. Il sistema termina anche il VPC temporaneo e le funzioni Lambda create all'inizio dell'automazione.
+ **Windows**: l'istanza genera una nuova password che è possibile decodificare dalla console Amazon EC2 utilizzando la coppia di chiavi corrente assegnata all'istanza.

  **Linux**: è possibile accedere all'istanza tramite SSH utilizzando la chiave SSH memorizzata in Systems Manager Parameter Store come **/ec2rl/openssh/ *instance ID* /key.**

## Prima di iniziare
<a name="automation-ec2reset-begin"></a>

Prima di eseguire la seguente automazione, esegui le seguenti operazioni:
+ Copiare l'ID istanza dell'istanza per la quale si desidera reimpostare la password dell'amministratore. Questo ID verrà specificato nella procedura.
+ Facoltativamente, recuperare l'ID di una sottorete nella stessa zona di disponibilità dell'istanza non raggiungibile. L'istanza Rescue verrà creata in questa sottorete. EC2 Se non specifichi una sottorete, Automation crea un nuovo VPC temporaneo nel tuo. Account AWS Verifica di Account AWS avere almeno un VPC disponibile. Per impostazione predefinita, puoi crearne cinque VPCs in una regione. Se ne hai già creati cinque VPCs nella regione, l'automazione fallisce senza apportare modifiche all'istanza. Per ulteriori informazioni sulle quote di Amazon VPC, consulta l'argomento relativo a [VPC e sottoreti](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-vpcs-subnets) nella *Guida utente Amazon VPC*.
+ Facoltativamente, puoi creare e specificare un ruolo AWS Identity and Access Management (IAM) per l'automazione. Se non si specifica questo ruolo, il servizio di automazione viene eseguito nel contesto dell'utente che ha eseguito l'automazione.

### Concessione delle autorizzazioni a AWSSupport-EC 2Rescue per eseguire azioni sulle istanze
<a name="automation-ec2reset-access"></a>

EC2Rescue necessita dell'autorizzazione per eseguire una serie di azioni sulle istanze durante l'automazione. Queste azioni richiamano i AWS Lambda servizi IAM e Amazon EC2 per tentare in modo sicuro di risolvere i problemi con le istanze. Se disponi di autorizzazioni a livello di amministratore nel tuo e/o Account AWS VPC, potresti essere in grado di eseguire l'automazione senza configurare le autorizzazioni, come descritto in questa sezione. Se non si dispone delle autorizzazioni a livello di amministratore, l'utente corrente o un amministratore deve configurare tali autorizzazioni mediante una delle opzioni riportate di seguito.
+ [Concessione delle autorizzazioni mediante policy IAM](#automation-ec2reset-access-iam)
+ [Concessione delle autorizzazioni utilizzando un modello CloudFormation](#automation-ec2reset-access-cfn)

#### Concessione delle autorizzazioni mediante policy IAM
<a name="automation-ec2reset-access-iam"></a>

È possibile collegare la seguente policy IAM all'utente, al gruppo o al ruolo come policy inline. In alternativa, è possibile creare una nuova policy gestita IAM e collegarla all'utente, al gruppo o al ruolo. Per ulteriori informazioni sull'aggiunta di una policy inline all'utente, al gruppo o al ruolo, consulta la pagina [Utilizzo delle policy inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html). Per ulteriori informazioni sulla creazione di una nuova policy gestita, consulta la sezione relativa all'[uso di policy gestite](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html).

**Nota**  
Se crei una nuova policy gestita da IAM, devi anche allegare la policy gestita di **Amazon SSMAutomation Role** in modo che le tue istanze possano comunicare con l'API Systems Manager.

**Policy IAM per `AWSSupport-ResetAccess`**

*account ID*Sostituiscila con le tue informazioni.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lambda:InvokeFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction"
            ],
            "Resource": "arn:aws:lambda:*:111122223333:function:AWSSupport-EC2Rescue-*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::awssupport-ssm.*/*.template",
                "arn:aws:s3:::awssupport-ssm.*/*.zip"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:CreateRole",
                "iam:CreateInstanceProfile",
                "iam:GetRole",
                "iam:GetInstanceProfile",
                "iam:PutRolePolicy",
                "iam:DetachRolePolicy",
                "iam:AttachRolePolicy",
                "iam:PassRole",
                "iam:AddRoleToInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DeleteInstanceProfile"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/AWSSupport-EC2Rescue-*",
                "arn:aws:iam::111122223333:instance-profile/AWSSupport-EC2Rescue-*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "lambda:CreateFunction",
                "ec2:CreateVpc",
                "ec2:ModifyVpcAttribute",
                "ec2:DeleteVpc",
                "ec2:CreateInternetGateway",
                "ec2:AttachInternetGateway",
                "ec2:DetachInternetGateway",
                "ec2:DeleteInternetGateway",
                "ec2:CreateSubnet",
                "ec2:DeleteSubnet",
                "ec2:CreateRoute",
                "ec2:DeleteRoute",
                "ec2:CreateRouteTable",
                "ec2:AssociateRouteTable",
                "ec2:DisassociateRouteTable",
                "ec2:DeleteRouteTable",
                "ec2:CreateVpcEndpoint",
                "ec2:DeleteVpcEndpoints",
                "ec2:ModifyVpcEndpoint",
                "ec2:Describe*"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

#### Concessione delle autorizzazioni utilizzando un modello CloudFormation
<a name="automation-ec2reset-access-cfn"></a>

CloudFormation automatizza il processo di creazione di ruoli e policy IAM utilizzando un modello preconfigurato. Utilizza la seguente procedura per creare i ruoli e le policy IAM richiesti per EC2 Rescue Automation utilizzando. CloudFormation

**Per creare i ruoli e le politiche IAM richiesti per EC2 Rescue**

1. Scaricare [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip) ed estrarre il file `AWSSupport-EC2RescueRole.json` in una directory sul computer locale.

1. Se ti Account AWS trovi in una partizione speciale, modifica il modello per cambiare i valori ARN con quelli della tua partizione.

   Ad esempio, per le regioni della Cina, modificare i casi da `arn:aws` a `arn:aws-cn`.

1. [Accedi Console di gestione AWS e apri la CloudFormation console all'indirizzo /cloudformazione. https://console.aws.amazon.com](https://console.aws.amazon.com/cloudformation/)

1. Scegliere **Create stack (Crea stack)**, **With new resources (standard) (Con nuove risorse (standard))**.

1. Nella pagina **Create stack (Crea stack)** per **Prerequisite - Prepare template (Prerequisito - Prepara modello)**, scegliere **Template is ready (Il modello è pronto)**.

1. In **Specify template (Specifica il modello)**, scegliere **Upload a template file (Carica un file modello)**.

1. Scegliere **Choose file (Scegli file)**, quindi individuare e selezionare il file `AWSSupport-EC2RescueRole.json` dalla directory in cui è stato estratto.

1. Scegliere **Next (Successivo)**.

1. Nella pagina **Specify stack details (Specifica i dettagli dello stack)**, per il campo **Stack name (Nome stack)** inserire un nome per identificare lo stack, quindi scegliere **Next (Successivo)**.

1. (Facoltativo) Nell'area **Tag**, applica una o più name/value coppie di chiavi di tag allo stack.

   I tag sono metadati facoltativi assegnati a una risorsa. I tag consentono di categorizzare una risorsa in diversi modi, ad esempio in base allo scopo, al proprietario o all'ambiente. Ad esempio, è possibile applicare un tag uno stack per identificare il tipo di attività che esegue, i tipi di destinazioni o altre risorse coinvolte e l'ambiente in cui viene eseguito.

1. Seleziona **Next** (Successivo).

1. Nella pagina **Revisione**, esamina i dettagli dello stack, quindi scorri verso il basso e scegli l'opzione **Riconosco che CloudFormation potrebbe creare risorse IAM**.

1. CloudFormation mostra lo **stato CREATE\$1IN\$1PROGRESS** per alcuni minuti. Dopo la creazione dello stack, lo stato diventa **CREATE\$1COMPLETE**. È inoltre possibile scegliere l'icona di aggiornamento per verificare lo stato del processo di creazione.

1. Nell'elenco degli stack, scegliere l'opzione accanto allo stack appena creato e quindi scegliere la scheda **Outputs (Output)**.

1. Copiare il valore visualizzato nel campo **Value (Valore)**. È l'ARN di. AssumeRole È possibile specificare questo ARN quando si esegue il servizio di automazione. 

## Esecuzione del servizio di automazione
<a name="automation-ec2reset-executing"></a>

La procedura seguente descrive come seguire runbook `AWSSupport-ResetAccess` tramite la console AWS Systems Manager .

**Importante**  
L'esecuzione della seguente automazione arresta l'istanza. L'arresto dell'istanza può causare la perdita di dati sui volumi dell'archivio dell'istanza collegati (se presenti). L'arresto dell'istanza può causare anche la modifica dell'indirizzo IP pubblico se non è associato alcun indirizzo IP elastico. Per evitare queste modifiche di configurazione, utilizza Run Command per ripristinare l'accesso. Per ulteriori informazioni, consulta [Using EC2 Rescue for Windows Server with Systems Manager Run Command](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-ssm.html) nella *Amazon EC2 User Guide*.

**Per eseguire l'automazione AWSSupport-ResetAccess**

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 **Automazione**.

1. Scegli **Esegui automazione**.

1. Nella sezione **Automation document (Documento di automazione)** scegliere **Owned by Amazon (Di proprietà di Amazon)** nell'elenco.

1. Nell'elenco dei runbook scegliere il pulsante nella scheda per **AWSSupport-ResetAccess**, quindi scegliere **Next (Successivo)**.

1. Nella pagina **Execute automation document (Esegui documento di automazione)**, scegliere **Simple execution (Esecuzione semplice)**.

1. Nella sezione **Document details (Dettagli documento)** verificare che l'opzione **Document version (Versione documento)** sia impostata sulla versione predefinita con il numero più alto. Ad esempio, **\$1DEFAULT** o **3 (default)**.

1. Nella sezione **Input parameters (Parametri di input)**, specificare i seguenti parametri: 

   1. Per **InstanceID**, specificare l'ID dell'istanza non raggiungibile. 

   1. Per **SubnetId**, specifica una sottorete in un VPC esistente nella stessa zona di disponibilità dell'istanza specificata. Per impostazione predefinita, Systems Manager crea un nuovo VPC, ma è possibile specificare una sottorete in un VPC esistente.
**Nota**  
Se l'opzione per specificare un ID sottorete non è disponibile, verificare nel campo **Default (Impostazione predefinita)** che si stia utilizzando la versione più recente del runbook.

   1. Per **EC2RescueInstanceType**, specifica un tipo di istanza per l'istanza EC2 Rescue. Il tipo di istanza di default è `t2.medium`.

   1. Infatti **AssumeRole**, se hai creato ruoli per questa automazione utilizzando la CloudFormation procedura descritta in precedenza in questo argomento, specifica l' AssumeRole ARN che hai annotato nella CloudFormation console.

1. (Facoltativo) Nell'area **Tag**, applicate una o più name/value coppie di chiavi di tag per identificare l'automazione, ad esempio`Key=Purpose,Value=ResetAccess`.

1. Scegliere **Execute (Esegui)**.

1. Per monitorare lo stato di avanzamento dell'automazione, scegliere l'automazione in esecuzione e quindi scegliere la scheda **Steps (Fasi)**. Al termine dell'automazione, scegliere la scheda **Descriptions (Descrizioni)**, quindi **View output (Visualizza output)** per visualizzare i risultati. Per visualizzare l'output delle singole fasi, scegliere la scheda **Steps (Fasi)**, quindi scegliere **View Outputs (Visualizza output)** accanto a una fase.

Il runbook crea un backup di AMI e un'AMI abilitata mediante password come parte dell'automazione. Tutte le altre risorse create dall'automazione vengono eliminate automaticamente, ma queste AMIs rimangono nell'account in uso. Alle AMIs viene assegnato un nome utilizzando le seguenti convenzioni:
+ Backup AMI: `AWSSupport-EC2Rescue:InstanceID`
+ AMI abilitata tramite password AWSSupport-EC: 2Rescue: AMI abilitata tramite password da *Instance ID*

È possibile individuare queste AMIs nella console cercando l'ID di esecuzione dell servizio di automazione.

Per Linux, la nuova chiave SSH privata per l'istanza viene salvato e crittografati in Parameter Store. **Il nome del parametro è /ec2rl/openssh/ /key. *instance ID***

# Trasmissione dei dati ad Automazione tramite trasformatori di input
<a name="automation-tutorial-eventbridge-input-transformers"></a>

Questo tutorial di AWS Systems Manager automazione mostra come utilizzare la funzionalità di trasformazione di input di Amazon EventBridge per estrarre un'istanza Amazon Elastic Compute Cloud (Amazon EC2) da un evento di modifica dello stato dell'istanza. `instance-id` L’automazione è uno strumento di AWS Systems Manager. Usiamo il trasformatore di input per passare i dati alla destinazione del runbook `AWS-CreateImage` come parametro di input `InstanceId`. La regola viene attivata quando un'istanza passa allo stato `stopped`.

Per ulteriori informazioni sull'[utilizzo dei trasformatori di input, consulta Tutorial: Use Input Transformer per personalizzare ciò che viene passato all'Event Target nella](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-input-transformer-tutorial.html) *Amazon EventBridge * User Guide.

**Prima di iniziare**  
Verificare di aver aggiunto le autorizzazioni e i criteri di attendibilità richiesti EventBridge per il ruolo di servizio Systems Manager Automation. Per ulteriori informazioni, consulta [Panoramica della gestione delle autorizzazioni di accesso alle EventBridge risorse](https://docs.aws.amazon.com/eventbridge/latest/userguide/iam-access-control-identity-based-eventbridge.html) nella *Amazon EventBridge User Guide*.

**Per utilizzare i trasformatori di input con il servizio di automazione**

1. Apri la EventBridge console Amazon all'indirizzo [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

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

1. Scegli **Crea regola**.

1. Inserisci un nome e una descrizione per la regola.

   Una regola non può avere lo stesso nome di un'altra regola nella stessa Regione e sullo stesso router di eventi.

1. Per **Router di eventi**, seleziona il router di eventi che desideri associare a questa regola. Se desideri che questa regola risponda agli eventi corrispondenti generati dai tuoi Account AWS, seleziona **Predefinito**. Quando un Servizio AWS utente del tuo account emette un evento, questo passa sempre al bus eventi predefinito del tuo account.

1. Per **Tipo di regola**, scegli **Regola con un modello di eventi**.

1. Scegli **Next (Successivo)**.

1. Per **Event source**, scegli **AWS eventi o eventi EventBridge partner**.

1. Nella sezione **Modello di eventi**, scegli **Modulo di modello di eventi**.

1. Per **Event source** (Origine evento), scegli **AWS services** (Servizi ).

1. Per **Servizio AWS **, scegli **EC2**.

1. Per **Tipo di evento**, scegli **Notifica variazione di stato istanze EC2**.

1. Per **Specifica del tipo di evento 1**, seleziona **Stati specifici**, quindi scegli **arrestato**.

1. Per **Event Type Specification 2**, seleziona **Qualsiasi istanza** **o seleziona Id specifici** IDs dell'istanza e inserisci le istanze da monitorare.

1. Scegli **Next (Successivo)**.

1. Per **Tipi di destinazione**, scegli **servizio AWS **.

1. Per **Seleziona destinazione**, scegli **Automazione di Systems Manager**.

1. Per **Document**, scegli **AWS- CreateImage**.

1. Nella sezione **Configure automation parameter(s)** (Configurazione dei parametri di automazione), **Input Transformer** (Trasformatore di input).

1. Per **Input path** (Percorso di input) inserisci **\$1"instance":"\$1.detail.instance-id"\$1**.

1. Per **Template** (Modello) inserisci **\$1"InstanceId":[<instance>]\$1**.

1. Per **Ruolo di esecuzione**, scegli **Utilizza ruolo esistente** e quindi il ruolo di servizio di automazione.

1. Scegli **Next (Successivo)**.

1. (Facoltativo) Inserire uno o più tag per la regola. Per ulteriori informazioni, consulta [Tagging Your Amazon EventBridge Resources](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-tagging.html) nella *Amazon EventBridge User Guide*.

1. Scegli **Next (Successivo)**.

1. Rivedi i dettagli della regola e scegli **Crea regola**.

# Scopri gli stati restituiti da Systems Manager Automation
<a name="automation-statuses"></a>

AWS Systems Manager L'automazione riporta informazioni dettagliate sullo stato dei vari stati a cui viene sottoposta un'azione o una fase di automazione quando si esegue un'automazione e per l'automazione complessiva. L'automazione è uno strumento di AWS Systems Manager. È possibile monitorare gli stati dell'automazione usando i metodi seguenti:
+ Monitoraggio di **Execution status (Stato dell'esecuzione)** nella console del servizio di automazione di Systems Manager.
+ Utilizzare gli strumenti a riga di comando preferiti. Per AWS Command Line Interface (AWS CLI), puoi usare [describe-automation-step-executions](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-automation-step-executions.html)o [get-automation-execution](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-automation-execution.html). Per il AWS Tools for Windows PowerShell, puoi usare [Get- SSMAutomation StepExecution](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-SSMAutomationStepExecution.html) o [Get- SSMAutomation Execution](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-SSMAutomationExecution.html).
+ Configura Amazon EventBridge per rispondere alle azioni o ai cambiamenti dello stato di automazione.

Per ulteriori informazioni sulla gestione dei timeout in un'automazione, consulta [Gestione dei timeout nei runbook](automation-handling-timeouts.md).

## Informazioni sugli stati di automazione
<a name="automation-statuses-about"></a>

Il servizio di automazione riporta dettagli sullo stato delle singole operazioni di automazione, oltre all'automazione complessiva.

Lo stato complessivo dell'automazione può essere diverso rispetto allo stato segnalato da una singola operazione o fase, come indicato nelle tabelle seguenti.


**Stato dettagliato delle operazioni**  

| Status | Informazioni | 
| --- | --- | 
| Pending (In attesa) | La fase non ha avviato l'esecuzione. Se l'automazione utilizza operazioni condizionali, le fasi rimangono in questo stato dopo che un'automazione è stata completata se la condizione non è stata soddisfatta per eseguire la fase. Le fasi rimangono anche in questo stato se l'automazione viene annullata prima dell'esecuzione della fase. | 
| InProgress | La fase è in esecuzione. | 
| Waiting (In attesa) | La fase è in attesa di input. | 
| Completato | La fase ha esito positivo. Si tratta di uno stato terminale. | 
| TimedOut | Una fase o un'approvazione non è stata completata prima del periodo di timeout specificato. Si tratta di uno stato terminale. | 
| Cancelling (In annullamento) | La fase è in corso di arresto dopo essere stata annullata da un richiedente. | 
| Cancelled (Annullato) | La fase è stata interrotta da un richiedente prima del completamento. Si tratta di uno stato terminale. | 
| Non riuscito |  La fase non è stata completata correttamente. Si tratta di uno stato terminale.  | 
| Exited |  Restituito solo dall'azione `aws:loop`. Il ciclo non è stato completato per intero. Un passaggio all'interno del ciclo è stato spostato in un passaggio esterno utilizzando le proprietà `nextStep`, `onCancel` o `onFailure`.  | 


**Stato dettagliato per un'automazione**  

| Status | Informazioni | 
| --- | --- | 
| Pending (In attesa) | L'automazione non ha iniziato a funzionare. | 
| InProgress | L'automazione è in esecuzione. | 
| Waiting (In attesa) | L'automazione è in attesa di input. | 
| Completato | L'automazione è stata completata con successo. Si tratta di uno stato terminale. | 
| TimedOut | Una fase o un'approvazione non è stata completata prima del periodo di timeout specificato. Si tratta di uno stato terminale. | 
| Cancelling (In annullamento) | L'automazione è in fase di arresto dopo essere stata annullata da un richiedente. | 
| Cancelled (Annullato) | L'automazione è stata interrotta da un richiedente prima del completamento. Si tratta di uno stato terminale. | 
| Non riuscito |  L'automazione non è stata completata correttamente. Si tratta di uno stato terminale.  | 

# Risoluzione dei problemi dl servizio di automazione di Systems Manager
<a name="automation-troubleshooting"></a>

Utilizza le informazioni seguenti per risolvere i problemi relativi al servizio di automazione di AWS Systems Manager , uno strumento di AWS Systems Manager. Questo argomento include attività di risoluzione dei problemi specifiche in base ai messaggi di errore restituiti dal servizio di automazione.

**Topics**
+ [Errori comuni del servizio di automazione](#automation-trbl-common)
+ [Mancato avvio dell'esecuzione del servizio di automazione](#automation-trbl-access)
+ [Esecuzione avviata con stato non valido](#automation-trbl-exstrt)
+ [Esecuzione avviata, ma scaduta](#automation-trbl-to)

## Errori comuni del servizio di automazione
<a name="automation-trbl-common"></a>

Questa sezione include informazioni sugli errori più comuni del servizio di automazione.

### VPC non definito 400
<a name="automation-trbl-common-vpc"></a>

Per impostazione predefinita, quando il servizio di automazione esegue il runbook `AWS-UpdateLinuxAmi` o `AWS-UpdateWindowsAmi`, il sistema crea un'istanza temporanea nel VPC predefinito (172.30.0.0/16). Se il VPC predefinito è stato eliminato, verrà restituito l'errore seguente:

`VPC not defined 400`

Per risolvere questo problema, è necessario specificare un valore per il parametro `SubnetId` di input.

## Mancato avvio dell'esecuzione del servizio di automazione
<a name="automation-trbl-access"></a>

Un'automazione può fallire con un errore di accesso negato o un errore di assunzione del ruolo non valido se i ruoli AWS Identity and Access Management (IAM) e le policy per l'automazione non sono stati configurati correttamente.

### Accesso negato
<a name="automation-trbl-access-denied"></a>

I seguenti esempi descrivono le situazioni in cui si è verificato il mancato avvio di un'automazione con un errore di accesso negato.

**Accesso negato all'API Systems Manager**  
**Messaggio di errore**: `User: user arn isn't authorized to perform: ssm:StartAutomationExecution on resource: document arn (Service: AWSSimpleSystemsManagement; Status Code: 400; Error Code: AccessDeniedException; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)`
+ Possibile causa 1: l'utente che ha cercato di avviare l'automazione non dispone dell'autorizzazione per chiamare l'API `StartAutomationExecution`. Per risolvere questo problema, collega la policy IAM all'utente utilizzato per avviare l'automazione. 
+ Possibile causa 2: l'utente che ha cercato di avviare l'automazione dispone dell'autorizzazione per chiamare l'API `StartAutomationExecution`, ma non dell'autorizzazione per chiamare l'API mediante il runbook specificato. Per risolvere questo problema, collega la policy IAM all'utente utilizzato per avviare l'automazione. 

**Accesso negato a causa della mancanza PassRole di autorizzazioni**  
**Messaggio di errore**: `User: user arn isn't authorized to perform: iam:PassRole on resource: automation assume role arn (Service: AWSSimpleSystemsManagement; Status Code: 400; Error Code: AccessDeniedException; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)`

L'utente che tenta di avviare l'automazione non dispone dell' PassRole autorizzazione per il ruolo di assunzione. Per risolvere questo problema, collega la PassRole policy iam: al ruolo dell'utente che tenta di avviare l'automazione. Per ulteriori informazioni, consulta [Attività 2: allega la PassRole policy iam: al tuo ruolo di automazione](automation-setup-iam.md#attach-passrole-policy).

### Ruolo presunto non valido
<a name="automation-trbl-ar"></a>

Quando si esegue un servizio di automazione, un ruolo presunto viene fornito nel runbook oppure viene passato come valore di parametro per il runbook. Si possono verificare vari tipi di errore se il ruolo presunto non è specificato o configurato correttamente.

**Ruolo presunto non valido**  
**Messaggio di errore**: `The format of the supplied assume role ARN isn't valid.` Il formato del ruolo presunto non è valido. Per risolvere questo problema, verifica se un ruolo presunto valido è stato specificato nel runbook oppure come parametro di runtime durante l'avvio dell'automazione.

**Mancato utilizzo del ruolo presunto**  
**Messaggio di errore**: `The defined assume role is unable to be assumed. (Service: AWSSimpleSystemsManagement; Status Code: 400; Error Code: InvalidAutomationExecutionParametersException; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)`
+ Possibile causa 1: il ruolo presunto non esiste. Per risolvere questo problema, crea il ruolo. Per ulteriori informazioni, consulta [Configurazione del servizio di automazione](automation-setup.md). I dettagli specifici per la creazione di questo ruolo sono descritti nel seguente argomento, [Processo 1: creazione di un ruolo di servizio per il servizio di automazione](automation-setup-iam.md#create-service-role).
+ Possibile causa 2: il ruolo presunto non ha una relazione di trust con il servizio Systems Manager. Per risolvere questo problema, crea una relazione di trust. Per ulteriori informazioni, consulta [Non è possibile assumere un ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_cant-assume-role) nella *Guida per l'utente IAM*. 

## Esecuzione avviata con stato non valido
<a name="automation-trbl-exstrt"></a>

### Errori specifici dell'operazione
<a name="automation-trbl-actspec"></a>

I runbook contengono fasi e fasi eseguite in ordine. Ogni passaggio ne richiama uno o più. Servizio AWS APIs Quindi APIs determinano gli input, il comportamento e gli output della fase. Un errore che causa la mancata esecuzione di una fase puoi verificarsi in varie posizioni. I messaggi di errore indicano quando e dove si è verificato un errore.

Per visualizzare un messaggio di errore nella console Amazon Elastic Compute Cloud (Amazon EC2), scegli il collegamento **Visualizza output** associato alla fase non riuscita. Per visualizzare un messaggio di errore proveniente da AWS CLI, chiamate `get-automation-execution` e cercate l'`FailureMessage`attributo in un messaggio di errore. `StepExecution`

Negli esempi seguenti una fase associata all'operazione `aws:runInstance` è caratterizzata da un'esecuzione non riuscita. Ogni esempio fa riferimento a un tipo di errore diverso.

**Immagine mancante**  
**Messaggio di errore**: `Automation Step Execution fails when it's launching the instance(s). Get Exception from RunInstances API of ec2 Service. Exception Message from RunInstances API: [The image id '[ami id]' doesn't exist (Service: AmazonEC2; Status Code: 400; Error Code: InvalidAMIID.NotFound; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)]. Please refer to Automation Service Troubleshooting Guide for more diagnosis details.`

L'operazione `aws:runInstances` ha ricevuto input per un valore `ImageId` che non esiste. Per risolvere questo problema, aggiorna il runbook o i valori dei parametri con l'ID AMI corretto.

**Policy del ruolo presunto con autorizzazioni insufficienti**  
**Messaggio di errore**: `Automation Step Execution fails when it's launching the instance(s). Get Exception from RunInstances API of ec2 Service. Exception Message from RunInstances API: [You aren't authorized to perform this operation. Encoded authorization failure message: xxxxxxx (Service: AmazonEC2; Status Code: 403; Error Code: UnauthorizedOperation; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)]. Please refer to Automation Service Troubleshooting Guide for more diagnosis details.`

Il ruolo presunto non dispone di autorizzazioni sufficienti per chiamare l'API `RunInstances` sulle istanze EC2. Per risolvere questo problema, allega una policy IAM al ruolo presunto con l'autorizzazione necessaria per chiamare l'API `RunInstances`. Per ulteriori informazioni, consulta [Crea ruoli di servizio per l'automazione tramite la console](automation-setup-iam.md).

**Stato imprevisto**  
**Messaggio di errore**: `Step fails when it's verifying launched instance(s) are ready to be used. Instance i-xxxxxxxxx entered unexpected state: shutting-down. Please refer to Automation Service Troubleshooting Guide for more diagnosis details.`
+ Possibile causa 1: si è verificato un problema con l'istanza o il servizio Amazon EC2. Per risolvere questo problema, esegui l'accesso all'istanza o rivedi il log di sistema dell'istanza per individuare il motivo dell'arresto dell'istanza.
+ Possibile causa 2: lo script di dati utente specificato per l'operazione `aws:runInstances` contiene un problema o la relativa sintassi è errata. Verifica la sintassi dello script di dati utente. Verifica anche che gli script di dati utente non arrestino l'istanza o non richiamino altri script che arrestano l'istanza.

**Informazioni di riferimento relative agli errori specifici dell'operazione**  
Quando l'esecuzione di una fase ha esito negativo, il messaggio di errore potrebbe indicare il servizio chiamato quando si è verificato l'errore. La tabella seguente elenca i servizi richiamati da ciascuna operazione. La tabella fornisce anche i collegamenti alle informazioni su ciascun servizio.


****  

| Azione | Servizi AWS richiamato da questa azione | Ulteriori informazioni su questo servizio | Risoluzione dei problemi | 
| --- | --- | --- | --- | 
|  `aws:runInstances`  |  Amazon EC2  |  [Guida per l'utente di Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)  |  [Risoluzione di problemi relativi alle istanze EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-troubleshoot.html)  | 
|  `aws:changeInstanceState`  |  Amazon EC2  |  [Guida per l'utente di Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)  |  [Risoluzione di problemi relativi alle istanze EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-troubleshoot.html)  | 
|  `aws:runCommand`  |  Systems Manager  |   [AWS Systems Manager Run Command](run-command.md)  |   [Risoluzione dei problemi di Systems Manager](troubleshooting-remote-commands.md)  | 
|  `aws:createImage`  |  Amazon EC2  |  [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)  |  | 
|  `aws:createStack`  |  CloudFormation  |  [AWS CloudFormation Guida per l'utente](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)  |  [Risoluzione dei problemi CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html)  | 
|  `aws:deleteStack`  |  CloudFormation  |  [AWS CloudFormation Guida per l'utente](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)  |  [Risoluzione dei problemi CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html)  | 
|  `aws:deleteImage`  |  Amazon EC2  |  [Amazon Machine Image](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)  |  | 
|  `aws:copyImage`  |  Amazon EC2  |  [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)  |  | 
|  `aws:createTag`  |  Amazon EC2, Systems Manager  |  [Risorse e tag EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_Resources.html)  |  | 
|  `aws:invokeLambdaFunction`  |  AWS Lambda  |  [AWS Lambda Guida per gli sviluppatori](https://docs.aws.amazon.com/lambda/latest/dg/)  |  [Risoluzione di problemi relativi a Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html)  | 

### Errore interno del servizio di automazione
<a name="automation-trbl-err"></a>

**Messaggio di errore**: `Internal Server Error. Please refer to Automation Service Troubleshooting Guide for more diagnosis details.`

Un problema con il servizio di automazione impedisce la corretta esecuzione del runbook specificato. Per risolvere questo problema, contatta Supporto AWS. Devi fornire l'ID esecuzione e l'ID cliente, se disponibili.

## Esecuzione avviata, ma scaduta
<a name="automation-trbl-to"></a>

**Messaggio di errore**: `Step timed out while step is verifying launched instance(s) are ready to be used. Please refer to Automation Service Troubleshooting Guide for more diagnosis details.`

Si è verificato il timeout di una fase dell'operazione `aws:runInstances`. Questo errore si può verificare se l'esecuzione dell'operazione di una fase richiede un intervallo di tempo maggiore del valore specificato per `timeoutSeconds` nella fase. Per risolvere questo problema, specifica un valore più alto per il parametro `timeoutSeconds` nell'operazione `aws:runInstances`. Se il problema persiste, individua il passaggio la cui esecuzione richiede più tempo del previsto

# AWS Systems Manager Change Calendar
<a name="systems-manager-change-calendar"></a>

Change Calendar, uno strumento in AWS Systems Manager, consente di impostare intervalli di date e orari in cui le azioni specificate (ad esempio, nei runbook di [Systems Manager Automation](systems-manager-automation.md)) potrebbero o meno essere eseguite nel proprio Account AWS. In Change Calendar, questi intervalli sono chiamati *eventi*. Quando si crea una voce Change Calendar, si sta creando un [documento Systems Manager](documents.md) del tipo `ChangeCalendar`. In Change Calendar, il documento memorizza i dati [iCalendar 2.0](https://icalendar.org/) in formato testo normale. Gli eventi aggiunti alla voce Change Calendar diventano parte del documento. Per iniziare a utilizzare Change Calendar, apri la [console di Systems Manager](https://console.aws.amazon.com//systems-manager/change-calendar). Nel pannello di navigazione, scegli **Change Calendar**.

È possibile creare un calendario e i relativi eventi nella console di Systems Manager. È anche possibile importare un file iCalendar (`.ics`) esportato da un provider di calendari esterno supportato per aggiungere gli eventi al calendario. I provider supportati includono Google Calendar, Microsoft Outlook e iCloud Calendar.

Una voce Change Calendar può essere uno dei due tipi:

**`DEFAULT_OPEN`** o Apri per impostazione predefinita  
Tutte le operazioni possono essere eseguite per impostazione predefinita, tranne durante gli eventi del calendario. Durante gli eventi, lo stato di un calendario `DEFAULT_OPEN` è `CLOSED` e l'esecuzione degli eventi è bloccata.

**`DEFAULT_CLOSED`** o Chiuso per impostazione predefinita  
Tutte le operazioni sono bloccate per impostazione predefinita, tranne durante gli eventi del calendario. Durante gli eventi, lo stato di un calendario `DEFAULT_CLOSED` è `OPEN` e le operazioni possono essere eseguite.

Puoi scegliere di aggiungere automaticamente a un calendario tutti i flussi di lavoro di automazione pianificati, le finestre di manutenzione e le associazioni di State Manager. Puoi anche rimuovere uno di questi singoli tipi dalla visualizzazione del calendario. 

## A chi è consigliato l'uso di Change Calendar?
<a name="systems-manager-change-calendar-who"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 
+ AWS clienti che eseguono i seguenti tipi di azioni:
  + Creazione o esecuzione dei runbook Automation.
  + Creazione di richieste di modifica in Change Manager.
  + Esecuzione di finestre di manutenzione.
  + Creazione di associazioni in State Manager.

  AutomazioneChange Manager,Maintenance Windows, e State Manager sono tutti strumenti AWS Systems Manager. Integrando questi strumenti conChange Calendar, puoi consentire o bloccare questi tipi di azioni a seconda dello stato corrente del calendario delle modifiche associato a ciascuno di essi.
+ Amministratori responsabili di mantenere coerenti, stabili e funzionali le configurazioni dei nodi gestiti di Systems Manager.

## Vantaggi di Change Calendar
<a name="systems-manager-change-calendar-benefits"></a>

Di seguito sono riportati alcuni vantaggi di Change Calendar.
+ **Esaminare le modifiche prima che vengano applicate**

  Una voce del Change Calendar può aiutare a garantire che le modifiche di automazione potenzialmente distruttive apportate all'ambiente vengano esaminate prima della loro applicazione.
+ **Applicare le modifiche solo nei tempi appropriati**

  Con le voci di Change Calendar è possibile mantenere stabile l'ambiente durante gli eventi. Ad esempio, è possibile creare una voce Change Calendar per bloccare le modifiche quando si prevede una richiesta elevata delle risorse, ad esempio durante una conferenza o una promozione di marketing pubblico. Una voce del calendario può anche bloccare le modifiche quando ci si aspetta un supporto amministrativo limitato, ad esempio durante le vacanze o le festività. È possibile utilizzare una voce del calendario per consentire le modifiche, ad eccezione di determinati periodi del giorno o della settimana in cui è disponibile un supporto amministrativo limitato per risolvere i problemi relativi a operazioni o distribuzioni non riuscite.
+ **Ottenere lo stato attuale o imminente del calendario**

  In Systems Manager è possibile eseguire l'operazione API `GetCalendarState` per visualizzare lo stato corrente del calendario, lo stato in un momento specificato o la prossima volta che lo stato del calendario è pianificato per la modifica.
**Nota**  
L'`GetCalendarState`API ha una quota di 10 richieste al secondo. Per ulteriori informazioni sulle quote di Systems Manager, vedere [Quote di servizio Systems Manager nel](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm). *Riferimenti generali di Amazon Web Services*
+ 

**EventBridge supporto**  
Questo strumento Systems Manager è supportato come tipo di *evento* nelle EventBridge regole di Amazon. Per informazioni, consulta [Monitoraggio degli eventi di Systems Manager con Amazon EventBridge](monitoring-eventbridge-events.md) e [Riferimento: modelli e tipi di EventBridge eventi Amazon per Systems Manager](reference-eventbridge-events.md).

**Topics**
+ [A chi è consigliato l'uso di Change Calendar?](#systems-manager-change-calendar-who)
+ [Vantaggi di Change Calendar](#systems-manager-change-calendar-benefits)
+ [Configurazione di Change Calendar](systems-manager-change-calendar-prereqs.md)
+ [Utilizzo di Change Calendar](systems-manager-change-calendar-working.md)
+ [Aggiunta di dipendenze Change Calendar ai runbook di Automazione](systems-manager-change-calendar-automations.md)
+ [Risoluzione dei problemi relativi a Change Calendar](change-calendar-troubleshooting.md)

# Configurazione di Change Calendar
<a name="systems-manager-change-calendar-prereqs"></a>

Completa quanto segue prima Change Calendar di utilizzare uno strumento AWS Systems Manager.

## Installazione degli strumenti a riga di comando più recenti
<a name="change-calendar-prereqs-tools"></a>

Installare gli ultimi strumenti a riga di comando per ottenere informazioni sui calendari.


| Requisito | Description | 
| --- | --- | 
|  AWS CLI  |  (Facoltativo) Per utilizzare AWS Command Line Interface (AWS CLI) per ottenere informazioni sullo stato dei calendari, installa la versione più recente di AWS CLI sul tuo computer locale. Per ulteriori informazioni su come installare o aggiornare CLI, consulta [Installazione, aggiornamento e disinstallazione di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) nella *Guida per l'utente di AWS Command Line Interface *.  | 
|  AWS Strumenti per PowerShell  |  (Facoltativo) Per utilizzare gli strumenti per PowerShell ottenere informazioni sullo stato dei calendari, installa la versione più recente di Tools for PowerShell sul tuo computer locale. Per ulteriori informazioni su come installare o aggiornare gli strumenti per PowerShell, vedere [Installazione di AWS Strumenti per PowerShell nella Guida](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html) per l'*AWS Strumenti per PowerShell utente*.  | 

## Impostazione delle autorizzazioni
<a name="change-calendar-prereqs-permissions"></a>

Se al tuo utente, gruppo o ruolo sono assegnate le autorizzazioni di amministratore, allora hai accesso completo a Change Calendar. Se non disponi delle autorizzazioni di amministratore, un amministratore dovrà concederti l’autorizzazione assegnando la policy gestita di `AmazonSSMFullAccess` o assegnando una policy che conceda le autorizzazioni necessarie all'utente, al gruppo o al ruolo.

Le seguenti autorizzazioni sono richieste per l'uso con Change Calendar.

**Voci di Change Calendar**  
Per creare, aggiornare o eliminare una voce di Change Calendar, incluse l'aggiunta e la rimozione di eventi dalla voce, una policy collegata all’utente, al gruppo o al ruolo deve consentire le seguenti operazioni:  
+ `ssm:CreateDocument`
+ `ssm:DeleteDocument`
+ `ssm:DescribeDocument`
+ `ssm:DescribeDocumentPermission`
+ `ssm:GetCalendar`
+ `ssm:ListDocuments`
+ `ssm:ModifyDocumentPermission`
+ `ssm:PutCalendar`
+ `ssm:UpdateDocument`
+ `ssm:UpdateDocumentDefaultVersion`

**Stato del calendario**  
Per ottenere informazioni sullo stato corrente o imminente del calendario, una policy collegata all’utente, al gruppo o al ruolo deve consentire la seguente operazione:  
+ `ssm:GetCalendarState`

**Eventi operativi**  
Per visualizzare gli eventi operativi, come le finestre di manutenzione, le associazioni e le automazioni pianificate, la policy associata all'utente, al gruppo o al ruolo deve consentire le seguenti operazioni:  
+ `ssm:DescribeMaintenanceWindows`
+ `ssm:DescribeMaintenanceWindowExecution`
+ `ssm:DescribeAutomationExecutions`
+ `ssm:ListAssociations`

**Nota**  
Le voci del Change Calendar di proprietà di (ovvero create da) account diversi dal tuo sono in sola lettura, anche se condivise con il tuo account. Le finestre di manutenzione, le associazioni State Manager e le automazioni non sono condivise.

# Utilizzo di Change Calendar
<a name="systems-manager-change-calendar-working"></a>

È possibile utilizzare la console AWS Systems Manager per aggiungere, gestire o eliminare voci . È inoltre possibile importare eventi da provider di calendari di terze parti supportate importando un file iCalendar (`.ics`) esportato dal calendario di origine. Ed è possibile utilizzare l'Operazione API di `GetCalendarState` o `get-calendar-state` AWS Command Line Interface(AWS CLI) per ottenere informazioni sullo stato del Change Calendar a un orario specifico.

**Topics**
+ [Creazione di un change calendar](change-calendar-create.md)
+ [Creazione e gestione di eventi in Change Calendar](change-calendar-events.md)
+ [Importazione e gestione di eventi da calendari di terze parti](third-party-events.md)
+ [Aggiornamento di un change calendar](change-calendar-update.md)
+ [Condivisione di un change calendar](change-calendar-share.md)
+ [Eliminazione di un change calendar](change-calendar-delete.md)
+ [Recupero dello stato di un calendario delle modifiche](change-calendar-getstate.md)

# Creazione di un change calendar
<a name="change-calendar-create"></a>

Quando si crea una voce nel Change Calendar, uno strumento di AWS Systems Manager, si sta creando un documento di Systems Manager (documento SSM) che utilizza il formato `text`.

**Per creare un change calendar**

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

1. Nel pannello di navigazione, scegli **Change Calendar**.

1. Selezionare **Create calendar (Crea calendario)**.

   oppure

   Se la home page di **Change Calendar** si apre per prima, scegliere **Create change calendar** (Crea calendario delle modifiche).

1. Nella pagina **Create calendar (Crea calendario)** in **Calendar details (Dettagli calendario)**, immettere un nome per la voce del calendario. I nomi delle voci del calendario possono contenere lettere, numeri, punti, trattini e caratteri di sottolineatura. Il nome dovrebbe essere sufficientemente specifico da identificare a colpo d'occhio lo scopo della voce del calendario. Un esempio è **support-off-hours**. Non è possibile aggiornare questo nome dopo aver creato la voce del calendario.

1. (Facoltativo) In **Description** (Descrizione), immettere una descrizione per la voce del calendario.

1. (Facoltativo) Nella finestra **Importa calendario**, scegliere **Scegli file** per selezionare un file iCalendar (`.ics`) esportato da un provider di calendari di terza parte. L'importazione del file aggiungerà i suoi eventi al calendario.

   I provider supportati includono Google Calendar, Microsoft Outlook e iCloud Calendar.

   Per ulteriori informazioni, consulta [Importazione di eventi da provider di calendario esterni](change-calendar-import.md).

1. In **Calendar type (Tipo calendario)**, scegliere una delle seguenti opzioni:
   + **Open by default (Aperto per impostazione predefinita)** - il calendario è aperto (le azioni di automazione possono essere eseguite fino all'avvio di un evento), quindi chiuso per la durata di un evento associato.
   + **Closed by default (Chiuso per impostazione predefinita)**: il calendario è chiuso (le operazioni di automazione non possono essere eseguite fino all'avvio di un evento) ma aperto per la durata di un evento associato.

1. (Facoltativo) In **Eventi di gestione delle modifiche**, seleziona **Aggiungi eventi di gestione delle modifiche al calendario**. Questa selezione mostra tutte le finestre di manutenzione programmata, le associazioni di State Manager, i flussi di lavoro di automazione e le richieste di modifica di Change Manager nella visualizzazione del calendario mensile.
**Suggerimento**  
Se in seguito desideri rimuovere definitivamente questi tipi di eventi dalla visualizzazione del calendario, modifica il calendario, deseleziona questa casella di controllo e scegli **Salva**.

1. Selezionare **Create calendar (Crea calendario)**.

   Dopo aver creato la voce del calendario, Systems Manager visualizza la voce del calendario nell'elenco **Change Calendar**. Le colonne mostrano la versione del calendario e il numero di Account AWS del proprietario del calendario. La voce del calendario non può impedire o consentire alcuna operazione finché non si aggiunge almeno un evento. Per ulteriori informazioni sulla creazione di un evento consulta [Creazione di un evento Change Calendar](change-calendar-create-event.md). Per informazioni sull'importazione di eventi live, consulta [Importazione di eventi da provider di calendario esterni](change-calendar-import.md).

# Creazione e gestione di eventi in Change Calendar
<a name="change-calendar-events"></a>

Dopo aver creato un calendario in AWS Systems Manager Change Calendar, puoi creare, aggiornare ed eliminare gli eventi inclusi nel calendario aperto o chiuso. Change Calendarè uno strumento in AWS Systems Manager.

**Suggerimento**  
In alternativa alla creazione di eventi direttamente nella console di Systems Manager, è possibile importare un file iCalendar (`.ics`) da un'applicazione di calendario di un provider esterno supportata. Per informazioni, consulta [Importazione e gestione di eventi da calendari di terze parti](third-party-events.md).

**Topics**
+ [Creazione di un evento Change Calendar](change-calendar-create-event.md)
+ [Aggiornamento di un evento Change Calendar](change-calendar-update-event.md)
+ [Eliminazione di un evento Change Calendar](change-calendar-delete-event.md)

# Creazione di un evento Change Calendar
<a name="change-calendar-create-event"></a>

Quando si aggiunge un evento a una voce in Change Calendar, uno strumento di AWS Systems Manager, si specifica un periodo di tempo durante il quale viene sospesa l'azione predefinita della voce del calendario. Ad esempio, se il tipo di voce del calendario è chiuso per impostazione predefinita, il calendario è aperto alle modifiche durante gli eventi. (In alternativa, è possibile creare un evento di consulenza, che svolge solo un ruolo informativo sul calendario).

Attualmente, è possibile creare un evento Change Calendar solo utilizzando la console. Gli eventi vengono aggiunti al documento Change Calendar creato quando si crea una voce in Change Calendar.

**Per creare un evento Change Calendar**

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

1. Nel pannello di navigazione, scegli **Change Calendar**.

1. Nell'elenco di calendari, scegliere il nome della voce del calendario a cui si desidera aggiungere un evento.

1. Nella pagina dei dettagli della voce del calendario, scegliere **Create event (Crea evento)**.

1. Nella pagina **Create scheduled event (Crea evento pianificato)** in **Event details (Dettagli evento)**, immettere un nome visualizzato per l'evento. I nomi dell'evento possono contenere lettere, numeri, punti, trattini e caratteri di sottolineatura. Il nome dovrebbe essere sufficientemente specifico da identificare lo scopo dell'evento. Un esempio è **nighttime-hours**.

1. In **Description** (Descrizione), immettere una descrizione per l'evento. Ad esempio, **The support team isn't available during these hours**.

1. (Facoltativo) Se si desidera che questo evento funzioni solo come notifica visiva o promemoria, selezionare la casella di controllo **Advisory** (Consulenza). Gli eventi di consulenza non svolgono alcun ruolo funzionale nel calendario. Servono solo a scopo informativo per coloro che visualizzano il calendario.

1. Per **Event start date** (Data di inizio evento), immettere o scegliere un giorno nel formato `MM/DD/YYYY` per avviare l'evento e immettere un'ora nel giorno specificato nel formato `hh:mm:ss` (ore, minuti e secondi) per avviare l'evento.

1. Per **Event end date** (Data di fine evento), immettere o scegliere un giorno nel formato `MM/DD/YYYY` per terminare l'evento e immettere un'ora nel giorno specificato nel formato `hh:mm:ss` (ore, minuti e secondi) per terminare l'evento.

1. Per **Schedule time zone** (Pianifica fuso orario), scegliere un fuso orario che si applica agli orari di inizio e fine dell'evento. È possibile immettere parte del nome di una città o la differenza di fuso orario da Greenwich Mean Time (GMT) per trovare un fuso orario più velocemente. L'impostazione predefinita attuale è Universal Coordinated Time (UTC).

1. (Facoltativo) Per creare un evento che ricorra quotidianamente, settimanalmente o mensilmente, attivare **Recurrence** (Ricorrenza) e quindi specificare la frequenza e la data di fine facoltativa per la ricorrenza.

1. Scegliere **Create Scheduled Event (Crea operazione pianificata)**. Il nuovo evento viene aggiunto alla voce del calendario e viene visualizzato nella scheda **Events (Eventi)** della pagina dei dettagli della voce del calendario.

# Aggiornamento di un evento Change Calendar
<a name="change-calendar-update-event"></a>

Utilizza la procedura seguente per aggiornare un evento Change Calendar nella console AWS Systems Manager. Change Calendar è uno strumento di AWS Systems Manager.

**Aggiornamento di un evento Change Calendar**

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

1. Nel pannello di navigazione, scegli **Change Calendar**.

1. Nell'elenco di calendari, scegliere il nome della voce del calendario per la quale si desidera modificare un evento.

1. Nella pagina dei dettagli della voce del calendario scegliere **Events (Eventi)**.

1. Nella pagina del calendario, scegliere l'evento che si desidera modificare.
**Suggerimento**  
Utilizzare i pulsanti in alto a sinistra per spostarsi indietro o avanti di un anno o indietro o avanti di un mese. Modificare il fuso orario, se necessario, scegliendo il fuso orario corretto dall'elenco in alto a destra.

1. In **Event details** (Dettagli evento), scegliere **Edit** (Modifica).

   Per modificare il nome e la descrizione dell'evento, aggiungere o sostituire i valori di testo correnti.

1. Per modificare il valore **Event start date** (Data di inizio evento), scegliere la data di inizio corrente e quindi scegliere una nuova data dal calendario. Per modificare l'ora di inizio, scegliere l'ora di inizio corrente e quindi scegliere una nuova ora dall'elenco.

1. Per modificare il valore **Event end date** (Data di fine evento), scegliere la data corrente e quindi scegliere una nuova data di fine dal calendario. Per modificare l'ora di fine, scegliere l'ora di fine corrente e quindi scegliere una nuova ora dall'elenco.

1. Per modificare il valore **Schedule time zone** (Pianifica fuso orario), scegliere un fuso orario da applicare agli orari di inizio e fine dell'evento. È possibile immettere parte del nome di una città o la differenza di fuso orario da Greenwich Mean Time (GMT) per trovare un fuso orario più velocemente. L'impostazione predefinita attuale è Universal Coordinated Time (UTC).

1. (Facoltativo) Se si desidera che questo evento funzioni solo come notifica visiva o promemoria, selezionare la casella di controllo **Advisory** (Consulenza). Gli eventi di consulenza non svolgono alcun ruolo funzionale nel calendario. Servono solo a scopo informativo per coloro che visualizzano il calendario.

1. Scegli **Save** (Salva). Le modifiche vengono visualizzate nella scheda **Events (Eventi)** della pagina dei dettagli della voce del calendario. Scegliere l'evento aggiornato per visualizzare le modifiche.

# Eliminazione di un evento Change Calendar
<a name="change-calendar-delete-event"></a>

È possibile eliminare un evento alla volta in Change Calendar, uno strumento di AWS Systems Manager, utilizzando la Console di gestione AWS. 

**Suggerimento**  
Se hai selezionato **Aggiungi eventi di gestione delle modifiche al calendario** quando hai creato il calendario, puoi fare quanto segue:  
Per nascondere *temporaneamente* un tipo di evento di gestione delle modifiche dalla visualizzazione del calendario, scegli la **X** per il tipo nella parte superiore dell'anteprima mensile.
Per rimuovere *definitivamente* questi tipi dalla visualizzazione del calendario, modifica il calendario, deseleziona la casella di controllo **Aggiungi eventi di gestione delle modifiche al calendario** e quindi scegli **Salva**. La rimozione dei tipi dalla visualizzazione del calendario non ne comporta l'eliminazione dal tuo account.

**Eliminazione di un evento Change Calendar**

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

1. Nel pannello di navigazione, scegli **Change Calendar**.

1. Nell'elenco di calendari, scegliere il nome della voce del calendario da cui si desidera eliminare un evento.

1. Nella pagina dei dettagli della voce del calendario scegliere **Events (Eventi)**.

1. Nella pagina del calendario, scegliere l'evento che si desidera eliminare.
**Suggerimento**  
Utilizzare i pulsanti in alto a sinistra per spostare il calendario indietro o avanti di un anno o indietro o avanti di un mese. Modificare il fuso orario, se necessario, scegliendo il fuso orario corretto dall'elenco in alto a destra.

1. Nella pagina **Event details (Dettagli evento)**, scegliere **Delete (Elimina)**. Quando viene richiesto di confermare che si desidera eliminare l'evento, scegliere **Confirm** (Conferma).

# Importazione e gestione di eventi da calendari di terze parti
<a name="third-party-events"></a>

In alternativa alla creazione di eventi direttamente nella AWS Systems Manager console, è possibile importare un file iCalendar `.ics` () da un'applicazione di calendario di terze parti supportata. Il calendario può includere sia eventi importati che eventi creati in Change Calendar. È uno strumento di AWS Systems Manager.

**Prima di iniziare**  
Prima di provare a importare un file di calendario, esaminare i seguenti requisiti e vincoli:

Formato del file del calendario  
Sono supportati solo i file iCalendar validi (`.ics`).

Provider di calendari supportati  
Sono supportati solo i file `.ics` esportati dai provider esterni di calendari indicati di seguito:  
+ Google Calendari ([Istruzioni per l'esportazione](https://support.google.com/calendar/answer/37111))
+ Microsoft Outlook ([Istruzioni per l'esportazione](https://support.microsoft.com/en-us/office/export-an-outlook-calendar-to-google-calendar-662fa3bb-0794-4b18-add8-9968b665f4e6))
+ Calendario iCloud ([Istruzioni per l'esportazione](https://support.apple.com/guide/calendar/import-or-export-calendars-icl1023/mac))

Dimensioni file  
È possibile importare qualsiasi numero di file `.ics`. Tuttavia, la dimensione totale di tutti i file importati per ogni calendario non può superare i 64 KB.  
Per ridurre al minimo le dimensioni del `.ics`, assicurarsi di esportare solo i dettagli di base relativi alle voci del calendario. Se necessario, ridurre la durata del periodo di tempo che si desidera esportare.

Time zone (Fuso orario)  
Oltre al nome del calendario, a un provider del calendario e ad almeno un evento, il `.ics` dovrebbe indicare anche il fuso orario per il calendario. In caso contrario, o si verifica un problema di identificazione del fuso orario, verrà richiesto di specificarne uno dopo aver importato il file.

Limitazione di eventi ricorrenti  
Il file `.ics` esportato può includere eventi ricorrenti. Tuttavia, se una o più occorrenze di un evento ricorrente sono state eliminate nel calendario di origine, l'importazione ha esito negativo.

**Topics**
+ [Importazione di eventi da provider di calendario esterni](change-calendar-import.md)
+ [Aggiornamento di tutti gli eventi da un provider esterno di calendario](change-calendar-import-add-remove.md)
+ [Eliminazione di tutti gli eventi importati da un calendario di terze parti](change-calendar-delete-ics.md)

# Importazione di eventi da provider di calendario esterni
<a name="change-calendar-import"></a>

Utilizza la procedura seguente per importare un file iCalendar (`.ics`) da un'applicazione di calendario di un provider esterno supportata. Gli eventi contenuti nel file vengono incorporati nelle regole per il calendario aperto o chiuso. È possibile importare un file in un nuovo calendario che si sta creando con Change Calendar (uno strumento di AWS Systems Manager) o in un calendario esistente.

Dopo aver importato il file `.ics`, è possibile rimuovere singoli eventi da esso utilizzando l'interfaccia Change Calendar. Per informazioni, consulta [Eliminazione di un evento Change Calendar](change-calendar-delete-event.md). È inoltre possibile eliminare tutti gli eventi dal calendario di origine eliminando il file `.ics`. Per informazioni, consulta [Eliminazione di tutti gli eventi importati da un calendario di terze parti](change-calendar-delete-ics.md).

**Per importare eventi da provider esterni di calendari**

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 **Change Calendar**.

1. Per iniziare con un nuovo calendario, scegliere **Crea calendario**. In **Importa calendario**, scegli **Scegli file**. Per informazioni su altri passaggi per creare un nuovo calendario, consulta [Creazione di un change calendar](change-calendar-create.md).

   oppure

   Per importare eventi di terze parti in un calendario esistente, scegliere il nome di un calendario esistente per aprirlo.

1. Scegli **Operazioni, Modifica** e quindi nell'area **Importa calendario**, scegli **Scegli file**.

1. Individua e seleziona il file `.ics` esportato sul computer locale.

1. Se richiesto, per **Selezionare un fuso orario**, seleziona il fuso orario da applicare al calendario.

1. Scegli **Salva**.

# Aggiornamento di tutti gli eventi da un provider esterno di calendario
<a name="change-calendar-import-add-remove"></a>

Se diversi eventi vengono aggiunti o rimossi dal calendario sorgente dopo aver importato il file iCalendar `.ics`, è possibile riflettere tali modifiche in Change Calendar. Innanzitutto, riesportare il calendario di origine e quindi importare il nuovo file in Change Calendar, che è uno strumento di AWS Systems Manager. Gli eventi nel calendario delle modifiche verranno aggiornati in modo da riflettere il contenuto del file più recente.

**Per aggiornare tutti gli eventi da un provider esterno di calendari**

1. Nel calendario del provider esterno, aggiungi o rimuovi gli eventi in base a come vuoi che vengano riflessi in Change Calendar e quindi riesporta il calendario in un nuovo file `.ics`.

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 **Change Calendar**.

1. Dall'elenco dei calendari, scegliere il nome del calendario dall'elenco.

1. Seleziona **Scegli file**, quindi individua e seleziona il file sostitutivo `.ics`.

1. In risposta alla notifica relativa alla sovrascrittura del file esistente, scegliere **Conferma**.

# Eliminazione di tutti gli eventi importati da un calendario di terze parti
<a name="change-calendar-delete-ics"></a>

Se non si desidera più che gli eventi importati da un provider esterno siano inclusi nel calendario, è possibile eliminare il file `.ics`.

**Per eliminare tutti gli eventi importati da un calendario di provider esterni**

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 **Change Calendar**.

1. Dall'elenco dei calendari, scegliere il nome del calendario dall'elenco.

1. Nell'area **Importa calendario**, in **I calendari importati**, individuare il nome del calendario importato e scegliere la casella di controllo **X** nella scheda.

1. Scegli **Save** (Salva).

# Aggiornamento di un change calendar
<a name="change-calendar-update"></a>

È possibile aggiornare la descrizione di un change calendar, ma non il suo nome. Sebbene sia possibile modificare lo stato predefinito di una voce di calendario, tenere presente che questo inverte il comportamento delle operazioni di modifica durante gli eventi associati alla voce del calendario. Ad esempio, se si modifica lo stato di un calendario da **Open by default (Aperto per impostazione predefinita)** a **Closed by default (Chiuso per impostazione predefinita)**, potrebbero essere apportate modifiche indesiderate durante i periodi di eventi quando gli utenti che hanno creato gli eventi associati non sono in attesa di modifiche.

Quando si aggiorna un Change Calendar, si modifica il documento Change Calendar creato al momento della creazione della voce. Change Calendar è uno strumento di AWS Systems Manager.

**Per aggiornare un change calendar**

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

1. Nel pannello di navigazione, scegli **Change Calendar**.

1. Nell'elenco di calendari, scegliere il nome del calendario che si desidera aggiornare.

1. Nella pagina dei dettagli del calendario, scegliere **Actions, Edit** (Operazioni, Modifica).

1. In **Description (Descrizione)**, è possibile modificare il testo della descrizione. Non puoi modificare il nome di un change calendar.

1. Per modificare lo stato del calendario, in **Calendar type (Tipo di calendario)**, scegliere un valore diverso. Tenere presente che questo inverte il comportamento delle operazioni di modifica durante gli eventi associati alla voce del calendario. Prima di modificare il tipo di calendario, è necessario verificare con altri utenti Change Calendar che la modifica del tipo di calendario non consenta modifiche indesiderate durante gli eventi creati.
   + **Open by default (Aperto per impostazione predefinita)** – il calendario è aperto (le operazioni di automazione possono essere eseguite fino all'avvio di un evento), quindi chiuso per la durata di un evento associato.
   + **Closed by default (Chiuso per impostazione predefinita)** – il calendario è chiuso (le operazioni di automazione non possono essere eseguite fino all'avvio di un evento) ma aperto per la durata di un evento associato.

1. Scegli **Save** (Salva).

   La voce del calendario non può impedire o consentire alcuna operazione finché non si aggiunge almeno un evento. Per informazioni su come aggiungere un evento, consulta [Creazione di un evento Change Calendar](change-calendar-create-event.md).

# Condivisione di un change calendar
<a name="change-calendar-share"></a>

È possibile condividere un calendario in Change Calendar, uno strumento di AWS Systems Manager, con altri Account AWS utilizzando la console AWS Systems Manager. Quando si condivide un calendario, il calendario è in sola lettura per gli utenti dell'account condiviso. Le finestre di manutenzione, le associazioni State Manager e le automazioni non sono condivise.

**Per condividere un change calendar**

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

1. Nel pannello di navigazione, scegli **Change Calendar**.

1. Nell'elenco di calendari, scegliere il nome del calendario che si desidera condividere.

1. Nella pagina dei dettagli del calendario, scegliere **Sharing** (Condivisione).

1. Selezionare **Actions, Share** (Operazioni, Condividi).

1. In **Share calendar (Condividi calendario)**, per **Account ID (ID account)**, immettere il numero ID di un account Account AWS valido, quindi scegliere **Share (Condividi)**.

   Gli utenti dell'account condiviso possono leggere il change calendar, ma non possono apportare modifiche.

# Eliminazione di un change calendar
<a name="change-calendar-delete"></a>

È possibile eliminare un calendario in Change Calendar, uno strumento diAWS Systems Manager, utilizzando sia la console di Systems Manager che il AWS Command Line Interface (AWS CLI). L'eliminazione di un change calendar elimina tutti gli eventi associati.

**Per eliminare un change calendar**

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

1. Nel pannello di navigazione, scegli **Change Calendar**.

1. Nell'elenco di calendari, scegliere il nome del calendario che si desidera eliminare.

1. Nella pagina dei dettagli del calendario scegliere **Actions, Delete** (Operazioni, Elimina). Quando viene richiesto di confermare che si desidera eliminare la voce di calendario, scegliere **Delete (Elimina)**.

# Recupero dello stato di un calendario delle modifiche
<a name="change-calendar-getstate"></a>

È possibile ottenere lo stato generale di un calendario o lo stato di un calendario in un momento specifico in Change Calendar, uno strumento in AWS Systems Manager. È inoltre possibile visualizzare la prossima volta in cui lo stato del calendario passerà da `OPEN` a `CLOSED` o viceversa.

**Nota**  
Per informazioni sull'integrazione Change Calendar con Amazon EventBridge per il monitoraggio automatico delle modifiche allo stato del calendario, consulta[Change Calendarintegrazione con Amazon EventBridge](monitoring-systems-manager-event-examples.md#change-calendar-eventbridge-integration). EventBridge l'integrazione fornisce notifiche basate sugli eventi durante la transizione degli stati del calendario, integrando l'approccio basato sui sondaggi dell'azione dell'API. `GetCalendarState`

È possibile eseguire questo processo solo utilizzando l' operazione API `GetCalendarState`. La procedura in questa sezione utilizza il (). AWS Command Line Interface AWS CLI

**Per ottenere lo stato di un calendario delle modifiche**
+ Eseguire il comando seguente per visualizzare lo stato di una o più voci di calendario in un momento specifico. Il parametro `--calendar-names` è obbligatorio, ma `--at-time` è facoltativo. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

  ```
  aws ssm get-calendar-state \
      --calendar-names "Calendar_name_or_document_ARN_1" "Calendar_name_or_document_ARN_2" \
      --at-time "ISO_8601_time_format"
  ```

  Di seguito è riportato un esempio di :

  ```
  aws ssm get-calendar-state \
      --calendar-names "arn:aws:ssm:us-east-2:123456789012:document/MyChangeCalendarDocument" "arn:aws:ssm:us-east-2:123456789012:document/SupportOffHours" \
      --at-time "2020-07-30T11:05:14-0700"
  ```

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

  ```
  aws ssm get-calendar-state ^
      --calendar-names "Calendar_name_or_document_ARN_1" "Calendar_name_or_document_ARN_2" ^
      --at-time "ISO_8601_time_format"
  ```

  Di seguito è riportato un esempio di :

  ```
  aws ssm get-calendar-state ^
      --calendar-names "arn:aws:ssm:us-east-2:123456789012:document/MyChangeCalendarDocument" "arn:aws:ssm:us-east-2:123456789012:document/SupportOffHours" ^
      --at-time "2020-07-30T11:05:14-0700"
  ```

------

  Il comando restituisce informazioni simili alle seguenti.

  ```
  {
      "State": "OPEN",
      "AtTime": "2020-07-30T16:18:18Z",
      "NextTransitionTime": "2020-07-31T00:00:00Z"
  }
  ```

  I risultati mostrano lo stato del calendario (se il calendario è di tipo `DEFAULT_OPEN` o `DEFAULT_CLOSED`) per le voci di calendario specificate che sono di proprietà o condivise con l'account `--at-time`, al momento specificato come valore e ora della transizione successiva. Se non si aggiunge il parametro `--at-time`, viene utilizzata l'ora corrente.
**Nota**  
Se si specifica più di un calendario in una richiesta, il comando restituisce lo stato di `OPEN` solo se tutti i calendari nella richiesta sono aperti. Se uno o più calendari nella richiesta sono chiusi, lo stato restituito è `CLOSED`.

# Aggiunta di dipendenze Change Calendar ai runbook di Automazione
<a name="systems-manager-change-calendar-automations"></a>

Per fare in modo che le azioni di automazione aderiscanoChange Calendar, uno strumento AWS Systems Manager, aggiungi un passaggio in un runbook di automazione che utilizza l'[`aws:assertAwsResourceProperty`](automation-action-assertAwsResourceProperty.md)azione. Configurare l'operazione per eseguire `GetCalendarState` per verificare che una voce di calendario specificata si trovi nello stato desiderato (`OPEN` o `CLOSED`). Il runbook di Automazione può solo proseguire al passaggio successivo, se lo stato del calendario è `OPEN`. Di seguito è riportato un estratto di esempio basato su YAML di un runbook di Automazione che non può andare al passaggio successivo `LaunchInstance`, a meno che lo stato del calendario non corrisponda a `OPEN`, lo stato specificato in `DesiredValues`.

Di seguito è riportato un esempio di :

```
mainSteps:
  - name: MyCheckCalendarStateStep
    action: 'aws:assertAwsResourceProperty'
    inputs:
      Service: ssm
      Api: GetCalendarState
      CalendarNames: ["arn:aws:ssm:us-east-2:123456789012:document/SaleDays"]
      PropertySelector: '$.State'
      DesiredValues:
      - OPEN
    description: "Use GetCalendarState to determine whether a calendar is open or closed."
    nextStep: LaunchInstance
  - name: LaunchInstance
    action: 'aws:executeScript'
    inputs:
      Runtime: python3.11 
...
```

# Risoluzione dei problemi relativi a Change Calendar
<a name="change-calendar-troubleshooting"></a>

Utilizza le informazioni seguenti per risolvere i problemi relativi a Change Calendar, uno strumento di AWS Systems Manager.

**Topics**
+ [Errore “Importazione calendario non riuscita”](#change-manager-troubleshooting-1)

## Errore “Importazione calendario non riuscita”
<a name="change-manager-troubleshooting-1"></a>

**Problema**: durante l'importazione di un file iCalendar (`.ics`), il sistema segnala che l'importazione del calendario non è riuscita.
+ **Soluzione 1**: assicurarsi di importare un file esportato da un provider di calendari di terze parti supportato, che include quanto segue:
  + Google Calendar([Istruzioni per l'esportazione](https://support.google.com/calendar/answer/37111))
  + Microsoft Outlook ([Istruzioni per l'esportazione](https://support.microsoft.com/en-us/office/export-an-outlook-calendar-to-google-calendar-662fa3bb-0794-4b18-add8-9968b665f4e6))
  + Calendario iCloud ([Istruzioni per l'esportazione](https://support.apple.com/guide/calendar/import-or-export-calendars-icl1023/mac))
+ **Soluzione 2**: se il calendario di origine contiene eventi ricorrenti, assicurarsi che non siano state annullate o eliminate singole occorrenze dell'evento. Attualmente, Change Calendar non supporta l'importazione di eventi ricorrenti con singoli annullamenti. Per risolvere il problema, rimuovere l'evento ricorrente dal calendario di origine, riesportare il calendario e reimportarlo in Change Calendar, quindi aggiungere l'evento ricorrente utilizzando l'interfaccia Change Calendar. Per informazioni, consulta [Creazione di un evento Change Calendar](change-calendar-create-event.md).
+ **Soluzione 3**: assicurarsi che il calendario di origine contenga almeno un evento. Caricamenti di file `.ics` che non contengono eventi non hanno esito positivo.
+ **Soluzione 4**: Se il sistema segnala che l'importazione non è riuscita perché `.ics` è troppo grande, assicurarsi di esportare solo i dettagli di base relativi alle voci del calendario. Se necessario, ridurre la durata del periodo di tempo esportato.
+ **Soluzione 5**: Se Change Calendar non è in grado di determinare il fuso orario del calendario esportato quando si tenta di importarlo dalla scheda **Eventi**, è possibile che venga visualizzato il messaggio “Importazione calendario non riuscita. Change Calendar non è stato in grado di individuare un fuso orario valido”. È possibile importare il calendario dal menu Modifica.” In questo caso, scegliere **Operazioni, Modifica**, quindi provare a importare il file dalla pagina **Modifica calendario**.
+ **Soluzione 6**: non modificare il file `.ics` prima dell'importazione. Il tentativo di modificare il contenuto del file può danneggiare i dati del calendario. Se il file è stato modificato prima di tentare l'importazione, esportare di nuovo il calendario dal calendario di origine e quindi riprovare il caricamento.

# AWS Systems Manager Change Manager
<a name="change-manager"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Change Manager, uno strumento in AWS Systems Manager, è un framework di gestione delle modifiche aziendali per la richiesta, l'approvazione, l'implementazione e la segnalazione delle modifiche operative alla configurazione e all'infrastruttura delle applicazioni. Da un unico *account amministratore delegato*, se lo utilizzi AWS Organizations, puoi gestire le modifiche tra più Account AWS account. Regioni AWS In alternativa, utilizzando un *account locale*, è possibile gestire le modifiche di un singolo Account AWS. Utilizzalo Change Manager per gestire le modifiche sia alle AWS risorse che alle risorse locali. Per cominciare a utilizzare Change Manager, apri la [console di Systems Manager](https://console.aws.amazon.com//systems-manager/change-manager). Nel pannello di navigazione, scegli **Change Manager**.

Con Change Manager, è possibile utilizzare *modelli di modifica pre-approvati* al fine di automatizzare i processi di modifica delle risorse ed evitare risultati involontari quando si apportano modifiche operative. Ogni modello di modifica specifica quanto segue:
+ Uno o più runbook di Automazione tra cui un utente può scegliere durante la creazione di una richiesta di modifica. Le modifiche apportate alle risorse vengono definite nei runbook di Automazione. È possibile includere runbook personalizzati o [Runbook gestiti da AWS](automation-documents-reference.md) nei modelli di modifica creati. Quando un utente crea una richiesta di modifica, può scegliere quale dei runbook disponibili includere nella richiesta. Inoltre, è possibile creare modelli di modifica che consentono all'utente che effettua la richiesta di specificare qualsiasi runbook nella richiesta di modifica.
+ Gli utenti dell'account che devono esaminare le richieste di modifica effettuate utilizzando tale modello di modifica.
+ L'argomento Amazon Simple Notification Service (Amazon SNS) utilizzato per notificare agli approvatori assegnati che una richiesta di modifica è pronta per la revisione.
+ L' CloudWatch allarme Amazon utilizzato per monitorare il flusso di lavoro del runbook.
+ L'argomento Amazon SNS utilizzato per inviare notifiche sulle modifiche di stato per le richieste di modifica create utilizzando il modello di modifica.
+ I tag da applicare al modello di modifica da utilizzare per categorizzare e filtrare i modelli di modifica.
+ Se le richieste di modifica create dal modello di modifica possono essere eseguite senza una fase di approvazione (richieste approvate automaticamente).

Grazie alla sua integrazione conChange Calendar, che è un altro strumento di Systems Manager, consente Change Manager inoltre di implementare le modifiche in modo sicuro evitando al contempo conflitti di pianificazione con eventi aziendali importanti. Change Managerintegrazione AWS Organizations e gestione AWS IAM Identity Center delle modifiche all'interno dell'organizzazione da un unico account utilizzando il sistema di gestione delle identità esistente. È possibile monitorare l'avanzamento delle modifiche da Change Manager e verifica le modifiche operative all'interno dell'organizzazione, fornendo maggiore visibilità e responsabilità.

Change Managerintegra i controlli di sicurezza delle pratiche di [integrazione continua](https://aws.amazon.com/devops/continuous-integration) (CI) e della metodologia di [distribuzione continua](https://aws.amazon.com/devops/continuous-delivery) (CD). Change Managernon è destinato alle modifiche apportate nell'ambito di un processo di rilascio automatizzato, ad esempio una CI/CD pipeline, a meno che non sia richiesta un'eccezione o un'approvazione.

## Funzionamento di Change Manager
<a name="how-change-manager-works"></a>

Quando viene identificata la necessità di una modifica operativa standard o di emergenza, un utente dell'organizzazione crea una richiesta di modifica basata su uno dei modelli di modifica creati per l'utilizzo nell'organizzazione o nell'account.

Se la modifica richiesta richiede l'approvazione manuale, Change Manager notifica agli approvatori designati tramite una notifica Amazon SNS che una richiesta di modifica è pronta per la loro revisione. È possibile designare approvatori per le richieste di modifica nel modello di modifica oppure consentire agli utenti di designare gli approvatori nella richiesta di modifica stessa. È possibile assegnare revisori diversi a modelli diversi. Ad esempio, assegnare un utente, un gruppo di utenti o ruolo AWS Identity and Access Management (IAM) che deve approvare le richieste di modifica ai nodi gestiti e un altro utente, gruppo o ruolo IAM per le modifiche al database. Se il modello di modifica consente l'approvazione automatica e la policy utente del richiedente non lo proibisce, l'utente può anche scegliere di eseguire il runbook di Automazione per la propria richiesta senza un passaggio di revisione (ad eccezione degli eventi di blocco delle modifiche).

Per ogni modello di modifica, è possibile aggiungere fino a cinque livelli di approvatori. Ad esempio, è possibile richiedere ai revisori tecnici di approvare prima una richiesta di modifica creata da un modello di modifica e quindi richiedere un secondo livello di approvazione da parte di uno o più manager.

Change Manager è integrato con [AWS Systems Manager Change Calendar](systems-manager-change-calendar.md). Quando viene approvata una modifica richiesta, il sistema determina innanzitutto se la richiesta è in conflitto con altre attività aziendali pianificate. Se viene rilevato un conflitto, Change Manager può bloccare la modifica o richiedere ulteriori approvazioni prima di avviare il flusso di lavoro del runbook. Ad esempio, è possibile consentire modifiche solo durante l'orario di lavoro per garantire che i team siano disponibili per gestire eventuali problemi imprevisti. Per eventuali modifiche eseguite al di fuori di tali orari, è possibile richiedere l'approvazione del management di livello superiore ovvero al * Change Manager*. Per le modifiche di emergenza, il Change Manager, dopo l'approvazione della richiesta di modifica, può omettere la fase di controllo del Change Calendar al fine di individuare conflitti o eventi che determinano un blocco.

Quando è il momento di implementare una modifica approvata, Change Manager esegue il runbook Automation specificato nella richiesta di modifica associata. Solo le operazioni definite nelle richieste di modifica approvate sono consentite durante l'esecuzione dei flussi di lavoro del runbook. Questo approccio aiuta ad evitare risultati involontari mentre le modifiche vengono implementate.

Oltre a limitare le modifiche che possono essere apportate quando viene eseguito un workflow di runbook, Change Manager consente di controllare la concorrenza e le soglie di errore. È possibile scegliere quante risorse un flusso di lavoro runbook può essere eseguito contemporaneamente, quanti account è possibile eseguire la modifica contemporaneamente e quanti errori consentire prima dell'arresto del processo e (se il runbook include uno script di rollback). È inoltre possibile monitorare lo stato di avanzamento delle modifiche apportate utilizzando gli CloudWatch allarmi.

Al termine di un flusso di lavoro del runbook, è possibile esaminare i dettagli sulle modifiche apportate. Questi dettagli includono il motivo di una richiesta di modifica, quale modello di modifica è stato utilizzato, chi ha richiesto e approvato le modifiche e come sono state implementate.

**Ulteriori informazioni**  
[Presentazione di AWS Systems ManagerChange Manager](https://aws.amazon.com/blogs/aws/introducing-systems-manager-change-manager/) sul *Blog News AWS *

## Quali sono i vantaggi di Change Manager per la mia azienda?
<a name="change-manager-benefits"></a>

Alcuni vantaggi di Change Manager sono i seguenti:
+ **Riduzione del rischio di interruzioni del servizio e del tempo di inattività**

  Change Manager può rendere più sicure le modifiche operative assicurando che solo le modifiche approvate vengano implementate quando viene eseguito un flusso di lavoro del runbook. È possibile bloccare le modifiche non pianificate e non riviste. Change Manager consente di evitare i tipi di risultati involontari causati da errori umani che richiedono ore costose di ricerca e backtracking.
+ **Revisione dettagliata e creazione di report sulle cronologie delle modifiche**

  Change Manager fornisce responsabilità con un modo coerente per segnalare e controllare le modifiche apportate all'organizzazione, l'intento delle modifiche e i dettagli su chi le ha approvate e implementate.
+ **Evitare conflitti di pianificazione o violazioni**

  Change Manager è in grado di rilevare conflitti di pianificazione, ad esempio festività o lanci di nuovi prodotti, in base al calendario delle modifiche attivo per l'organizzazione. È possibile consentire l'esecuzione dei flussi di lavoro dei runbook solo durante l'orario di lavoro o consentirli solo con approvazioni aggiuntive.
+ **Adattare i requisiti di cambiamento alla vostra azienda in evoluzione**

  Durante diversi periodi di lavoro, è possibile implementare requisiti di gestione delle modifiche diversi. Ad esempio, durante la end-of-month rendicontazione, la stagione fiscale o altri periodi lavorativi critici, è possibile bloccare le modifiche o richiedere l'approvazione a livello di amministratore per le modifiche che potrebbero introdurre rischi operativi non necessari.
+ **Gestione centralizzata delle modifiche tra gli account**

  Grazie alla sua integrazione con Organizations, Change Manager consente di gestire le modifiche in tutte le unità organizzative (OUs) da un unico account amministratore delegato. Puoi attivarlo Change Manager per utilizzarlo con l'intera organizzazione o solo con alcune delle tue OUs.

## A chi è consigliato l'uso di Change Manager?
<a name="change-manager-who"></a>

Change Managerè adatto per i seguenti AWS clienti e organizzazioni:
+ Qualsiasi AWS cliente che desideri migliorare la sicurezza e la governance delle modifiche operative apportate ai propri ambienti cloud o locali.
+ Organizzazioni che desiderano aumentare la collaborazione e la visibilità tra i team, migliorare la disponibilità delle applicazioni evitando il tempo di inattività e ridurre i rischi associati ai processi manuali e ripetitivi.
+ Organizations che devono rispettare le procedure consigliate per la gestione delle modifiche. 
+ Clienti che necessitano di una cronologia completamente verificabile delle modifiche apportate alla configurazione e all'infrastruttura delle applicazioni.

## Quali sono le funzionalità principali del Change Manager?
<a name="change-manager-features"></a>

Le caratteristiche principali del Change Manager comprendono:
+ **Supporto integrato per le best practice di gestione delle modifiche**

  Con Change Manager è possibile applicare procedure consigliate per la gestione delle modifiche selezionate alle proprie operazioni. Puoi scegliere una delle seguenti opzioni:
  + Controlla Change Calendar per verificare se gli eventi sono attualmente limitati, in modo che le modifiche vengano apportate solo durante i periodi di calendario aperti.
  + Consenti modifiche durante gli eventi con restrizioni con approvazioni aggiuntive dai revisori del blocco delle modifiche.
  + Richiedi che CloudWatch gli allarmi siano specificati per tutti i modelli di modifica.
  + Richiedi la revisione e l'approvazione di tutti i modelli di modifica creati nel tuo account prima che possano essere utilizzati per creare richieste di modifica.
+ **Diversi percorsi di approvazione per periodi di calendario chiusi e richieste di modifica di emergenza**

  È possibile consentire a un'opzione di controllare Change Calendar se esistano eventi con restrizioni e bloccare le richieste di modifica approvate fino al completamento dell'evento. Tuttavia, è anche possibile designare un secondo gruppo di approvatori, ovvero i revisori di blocco, che possono consentire la modifica anche se il calendario è chiuso. Inoltre, è possibile creare modelli di modifica di emergenza. Le richieste di modifica create da un modello di modifica di emergenza richiedono comunque approvazioni regolari, ma non sono soggette a restrizioni di calendario e non richiedono approvazioni di blocco delle modifiche.
+ **Controllare come e quando vengono avviati i flussi di lavoro del runbook**

  I flussi di lavoro del runbook possono essere avviati in base a una pianificazione o non appena vengono completate le approvazioni (in base alle regole di restrizione del calendario).
+ **Supporto per le notifiche integrato**

  Specificare chi deve esaminare e approvare i modelli di modifica e le richieste di modifica nell'organizzazione. Assegna un argomento Amazon SNS a un modello di modifica per inviare notifiche agli abbonati dell'argomento sulle modifiche di stato per le richieste di modifica create con tale modello di modifica.
+ **Integrazione con AWS Systems Manager Change Calendar**

  Change Manager consente agli amministratori di limitare le modifiche alla pianificazione durante periodi di tempo specificati. Ad esempio, è possibile creare una policy che consenta le modifiche solo durante le ore lavorative, per garantire che il team sia disponibile per gestire eventuali problemi. È inoltre possibile limitare le modifiche durante eventi business importanti. Ad esempio, le aziende al dettaglio potrebbero limitare le modifiche durante eventi di vendita di grandi dimensioni. È inoltre possibile richiedere ulteriori approvazioni durante i periodi limitati. 
+ **Integrazione AWS IAM Identity Center e supporto per Active Directory**

  Con l'integrazione di IAM Identity Center, i membri dell'organizzazione possono accedere agli Account AWS e gestire le proprie risorse utilizzando Systems Manager in base a un'identità utente comune. Utilizzando IAM Identity Center, è possibile assegnare agli utenti l'accesso agli account tramite AWS.

  L'integrazione con Active Directory consente di assegnare utenti nell'account Active Directory come approvatori per i modelli di modifica creati per le operazioni Change Manager.
+ **Integrazione con gli CloudWatch allarmi Amazon**

  Change Managerè integrato con gli CloudWatch allarmi. Change Managerascolta gli CloudWatch allarmi durante il flusso di lavoro del runbook e intraprende tutte le azioni, incluso l'invio di notifiche, definite per l'allarme.
+ **Integrazione con Lake AWS CloudTrail **

  Creando un archivio dati sugli eventi in AWS CloudTrail Lake, puoi visualizzare informazioni verificabili sulle modifiche apportate dalle richieste di modifica eseguite nel tuo account o nella tua organizzazione. Le informazioni sull'evento archiviate includono dettagli simili ai seguenti:
  + Le operazioni API eseguite
  + I parametri di richiesta inclusi per tali operazioni
  + L'utente che ha eseguito l'operazione
  + Le risorse che sono state aggiornate durante il processo
+ **Integrazione con AWS Organizations**

  Utilizzando le funzionalità cross-account fornite da Organizations, è possibile utilizzare un account amministratore delegato per la gestione Change Manager delle operazioni OUs all'interno dell'organizzazione. Nell'account di gestione delle Organizations è possibile specificare quale account deve essere l'account amministratore delegato. Puoi anche controllare quali dei tuoi OUs Change Manager possono essere utilizzati in.

## C'è un addebito per l'utilizzo di Change Manager?
<a name="change-manager-cost"></a>

Sì Change Managerha un prezzo su pay-per-use base. I prezzi sono calcolati solo in base all'uso effettivo. Per ulteriori informazioni, consulta la sezione [Prezzi di AWS Systems Manager](https://aws.amazon.com/systems-manager/pricing/).

## Quali sono i componenti principali di Change Manager?
<a name="change-manager-primary-components"></a>

I componenti Change Manager utilizzati per gestire il processo di modifica nell'organizzazione o nell'account includono i seguenti:

### Account amministratore delegato
<a name="change-manager-what-is-delegated-account"></a>

Se utilizzi Change Manager in un'organizzazione, è possibile utilizzare un account amministratore delegato. Questo è l' Account AWS designato come account per la gestione delle attività operative in Systems Manager, tra cui Change Manager. L'account amministratore delegato gestisce le attività di modifica all'interno dell'organizzazione. Quando configuri l'organizzazione per l'utilizzo con Change Manager, è possibile specificare quali account servono in questo ruolo. L'account amministratore delegato deve essere l'unico membro dell'unità organizzativa (UO) a cui è assegnato. L'account amministratore delegato non è necessario se lo si utilizza Change Manager con un solo Account AWS account.

**Importante**  
Se utilizzi Change Manager in un'organizzazione, si consiglia di apportare sempre modifiche dall'account amministratore delegato. Sebbene sia possibile apportare modifiche da altri account dell'organizzazione, tali modifiche non verranno segnalate o visualizzate dall'account amministratore delegato.

### Modello di modifica
<a name="change-manager-what-is-change-template"></a>

Un modello di modifica è una raccolta di impostazioni di configurazione in Change Manager che definiscono le approvazioni obbligatorie, i runbook disponibili e le opzioni di notifica per le richieste di modifica.

È possibile richiedere che i modelli di modifica creati dagli utenti dell'organizzazione o dell'account vengano sottoposti a un processo di approvazione prima che possano essere utilizzati.

Change Manager supporta due tipi di modelli di modifica. Per una richiesta di modifica approvata basata su un *Modello di modifica di emergenza*, la modifica richiesta può essere apportata anche se ci sono eventi di blocco in Change Calendar. Per una richiesta di modifica approvata basata su un *Modello di modifica standard*, la modifica richiesta non può essere apportata se ci sono eventi di blocco in Change Calendar, a meno che non vengano ricevute approvazioni aggiuntive dagli approvatori per l'*evento di blocco in caso di modifica*.

### Richiesta di modifica
<a name="change-manager-what-is-change-request"></a>

Una richiesta di modifica è una richiesta di esecuzione Change Manager di un runbook di automazione che aggiorna una o più risorse nell'ambiente locale AWS o locale. Una richiesta di modifica viene creata utilizzando un modello di modifica.

Quando si crea una richiesta di modifica, uno o più approvatori nell'organizzazione o nell'account devono esaminare e approvare la richiesta. Senza le approvazioni richieste, il flusso di lavoro del runbook, che applica le modifiche richieste, non può essere eseguito.

Nel sistema, le richieste di modifica sono un tipo di OpsItem input. AWS Systems Manager OpsCenter Tuttavia,OpsItems del tipo `/aws/changerequest` non vengono visualizzati in OpsCenter. In quanto OpsItems, le richieste di modifica sono soggette alle stesse quote applicate di altri tipi di OpsItems. 

Inoltre, per creare una richiesta di modifica a livello di codice, non chiamare l'operazione API `CreateOpsItem`. Usa invece l'operazione API `[https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html)`. Prima dell'esecuzione, la richiesta di modifica deve essere approvata e non devono essere presenti eventi di blocco in Change Calendar che impediscono l'esecuzione del flusso di lavoro. Quando le approvazioni sono state ricevute e il calendario non è bloccato (o è stata concessa l'autorizzazione per ignorare gli eventi del calendario di blocco), l'operazione `StartChangeRequestExecution` può essere completata.

### Flusso di lavoro di runbook
<a name="change-manager-what-is-runbook-workflow"></a>

Un flusso di lavoro del runbook è il processo delle modifiche richieste apportate alle risorse di destinazione nel cloud o nell'ambiente on-premises. Ogni richiesta di modifica designa un singolo runbook Automation da utilizzare per apportare le modifiche richieste. Il flusso di lavoro del runbook si verifica dopo che tutte le approvazioni richieste sono state concesse e non ci sono eventi di blocco in Change Calendar. Se la modifica è stata pianificata per una data e un'ora specifiche, il flusso di lavoro del runbook non inizia fino alla pianificazione, anche se tutte le approvazioni sono state ricevute e il calendario non è bloccato.

**Topics**
+ [Funzionamento di Change Manager](#how-change-manager-works)
+ [Quali sono i vantaggi di Change Manager per la mia azienda?](#change-manager-benefits)
+ [A chi è consigliato l'uso di Change Manager?](#change-manager-who)
+ [Quali sono le funzionalità principali del Change Manager?](#change-manager-features)
+ [C'è un addebito per l'utilizzo di Change Manager?](#change-manager-cost)
+ [Quali sono i componenti principali di Change Manager?](#change-manager-primary-components)
+ [Configurazione di Change Manager](change-manager-setting-up.md)
+ [Utilizzo di Change Manager](working-with-change-manager.md)
+ [Verifica e registrazione dell'attività Change Manager](change-manager-auditing.md)
+ [Risoluzione dei problemi relativi a Change Manager](change-manager-troubleshooting.md)

# Configurazione di Change Manager
<a name="change-manager-setting-up"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [Modifica della AWS Systems ManagerChange Manager disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

È possibile utilizzareChange Manager, uno strumento in AWS Systems Manager, per gestire le modifiche per un'intera organizzazione, così come configurata in AWS Organizations, o per una singola organizzazione Account AWS.

Se si utilizza Change Manager con un'organizzazione, iniziare con l'argomento [Configurazione di Change Manager per un'organizzazione (account di gestione)](change-manager-organization-setup.md) e procedere a [Configurazione di opzioni Change Manager e best practice](change-manager-account-setup.md).

Se si utilizza Change Manager con un singolo account, procedere direttamente a [Configurazione di opzioni Change Manager e best practice](change-manager-account-setup.md).

**Nota**  
Se si utilizza Change Manager con un singolo account, ma tale account viene successivamente aggiunto a un'unità organizzativa per la quale Change Manager è consentito, le impostazioni dell'account singolo vengono ignorate.

**Topics**
+ [Configurazione di Change Manager per un'organizzazione (account di gestione)](change-manager-organization-setup.md)
+ [Configurazione di opzioni Change Manager e best practice](change-manager-account-setup.md)
+ [Configurazione di ruoli e autorizzazioni per Change Manager](change-manager-permissions.md)
+ [Controllo dell'accesso ai flussi di lavoro del runbook di approvazione automatica](change-manager-auto-approval-access.md)

# Configurazione di Change Manager per un'organizzazione (account di gestione)
<a name="change-manager-organization-setup"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Le attività descritte in questo argomento si applicano se utilizzi Change Manager uno strumento in AWS Systems Manager un'organizzazione configurata in AWS Organizations. Se vuoi utilizzarlo Change Manager solo con uno Account AWS, vai all'argomento[Configurazione di opzioni Change Manager e best practice](change-manager-account-setup.md).

Esegui le attività in questa sezione in un account Account AWS che funge da *account di gestione* in Organizations. Per informazioni sull'account di gestione e su altri concetti relativi alle organizzazioni, consulta [Concetti e terminologia AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html).

Se è necessario attivare Organizations e specificare il proprio account come account di gestione prima di procedere, consulta [Creating and managing an organization (Creazione e gestione di un'organizzazione)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org.html) nella *Guida per l'utente AWS Organizations *. 

**Nota**  
Questo processo di configurazione non può essere eseguito nei seguenti casi Regioni AWS:  
Europa (Milano) (eu-south-1)
Medio Oriente (Bahrein) (me-south-1)
Africa (Città del Capo) (af-south-1)
Asia Pacifico (Hong Kong) ap-east-1
Assicurati di lavorare in una Regione diversa nel tuo account di gestione per questa procedura.

Durante la procedura di configurazione, esegui le seguenti attività principali in Quick Setup, uno strumento di AWS Systems Manager.
+ **Processo 1: registrare l'account amministratore delegato per l'organizzazione**

  I processi correlati alle modifiche eseguite utilizzando Change Manager sono gestite in uno dei tuoi account membri, da indicare come *account amministratore delegato*. L'account amministratore delegato registrato in Change Manager diventa l'account amministratore delegato per tutte le operazioni di Systems Manager. (Potresti avere account di amministratore delegati per altri Servizi AWS). L'account di amministratore delegato per Change Manager, che non è uguale all'account di gestione, gestisce le attività di modifica all'interno dell'organizzazione, inclusi modelli di modifica, richieste di modifica e approvazioni per ciascuna di esse. Nell'account amministratore delegato è inoltre possibile specificare altre opzioni di configurazione per le operazioni Change Manager. 
**Importante**  
L'account amministratore delegato deve essere l'unico membro dell'unità organizzativa (UO) a cui è assegnato in Organizzazioni.
+ **Processo 2: definire e specificare i criteri di accesso al runbook per i ruoli del richiedente di modifica o le funzioni di processo personalizzate che si desidera utilizzare per le operazioni Change Manager**

  Per creare richieste di modifica inChange Manager, agli utenti dei tuoi account membro devono essere concesse le autorizzazioni AWS Identity and Access Management (IAM) che consentano loro di accedere solo ai runbook di automazione e ai modelli di modifica che scegli di rendere disponibili. 
**Nota**  
Quando un utente crea una richiesta di modifica, seleziona innanzitutto un modello di modifica. Questo modello di modifica potrebbe rendere disponibili più runbook, ma l'utente può selezionare un solo runbook per ogni richiesta di modifica. È inoltre possibile configurare i modelli di modifica per consentire agli utenti di includere qualsiasi runbook disponibile nelle proprie richieste.

  Per concedere le autorizzazioni necessarie, Change Manager utilizza il concetto di *funzioni di processo*, che viene utilizzato anche da IAM. Tuttavia, a differenza delle [policy AWS gestite per le funzioni di processo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) in IAM, è possibile specificare entrambi i nomi dell'utente Change Manager per le funzioni di processo e le autorizzazioni IAM per tali funzioni di processo. 

  Quando si configura una funzione di processo, si consiglia di creare una policy personalizzata e di fornire solo le autorizzazioni necessarie per eseguire i processi di gestione delle modifiche. Ad esempio, puoi specificare le autorizzazioni che limitano gli utenti a quel set specifico di runbook in base a *funzioni di processo* che definisci. 

  Ad esempio, è possibile creare una funzione di processo con il nome `DBAdmin`. Per questa funzione di processo, è possibile concedere solo le autorizzazioni necessarie per i runbook correlati ai database Amazon DynamoDB, ad esempio `AWS-CreateDynamoDbBackup` e `AWSConfigRemediation-DeleteDynamoDbTable`. 

  Ad esempio, potresti voler concedere ad alcuni utenti solo le autorizzazioni necessarie per lavorare con i runbook correlati ai bucket Amazon Simple Storage Service (Amazon S3), ad esempio `AWS-ConfigureS3BucketLogging` e `AWSConfigRemediation-ConfigureS3BucketPublicAccessBlock`. 

  Il processo di configurazione in Quick Setup per Change Manager rende inoltre disponibile un set di autorizzazioni amministrative complete di Systems Manager da applicare a un ruolo amministrativo creato dall'utente. 

  Ogni configurazione Change Manager Quick Setup distribuita crea una funzione di processo nell'account amministratore delegato con autorizzazioni per l'esecuzione di modelli Change Manager e runbook di Automazione nelle unità organizzative selezionate. È possibile creare fino a 15 configurazioni Quick Setup per Change Manager. 
+ **Processo 3: scegliere gli account membri dell'organizzazione da utilizzare con Change Manager**

  Puoi utilizzare Change Manager con tutti gli account membri in tutte le unità organizzative impostate in Organizazzioni e in tutte le Regioni AWS in cui operano. Se preferisci, puoi invece utilizzare Change Manager solo con alcune delle unità organizzative.

**Importante**  
Si consiglia vivamente, prima di iniziare questa procedura, di leggere i passaggi relativi per comprendere le scelte di configurazione che si stanno facendo e le autorizzazioni concesse. In particolare, pianificare le funzioni di processo personalizzate che verranno create e le autorizzazioni assegnate a ciascuna funzione di processo. In questo modo, quando successivamente si allegano i criteri delle funzioni di processo creati a singoli utenti, gruppi di utenti o ruoli IAM, vengono concesse solo le autorizzazioni che si intende disporre.  
Come procedura ottimale, inizia configurando l'account amministratore delegato utilizzando il login di un amministratore. Account AWS Configurare quindi le funzioni del processo e le relative autorizzazioni dopo aver creato i modelli di modifica e identificato i runbook utilizzati da ciascuno di essi.

Per configurare Change Manager per l'utilizzo con un'organizzazione, eseguire il seguente processo in Quick Setup della console Systems Manager.

Ripetere questo processo per ogni funzione di processo che si desidera creare per l'organizzazione. Ogni funzione di processo creata può disporre delle autorizzazioni per un set diverso di unità organizzative.

**Per configurare un'organizzazione per Change Manager nell'account di gestione delle Organizations**

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 **Quick Setup**.

1. Nella scheda **Change Manager**, scegli **Create** (Crea).

1. In **Account amministratore delegato (Abilita un account di amministratore delegato)**, immetti l'ID della Account AWS che si desidera utilizzare per la gestione di modelli di modifica, richieste di modifica e flussi di lavoro del runbook in Change Manager. 

   Se in precedenza è stato specificato un account amministratore delegato per Systems Manager, il relativo ID viene già segnalato in questo campo. 
**Importante**  
L'account amministratore delegato deve essere l'unico membro dell'unità organizzativa (UO) a cui è assegnato in Organizzazioni.  
Se l'account amministratore delegato registrato viene successivamente annullato da tale ruolo, il sistema rimuove le autorizzazioni per la gestione delle operazioni di Systems Manager contemporaneamente. Tieni presente che sarà necessario per tornare a Quick Setup, designare un account amministratore delegato diverso e specificare nuovamente tutte le funzioni e le autorizzazioni di processo.  
Se utilizziChange Manager in un'organizzazione, si consiglia di apportare sempre modifiche dall'account amministratore delegato. Sebbene sia possibile apportare modifiche da altri account dell'organizzazione, tali modifiche non verranno segnalate o visualizzate dall'account amministratore delegato.

1. Nelle **Permissions to request and make change (Autorizzazioni per richiedere e apportare modifiche)**, procedi come indicato di seguito.
**Nota**  
Ogni configurazione di implementazione che è stata creata fornisce policy di autorizzazione per una sola funzione di processo. È possibile tornare a Quick Setup in seguito per creare più funzioni di processo quando sono stati creati modelli di modifica da utilizzare nelle operazioni.

   **Per creare un ruolo amministrativo**— Per una funzione di processo di amministratore che dispone di autorizzazioni IAM per tutte le operazioni AWS , procedere come descritto di seguito.
**Importante**  
La concessione di autorizzazioni amministrative complete agli utenti deve essere eseguita con parsimonia e solo se i ruoli richiedono l'accesso completo a Systems Manager. Per informazioni importanti sulle considerazioni sulla sicurezza per l'accesso a Systems Manager, consulta[Gestione delle identità e degli accessi per l’ AWS Systems Manager](security-iam.md) e [Best practice relative alla sicurezza di Systems Manager](security-best-practices.md).

   1. Per **Funzione di processo**, immettere un nome per identificare questo ruolo e le relative autorizzazioni, ad esempio **My AWS Admin**.

   1. Per l'opzione **Ruolo e autorizzazioni**, scegliere**Autorizzazioni dell'amministratore**.

   **Creare altre funzioni di processo**; per creare un ruolo non amministrativo, procedere come segue:

   1. Per **Funzione di processo**, immettere un nome per identificare questo ruolo e suggerirne le autorizzazioni. Il nome scelto deve rappresentare l'ambito dei runbook per i quali verranno fornite le autorizzazioni, ad esempio `DBAdmin`o `S3Admin`. 

   1. Per **l'opzione Ruolo e autorizzazioni**, scegliere **Autorizzazioni personalizzate**.

   1. Nell'**Editor della policy di autorizzazione**, immettere le autorizzazioni IAM, in formato JSON, da concedere a questa funzione di processo.
**Suggerimento**  
Si consiglia di utilizzare l'editor della policy IAM per costruire il criterio e quindi incollare il criterio JSON nel file **Policy delle autorizzazioni**.

**Policy di esempio: gestione del database DynamoDB**  
Ad esempio, è possibile iniziare con il contenuto di policy che fornisce autorizzazioni per l'utilizzo dei documenti di Systems Manager (documenti SSM) a cui la funzione di processo deve accedere. Di seguito è riportato un contenuto di policy di esempio che garantisce l'accesso a tutti i runbook di automazione AWS gestiti relativi ai database DynamoDB e a due modelli di modifica che sono stati creati nell'esempio Account AWS `123456789012`, nella regione Stati Uniti orientali (Ohio) () (). `us-east-2` 

   La policy include anche l'autorizzazione per l'operazione [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html), necessaria per creare una richiesta di modifica in Change Calendar. 
**Nota**  
Questo esempio non è completo. Potrebbero essere necessarie autorizzazioni aggiuntive per lavorare con altre AWS risorse, come database e nodi.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:CreateDocument",
                   "ssm:DescribeDocument",
                   "ssm:DescribeDocumentParameters",
                   "ssm:DescribeDocumentPermission",
                   "ssm:GetDocument",
                   "ssm:ListDocumentVersions",
                   "ssm:ModifyDocumentPermission",
                   "ssm:UpdateDocument",
                   "ssm:UpdateDocumentDefaultVersion"
               ],
               "Resource": [
                   "arn:aws:ssm:us-east-1:*:document/AWS-CreateDynamoDbBackup",
                   "arn:aws:ssm:us-east-1:*:document/AWS-AWS-DeleteDynamoDbBackup",
                   "arn:aws:ssm:us-east-1:*:document/AWS-DeleteDynamoDbTableBackups",
                   "arn:aws:ssm:us-east-1:*:document/AWSConfigRemediation-DeleteDynamoDbTable",
                   "arn:aws:ssm:us-east-1:*:document/AWSConfigRemediation-EnableEncryptionOnDynamoDbTable",
                   "arn:aws:ssm:us-east-1:*:document/AWSConfigRemediation-EnablePITRForDynamoDbTable",
                   "arn:aws:ssm:us-east-1:111122223333:document/MyFirstDBChangeTemplate",
                   "arn:aws:ssm:us-east-1:111122223333:document/MySecondDBChangeTemplate"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "ssm:ListDocuments",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "ssm:StartChangeRequestExecution",
               "Resource": [
                   "arn:aws:ssm:us-east-1:111122223333:document/*",
                   "arn:aws:ssm:us-east-1:111122223333:automation-execution/*"
               ]
           }
       ]
   }
   ```

------

   Per ulteriori informazioni sulle policy IAM, consulta [Gestione degli accessi per Risorse AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) e [Creazione di policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) nella *Guida per l'utente IAM*.

1. Nella sezione **Destinazioni**, scegli se concedere le autorizzazioni per la funzione di processo che stai creando per l'intera organizzazione o solo ad alcune unità organizzative.

   Se si sceglie **Intera organizzazione** continuare con la fase 9.

   Se si sceglie **Personalizza** continuare con la fase 8.

1. Nella OUs sezione **Target**, seleziona le caselle di controllo delle unità organizzative con Change Manager cui utilizzare.

1. Scegliere **Create (Crea)**.

Al termine della configurazione del sistema Change Manager per l'organizzazione, visualizza un riepilogo delle implementazioni. Queste informazioni di riepilogo includono il nome del ruolo creato per la funzione di processo configurata. Ad esempio, `AWS-QuickSetup-SSMChangeMgr-DBAdminInvocationRole`.

**Nota**  
Quick Setupusi AWS CloudFormation StackSets per distribuire le tue configurazioni. È inoltre possibile visualizzare le informazioni su una configurazione di implementazione completata nella console CloudFormation . Per informazioni su StackSets, consulta [Working with AWS CloudFormation StackSets nella Guida](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) per l'*AWS CloudFormation utente*.

La fase successiva consiste nel configurare ulteriori opzioni Change Manager. È possibile completare questo processo nell'account amministratore delegato o in qualsiasi account in un'unità organizzativa consentita per l'utilizzo con Change Manager. È possibile configurare opzioni quali la scelta di un'opzione di gestione delle identità utente, specificare gli utenti che possono esaminare e approvare o rifiutare i modelli di modifica e le richieste di modifica e scegliere le opzioni di best practice da consentire per l'organizzazione. Per informazioni, consulta [Configurazione di opzioni Change Manager e best practice](change-manager-account-setup.md).

# Configurazione di opzioni Change Manager e best practice
<a name="change-manager-account-setup"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Le attività in questa sezione devono essere eseguite indipendentemente dal fatto che tu stia utilizzando Change Manager uno strumento interno AWS Systems Manager, all'interno di un'organizzazione o in un'unica organizzazione Account AWS.

Se usi Change Manager per un'organizzazione, è possibile eseguire i seguenti processi nell'account amministratore delegato o in qualsiasi account in un'unità organizzativa consentita per l'utilizzo con Change Manager.

**Topics**
+ [Processo 1: configurazione Change Manager per la gestione delle identità utente e revisori dei modelli](#cm-configure-account-task-1)
+ [Processo 2: configurazione Change Manager approvatori e best practice per gli eventi di blocco delle modifiche](#cm-configure-account-task-2)
+ [Configurazione degli argomenti Amazon SNS per le notifiche Change Manager](change-manager-sns-setup.md)

## Processo 1: configurazione Change Manager per la gestione delle identità utente e revisori dei modelli
<a name="cm-configure-account-task-1"></a>

Eseguire il processo in questa procedura la prima volta che si accede a Change Manager. È possibile aggiornare queste impostazioni di configurazione in un secondo momento tornando aChange Manager e scegliendo **Modificare** nella scheda **Impostazioni**.

**Per configurare Change Manager nella gestione delle identità utente e revisori dei modelli**

1. Accedi alla Console di gestione AWS.

   Se usi Change Manager per un'organizzazione, accedere utilizzando le credenziali per l'account amministratore delegato. L'utente deve disporre delle autorizzazioni AWS Identity and Access Management (IAM) necessarie per eseguire aggiornamenti alle impostazioni Change Manager.

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 **Change Manager**.

1. Nella home page del servizio, a seconda delle opzioni disponibili, seguire la procedura riportata di seguito:
   + Se utilizzi Change Manager con AWS Organizations , scegli **Configura account delegato**.
   + Se lo utilizzi Change Manager con un solo utente Account AWS, scegli **Configura Change Manager**.

     oppure

     Scegliere **Crea richiesta di modifica di esempio**, **Salta** e quindi seleziona la scheda **Impostazioni**.

1. Per **Gestione delle identità degli utenti** scegliere una delle seguenti opzioni.
   + **AWS Identity and Access Management (IAM)**: identifica gli utenti che effettuano e approvano le richieste ed eseguono altre azioni Change Manager utilizzando gli utenti, i gruppi e i ruoli esistenti.
   + **AWS IAM Identity Center (IAM Identity Center)**: consenti a [IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/) di creare e gestire identità o di connetterti alla tua fonte di identità esistente per identificare gli utenti che eseguono azioni in. Change Manager

1. Nella sezione **Notifica del revisore del modello**, specifica gli argomenti di Amazon Simple Notification Service (Amazon SNS) da utilizzare per notificare ai revisori che un nuovo modello di modifica o una versione del modello di modifica sono pronti per essere esaminati. Assicurati che l'argomento Amazon SNS scelto sia configurato per inviare notifiche ai revisori del modello. 

   Per informazioni sulla creazione e la configurazione degli argomenti di Amazon SNS per le notifiche del revisore dei modelli di modifica, consulta [Configurazione degli argomenti Amazon SNS per le notifiche Change Manager](change-manager-sns-setup.md).

   1. Per specificare l'argomento Amazon SNS per la notifica del revisore dei modelli, scegli una delle seguenti opzioni:
      + **Inserisci un SNS Amazon Resource Name (ARN)** – Per **argomento ARN** immetti l'ARN di un argomento Amazon SNS esistente. Questo argomento può essere incluso in qualsiasi account dell'organizzazione.
      + **Selezionare un argomento SNS esistente**— Per **Argomento notifica destinazione**, seleziona l'ARN di un argomento Amazon SNS esistente nel tuo Account AWS. (Questa opzione non è disponibile se non hai ancora creato alcun argomento di Amazon SNS nella versione attuale Account AWS ). Regione AWS
**Nota**  
L'argomento Amazon SNS selezionato deve essere configurato in modo da specificare le notifiche inviate e gli abbonati a cui vengono inviati. La sua policy di accesso deve inoltre concedere autorizzazioni a Systems Manager in modo che Change Manager può inviare notifiche. Per informazioni, consulta [Configurazione degli argomenti Amazon SNS per le notifiche Change Manager](change-manager-sns-setup.md). 

   1. Scegliere **Add notification (Aggiungi notifica)**.

1. Nella sezione **Modificare i revisori del modello**, selezionare gli utenti dell'organizzazione o dell'account per la revisione dei nuovi modelli di modifica o per modificare le versioni dei modelli prima che possano essere utilizzati nelle operazioni. 

   I revisori dei modelli di modifica sono responsabili della verifica dell'idoneità e della sicurezza dei modelli inviati da altri utenti per l'utilizzo in flussi di lavoro del runbook Change Manager.

   Selezionare i revisori dei modelli di modifica eseguendo le operazioni seguenti:

   1. Scegliere **Aggiungi**.

   1. Selezionare la casella di controllo accanto al nome di ciascun utente, gruppo o ruolo IAM che desideri assegnare come revisore del modello di modifica.

   1. Scegliere **Aggiungi approvatori**.

1. Seleziona **Invia**.

 Dopo aver completato questo processo di installazione iniziale, configurare Change Manager e procedure consigliate attenendosi alla procedura descritta in [Processo 2: configurazione Change Manager approvatori e best practice per gli eventi di blocco delle modifiche](#cm-configure-account-task-2).

## Processo 2: configurazione Change Manager approvatori e best practice per gli eventi di blocco delle modifiche
<a name="cm-configure-account-task-2"></a>

Dopo aver completato i passaggi descritti in [Processo 1: configurazione Change Manager per la gestione delle identità utente e revisori dei modelli](#cm-configure-account-task-1), è possibile designare revisori aggiuntivi per le richieste di modifica durante gli *eventi di blocco delle modifiche* e specificare quali best practice disponibili si desidera consentire per le operazioni in Change Manager.

Un evento di blocco delle modifiche indica che sono presenti restrizioni nel calendario delle modifiche corrente (lo stato del calendario in AWS Systems Manager Change Calendar è`CLOSED`). In questi casi, oltre ai normali approvatori per le richieste di modifica o se la richiesta di modifica viene creata utilizzando un modello che consente l'approvazione automatica, gli approvatori del blocco delle modifiche devono concedere l'autorizzazione per l'esecuzione della richiesta di modifica. In caso contrario, la modifica non verrà elaborata fino a quando lo stato del calendario non sarà nuovamente `OPEN`.

**Per configurare gli approvatori degli eventi di blocco delle modifiche e le best practice di Change Manager**

1. Nel pannello di navigazione, scegli **Change Manager**.

1. Seleziona la scheda **Web Settings** (Impostazioni Web) e scegli **Edit** (Modifica).

1. Nella sezione **Approvatori per gli eventi di blocco delle modifiche** selezionare gli utenti dell'organizzazione o dell'account che possono approvare le modifiche da eseguire anche quando il calendario in uso in Change Calendar è CHIUSO.
**Nota**  
Per consentire revisioni di blocco delle modifiche, è necessario attivare l'opzione **Controlla calendario delle modifiche per eventi di modifiche limitati** in **Best practice**.

   Selezionare gli approvatori per gli eventi di blocco delle modifiche eseguendo le operazioni seguenti:

   1. Scegliere **Aggiungi**.

   1. Selezionare la casella di controllo accanto al nome di ciascun utente, gruppo o ruolo IAM che desideri assegnare come approvatore per gli eventi di blocco delle modifiche.

   1. Scegliere **Aggiungi approvatori**.

1. Nella sezione **Best practice**, situata nella parte inferiore della pagina, attivare le procedure consigliate che si desidera applicare per ciascuna delle seguenti opzioni.
   + Opzione: **Controlla calendario delle modifiche per eventi di modifiche limitati**

     Per specificare che Change Manager controlla un calendario in Change Calendar per assicurarti che le modifiche non siano bloccate dagli eventi pianificati, seleziona prima la casella di controllo **Abilitato** e quindi seleziona il calendario per verificare la presenza di eventi limitati nell'elenco presente nell'elenco **Calendario delle modifiche**.

     Per ulteriori informazioni su Change Calendar, consultare [AWS Systems Manager Change Calendar](systems-manager-change-calendar.md).
   + Opzione: **Argomento SNS per approvatori di eventi chiusi**

     1. Scegli una delle seguenti opzioni per specificare l'argomento Amazon Simple Notification Service (Amazon SNS) nel tuo account da utilizzare per inviare notifiche agli approvatori durante gli eventi di blocco delle modifiche. (Si noti che è necessario specificare anche i revisori nella sezione **Approvatori per gli eventi di blocco delle modifiche** sopra **Best practice**.)
        + **Inserisci un SNS Amazon Resource Name (ARN)** – Per **argomento ARN** immetti l'ARN di un argomento Amazon SNS esistente. Questo argomento può essere incluso in qualsiasi account dell'organizzazione.
        + **Selezionare un argomento SNS esistente**— Per **Argomento notifica destinazione**, seleziona l'ARN di un argomento Amazon SNS esistente nel tuo Account AWS. (Questa opzione non è disponibile se non hai ancora creato alcun argomento di Amazon SNS nella versione attuale Account AWS ). Regione AWS
**Nota**  
L'argomento Amazon SNS selezionato deve essere configurato in modo da specificare le notifiche inviate e gli abbonati a cui vengono inviati. La sua policy di accesso deve inoltre concedere autorizzazioni a Systems Manager in modo che Change Manager può inviare notifiche. Per informazioni, consulta [Configurazione degli argomenti Amazon SNS per le notifiche Change Manager](change-manager-sns-setup.md). 

     1. Scegliere **Add notification (Aggiungi notifica)**.
   + Opzione: **Richiedi monitoraggi per tutti i modelli**

     Se vuoi assicurarti che tutti i modelli per la tua organizzazione o il tuo account specifichino un CloudWatch allarme Amazon per monitorare l'operazione di modifica, seleziona la casella di controllo **Abilitato**.
   + Opzione: **Richiedi revisione e approvazione del modello prima dell'uso**

     Per garantire che non vengano create richieste di modifica e che non vengano eseguiti flussi di lavoro del runbook, senza essere basati su un modello revisionato e approvato, selezionare la casella di controllo**Enabled (Abilitato)**.

1. Scegli **Save** (Salva).

# Configurazione degli argomenti Amazon SNS per le notifiche Change Manager
<a name="change-manager-sns-setup"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Puoi configurareChange Manager, uno strumento in AWS Systems Manager, per inviare notifiche a un argomento di Amazon Simple Notification Service (Amazon SNS) per eventi relativi a richieste di modifica e modelli di modifica. Completare i seguenti processi per ricevere le notifiche per eventi Change Manager a cui si aggiunge un argomento.

**Topics**
+ [Processo 1: Creazione e iscrizione a un argomento Amazon SNS](#change-manager-sns-setup-create-topic)
+ [Processo 2: Aggiornamento delle policy di accesso Amazon SNS](#change-manager-sns-setup-encryption-policy)
+ [Attività 3: (Facoltativo) Aggiornare la politica di accesso AWS Key Management Service](#change-manager-sns-setup-KMS-policy)

## Processo 1: Creazione e iscrizione a un argomento Amazon SNS
<a name="change-manager-sns-setup-create-topic"></a>

Come prima cosa crea e sottoscrivi un argomento Amazon SNS. Per ulteriori informazioni, consulta [Creazione di un argomento Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) e [Iscrizione a un argomento Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-subscribe-endpoint-to-topic.html) nella *Guida per gli sviluppatori di Amazon Simple Notification Service*.

**Nota**  
Per ricevere notifiche, devi specificare l'Amazon Resource Name (ARN) di un argomento Amazon SNS che si trova nello Regione AWS stesso account Account AWS amministratore delegato. 

## Processo 2: Aggiornamento delle policy di accesso Amazon SNS
<a name="change-manager-sns-setup-encryption-policy"></a>

Utilizza la procedura seguente per aggiornare la policy di accesso in modo che Systems Manager possa pubblicare notifiche Change Manager nell'argomento Amazon SNS creato nel processo 1. Senza completare questo processo, Change Manager non dispone dell'autorizzazione per inviare notifiche per gli eventi per cui aggiungi l'argomento.

1. [Accedi Console di gestione AWS e apri la console Amazon SNS nella versione v3/home. https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/v3/home)

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

1. Scegli l'argomento creato nel processo 1, quindi seleziona **Edit (Modifica)**.

1. Espandi **Policy di accesso**.

1. Aggiungi e aggiorna il seguente `Sid` blocco alla politica esistente e sostituisci ciascuno *user input placeholder* con le tue informazioni.

   ```
   {
       "Sid": "Allow Change Manager to publish to this topic",
       "Effect": "Allow",
       "Principal": {
           "Service": "ssm.amazonaws.com"
       },
       "Action": "sns:Publish",
       "Resource": "arn:aws:sns:region:account-id:topic-name",
       "Condition": {
           "StringEquals": {
               "aws:SourceAccount": [
                   "account-id"
               ]
           }
       }
   }
   ```

   Inserisci questo blocco dopo il `Sid` blocco esistente e *region* sostituiscilo *account-id* *topic-name* con i valori appropriati per l'argomento che hai creato.

1. Scegli **Save changes** (Salva modifiche).

Il sistema invia ora notifiche all'argomento Amazon SNS quando si verifica il tipo di evento che aggiungi all'argomento.

**Importante**  
Se hai configurato l'argomento Amazon SNS con una chiave di crittografia lato server AWS Key Management Service (AWS KMS), devi completare il Task 3.

## Attività 3: (Facoltativo) Aggiornare la politica di accesso AWS Key Management Service
<a name="change-manager-sns-setup-KMS-policy"></a>

Se hai attivato la crittografia AWS Key Management Service (AWS KMS) lato server per il tuo argomento Amazon SNS, devi anche aggiornare la politica di accesso che hai scelto quando hai AWS KMS key configurato l'argomento. Utilizza la procedura seguente per aggiornare la policy di accesso in modo che Systems Manager possa pubblicare notifiche di approvazione Change Manager per l'argomento Amazon SNS creato nel processo 1.

1. [Apri la AWS KMS console in /kms. https://console.aws.amazon.com](https://console.aws.amazon.com/kms)

1. Nel riquadro di navigazione, scegli **Chiavi gestite dal cliente**.

1. Selezionare l'ID della chiave master del cliente scelta al momento della creazione dell'argomento.

1. Nella sezione **Policy della chiave**, scegli **Passa alla visualizzazione della policy**.

1. Scegli **Modifica**.

1. Immettere il seguente blocco `Sid` dopo uno dei blocchi `Sid` esistenti nella politica esistente. Sostituisci ogni *user input placeholder* con le tue informazioni.

   ```
   {
       "Sid": "Allow Change Manager to decrypt the key",
       "Effect": "Allow",
       "Principal": {
           "Service": "ssm.amazonaws.com"
       },
       "Action": [
           "kms:Decrypt",
           "kms:GenerateDataKey*"
       ],
       "Resource": "arn:aws:kms:region:account-id:key/key-id",
       "Condition": {
           "StringEquals": {
               "aws:SourceAccount": [
                   "account-id"
               ]
           }
       }
   }
   ```

1. Ora immetti il seguente blocco `Sid` dopo uno dei blocchi `Sid` esistenti nella politica delle risorse per aiutare a prevenire il [problema del “confused deputy” di servizi incrociati](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). 

   Questo blocco utilizza le chiavi di contesto delle condizioni globali [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) per limitare le autorizzazioni con cui Systems Manager fornisce un altro servizio alla risorsa.

   Sostituisci ogni *user input placeholder* con le tue informazioni.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Configure confused deputy protection for AWS KMS keys used in Amazon SNS topic when called from Systems Manager",
               "Effect": "Allow",
               "Principal": {
                   "Service": "ssm.amazonaws.com"
               },
               "Action": [
                   "sns:Publish"
               ],
               "Resource": "arn:aws:sns:us-east-1:111122223333:topic-name",
               "Condition": {
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:ssm:us-east-1:111122223333:*"
                   },
                   "StringEquals": {
                       "aws:SourceAccount": "111122223333"
                   }
               }
           }
       ]
   }
   ```

------

1. Scegli **Save changes (Salva modifiche)**.

# Configurazione di ruoli e autorizzazioni per Change Manager
<a name="change-manager-permissions"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Per impostazione predefinita, Change Manager non è autorizzato a eseguire operazioni sulle tue risorse. È necessario concedere l'accesso utilizzando un ruolo di servizio AWS Identity and Access Management (IAM) o *assumere un ruolo*. Questo ruolo consente a Change Manager di eseguire in modo sicuro i flussi di lavoro dei runbook specificati in una richiesta di modifica approvata per tuo conto. Il ruolo concede AWS Security Token Service (AWS STS) [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)fiducia aChange Manager.

Fornendo a un ruolo queste autorizzazioni per agire per conto degli utenti di un'organizzazione, non è necessario che agli utenti venga concessa tale serie di autorizzazioni. Le operazioni consentite dalle autorizzazioni sono limitate solo alle operazioni approvate.

Quando gli utenti dell'account o dell'organizzazione creano una richiesta di modifica, possono selezionare questo ruolo assunto per eseguire le operazioni di modifica.

Puoi creare un nuovo ruolo assunto per Change Manager oppure aggiornare un ruolo esistente con le autorizzazioni necessarie.

Se devi creare un ruolo di servizio per Change Manager, completa le seguenti attività. 

**Topics**
+ [Attività 1: creazione di una policy di ruolo assunto per Change Manager](#change-manager-role-policy)
+ [Attività 2: creazione di un ruolo assunto per Change Manager](#change-manager-role)
+ [Attività 3: collegamento della policy `iam:PassRole` ad altri ruoli](#change-manager-passpolicy)
+ [Attività 4: Aggiungere politiche in linea per assumere un ruolo per richiamarne altre Servizi AWS](#change-manager-role-add-inline-policy)
+ [Attività 5: configurazione dell'accesso utente a Change Manager](#change-manager-passrole)

## Attività 1: creazione di una policy di ruolo assunto per Change Manager
<a name="change-manager-role-policy"></a>

Utilizza la procedura seguente per creare la policy che sarà allegata al tuo ruolo assunto di Change Manager.

**Creazione di una policy di ruolo assunto per Change Manager**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, seleziona **Policies (Policy)** e **Create Policy (Crea policy)**.

1. Sulla pagina **Create policy** (Crea policy), scegli la scheda **JSON** e sostituisci il contenuto di default con quanto segue, che modificherai per le tue operazioni di Change Managernelle fasi seguenti.
**Nota**  
Se stai creando una policy da utilizzare con una singola Account AWS organizzazione e non con più account e Regioni AWS, puoi omettere il primo blocco di rendiconti. L'autorizzazione `iam:PassRole` non è richiesta nel caso in cui un singolo account utilizzi Change Manager.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::111122223333:role/AWS-SystemsManager-job-functionAdministrationRole",
               "Condition": {
                   "StringEquals": {
                       "iam:PassedToService": "ssm.amazonaws.com"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:DescribeDocument",
                   "ssm:GetDocument",
                   "ssm:StartChangeRequestExecution"
               ],
               "Resource": [
                   "arn:aws:ssm:us-east-1::document/template-name",
                   "arn:aws:ssm:us-east-1:111122223333:automation-execution/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:ListOpsItemEvents",
                   "ssm:GetOpsItem",
                   "ssm:ListDocuments",
                   "ssm:DescribeOpsItems"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Per l'`iam:PassRole`azione, aggiorna il `Resource` valore per includere tutte le funzioni lavorative definite per l' ARNs organizzazione a cui desideri concedere le autorizzazioni per avviare i flussi di lavoro dei runbook.

1. Sostituisci i *job-function* segnaposti *region**account-id*,*template-name*,*delegated-admin-account-id*, e con i valori per le tue operazioni. Change Manager

1. Per la seconda istruzione di `Resource`, modifica l'elenco in modo da includere tutti i modelli di modifica per i quali desideri concedere le autorizzazioni. In alternativa, specifica `"Resource": "*"` per concedere le autorizzazioni per tutti i modelli di modifica nell'organizzazione.

1. Scegli **Successivo: Tag**.

1. (Facoltativo) Aggiungere una o più coppie tag chiave-valore per organizzare, monitorare o controllare l'accesso per questa policy. 

1. Scegli **Prossimo: Rivedi**.

1. Nella pagina **Review policy** (Rivedi policy), immetti un nome nella casella **Name** (Nome), ad esempio **MyChangeManagerAssumeRole**, quindi immetti una descrizione facoltativa.

1. Scegli **Create policy** (Crea policy) e continua con [Attività 2: creazione di un ruolo assunto per Change Manager](#change-manager-role).

## Attività 2: creazione di un ruolo assunto per Change Manager
<a name="change-manager-role"></a>

Utilizza la procedura seguente per creare un ruolo assunto di Change Manager, un tipo di ruolo di servizio, per Change Manager.

**Creazione di un ruolo assunto per Change Manager**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Ruoli** e quindi **Crea ruolo**.

1. Per **Select trusted entity** (Seleziona un'entità attendibile), effettua le seguenti selezioni:

   1. Per **Trusted entity type** (Tipo di entità attendibile), scegli **AWS service** (Servizio)

   1. Per **casi d'uso per altri Servizi AWS**, scegli **Systems Manager**

   1. Scegli **Systems Manager**, come mostrato nell'immagine seguente.  
![\[Schermata che illustra l'opzione Systems Manager selezionata come caso d'uso.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/iam_use_cases_for_MWs.png)

1. Scegli **Next (Successivo)**.

1. Nella pagina **Attached permissions policy** (Policy delle autorizzazioni collegate), cerca la policy del ruolo da assegnare creato in [Attività 1: creazione di una policy di ruolo assunto per Change Manager](#change-manager-role-policy), ad esempio **MyChangeManagerAssumeRole**. 

1. Seleziona la casella di controllo accanto al nome della policy, quindi scegli **Next: Tags** (Successivo: Tag).

1. Per **Nome ruolo**, inserisci un nome per il nuovo profilo dell'istanza, ad esempio **MyChangeManagerAssumeRole**.

1. (Facoltativo) Per **Role description** (Descrizione ruolo), aggiorna la descrizione di questo ruolo dell'istanza.

1. (Facoltativo) Aggiungere una o più coppie tag chiave-valore per organizzare, monitorare o controllare l'accesso per questo ruolo. 

1. Scegli **Prossimo: Rivedi**.

1. (Facoltativo) Per **Tags** (Tag), aggiungi una o più coppie tag chiave-valore chiave per organizzare, monitorare o controllare l'accesso per questo ruolo, quindi scegli **Create role** (Crea ruolo). Il sistema ti riporta alla pagina **Ruoli**.

1. Scegliere **Create role** (Crea ruolo). Il sistema visualizza di nuovo la pagina **Roles** (Ruoli).

1. Nella pagina **Ruoli**, scegli il ruolo appena creato per aprire la pagina **Riepilogo**. 

## Attività 3: collegamento della policy `iam:PassRole` ad altri ruoli
<a name="change-manager-passpolicy"></a>

Procedi come segue per allegare la policy `iam:PassRole` a un profilo dell'istanza IAM o un ruolo di servizio IAM. (Il servizio Systems Manager utilizza i profili di istanza IAM per comunicare con le istanze EC2. Per i nodi gestiti non EC2 in un ambiente [ibrido e multicloud](operating-systems-and-machine-types.md#supported-machine-types), viene invece utilizzato un ruolo di servizio IAM).

Allegando la policy `iam:PassRole`, il servizio Change Manager può passare le autorizzazioni del ruolo assunto ad altri servizi o ad altri strumenti di Systems Manager durante l'esecuzione di flussi di lavoro dei runbook.

**Per collegare la policy `iam:PassRole` a un profilo dell'istanza IAM o a un ruolo di servizio**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, seleziona **Ruoli**.

1. Cerca il ruolo assunto Change Manager creato, ad esempio **MyChangeManagerAssumeRole**, e selezionalo.

1. Nella pagina **Riepilogo** del ruolo assunto, scegli la scheda **Autorizzazioni**.

1. Scegli **Add permissions, Create inline policy** (Aggiungi autorizzazioni, Crea policy inline).

1. Nella pagina **Create Policy** (Crea policy), scegliere la scheda **Visual editor (Editor visivo)**.

1. Scegliere **Service** (Servizio), quindi **IAM**.

1. Nella casella di testo **Filtro azioni****PassRole**, immettete e scegliete l'**PassRole**opzione.

1. Espandi **Resources** (Risorse). Verifica che l'opzione **Specific** (Specifico) sia selezionata, quindi scegliere **Add ARN** (Aggiungi ARN).

1. Nel campo **Specify ARN for role** (Specifica ARN per il ruolo), immetti l'ARN del ruolo del profilo dell'istanza IAM o del ruolo di servizio IAM a cui desideri passare le autorizzazioni del ruolo assunto. Il sistema popola automaticamente i campi **Account** e **Role name with path (Nome ruolo con percorso)**. 

1. Scegliere **Add** (Aggiungi).

1. Scegliere **Review policy** (Rivedi policy).

1. Per **Name** (Nome), inserisci un nome per identificare questa policy, quindi scegli **Create policy** (Crea policy).

**Ulteriori informazioni**  
+ [Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager](setup-instance-permissions.md)
+ [Creazione di un ruolo di servizio IAM richiesto per System Manager in ambiente ibrido e multicloud](hybrid-multicloud-service-role.md)

## Attività 4: Aggiungere politiche in linea per assumere un ruolo per richiamarne altre Servizi AWS
<a name="change-manager-role-add-inline-policy"></a>

Quando una richiesta di modifica richiama altre persone Servizi AWS utilizzando il ruolo assume, il ruolo Change Manager assume deve essere configurato con l'autorizzazione a richiamare tali servizi. Questo requisito si applica a tutti i runbook di AWS automazione (runbook AWS-\$1) che potrebbero essere utilizzati in una richiesta di modifica, come, e runbook. `AWS-ConfigureS3BucketLogging` `AWS-CreateDynamoDBBackup` `AWS-RestartEC2Instance` Questo requisito si applica anche a tutti i runbook personalizzati creati che richiamano altri utenti Servizi AWS utilizzando azioni che richiamano altri servizi. Ad esempio, se utilizzi le operazioni `aws:executeAwsApi`, `aws:CreateStack` o `aws:copyImage`, allora dovrai configurare il ruolo di servizio con l'autorizzazione per richiamare questi servizi. Puoi concedere autorizzazioni ad altri Servizi AWS aggiungendo una policy in linea IAM al ruolo. 

**Per aggiungere una policy in linea a un assumi il ruolo di invocare altri Servizi AWS (console IAM)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Nel riquadro di navigazione, seleziona **Ruoli**.

1. Nell'elenco, scegli il nome del ruolo assunto che desideri aggiornare, ad esempio `MyChangeManagerAssumeRole`.

1. Scegli la scheda **Autorizzazioni**.

1. Scegli **Add permissions, Create inline policy** (Aggiungi autorizzazioni, Crea policy inline).

1. Scegli la scheda **JSON**.

1. Inserisci un documento di policy JSON per il file Servizi AWS che desideri richiamare. Di seguito sono riportati due documenti della policy JSON di esempio.

   **Esempio di `PutObject` e `GetObject` di Amazon S3**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
           }
       ]
   }
   ```

------

   **Esempio di `CreateSnapshot` e `DescribeSnapShots` di Amazon EC2**

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":"ec2:CreateSnapshot",
            "Resource":"*"
         },
         {
            "Effect":"Allow",
            "Action":"ec2:DescribeSnapshots",
            "Resource":"*"
         }
      ]
   }
   ```

------

    Per informazioni sul linguaggio della policy IAM consulta [Riferimento alle policy JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) nella *Guida per l'utente IAM*.

1. Al termine, seleziona **Review policy (Rivedi policy)**. In [Policy Validator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) (Validatore di policy) vengono segnalati eventuali errori di sintassi.

1. Per **Name** (Nome), inserisci un nome per identificare la policy che stai creando. Consulta il **Riepilogo** della policy per visualizzare le autorizzazioni concesse dalla policy. Seleziona **Create policy** (Crea policy) per salvare il proprio lavoro.

1. Una volta creata, una policy inline viene automaticamente incorporata nel ruolo.

## Attività 5: configurazione dell'accesso utente a Change Manager
<a name="change-manager-passrole"></a>

Se al tuo utente, gruppo o ruolo sono assegnate le autorizzazioni come amministratore, allora hai accesso a Change Manager. Se non disponi delle autorizzazioni di amministratore, un amministratore dovrà assegnare la policy gestita `AmazonSSMFullAccess` oppure una policy che conceda autorizzazioni analoghe all'utente, al gruppo o al ruolo.

Completa la procedura seguente per configurare un utente per l'utilizzo di Change Manager. L'utente scelto disporrà dell'autorizzazione necessaria per configurare ed eseguire Change Manager. 

A seconda dell'applicazione di identità utilizzata nell'organizzazione, è possibile selezionare una delle tre opzioni disponibili per configurare l'accesso degli utenti. Durante la configurazione dell'accesso utente, assegna o aggiungi quanto segue: 

1. Assegna la policy `AmazonSSMFullAccess` o una policy analoga che autorizzi l'accesso a Systems Manager.

1. Assegna la policy `iam:PassRole`.

1. Aggiungi l'ARN per il ruolo di assunzione Change Manager che hai copiato alla fine del [Attività 2: creazione di un ruolo assunto per Change Manager](#change-manager-role).

Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:
+ Utenti e gruppi in: AWS IAM Identity Center

  Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) (Creazione di un set di autorizzazioni) nella *Guida per l’utente di AWS IAM Identity Center *.
+ Utenti gestiti in IAM tramite un provider di identità:

  Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) della *Guida per l’utente IAM*.
+ Utenti IAM:
  + Crea un ruolo che l’utente possa assumere. Segui le istruzioni riportate nella pagina [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) della *Guida per l’utente IAM*.
  + (Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina [Aggiunta di autorizzazioni a un utente (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l’utente IAM*.

A questo punto, la configurazione dei ruoli richiesti per Change Manager è stata completata. Ora puoi utilizzare l'ARN del ruolo assunto di Change Manager nelle operazioni di Change Manager.

# Controllo dell'accesso ai flussi di lavoro del runbook di approvazione automatica
<a name="change-manager-auto-approval-access"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

In ogni modello di modifica creato per l'organizzazione o l'account, è possibile specificare se le richieste di modifica create da tale modello possono essere eseguite come richieste di modifica approvate automaticamente, ovvero vengono eseguite automaticamente senza una fase di revisione (ad eccezione degli eventi di blocco delle modifiche).

Tuttavia, potresti voler impedire a determinati utenti, gruppi o ruoli AWS Identity and Access Management (IAM) di eseguire richieste di modifica approvate automaticamente anche se un modello di modifica lo consente. A tale scopo, è possibile utilizzare la chiave di condizione `ssm:AutoApprove`per l’operazione `StartChangeRequestExecution` in una policy IAM assegnata all'utente, al gruppo o al ruolo IAM. 

È possibile aggiungere la policy seguente come policy inline, in cui la condizione è specificata come `false`, per impedire agli utenti di eseguire richieste di modifica approvabili automaticamente.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
            {
            "Effect": "Allow",
            "Action": "ssm:StartChangeRequestExecution",
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "ssm:AutoApprove": "false"
                }
            }
        }
    ]
}
```

------

Per informazioni su come specificare policy inline, consulta[Policy inline](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) e [Aggiunta e rimozione di autorizzazioni Identità IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) nella *Guida per l’utente IAM*.

Per ulteriori informazioni su queste chiavi di condizione per le policy di Systems Manager, consulta la sezione [Chiavi di condizione per Systems Manager](security_iam_service-with-iam.md#policy-conditions).

# Utilizzo di Change Manager
<a name="working-with-change-manager"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [Modifica della AWS Systems ManagerChange Manager disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Con Change Manager uno strumento integrato AWS Systems Manager, gli utenti dell'organizzazione o i singoli utenti Account AWS possono eseguire attività relative alle modifiche per le quali sono state concesse le autorizzazioni necessarie. Change Managerle attività includono quanto segue:
+ Creare, rivedere e approvare o rifiutare i modelli di modifica. 

  Un modello di modifica è una raccolta di impostazioni di configurazione in Change Manager che definiscono le approvazioni obbligatorie, i runbook disponibili e le opzioni di notifica per le richieste di modifica.
+ Creare, esaminare e approvare o rifiutare le richieste di modifica.

  Una richiesta di modifica è una richiesta di esecuzione Change Manager di un runbook di automazione che aggiorna una o più risorse negli ambienti aziendali AWS o locali. Una richiesta di modifica viene creata utilizzando un modello di modifica.
+ Specificare gli utenti dell'organizzazione o dell'account che possono essere resi revisori per i modelli di modifica e le richieste di modifica.
+ Modificare le impostazioni di configurazione, ad esempio la gestione delle identità utente in Change Manager e quale delle opzioni *best practice* vengono applicate nelle operazioni Change Manager. Per ulteriori informazioni sulla configurazione delle impostazioni consulta [Configurazione di opzioni Change Manager e best practice](change-manager-account-setup.md).

**Topics**
+ [Utilizzo dei modelli di modifica](change-templates.md)
+ [Utilizzo delle richieste di modifica](change-requests.md)
+ [Analisi dei dettagli delle richieste di modifica, dei processi e delle tempistiche (console)](reviewing-changes.md)
+ [Visualizzazione dei conteggi aggregati delle richieste di modifica (riga di comando)](change-requests-review-aggregate-command-line.md)

# Utilizzo dei modelli di modifica
<a name="change-templates"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [Modifica della AWS Systems ManagerChange Manager disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Un modello di modifica è una raccolta di impostazioni di configurazione in Change Manager che definiscono le approvazioni obbligatorie, i runbook disponibili e le opzioni di notifica per le richieste di modifica.

**Nota**  
AWS fornisce un esempio di modello di modifica di [Hello World](change-templates-aws-managed.md) che puoi usare per provareChange Manager, uno strumento in AWS Systems Manager. Tuttavia, è possibile creare modelli di modifica personalizzati per definire le modifiche che si desidera consentire alle risorse dell'organizzazione o dell'account. 

Le modifiche apportate quando viene eseguito un flusso di lavoro del runbook si basano sul contenuto di un runbook Automation. In ogni modello di modifica creato è possibile includere uno o più runbook Automation che l'utente che effettua una richiesta di modifica può scegliere per eseguire durante l'aggiornamento. È inoltre possibile creare modelli di modifica che consentono ai richiedenti di scegliere qualsiasi runbook Automation disponibile per la richiesta di modifica.

Per creare un modello di modifica, è possibile utilizzare il **Builder** nella pagina della console **Crea modello**per creare un modello di modifica. In alternativa, utilizzando l'opzione **Editor**, è possibile creare manualmente contenuto JSON o YAML con la configurazione desiderata per il flusso di lavoro del runbook. È inoltre possibile utilizzare uno strumento da riga di comando per creare un modello di modifica, con contenuto JSON per il modello di modifica memorizzato in un file esterno.

**Topics**
+ [Prova il modello di `Hello World` modifica AWS gestita](change-templates-aws-managed.md)
+ [Creazione di modelli di modifica](change-templates-create.md)
+ [Revisione e approvazione o rifiuto di modelli di modifica](change-templates-review.md)
+ [Eliminazione di modelli di modifica](change-templates-delete.md)

# Prova il modello di `Hello World` modifica AWS gestita
<a name="change-templates-aws-managed"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

È possibile utilizzare il modello di modifica di esempio `AWS-HelloWorldChangeTemplate`, che utilizza il runbook `AWS-HelloWorld` di automazione, per testare il processo di revisione e approvazione dopo aver completato la configurazione in Change Manager, uno strumento di AWS Systems Manager. Questo modello è progettato per testare o verificare le autorizzazioni configurate, le assegnazioni degli approvatori e il processo di approvazione. L'approvazione per l'utilizzo di questo modello di modifica nell'organizzazione o nell'account è già stata fornita da AWS. Qualsiasi richiesta di modifica basata su questo modello di modifica, tuttavia, deve essere comunque approvata dai revisori dell'organizzazione o dell'account.

Anziché apportare modifiche a una risorsa, il risultato del flusso di lavoro del runbook associato a questo modello consiste nel stampare un messaggio nell'output di un passaggio di automazione.

**Prima di iniziare**  
Prima di iniziare, assicurati di aver completato i processi seguenti:
+ Se lo utilizzi AWS Organizations per gestire le modifiche all'interno di un'organizzazione, completa le attività di configurazione dell'organizzazione descritte in[Configurazione di Change Manager per un'organizzazione (account di gestione)](change-manager-organization-setup.md).
+ ConfiguraChange Manager per l'account amministratore delegato o singolo account, come descritto in [Configurazione di opzioni Change Manager e best practice](change-manager-account-setup.md). 
**Nota**  
Se è stata attivata l'opzione Best Practice **Richiedi monitor per tutti i modelli**nelle impostazioni Change Manager, disattivarla temporaneamente durante il test del modello di modifica di Hello World.

**Per provare il modello di modifica AWS gestito di Hello World**

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 **Change Manager**.

1. Scegliere **Creazione della richiesta**.

1. Scegliere il modello di modifica denominato `AWS-HelloWorldChangeTemplate`e quindi **Successivo**.

1. Per **Nome**, immettere un nome per la richiesta di modifica che consenta di identificarne lo scopo, ad esempio **MyChangeRequestTest**.

1. Per conoscere il resto dei passaggi per creare la richiesta di modifica, consulta [Creazione di richieste di modificaCreazione di richieste di modifica (console)](change-requests-create.md).

**Fasi successive**  
Per informazioni sull'approvazione delle richieste di modifica, consulta [Revisione e approvazione o rifiuto delle richieste di modifica](change-requests-review.md).

Per visualizzare lo stato e i risultati della richiesta di modifica, scegliere il nome della richiesta di modifica nella scheda**Richieste** inChange Manager. 

# Creazione di modelli di modifica
<a name="change-templates-create"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [Modifica della AWS Systems ManagerChange Manager disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Un modello di modifica è una raccolta di impostazioni di configurazione in Change Manager che definiscono le approvazioni obbligatorie, i runbook disponibili e le opzioni di notifica per le richieste di modifica.

È possibile creare modelli di modifica per le operazioni in Change Manager, uno strumento di AWS Systems Manager, utilizzando la console, che include le opzioni Builder ed Editor o strumenti a riga di comando.

**Topics**
+ [Informazioni sulle approvazioni nei modelli di modifica](cm-approvals-templates.md)
+ [Creazione di modelli di modifica utilizzando Builder](change-templates-custom-builder.md)
+ [Creazione di modelli di modifica mediante Editor](change-templates-custom-editor.md)
+ [Creazione di modelli di modifica utilizzando strumenti da riga di comando](change-templates-tools.md)

# Informazioni sulle approvazioni nei modelli di modifica
<a name="cm-approvals-templates"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Per ogni modello di modifica creato, puoi specificare fino a cinque *livelli* di approvazione per le richieste di modifica create da esso. Per ciascuno di questi livelli, puoi designare fino a cinque potenziali *approvatori*. Un approvatore non è limitato a un singolo utente. È inoltre possibile specificare un gruppo IAM o un ruolo IAM come approvatore individuale. Per i gruppi IAM e i ruoli IAM, uno o più utenti appartenenti al gruppo o al ruolo possono fornire le approvazioni necessarie per ricevere il numero totale di approvazioni necessarie per una richiesta di modifica. È inoltre possibile specificare un numero di approvatori superiore a quello richiesto dal modello di modifica.

Change Manager supporta due approcci principali alle approvazioni: *approvazioni per livello* e *approvazioni per riga*. In alcune situazioni è possibile utilizzare anche una combinazione dei due tipi. Ti consigliamo di utilizzare solo le approvazioni per livello nelle operazioni Change Manager.

------
#### [ Per-level approvals ]

*Consigliato*. A partire dal 23 gennaio 2023, Change Manager supporta le approvazioni per livello. In questo modello, per ogni livello di approvazione nel modello di modifica, devi innanzitutto specificare quante approvazioni sono necessarie per quel livello. Quindi specifichi come minimo quel numero di approvatori per il livello e, volendo, altri approvatori. Tuttavia, per approvare la richiesta di modifica è sufficiente il solo numero di approvatori specificato per il livello. Ad esempio, puoi specificare cinque approvatori per un livello ma richiedere tre approvazioni.

Per esempi di visualizzazione da console e JSON di questo tipo di approvazione, consulta la pagina [Esempio di configurazione di approvazione per livello](approval-type-samples.md#per-level-approvals).

------
#### [ Per-line approvals ]

*Supporto della compatibilità con le versioni precedenti*. La versione originale di Change Manager supportava solo le approvazioni per riga. In questo modello, ogni approvatore specificato per un livello di approvazione è rappresentato come una riga di approvazione. Ogni approvatore doveva approvare una richiesta di modifica affinché fosse approvata a quel livello. Prima del 23 gennaio 2023, questo era l'unico modello supportato per le approvazioni. I modelli di modifica creati prima di questa data continuano a supportare le approvazioni per riga, ma consigliamo invece di utilizzare le approvazioni per livello.

Per esempi di visualizzazione da console e JSON di questo tipo di approvazione, consulta la pagina [Esempio di configurazione di approvazione per riga](approval-type-samples.md#per-line-approvals).

------
#### [ Combined per-line and per-level approvals ]

*Non consigliato*. Nella console, la scheda **Builder** non supporta più l'aggiunta di approvazioni per riga. Tuttavia, in alcuni casi potresti ritrovarti con approvazioni sia per riga sia per livello in uno stesso modello di modifica. Ciò può verificarsi se aggiorni un modello di modifica creato prima del 23 gennaio 2023 o se crei o aggiorni un modello di modifica editando manualmente il contenuto YAML.

Per esempi di visualizzazione da console e JSON di questo tipo di approvazione, consulta la pagina [Esempio di configurazione di approvazione combinata per livello e per riga](approval-type-samples.md#combined-approval-levels).

------

**Importante**  
Sebbene sia possibile creare un modello di modifica che combini le approvazioni per riga e per livello, questa configurazione non è consigliata o necessaria. Qualunque tipo di approvazione richieda più approvazioni (approvazioni per riga o per livello) ha la precedenza. Esempio:  
Se un modello di modifica specifica tre approvazioni per livello ma cinque approvazioni per riga, sono necessarie cinque approvazioni.
Se un modello di modifica specifica quattro approvazioni per livello ma due approvazioni per riga, sono necessarie quattro approvazioni.

Puoi creare un livello che includa approvazioni sia per riga sia per livello modificando manualmente il contenuto YAML o JSON. Quindi, la scheda **Builder** mostra i controlli per specificare il numero richiesto di approvazioni sia per il livello sia per le singole righe. Tuttavia, i nuovi livelli aggiunti utilizzando la console supportano ancora le configurazioni di approvazione soltanto per livello.

## Notifiche e rifiuti delle richieste di modifica
<a name="notifications-and-rejections"></a>

Notifiche Amazon SNS  
Quando viene creata una richiesta di modifica utilizzando il modello di modifica, le notifiche vengono inviate agli abbonati dell'argomento Amazon Simple Notification Service (Amazon SNS) che è stato designato per le notifiche di approvazione a quel livello. È possibile specificare l'argomento della notifica nel modello di modifica o consentire all'utente che crea la richiesta di modifica di specificarne uno.  
Dopo avere ricevuto il numero minimo di approvazioni richieste a un livello, le notifiche vengono inviate agli approvatori abbonati all'argomento Amazon SNS per il livello successivo e così via.  
Assicurati che i ruoli, i gruppi e gli utenti IAM designati forniscano nell'insieme un numero sufficiente di approvatori per soddisfare il numero di approvazioni richieste specificato. Ad esempio, se si designa un solo gruppo IAM come approvatore contenente tre utenti, non è possibile specificare che a quel livello sono richieste cinque approvazioni, bensì solo tre o meno.

Rifiuti delle richieste di modifica  
Indipendentemente dal numero di livelli di approvazione e approvatori specificati, è necessario un solo rifiuto a una richiesta di modifica per evitare che il flusso di lavoro del runbook relativo a quella richiesta si verifichi.

# Esempi di tipi di approvazione di Change Manager
<a name="approval-type-samples"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Gli esempi seguenti mostrano la visualizzazione della console e il contenuto JSON per i tre tipi di approvazione in Change Manager.

**Topics**
+ [Esempio di configurazione di approvazione per livello](#per-level-approvals)
+ [Esempio di configurazione di approvazione per riga](#per-line-approvals)
+ [Esempio di configurazione di approvazione combinata per livello e per riga](#combined-approval-levels)

## Esempio di configurazione di approvazione per livello
<a name="per-level-approvals"></a>

Nella configurazione del livello di approvazione per livello mostrata nell'immagine seguente, sono richieste tre approvazioni. Tali approvazioni possono provenire da qualsiasi combinazione di utenti, gruppi e ruoli IAM specificati come approvatori. Gli approvatori specificati includono due utenti IAM (John Stiles e Ana Carolina Silva), un gruppo di utenti che contiene tre membri (`GroupOfThree`) e un ruolo utente che rappresenta dieci utenti (`RoleOfTen`). 

Se tutti e tre gli utenti del gruppo `GroupOfThree` approvano la richiesta di modifica, questa viene approvata per quel livello. Non è necessario ricevere un'approvazione da ogni utente, gruppo o ruolo. Il numero minimo di approvazioni può provenire da qualsiasi combinazione degli approvatori specificati. Nelle operazioni Change Manager, consigliamo di utilizzare le approvazioni per livello.

![\[Livello di approvazione che mostra che sono necessarie tre approvazioni e quattro approvatori specificati.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/Add-approval-2.png)


L'esempio seguente illustra parte del codice YAML per questa configurazione. 

**Nota**  
Questa versione del codice YAML include un input aggiuntivo, `MinRequiredApprovals` (con la `M` iniziale maiuscola). Il valore di questo input indica quante approvazioni sono necessarie tra tutti i revisori disponibili. Inoltre, nota che il valore di `minRequiredApprovals` (con la `m` iniziale minuscola) per ogni approvatore nell'elenco `Approvers` è `0` (zero). Ciò indica che l'approvatore può contribuire alle approvazioni complessive ma non è tenuto a farlo.

```
schemaVersion: "0.3"
emergencyChange: false
autoApprovable: false
mainSteps:
  - name: ApproveAction1
    action: aws:approve
    timeoutSeconds: 604800
    inputs:
      Message: Please approve this change request
      MinRequiredApprovals: 3
      EnhancedApprovals:
        Approvers:
          - approver: John Stiles
            type: IamUser
            minRequiredApprovals: 0
          - approver: Ana Carolina Silva
            type: IamUser
            minRequiredApprovals: 0
          - approver: GroupOfThree
            type: IamGroup
            minRequiredApprovals: 0
          - approver: RoleOfTen
            type: IamRole
            minRequiredApprovals: 0
templateInformation: >
  #### What is the purpose of this change?
    //truncated
```

## Esempio di configurazione di approvazione per riga
<a name="per-line-approvals"></a>

Nella configurazione del livello di approvazione mostrata nell'immagine seguente, sono specificati quattro approvatori. Questi includono due utenti IAM (John Stiles e Ana Carolina Silva), un gruppo di utenti che contiene tre membri (`GroupOfThree`) e un ruolo utente che rappresenta dieci utenti (`RoleOfTen`). Le approvazioni per riga sono supportate per la compatibilità con le versioni precedenti ma non sono consigliate.

![\[Livello di approvazione che mostra che sono necessari quattro approvatori per riga.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/Add-approval-1.png)


Affinché la richiesta di modifica venga approvata in questa configurazione di approvazione per riga, deve essere approvata da tutte le linee di approvazione: John Stiles, Ana Carolina Silva, un membro del gruppo `GroupOfThree` e un membro del ruolo `RoleOfTen`.

L'esempio seguente illustra parte del codice YAML per questa configurazione.

**Nota**  
Osserva che il valore per ogni approvatore `minRequiredApprovals` è `1`. Ciò indica che è richiesta un'approvazione da parte di ogni approvatore.

```
schemaVersion: "0.3"
emergencyChange: false
autoApprovable: false
mainSteps:
  - name: ApproveAction1
    action: aws:approve
    timeoutSeconds: 10000
    inputs:
      Message: Please approve this change request
      EnhancedApprovals:
        Approvers:
          - approver: John Stiles
            type: IamUser
            minRequiredApprovals: 1
          - approver: Ana Carolina Silva
            type: IamUser
            minRequiredApprovals: 1
          - approver: GroupOfThree
            type: IamGroup
            minRequiredApprovals: 1
          - approver: RoleOfTen
            type: IamRole
            minRequiredApprovals: 1
executableRunBooks:
  - name: AWS-HelloWorld
    version: $DEFAULT
templateInformation: >
  #### What is the purpose of this change?
    //truncated
```

## Esempio di configurazione di approvazione combinata per livello e per riga
<a name="combined-approval-levels"></a>

Nella configurazione di approvazione combinata per livello e per riga mostrata nell'immagine seguente, vengono specificate tre approvazioni per il livello, ma quattro approvazioni per le approvazioni per elemento di riga. Qualunque tipo di approvazione richieda più approvazioni ha la precedenza, quindi per questa configurazione sono necessarie quattro approvazioni. L'approvazione combinata per livello e per riga non è consigliata.

![\[Livello di approvazione che mostra che sono necessarie tre approvazioni per il livello ma quattro a livello di riga.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/Add-approval-3.png)


```
schemaVersion: "0.3"
emergencyChange: false
autoApprovable: false
mainSteps:
  - name: ApproveAction1
    action: aws:approve
    timeoutSeconds: 604800
    inputs:
      Message: Please approve this change request
      MinRequiredApprovals: 3
      EnhancedApprovals:
        Approvers:
          - approver: John Stiles
            type: IamUser
            minRequiredApprovals: 1
          - approver: Ana Carolina Silva
            type: IamUser
            minRequiredApprovals: 1
          - approver: GroupOfThree
            type: IamGroup
            minRequiredApprovals: 1
          - approver: RoleOfTen
            type: IamRole
            minRequiredApprovals: 1
templateInformation: >
  #### What is the purpose of this change?
    //truncated
```

**Topics**
+ [Informazioni sulle approvazioni nei modelli di modifica](cm-approvals-templates.md)
+ [Creazione di modelli di modifica utilizzando Builder](change-templates-custom-builder.md)
+ [Creazione di modelli di modifica mediante Editor](change-templates-custom-editor.md)
+ [Creazione di modelli di modifica utilizzando strumenti da riga di comando](change-templates-tools.md)

# Creazione di modelli di modifica utilizzando Builder
<a name="change-templates-custom-builder"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Utilizzando il Builder per i modelli di modifica in Change Manager, uno strumento di AWS Systems Manager, è possibile configurare il flusso di lavoro del runbook definito nel modello di modifica senza dover utilizzare la sintassi JSON o YAML. Dopo aver specificato le opzioni, il sistema converte l'input nel formato YAML che Systems Manager può utilizzare per eseguire i flussi di lavoro del runbook.

**Per creare un modello di modifica utilizzando Builder**

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 **Change Manager**.

1. Scegli **Crea modello**.

1. Per **Nome**, immettere un nome per il modello che consenta di identificarne lo scopo, ad esempio **UpdateEC2LinuxAMI**.

1. Nella sezione **Change template details (Modifica i dettagli del modello)**, completa le operazioni descritte di seguito.
   + In **Description (Descrizione)**, fornire una breve spiegazione di come e quando deve essere utilizzato il modello di modifica che si sta creando. 

     Questa descrizione consente agli utenti che creano richieste di modifica di determinare se utilizzano il modello di modifica corretto. Aiuta coloro che esaminano le richieste di modifica a capire se la richiesta deve essere approvata.
   + In **Change template type (Modifica del tipo di modello)**, specificare se si sta creando un modello di modifica standard o un modello di modifica di emergenza.

     Un modello di modifica di emergenza viene utilizzato per le situazioni in cui è necessario apportare una modifica anche se le modifiche sono altrimenti bloccate da un evento nel calendario utilizzato da AWS Systems Manager Change Calendar. Le richieste di modifica create da un modello di modifica di emergenza devono essere comunque approvate dai responsabili approvatori designati, ma le modifiche richieste possono comunque essere eseguite anche quando il calendario è bloccato.
   + Per **Opzioni runbook**, specificare i runbook tra cui gli utenti possono scegliere durante la creazione di una richiesta di modifica. È possibile aggiungere un singolo runbook o più runbook. In alternativa, è possibile consentire ai richiedenti di specificare il runbook da utilizzare. In uno di questi casi, è possibile includere un solo runbook nella richiesta di modifica.
   + IN **Runbook**, selezionare i nomi dei runbook e le versioni dei runbook tra cui gli utenti possono scegliere per le proprie richieste di modifica. Indipendentemente dal numero di runbook aggiunti al modello di modifica, è possibile selezionarne solo uno per ogni richiesta di modifica.

     Non viene specificato un runbook se è stato scelto **È possibile utilizzare qualsiasi runbook** in precedenza.
**Suggerimento**  
Selezionare una versione di runbook e un runbook, quindi scegliere **Visualizzazione** per esaminare il contenuto del runbook nell'interfaccia Documenti di Systems Manager.

1. Nelle **Informazioni sul modello**, utilizzare Markdown per immettere informazioni per gli utenti che creano richieste di modifica da questo modello di modifica. Abbiamo fornito una serie di domande che puoi includere per gli utenti che creano richieste di modifica oppure puoi aggiungere altre informazioni e domande. 
**Nota**  
Markdown è un linguaggio di markup che consente di aggiungere descrizioni in stile wiki ai documenti e ai singoli passaggi all'interno del documento. Per ulteriori informazioni sull'utilizzo di Markdown, consulta [Utilizzo di Markdown in AWS](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html).

   Si consiglia di fornire agli utenti domande a cui rispondere sulle loro richieste di modifica per aiutare gli approvatori a decidere se concedere o meno ogni richiesta di modifica, ad esempio elencare tutti i passaggi manuali necessari per l'esecuzione nell'ambito della modifica e un piano di rollback. 
**Suggerimento**  
Passa da **Hide preview (Nascondi anteprima)** a **Show preview (Mostra anteprima)** e viceversa per vedere come appare il contenuto della descrizione durante la composizione.

1. Nella sezione **Requests (Richieste)**, procedere come segue:
   + (Facoltativo) Se si desidera consentire l'esecuzione automatica delle richieste di modifica create da questo modello di modifica, senza revisione da parte di alcun approvatore (ad eccezione degli eventi di blocco delle modifiche), selezionare **Abilitazione dell'approvazione automatica**.
**Nota**  
L'abilitazione delle approvazioni automatiche in un modello di modifica consente agli utenti di utilizzare l'*opzione* di bypassare i revisori. Possono comunque scegliere di specificare i revisori durante la creazione di una richiesta di modifica. Pertanto, è comunque necessario specificare le opzioni del revisore nel modello di modifica.
**Importante**  
Se si abilita l'approvazione automatica per un modello di modifica, gli utenti possono inviare richieste di modifica utilizzando tale modello che non richiedono la revisione da parte dei revisori prima dell'esecuzione (ad eccezione degli approvatori degli eventi di blocco delle modifiche). Se si desidera limitare a un particolare utente, gruppo o ruolo IAM l'invio di richieste di approvazione automatica, è possibile utilizzare una condizione in una policy IAM a tale scopo. Per ulteriori informazioni, consulta [Controllo dell'accesso ai flussi di lavoro del runbook di approvazione automatica](change-manager-auto-approval-access.md).
   + In **Numero di approvazioni richieste a questo livello**, scegli il numero di approvazioni che le richieste di modifica create da questo modello di modifica devono ricevere per questo livello.
   + Per aggiungere approvatori di primo livello obbligatori, scegliere **Aggiungi approvatore** e scegliere tra le seguenti opzioni:
     + **Approvatori specificati del modello**: scegliere uno o più utenti, gruppi o ruoli AWS Identity and Access Management (IAM) dall'account per approvare le richieste di modifica create da questo modello di modifica. Tutte le richieste di modifica create utilizzando questo modello devono essere esaminate e approvate da ciascun approvatore specificato.
     + **Richiedi approvatori specificati**: l'utente che effettua la richiesta di modifica specifica i revisori e può scegliere da un elenco di utenti nell'account. 

       Il numero immesso nella colonna **Campo obbligatorio**determina il numero di revisori che devono essere specificati da una richiesta di modifica che utilizza questo modello di modifica. 
**Importante**  
Prima del 23 gennaio 2023, la scheda **Builder** supportava solo la specifica delle approvazioni per riga. I nuovi modelli di modifica e i nuovi livelli che aggiungi ai modelli di modifica esistenti utilizzando la scheda **Builder** supportano solo le approvazioni per livello. Ti consigliamo di utilizzare solo le approvazioni per livello nelle operazioni Change Manager.  
Per ulteriori informazioni, consulta [Informazioni sulle approvazioni nei modelli di modifica](cm-approvals-templates.md).
   + Per **Argomento SNS da notificare agli approvatori** eseguire quanto segue:

     1. Scegli una delle seguenti opzioni per specificare l'argomento Amazon Simple Notification Service (Amazon SNS) nel tuo account da utilizzare per inviare notifiche agli approvatori che una richiesta di modifica è pronta per la loro revisione:
        + **Inserisci un SNS Amazon Resource Name (ARN)** – Per **argomento ARN** immetti l'ARN di un argomento Amazon SNS esistente. Questo argomento può essere incluso in qualsiasi account dell'organizzazione.
        + **Selezionare un argomento SNS esistente**— Per **Argomento notifica destinazione**, seleziona l'ARN di un argomento Amazon SNS esistente nel tuo Account AWS. (Questa opzione non è disponibile se non hai ancora creato alcun argomento di Amazon SNS nel tuo account corrente Account AWS .) Regione AWS
        + **Specificare l'argomento SNS quando viene creata la richiesta di modifica**: l'utente che crea una richiesta di modifica può specificare l'argomento Amazon SNS da utilizzare per le notifiche.
**Nota**  
L'argomento Amazon SNS selezionato deve essere configurato in modo da specificare le notifiche inviate e gli abbonati a cui vengono inviati. La sua policy di accesso deve inoltre concedere autorizzazioni a Systems Manager in modo che Change Manager può inviare notifiche. Per informazioni, consulta [Configurazione degli argomenti Amazon SNS per le notifiche Change Manager](change-manager-sns-setup.md). 

     1. Scegliere **Add notification (Aggiungi notifica)**.

1. (Facoltativo) Per aggiungere un livello aggiuntivo di approvatori, scegliere **Aggiungi livello di approvazione** e scegliere tra approvatori specificati nel modello e approvatori specificati dalla richiesta per questo livello. Scegliere quindi un argomento SNS per notificare questo livello di approvatori.

   Dopo che tutte le approvazioni sono state ricevute dagli approvatori di primo livello, gli approvatori di secondo livello vengono notificati e così via.

   È possibile aggiungere un massimo di cinque livelli di approvatori in ciascun modello. È possibile, ad esempio, richiedere l'approvazione da parte degli utenti in ruoli tecnici per il primo livello, quindi l'approvazione manageriale per il secondo livello.

1. Nella sezione **Monitoraggio**, per un **CloudWatch allarme da monitorare**, inserisci il nome di un CloudWatch allarme Amazon nell'account corrente per monitorare l'avanzamento dei flussi di lavoro di runbook basati su questo modello. 
**Suggerimento**  
Per creare un nuovo allarme o per rivedere le impostazioni di un allarme che desideri specificare, scegli **Apri la CloudWatch console Amazon**. Per informazioni sull'utilizzo degli CloudWatch allarmi, consulta [Using CloudWatch Alarms](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) nella *Amazon CloudWatch User* Guide.

1. Nella sezione **Notifications** (Notifiche) effettua le seguenti operazioni:

   1. Scegli una delle seguenti opzioni per specificare l'argomento Amazon SNS nel tuo account da utilizzare per l'invio di notifiche sulle richieste di modifica create utilizzando questo modello di modifica: 
      + **Inserisci un SNS Amazon Resource Name (ARN)** – Per **argomento ARN** immetti l'ARN di un argomento Amazon SNS esistente. Questo argomento può essere incluso in qualsiasi account dell'organizzazione.
      + **Selezionare un argomento SNS esistente**— Per **Argomento notifica destinazione**, seleziona l'ARN di un argomento Amazon SNS esistente nel tuo Account AWS. (Questa opzione non è disponibile se non hai ancora creato alcun argomento di Amazon SNS nel tuo account corrente Account AWS .) Regione AWS
**Nota**  
L'argomento Amazon SNS selezionato deve essere configurato in modo da specificare le notifiche inviate e gli abbonati a cui vengono inviati. La sua policy di accesso deve inoltre concedere autorizzazioni a Systems Manager in modo che Change Manager può inviare notifiche. Per informazioni, consulta [Configurazione degli argomenti Amazon SNS per le notifiche Change Manager](change-manager-sns-setup.md). 

   1. Scegliere **Add notification (Aggiungi notifica)**.

1. (Facoltativo) Nella sezione **Tag**, applica una o più name/value coppie di chiavi di tag al modello di modifica.

   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 applicare un tag a un modello di modifica per identificare il tipo di modifica apportato e l'ambiente in cui viene eseguita. In questo caso, puoi specificare le seguenti name/value coppie di chiavi:
   + `Key=TaskType,Value=InstanceRepair`
   + `Key=Environment,Value=Production`

1. Scegliere **Salva e anteprima**.

1. Rivedere i dettagli del modello di modifica che si sta creando.

   Se si desidera apportare modifiche al modello di modifica prima di inviarlo per la revisione, segliere **Operazioni, Modifica**. 

   Se il contenuto del modello di modifica è quello desiderato, selezionare **Invia per una revisione**. Gli utenti dell'organizzazione o dell'account che sono stati specificati come revisori modello nella scheda **Impostazioni** in Change Manager ricevono una notifica che li informa che un nuovo modello di modifica è in attesa della revisione. 

   Se è stato specificato un argomento Amazon SNS per i modelli di modifica, le notifiche vengono inviate quando il modello di modifica viene rifiutato o approvato. Se non ricevi notifiche relative a questo modello di modifica, puoi tornare a Change Manager più tardi al fine di verificare il suo stato.

# Creazione di modelli di modifica mediante Editor
<a name="change-templates-custom-editor"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Utilizzare i passaggi descritti in questo argomento per configurare un modello di modifica in Change Manager, uno strumento di AWS Systems Manager, immettendo JSON o YAML invece di utilizzare i comandi della console.

**Per creare un modello di modifica utilizzando Editor**

1. Nel pannello di navigazione, scegli **Change Manager**.

1. Scegli **Crea modello**.

1. In **Nome**, immettere un nome per il modello che consenta di identificarne lo scopo, ad esempio **RestartEC2LinuxInstance**.

1. Sopra **Modifica del modello di modifica**, scegliere **Editor**.

1. In **Editor documenti**, scegliere **Modifica**, quindi immettere il contenuto JSON o YAML per il modello di modifica. 

   Di seguito è riportato un esempio di :
**Nota**  
Il parametro `minRequiredApprovals` viene utilizzato per specificare il numero di revisori a un livello specificato che devono approvare una richiesta di modifica creata utilizzando questo modello.  
In questo esempio vengono illustrati due livelli di approvazione. È possibile specificare fino a cinque livelli di approvazione, ma è necessario un solo livello.   
Nel primo livello, l'utente specifico "John-Doe" deve approvare ogni richiesta di modifica. Dopodiché, tre membri del ruolo IAM `Admin` devono approvare la richiesta di modifica.  
Per ulteriori informazioni sulle approvazioni nei modelli di modifica, consulta la pagina [Informazioni sulle approvazioni nei modelli di modifica](cm-approvals-templates.md).

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

   ```
   description: >-
     This change template demonstrates the feature set available for creating
     change templates for Change Manager. This template starts a Runbook workflow
     for the Automation runbook called AWS-HelloWorld.
   templateInformation: >
     ### Document Name: HelloWorldChangeTemplate
   
     ## What does this document do?
   
     This change template demonstrates the feature set available for creating
     change templates for Change Manager. This template starts a Runbook workflow
     for the Automation runbook called AWS-HelloWorld.
   
     ## Input Parameters
   
     * ApproverSnsTopicArn: (Required) Amazon Simple Notification Service ARN for
     approvers.
   
     * Approver: (Required) The name of the approver to send this request to.
   
     * ApproverType: (Required) The type of reviewer.
       * Allowed Values: IamUser, IamGroup, IamRole, SSOGroup, SSOUser
   
     ## Output Parameters
   
     This document has no outputs
   schemaVersion: '0.3'
   parameters:
     ApproverSnsTopicArn:
       type: String
       description: Amazon Simple Notification Service ARN for approvers.
     Approver:
       type: String
       description: IAM approver
     ApproverType:
       type: String
       description: >-
         Approver types for the request. Allowed values include IamUser, IamGroup,
         IamRole, SSOGroup, and SSOUser.
   executableRunBooks:
     - name: AWS-HelloWorld
       version: '1'
   emergencyChange: false
   autoApprovable: false
   mainSteps:
     - name: ApproveAction1
       action: 'aws:approve'
       timeoutSeconds: 3600
       inputs:
         Message: >-
           A sample change request has been submitted for your review in Change
           Manager. You can approve or reject this request.
         EnhancedApprovals:
           NotificationArn: '{{ ApproverSnsTopicArn }}'
           Approvers:
             - approver: John-Doe
               type: IamUser
               minRequiredApprovals: 1
     - name: ApproveAction2
       action: 'aws:approve'
       timeoutSeconds: 3600
       inputs:
         Message: >-
           A sample change request has been submitted for your review in Change
           Manager. You can approve or reject this request.
         EnhancedApprovals:
           NotificationArn: '{{ ApproverSnsTopicArn }}'
           Approvers:
             - approver: Admin
               type: IamRole
               minRequiredApprovals: 3
   ```

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

   ```
   {
      "description": "This change template demonstrates the feature set available for creating
     change templates for Change Manager. This template starts a Runbook workflow
     for the Automation runbook called AWS-HelloWorld",
      "templateInformation": "### Document Name: HelloWorldChangeTemplate\n\n
       ## What does this document do?\n
       This change template demonstrates the feature set available for creating change templates for Change Manager. 
       This template starts a Runbook workflow for the Automation runbook called AWS-HelloWorld.\n\n
       ## Input Parameters\n* ApproverSnsTopicArn: (Required) Amazon Simple Notification Service ARN for approvers.\n
       * Approver: (Required) The name of the approver to send this request to.\n
       * ApproverType: (Required) The type of reviewer.  * Allowed Values: IamUser, IamGroup, IamRole, SSOGroup, SSOUser\n\n
       ## Output Parameters\nThis document has no outputs\n",
      "schemaVersion": "0.3",
      "parameters": {
         "ApproverSnsTopicArn": {
            "type": "String",
            "description": "Amazon Simple Notification Service ARN for approvers."
         },
         "Approver": {
            "type": "String",
            "description": "IAM approver"
         },
         "ApproverType": {
            "type": "String",
            "description": "Approver types for the request. Allowed values include IamUser, IamGroup, IamRole, SSOGroup, and SSOUser."
         }
      },
      "executableRunBooks": [
         {
            "name": "AWS-HelloWorld",
            "version": "1"
         }
      ],
      "emergencyChange": false,
      "autoApprovable": false,
      "mainSteps": [
         {
            "name": "ApproveAction1",
            "action": "aws:approve",
            "timeoutSeconds": 3600,
            "inputs": {
               "Message": "A sample change request has been submitted for your review in Change Manager. You can approve or reject this request.",
               "EnhancedApprovals": {
                  "NotificationArn": "{{ ApproverSnsTopicArn }}",
                  "Approvers": [
                     {
                        "approver": "John-Doe",
                        "type": "IamUser",
                        "minRequiredApprovals": 1
                     }
                  ]
               }
            }
         },
           {
            "name": "ApproveAction2",
            "action": "aws:approve",
            "timeoutSeconds": 3600,
            "inputs": {
               "Message": "A sample change request has been submitted for your review in Change Manager. You can approve or reject this request.",
               "EnhancedApprovals": {
                  "NotificationArn": "{{ ApproverSnsTopicArn }}",
                  "Approvers": [
                     {
                        "approver": "Admin",
                        "type": "IamRole",
                        "minRequiredApprovals": 3                  
                     }
                  ]
               }
            }
         }
      ]
   }
   ```

------

1. Scegliere **Salva e anteprima**.

1. Rivedere i dettagli del modello di modifica che si sta creando.

   Se si desidera apportare modifiche al modello di modifica prima di inviarlo per la revisione, segliere **Operazioni, Modifica**. 

   Se il contenuto del modello di modifica è quello desiderato, selezionare **Invia per una revisione**. Gli utenti dell'organizzazione o dell'account che sono stati specificati come revisori modello nella scheda **Impostazioni** in Change Manager ricevono una notifica che li informa che un nuovo modello di modifica è in attesa della revisione. 

   Se è stato specificato un argomento Amazon Simple Notification Service (Amazon SNS), le notifiche vengono inviate quando il modello di modifica viene rifiutato o approvato. Se non ricevi notifiche relative a questo modello di modifica, puoi tornare a Change Manager più tardi per verificare il suo stato.

# Creazione di modelli di modifica utilizzando strumenti da riga di comando
<a name="change-templates-tools"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Le seguenti procedure descrivono come utilizzare AWS Command Line Interface (AWS CLI) (su Linux oWindows Server) o AWS Tools for Windows PowerShell creare una richiesta di modifica inChange Manager, uno strumento in AWS Systems Manager. macOS 

**Per creare un modello di modifica**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Sul proprio computer locale creare un file JSON denominato ad esempio `MyChangeTemplate.json`, quindi incollare il contenuto del modello di modifica.
**Nota**  
I modelli di modifica utilizzano una versione dello schema 0.3 che non include lo stesso supporto dei runbook Automation.

   Di seguito è riportato un esempio di :
**Nota**  
Il parametro `minRequiredApprovals` viene utilizzato per specificare il numero di revisori a un livello specificato che devono approvare una richiesta di modifica creata utilizzando questo modello.  
In questo esempio vengono illustrati due livelli di approvazione. È possibile specificare fino a cinque livelli di approvazione, ma è necessario un solo livello.   
Nel primo livello, l'utente specifico "John-Doe" deve approvare ogni richiesta di modifica. Dopodiché, tre membri del ruolo IAM `Admin` devono approvare la richiesta di modifica.  
Per ulteriori informazioni sulle approvazioni nei modelli di modifica, consulta la pagina [Informazioni sulle approvazioni nei modelli di modifica](cm-approvals-templates.md).

   ```
   {
      "description": "This change template demonstrates the feature set available for creating
     change templates for Change Manager. This template starts a Runbook workflow
     for the Automation runbook called AWS-HelloWorld",
      "templateInformation": "### Document Name: HelloWorldChangeTemplate\n\n
       ## What does this document do?\n
       This change template demonstrates the feature set available for creating change templates for Change Manager. 
       This template starts a Runbook workflow for the Automation runbook called AWS-HelloWorld.\n\n
       ## Input Parameters\n* ApproverSnsTopicArn: (Required) Amazon Simple Notification Service ARN for approvers.\n
       * Approver: (Required) The name of the approver to send this request to.\n
       * ApproverType: (Required) The type of reviewer.  * Allowed Values: IamUser, IamGroup, IamRole, SSOGroup, SSOUser\n\n
       ## Output Parameters\nThis document has no outputs\n",
      "schemaVersion": "0.3",
      "parameters": {
         "ApproverSnsTopicArn": {
            "type": "String",
            "description": "Amazon Simple Notification Service ARN for approvers."
         },
         "Approver": {
            "type": "String",
            "description": "IAM approver"
         },
         "ApproverType": {
            "type": "String",
            "description": "Approver types for the request. Allowed values include IamUser, IamGroup, IamRole, SSOGroup, and SSOUser."
         }
      },
      "executableRunBooks": [
         {
            "name": "AWS-HelloWorld",
            "version": "1"
         }
      ],
      "emergencyChange": false,
      "autoApprovable": false,
      "mainSteps": [
         {
            "name": "ApproveAction1",
            "action": "aws:approve",
            "timeoutSeconds": 3600,
            "inputs": {
               "Message": "A sample change request has been submitted for your review in Change Manager. You can approve or reject this request.",
               "EnhancedApprovals": {
                  "NotificationArn": "{{ ApproverSnsTopicArn }}",
                  "Approvers": [
                     {
                        "approver": "John-Doe",
                        "type": "IamUser",
                        "minRequiredApprovals": 1
                     }
                  ]
               }
            }
         },
           {
            "name": "ApproveAction2",
            "action": "aws:approve",
            "timeoutSeconds": 3600,
            "inputs": {
               "Message": "A sample change request has been submitted for your review in Change Manager. You can approve or reject this request.",
               "EnhancedApprovals": {
                  "NotificationArn": "{{ ApproverSnsTopicArn }}",
                  "Approvers": [
                     {
                        "approver": "Admin",
                        "type": "IamRole",
                        "minRequiredApprovals": 3                  
                     }
                  ]
               }
            }
         }
      ]
   }
   ```

1. Esegui il comando seguente per creare il modello di modifica. 

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

   ```
   aws ssm create-document \
       --name MyChangeTemplate \
       --document-format JSON \
       --document-type Automation.ChangeTemplate \
       --content file://MyChangeTemplate.json \
       --tags Key=tag-key,Value=tag-value
   ```

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

   ```
   aws ssm create-document ^
       --name MyChangeTemplate ^
       --document-format JSON ^
       --document-type Automation.ChangeTemplate ^
       --content file://MyChangeTemplate.json ^
       --tags Key=tag-key,Value=tag-value
   ```

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

   ```
   $json = Get-Content -Path "C:\path\to\file\MyChangeTemplate.json" | Out-String
   New-SSMDocument `
       -Content $json `
       -Name "MyChangeTemplate" `
       -DocumentType "Automation.ChangeTemplate" `
       -Tags "Key=tag-key,Value=tag-value"
   ```

------

   Per informazioni sulle altre opzioni che è possibile specificare, consulta [https://docs.aws.amazon.com/cli/latest/reference/ssm/create-document.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/create-document.html).

   Il sistema restituisce informazioni simili alle seguenti.

   ```
   {
      "DocumentDescription":{
         "CreatedDate":1.585061751738E9,
         "DefaultVersion":"1",
         "Description":"Use this template to update an EC2 Linux AMI. Requires one
         approver specified in the template and an approver specified in the request.",
         "DocumentFormat":"JSON",
         "DocumentType":"Automation",
         "DocumentVersion":"1",
         "Hash":"0d3d879b3ca072e03c12638d0255ebd004d2c65bd318f8354fcde820dEXAMPLE",
         "HashType":"Sha256",
         "LatestVersion":"1",
         "Name":"MyChangeTemplate",
         "Owner":"123456789012",
         "Parameters":[
            {
               "DefaultValue":"",
               "Description":"Level one approvers",
               "Name":"LevelOneApprovers",
               "Type":"String"
            },
            {
               "DefaultValue":"",
               "Description":"Level one approver type",
               "Name":"LevelOneApproverType",
               "Type":"String"
            },
      "cloudWatchMonitors": {
         "monitors": [
            "my-cloudwatch-alarm"
         ]
      }
         ],
         "PlatformTypes":[
            "Windows",
            "Linux"
         ],
         "SchemaVersion":"0.3",
         "Status":"Creating",
         "Tags":[
   
         ]
      }
   }
   ```

Gli utenti dell'organizzazione o dell'account che sono stati specificati come revisori modello nella scheda **Impostazioni**Scheda in Change Managervengono notificati che un nuovo modello di modifica è in attesa della revisione. 

Se è stato specificato un argomento Amazon Simple Notification Service (Amazon SNS), le notifiche vengono inviate quando il modello di modifica viene rifiutato o approvato. Se non ricevi notifiche relative a questo modello di modifica, puoi tornare a Change Manager più tardi per verificare il suo stato.

# Revisione e approvazione o rifiuto di modelli di modifica
<a name="change-templates-review"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Se sei stato individuato come revisore per i modelli di modifica in Change Manager, uno strumento di AWS Systems Manager, riceverai una notifica, quando un nuovo modello di modifica o una nuova versione di un modello di modifica è in attesa di revisione. Le notifiche vengono inviate da un argomento Amazon Simple Notification Service (Amazon SNS).

**Nota**  
Questa funzionalità dipende dal fatto che il tuo account sia stato configurato per utilizzare un argomento Amazon SNS per inviare notifiche di revisione del modello di modifica. Per informazioni sulla specifica di un argomento di notifica del revisore modello, consulta [Processo 1: configurazione Change Manager per la gestione delle identità utente e revisori dei modelli](change-manager-account-setup.md#cm-configure-account-task-1).

Per rivedere il modello di modifica, segui il link nella notifica, accedi a e segui i passaggi di questa procedura. Console di gestione AWS

**Per rivedere e approvare o rifiutare un modello di modifica**

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 **Change Manager**.

1. Nella sezione **Modelli di modifica** in fondo alla scheda **Panoramica**, scegliere il numero in **Revisione in sospeso**.

1. Nell'elenco **Modelli di modifica**, individuare e scegliere il nome del modello di modifica da rivedere.

1. Nella pagina di riepilogo esaminare il contenuto proposto del modello di modifica ed effettuare una delle seguenti operazioni:
   + Per approvare il modello di modifica, che consente di utilizzarlo nelle richieste di modifica, scegli **Approve (Approva)**.
   + Per rifiutare il modello di modifica, che ne impedisce l'utilizzo nelle richieste di modifica, selezionare **Reject (Rifiuta)**.

# Eliminazione di modelli di modifica
<a name="change-templates-delete"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [Modifica della AWS Systems ManagerChange Manager disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Qui viene descritto come eliminare i modelli creati in Change Manager, uno strumento di Systems Manager. Se stai usando Change Manager per un'organizzazione, questa procedura verrà eseguita nell'account amministratore delegato.

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, scegliere **Change Manager**.

1. Scegliere la scheda **Templates (Modelli)**.

1. Scegli il nome del modello da eliminare.

1. Scegli **Actions, Delete template (Operazioni, Elimina modello)**.

1. Nella finestra di dialogo di conferma inserisci la parola **DELETE** e quindi scegli **Delete (Elimina)**.

# Utilizzo delle richieste di modifica
<a name="change-requests"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [Modifica della AWS Systems ManagerChange Manager disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Una richiesta di modifica è una richiesta di esecuzione Change Manager di un runbook di automazione che aggiorna una o più risorse negli ambienti aziendali AWS o locali. Una richiesta di modifica viene creata utilizzando un modello di modifica.

Quando crei una richiesta di modifica in Change Manager, uno strumento di AWS Systems Manager, uno o più revisori dell'organizzazione o dell'account devono esaminare e approvare la richiesta. Senza le approvazioni richieste, il flusso di lavoro del runbook, che apporta le modifiche richieste, non può essere eseguito.

**Topics**
+ [Creazione di richieste di modifica](change-requests-create.md)
+ [Revisione e approvazione o rifiuto delle richieste di modifica](change-requests-review.md)

# Creazione di richieste di modifica
<a name="change-requests-create"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Quando crei una richiesta di modifica in Change Manager, uno strumento di AWS Systems Manager, il modello di modifica selezionato esegue in genere le seguenti operazioni:
+ Designa gli approvatori per la richiesta di modifica o specifica il numero di approvazioni necessarie
+ Specifica l'argomento Amazon Simple Notification Service (Amazon SNS) da utilizzare per notificare agli approvatori la richiesta di modifica
+ Specifica un CloudWatch allarme Amazon per monitorare il flusso di lavoro del runbook per la richiesta di modifica
+ Identificare i runbook Automation tra cui è possibile scegliere per apportare la modifica richiesta

In alcuni casi, è possibile configurare un modello di modifica in modo da specificare il runbook Automation da utilizzare e specificare chi deve esaminare e approvare la richiesta.

**Importante**  
Se utilizzi Change Manager in un'organizzazione, si consiglia di apportare sempre modifiche dall'account amministratore delegato. Sebbene sia possibile apportare modifiche da altri account dell'organizzazione, tali modifiche non verranno segnalate o visualizzate dall'account amministratore delegato.

**Topics**
+ [Informazioni sulle approvazioni delle richieste di modifica](#cm-approvals-requests)
+ [Creazione di richieste di modifica (console)](#change-requests-create-console)
+ [Creazione di richieste di modifica (AWS CLI)](#change-requests-create-cli)

## Informazioni sulle approvazioni delle richieste di modifica
<a name="cm-approvals-requests"></a>

A seconda dei requisiti specificati in un modello di modifica, le richieste di modifica create da esso possono richiedere l'approvazione di un massimo di cinque *livelli* prima che possa verificarsi il flusso di lavoro del runbook per la richiesta. Per ognuno di questi livelli, il creatore del modello può specificare fino a cinque potenziali *approvatori*. Un approvatore non è limitato a un singolo utente. Un approvatore in questo senso può anche essere un gruppo IAM o un ruolo IAM. Per i gruppi IAM e i ruoli IAM, uno o più utenti appartenenti al gruppo o al ruolo possono fornire le approvazioni necessarie per ricevere il numero totale di approvazioni necessarie per una richiesta di modifica. I creatori di modelli possono anche specificare più approvatori di quelli richiesti dal modello di modifica.

**Flussi di lavoro di approvazione originali e approvazioni aggiornate and/or**  
Se si utilizzano i modelli di modifica creati prima del 23 gennaio 2023, è necessario ricevere un'approvazione da ogni approvatore specificato affinché la richiesta di modifica venga approvata a quel livello. Ad esempio, nell'impostazione del livello di approvazione mostrata nell'immagine seguente, vengono specificati quattro approvatori. Gli approvatori specificati includono due utenti (John Stiles e Ana Carolina Silva), un gruppo di utenti che contiene tre membri (GroupOfThree) e un ruolo utente che rappresenta dieci utenti (). RoleOfTen

![\[Livello di approvazione che mostra che sono necessari quattro approvatori per riga.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/Add-approval-1.png)


Affinché la richiesta di modifica venga approvata a questo livello, deve essere approvata da John Stiles, Ana Carolina Silva, un membro del gruppo `GroupOfThree` e un membro del ruolo `RoleOfTen`.

Se si utilizzano i modelli di modifica creati a partire dal 23 gennaio 2023, i creatori di modelli possono specificare un numero totale complessivo di approvazioni richieste per ciascun livello di approvazione. Tali approvazioni possono provenire da qualsiasi combinazione di utenti, gruppi e ruoli specificati come approvatori. Un modello di modifica può richiedere una singola approvazione per un livello ma specificare, ad esempio, due singoli utenti, due gruppi e un ruolo come potenziali approvatori.

Ad esempio, nell'area del livello di approvazione mostrata nell'immagine seguente, sono necessarie tre approvazioni. Gli approvatori specificati nel modello includono due utenti (John Stiles e Ana Carolina Silva), un gruppo di utenti che contiene tre membri (`GroupOfThree`) e un ruolo utente che rappresenta dieci utenti (`RoleOfTen`).

![\[Livello di approvazione che mostra che sono necessarie tre approvazioni e quattro approvatori specificati.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/Add-approval-2.png)


Se tutti e tre gli utenti del gruppo `GroupOfThree` approvano la richiesta di modifica, questa viene approvata per quel livello. Non è necessario ricevere un'approvazione da ogni utente, gruppo o ruolo. Il numero minimo di approvazioni può provenire da qualsiasi combinazione di potenziali approvatori.

Quando viene creata la richiesta di modifica, le notifiche vengono inviate agli abbonati dell'argomento Amazon SNS specificato per le notifiche di approvazione a quel livello. L'autore del modello di modifica potrebbe aver specificato l'argomento di notifica da utilizzare o aver consentito all'utente di specificarne uno.

Dopo aver ricevuto il numero minimo di approvazioni richieste a un livello, le notifiche vengono inviate agli approvatori abbonati all'argomento Amazon SNS per il livello successivo e così via.

Indipendentemente dal numero di livelli di approvazione e approvatori specificati, è necessario un solo rifiuto a una richiesta di modifica per evitare che il flusso di lavoro del runbook relativo a quella richiesta si verifichi.

## Creazione di richieste di modifica (console)
<a name="change-requests-create-console"></a>

Nella procedura seguente viene descritto come annullare la registrazione di un computer ibrido utilizzando la console Systems Manager.

**Per creare una richiesta di modifica (console)**

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

1. Nel pannello di navigazione, scegli **Change Manager**.

1. Scegliere **Creazione della richiesta**.

1. Cercare e selezionare un modello di modifica che si desidera utilizzare per questa richiesta di modifica.

1. Scegli **Next (Successivo)**.

1. Per **Nome**, immettere un nome per la richiesta di modifica che consenta di identificarne lo scopo, ad esempio **UpdateEC2LinuxAMI-us-east-2**.

1. Per **Runbook**, selezionare il runbook che si desidera utilizzare per apportare le modifiche richieste.
**Nota**  
Se l'opzione per selezionare un runbook non è disponibile, l'autore del modello di modifica ha specificato quale runbook deve essere utilizzato.

1. Per **Informazioni sulla richiesta di modifica**, utilizzare Markdown al fine di fornire ulteriori informazioni sulla richiesta di modifica per aiutare i revisori a decidere se approvare o rifiutare la richiesta di modifica. L'autore del modello che stai utilizzando potrebbe aver fornito istruzioni o domande a cui rispondere.
**Nota**  
I documenti di automazione supportano l'uso di Markdown, un linguaggio di markup, che consente di aggiungere descrizioni in stile wiki ai documenti e ai singoli passaggi all'interno del documento. Per ulteriori informazioni sull'utilizzo di Markdown, consulta [Utilizzo di Markdown in AWS](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html).

1. Nell'**Ora di inizio workflow** scegliere una delle seguenti opzioni:
   + **Eseguire l'operazione a un'ora pianificata**— Per **Orario di inizio richiesto**, immettere la data e l'ora proposte per l'esecuzione del flusso di lavoro del runbook per questa richiesta. Per **Ora di fine stimata** immettere la data e l'ora in cui si prevede di completare il flusso di lavoro del runbook. (Questa volta è una stima che stai fornendo solo ai revisori.)
**Suggerimento**  
Scegli **Visualizza calendario delle modifiche** per verificare eventuali eventi di blocco per il periodo specificato.
   + **Eseguire l'operazione il prima possibile dopo l'approvazione**: se la richiesta di modifica viene approvata, il flusso di lavoro del runbook viene eseguito non appena è presente un periodo non limitato in cui è possibile apportare modifiche.

1. Nella sezione **Requests (Richieste)**, procedere come segue:

   1. Se si visualizzano opzioni per il **tip approvazione**, scegliere una delle seguenti opzioni:
      + **Approvazione automatica**: il modello di modifica selezionato è configurato per consentire l'esecuzione automatica delle richieste di modifica senza revisione da parte di alcun approvatore. Continua alla fase 11.
**Nota**  
Le autorizzazioni specificate nelle policy IAM che regolano l'utilizzo di Systems Manager non devono limitare l'invio di richieste di modifica di approvazione automatica per consentirne l'esecuzione automatica.
      + **Specificare gli approvatori**: è necessario aggiungere uno o più utenti, gruppi o ruoli IAM per esaminare e approvare questa richiesta di modifica.
**Nota**  
È possibile scegliere di specificare i revisori anche se le autorizzazioni specificate nei criteri IAM che regolano l'utilizzo di Systems Manager consentono di eseguire richieste di modifica dell'approvazione automatica.

   1. Scegli **Aggiungi approvatore**, quindi seleziona uno o più utenti, gruppi o ruoli AWS Identity and Access Management (IAM) dagli elenchi dei revisori disponibili.
**Nota**  
È possibile che siano già stati specificati uno o più approvatori. Ciò significa che gli approvatori obbligatori sono già specificati nel modello di modifica selezionato. Non è possibile rimuovere questi approvatori dalla richiesta. Se il pulsante **Aggiungi approvatore** non è disponibile, il modello scelto non consente l'aggiunta di revisori aggiuntivi alle richieste.

      Per informazioni sull'approvazione delle richieste di modifica, consulta la pagina [Informazioni sulle approvazioni delle richieste di modifica](#cm-approvals-requests).

   1. In **Argomento SNS per notificare agli approvatori**, scegli una delle seguenti opzioni per specificare l'argomento Amazon SNS nel tuo account da utilizzare per inviare notifiche agli approvatori che stai aggiungendo a questa richiesta di modifica.
**Nota**  
Se l'opzione per specificare un argomento Amazon SNS non è disponibile, il modello di modifica selezionato specifica già l'argomento SNS di Amazon da utilizzare.
      + **Inserisci un SNS Amazon Resource Name (ARN)** – Per **argomento ARN** immetti l'ARN di un argomento Amazon SNS esistente. Questo argomento può essere incluso in qualsiasi account dell'organizzazione.
      + **Selezionare un argomento SNS esistente**— Per l'**Argomento notifica destinazione**, seleziona l'ARN di un argomento Amazon SNS esistente nel tuo account corrente. (Questa opzione non è disponibile se non hai ancora creato alcun argomento di Amazon SNS nella versione attuale Account AWS ). Regione AWS
**Nota**  
L'argomento Amazon SNS selezionato deve essere configurato in modo da specificare le notifiche inviate e gli abbonati a cui vengono inviati. La sua policy di accesso deve inoltre concedere autorizzazioni a Systems Manager in modo che Change Manager può inviare notifiche. Per informazioni, consulta [Configurazione degli argomenti Amazon SNS per le notifiche Change Manager](change-manager-sns-setup.md). 

   1. Scegliere **Add notification (Aggiungi notifica)**.

1. Scegli **Next (Successivo)**.

1. Per il **Ruolo IAM** seleziona un ruolo IAM *nel tuo account corrente* che dispone delle autorizzazioni necessarie per eseguire i runbook specificati per questa richiesta di modifica.

   Questo ruolo viene anche definito ruolo di servizio, o assumere ruolo, per l'automazione. Per ulteriori informazioni su questo ruolo, consulta [Configurazione del servizio di automazione](automation-setup.md).

1. Nella **Posizione di implementazione,** scegli una delle seguenti opzioni:
**Nota**  
Se lo utilizzi Change Manager con un Account AWS solo utente e non con un'organizzazione configurata in AWS Organizations, non è necessario specificare una posizione di distribuzione.
   + **Applica modifiche a questo account**: il flusso di lavoro del runbook viene eseguito solo nell'account corrente. Per un'organizzazione, questo è l'account amministratore delegato.
   + **Applica la modifica a più unità organizzative (OUs)**: procedi come segue: 

     1. Per **Account e unità organizzative (OUs)**, inserisci l'ID di un account membro nella tua organizzazione, nel formato**123456789012**, o l'ID di un'unità organizzativa, nel formato**o-o96EXAMPLE**. 

     1. (Facoltativo) Per **Nome del ruolo di esecuzione**, immettere il nome del ruolo IAM *nell'account di destinazione*o unità organizzativa che dispone delle autorizzazioni necessarie per eseguire i runbook specificati per questa richiesta di modifica. Tutti gli account in qualsiasi unità organizzativa specificata devono utilizzare lo stesso nome per questo ruolo.

     1. (Facoltativo) Scegli **Aggiungi un'altra posizione di destinazione** per ogni account aggiuntivo o unità organizzativa che si desidera specificare e ripetere i passaggi a e b. 

     1. Per **Target Regione AWS**, seleziona la regione in cui apportare la modifica, ad esempio `Ohio (us-east-2)` per la regione Stati Uniti orientali (Ohio).

     1. Espandee **Rate control (Controllo velocità)**. 

        Per **Concorrenza**, immettere un numero, quindi dall'elenco selezionare se rappresenta il numero o la percentuale di account in cui è possibile eseguire contemporaneamente il flusso di lavoro del runbook. 

        Per **Soglia errore**, immettere un numero, quindi dall'elenco selezionare se rappresenta il numero o la percentuale di account in cui il flusso di lavoro del runbook può avere esito negativo prima che l'operazione venga arrestata. 

1. In **Obiettivi di implementazione**, procedi come indicato di seguito:

   1. Seleziona una delle seguenti opzioni:
      + **Singola risorsa**— La modifica deve essere apportata per una sola risorsa. Ad esempio, un singolo nodo o una singola Amazon Machine Image (AMI), a seconda dell'operazione definita nei runbook per questa richiesta di modifica.
      + **Più risorse**— Per **Parametro**, selezionare uno dei parametri disponibili dai runbook per questa richiesta di modifica. Questa selezione riflette il tipo di risorsa da aggiornare.

        Ad esempio, se il runbook per questa richiesta di modifica è `AWS-RetartEC2Instance` è possibile scegliere `InstanceId`, quindi definire le istanze da aggiornare selezionando una delle seguenti opzioni:
        + **Specificare tag**: immettere una coppia chiave-valore con cui tutte le risorse da aggiornare sono contrassegnate.
        + **Scelta di un gruppo di risorse**— Scegliere il nome del gruppo di risorse a cui appartengono tutte le risorse da aggiornare.
        + **Specificare i valori dei parametri**— Identificare le risorse da aggiornare nella sezione **Parametri Runbook**.
        + **Approvazioni come target** – apporta la modifica su tutti i nodi gestiti nei percorsi di destinazione.

   1. Se hai scelto **Più risorse**, espandi **Rate control (Controllo velocità)**. 

      Per **Concorrenza**, immettere un numero, quindi dall'elenco selezionare se rappresenta il numero o la percentuale di destinazioni che il flusso di lavoro del runbook può aggiornare contemporaneamente. 

      Per **Soglia errore**, immettere un numero, quindi dall'elenco selezionare se rappresenta il numero o la percentuale di destinazioni in cui l'aggiornamento può avere esito negativo prima dell'interruzione dell'operazione. 

1. Se hai scelto **Specificare i valori dei parametri** per aggiornare più risorse nel passaggio precedente: nella sezione **Parametri Runbook** specificare i valori per i parametri di input obbligatori. I valori dei parametri che è necessario fornire si basano sul contenuto dei runbook Automation associati al modello di modifica scelto. 

   Ad esempio, se il modello di modifica utilizza il `AWS-RetartEC2Instance` runbook, devi inserire una o più istanze IDs per il **InstanceId**parametro. In alternativa, scegliere **Mostra selettore istanza interattivo** e selezionare le istanze disponibili una per una. 

1. Seleziona **Successivo**.

1. Nella pagina **Esaminare e inviare**, controllare due volte le risorse e le opzioni specificate per questa richiesta di modifica.

   Selezionare **Modificare** per qualsiasi sezione a cui vuoi apportare modifiche.

   Quando si è soddisfatti dei dettagli della richiesta di modifica, selezionare **Invio per approvazione**.

Se un argomento Amazon SNS è stato specificato nel modello di modifica scelto per la richiesta, le notifiche vengono inviate quando la richiesta viene rifiutata o approvata. Se non ricevi notifiche per la richiesta, puoi tornare a Change Manager per verificare lo stato della richiesta. 

## Creazione di richieste di modifica (AWS CLI)
<a name="change-requests-create-cli"></a>

È possibile creare una richiesta di modifica utilizzando il AWS Command Line Interface comando (AWS CLI) specificando opzioni e parametri per la richiesta di modifica in un file JSON e utilizzando l'`--cli-input-json`opzione per includerla nel comando.

**Per creare una richiesta di modifica (AWS CLI)**

1. Installa e configura il AWS CLI o il AWS Strumenti per PowerShell, se non l'hai già fatto.

   Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Sul computer locale creare un file JSON denominato ad esempio `MyChangeRequest.json`, quindi incollarvi i seguenti contenuti.

   Sostituisci *placeholders* con i valori per la tua richiesta di modifica.
**Nota**  
Questo JSON di esempio crea una richiesta di modifica utilizzando il modello di modifica `AWS-HelloWorldChangeTemplate` e il runbook `AWS-HelloWorld`. Per adattare questo esempio alle tue richieste di modifica, consulta [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html) nella *Documentazione di riferimento API di AWS Systems Manager * per informazioni su tutti i parametri disponibili  
Per informazioni sull'approvazione delle richieste di modifica, consulta la pagina [Informazioni sulle approvazioni delle richieste di modifica](#cm-approvals-requests).

   ```
   {
       "ChangeRequestName": "MyChangeRequest",
       "DocumentName": "AWS-HelloWorldChangeTemplate",
       "DocumentVersion": "$DEFAULT",
       "ScheduledTime": "2021-12-30T03:00:00",
       "ScheduledEndTime": "2021-12-30T03:05:00",
       "Tags": [
           {
               "Key": "Purpose",
               "Value": "Testing"
           }
       ],
       "Parameters": {
           "Approver": [
               "JohnDoe"
           ],
           "ApproverType": [
               "IamUser"
           ],
           "ApproverSnsTopicArn": [
               "arn:aws:sns:us-east-2:123456789012:MyNotificationTopic"
           ]
       },
       "Runbooks": [
           {
               "DocumentName": "AWS-HelloWorld",
               "DocumentVersion": "1",
               "MaxConcurrency": "1",
               "MaxErrors": "1",
               "Parameters": {
                   "AutomationAssumeRole": [
                       "arn:aws:iam::123456789012:role/MyChangeManagerAssumeRole"
                   ]
               }
           }
       ],
       "ChangeDetails": "### Document Name: HelloWorldChangeTemplate\n\n## What does this document do?\nThis change template demonstrates the feature set available for creating change templates for Change Manager. This template starts a Runbook workflow for the Automation document called AWS-HelloWorld.\n\n## Input Parameters\n* ApproverSnsTopicArn: (Required) Amazon Simple Notification Service ARN for approvers.\n* Approver: (Required) The name of the approver to send this request to.\n* ApproverType: (Required) The type of reviewer.\n  * Allowed Values: IamUser, IamGroup, IamRole, SSOGroup, SSOUser\n\n## Output Parameters\nThis document has no outputs \n"
   }
   ```

1. Nella directory in cui è stato creato il file JSON, eseguire il comando seguente.

   ```
   aws ssm start-change-request-execution --cli-input-json file://MyChangeRequest.json
   ```

   Il sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "AutomationExecutionId": "b3c1357a-5756-4839-8617-2d2a4EXAMPLE"
   }
   ```

# Revisione e approvazione o rifiuto delle richieste di modifica
<a name="change-requests-review"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Se sei stato indicato come revisore per una richiesta di modifica in Change Manager, uno strumento di AWS Systems Manager, riceverai una notifica tramite un argomento Amazon Simple Notification Service (Amazon SNS), quando una richiesta di modifica è in attesa di revisione. 

**Nota**  
Questa funzionalità dipende dal fatto che nel modello di modifica sia stato specificato un Amazon SNS per l'invio delle notifiche di revisione. Per informazioni, consulta [Configurazione degli argomenti Amazon SNS per le notifiche Change Manager](change-manager-sns-setup.md). 

Per esaminare la richiesta di modifica, puoi seguire il link nella notifica oppure accedere Console di gestione AWS direttamente alla richiesta e seguire i passaggi di questa procedura.

**Nota**  
Se un argomento Amazon SNS viene assegnato ai revisori in un modello di modifica, le notifiche vengono inviate agli abbonati dell'argomento quando la richiesta di modifica cambia lo stato.  
Per informazioni sull'approvazione delle richieste di modifica, consulta la pagina [Informazioni sulle approvazioni delle richieste di modifica](change-requests-create.md#cm-approvals-requests).

## Revisione e approvazione o rifiuto delle richieste di modifica (console)
<a name="change-requests-review-console"></a>

Le seguenti procedure descrivono come utilizzare la console di Systems Manager per rivedere e approvare o rifiutare le richieste di modifica.

**Revisione e approvazione o rifiuto di una singola richiesta di modifica**

1. Apri il link nella notifica e-mail che hai ricevuto e accedi a Console di gestione AWS, che ti reindirizza alla richiesta di modifica per la revisione.

1. Nella pagina di riepilogo esaminare il contenuto proposto della richiesta di modifica.

   Per approvare la richiesta di modifica, scegliere **Approve (Approva)**. Nella finestra di dialogo, specifica i commenti che desideri aggiungere per l'approvazione, quindi scegli **Approva**. Il flusso di lavoro del runbook rappresentato da questa richiesta inizia a essere eseguito quando è pianificato o non appena le modifiche non vengono bloccate da alcuna restrizione.

   oppure

   Per rifiutare la richiesta di modifica, scegliere**Rifiuta**. Nella finestra di dialogo, specifica i commenti che desideri aggiungere per questo rifiuto, quindi seleziona **Rifiuta**.

**Revisione e approvazione o rifiuto di richieste di modifica in blocco**

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 **Change Manager**.

1. Seleziona la scheda **Approvals** (Approvazioni).

1. (Facoltativo) Rivedi i dettagli delle richieste in attesa di approvazione selezionando il nome di ciascuna richiesta, quindi torna alla scheda **Approvals** (Approvazioni).

1. Seleziona la casella di controllo di ciascuna richiesta di modifica che desideri approvare.

   oppure

   Seleziona la casella di controllo di ciascuna richiesta di modifica che desideri rifiutare.

1. Nella finestra di dialogo, immetti eventuali commenti che desideri aggiungere per l'approvazione o il rifiuto.

1. A seconda che tu stia approvando o rifiutando le richieste di modifica selezionate, scegli **Approve** (Approva) o **Reject** (Rifiuta).

## Revisione e approvazione o rifiuto di una richiesta di modifica (riga di comando)
<a name="change-requests-review-command-line"></a>

La procedura seguente descrive come utilizzare AWS Command Line Interface (AWS CLI) (su LinuxmacOS, orWindows Server) per esaminare e approvare o rifiutare una richiesta di modifica.

**Per rivedere e approvare o rifiutare una richiesta di modifica**

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. Crea un file JSON sul tuo computer locale che specifichi i parametri per la AWS CLI chiamata. 

   ```
   {
     "OpsItemFilters": 
     [
       {
         "Key": "OpsItemType",
         "Values": ["/aws/changerequest"],
         "Operator": "Equal"
       }
     ],
     "MaxResults": number
   }
   ```

   Puoi filtrare i risultati per un approvatore specifico specificando il nome della Amazon Resource Name (ARN) dell'approvatore nel file JSON. Ecco un esempio.

   ```
   {
     "OpsItemFilters": 
     [
       {
         "Key": "OpsItemType",
         "Values": ["/aws/changerequest"],
         "Operator": "Equal"
       },
       {
         "Key": "ChangeRequestByApproverArn",
         "Values": ["arn:aws:iam::account-id:user/user-name"],
         "Operator": "Equal"
       }
     ],
     "MaxResults": number
   }
   ```

1. Eseguire questo comando per visualizzare il numero massimo di richieste di modifica specificato nel file JSON.

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

   ```
   aws ssm describe-ops-items \
   --cli-input-json file://filename.json
   ```

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

   ```
   aws ssm describe-ops-items ^
   --cli-input-json file://filename.json
   ```

------

1. Eseguire questo comando per approvare o rifiutare una richiesta di modifica.

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

   ```
   aws ssm send-automation-signal \
       --automation-execution-id ID \
       --signal-type Approve_or_Reject \
       --payload Comment="message"
   ```

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

   ```
   aws ssm send-automation-signal ^
   --automation-execution-id ID ^
       --signal-type Approve_or_Reject ^
       --payload Comment="message"
   ```

------

   Se nel modello di modifica scelto per la richiesta è stato specificato un argomento Amazon SNS, le notifiche vengono inviate quando la richiesta viene rifiutata o approvata. Se non ricevi notifiche per la richiesta, puoi tornare a Change Manager per verificare lo stato della richiesta. Per informazioni sulle altre opzioni disponibili durante l'utilizzo di questo comando, consulta [https://docs.aws.amazon.com/cli/latest/reference/ssm/send-automation-signal.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/send-automation-signal.html) nella sezione AWS Systems Manager del *Riferimento ai comandi AWS CLI *.

# Analisi dei dettagli delle richieste di modifica, dei processi e delle tempistiche (console)
<a name="reviewing-changes"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

È possibile visualizzare le informazioni su una richiesta di modifica, incluse le richieste per le quali le modifiche sono già state elaborate, nel pannello di controllo di Change Manager, uno strumento di AWS Systems Manager. Questi dettagli includono un collegamento all'operazione di automazione che esegue i runbook che apportano la modifica. Un ID di esecuzione di automazione viene generato quando viene creata la richiesta, ma il processo non viene eseguito finché non sono state fornite tutte le approvazioni e non sono in vigore restrizioni per bloccare la modifica.

**Per esaminare i dettagli della richiesta di modifica, i processi e le tempistiche**

1. Nel pannello di navigazione, scegli **Change Manager**.

1. Seleziona la scheda **Richieste**.

1. Nella sezione **Richieste di modifica**, cercare la richiesta di modifica che si desidera rivedere. 

   Puoi utilizzare il plugin **Creare un intervallo di date** per limitare i risultati a un periodo di tempo specifico.

   È possibile filtrare le richieste in base alle seguenti proprietà:
   + `Status`
   + `Request ID`
   + `Approver`
   + `Requester`

   Ad esempio, per visualizzare i dettagli su tutte le richieste di modifica completate correttamente nelle ultime 24 ore, procedi come segue:

   1. Per **Creare un intervallo di date**, scegliere**1d**.

   1. Nella casella di ricerca, seleziona **Stato, CompletedWithSuccess**. 

   1. Nei risultati, scegliere il nome della richiesta di modifica completata correttamente per cui esaminare i risultati.

1. Visualizzare le informazioni sulla richiesta di modifica nelle schede seguenti:
   + **Dettagli della richiesta**: consente di visualizzare i dettagli di base sulla richiesta di modifica, inclusi il richiedente, il modello di modifica e i runbook di automazione selezionati per la modifica. Puoi anche seguire un link ai dettagli dell'operazione di automazione e visualizzare le informazioni sui parametri del runbook specificati nella richiesta, sugli CloudWatch allarmi Amazon assegnati alla richiesta di modifica e sulle approvazioni e i commenti forniti per la richiesta.
   + **Processo**: consente di visualizzare informazioni sul processo di modifica, inclusi lo stato del processo per le richieste di modifica completate, le risorse di destinazione, i passaggi nei runbook di automazione associati e i dettagli relativi alla soglia di errore e concorrenza.
   + **Pianificazione**: visualizza un riepilogo di tutti gli eventi associati alla richiesta di modifica, elencati per data e ora. Il riepilogo indica quando è stata creata la richiesta di modifica, le operazioni degli approvatori assegnati, una nota relativa alla pianificazione dell'esecuzione delle richieste di modifica approvate, i dettagli del flusso di lavoro del runbook e le modifiche di stato per il processo di modifica generale e per ogni passaggio del runbook.
   + **Eventi associati**: visualizza i dettagli verificabili sulle richieste di modifica registrate in [Data Lake AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html). I dettagli includono quali operazioni API sono state eseguite, i parametri di richiesta inclusi per tali operazioni, l'account utente che ha eseguito l'azione, le risorse aggiornate durante il processo e altro ancora.

     Quando CloudTrail abiliti il monitoraggio degli eventi di CloudTrail Lake, Lake crea un archivio dati sugli eventi relativi alle tue richieste di modifica. I dettagli dell'evento sono disponibili per l'account o l'organizzazione in cui è stata eseguita la richiesta di modifica. Puoi attivare il monitoraggio degli eventi di CloudTrail Lake da qualsiasi richiesta di modifica nel tuo account o organizzazione. Per informazioni sull'attivazione dell'integrazione con CloudTrail Lake e sulla creazione di un archivio dati di eventi, consulta[Monitoraggio degli eventi della richiesta di modifica](monitoring-change-request-events.md).
**Nota**  
L'utilizzo di **CloudTrail Lake** è a pagamento. Per informazioni dettagliate, consulta [Prezzi di AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/).

# Visualizzazione dei conteggi aggregati delle richieste di modifica (riga di comando)
<a name="change-requests-review-aggregate-command-line"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Puoi visualizzare i conteggi aggregati delle richieste di modifica inChange Manager, a tool in AWS Systems Manager, utilizzando l'operazione [GetOpsSummary](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetOpsSummary.html)API. Questa operazione API può restituire i conteggi per un singolo account Account AWS in uno Regione AWS o per più account e più regioni.

**Nota**  
Se desideri visualizzare i conteggi aggregati delle richieste di modifica per più Account AWS e più richieste Regioni AWS, devi impostare e configurare una sincronizzazione dei dati delle risorse. Per ulteriori informazioni, consulta [Creazione di un Resource Data Sync per Inventario](inventory-create-resource-data-sync.md).

La procedura seguente descrive come utilizzare AWS Command Line Interface (AWS CLI) (su Linux oWindows Server) per visualizzare macOS i conteggi aggregati delle richieste di modifica. 

**Per visualizzare i conteggi aggregati delle richieste di modifica**

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. Eseguire uno dei seguenti comandi. 

   **Account singolo e Regione**

   Questo comando restituisce un conteggio di tutte le richieste di modifica per Account AWS e Regione AWS per le quali è configurata la AWS CLI sessione.

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

   ```
   aws ssm get-ops-summary \
   --filters Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal \
   --aggregators AggregatorType=count,AttributeName=Status,TypeName=AWS:OpsItem
   ```

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

   ```
   aws ssm get-ops-summary ^
   --filters Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal ^
   --aggregators AggregatorType=count,AttributeName=Status,TypeName=AWS:OpsItem
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "Entities": [
           {
               "Data": {
                   "AWS:OpsItem": {
                       "Content": [
                           {
                               "Count": "38",
                               "Status": "Open"
                           }
                       ]
                   }
               }
           }
       ]
   }
   ```

   **Account multipli, and/or regioni**

   Questo comando restituisce un conteggio di tutte le richieste di modifica per Account AWS e Regioni AWS specificate nella sincronizzazione dei dati delle risorse.

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

   ```
   aws ssm get-ops-summary \
       --sync-name resource_data_sync_name \
       --filters Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal \
       --aggregators AggregatorType=count,AttributeName=Status,TypeName=AWS:OpsItem
   ```

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

   ```
   aws ssm get-ops-summary ^
       --sync-name resource_data_sync_name ^
       --filters Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal ^
       --aggregators AggregatorType=count,AttributeName=Status,TypeName=AWS:OpsItem
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "Entities": [
           {
               "Data": {
                   "AWS:OpsItem": {
                       "Content": [
                           {
                               "Count": "43",
                               "Status": "Open"
                           },
                           {
                               "Count": "2",
                               "Status": "Resolved"
                           }
                       ]
                   }
               }
           }
       ]
   }
   ```

   **Più account e una regione specifica**

   Questo comando restituisce un conteggio di tutte le richieste di modifica per gli Account AWS specificate nella sincronizzazione dei dati delle risorse. Tuttavia, restituisce solo i dati della regione specificata nel comando.

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

   ```
   aws ssm get-ops-summary \
       --sync-name resource_data_sync_name \
       --filters Key=AWS:OpsItem.SourceRegion,Values='Region',Type=Equal Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal \
       --aggregators AggregatorType=count,AttributeName=Status,TypeName=AWS:OpsItem
   ```

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

   ```
   aws ssm get-ops-summary ^
       --sync-name resource_data_sync_name ^
       --filters Key=AWS:OpsItem.SourceRegion,Values='Region',Type=Equal Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal ^
       --aggregators AggregatorType=count,AttributeName=Status,TypeName=AWS:OpsItem
   ```

------

   **Più account e Regioni con output raggruppati per Regione**

   Questo comando restituisce il conteggio di tutte le richieste di modifica per Account AWS e Regioni AWS specificate nella sincronizzazione dei dati delle risorse. L'output visualizza le informazioni sul conteggio per regione.

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

   ```
   aws ssm get-ops-summary \
       --sync-name resource_data_sync_name \
       --filters Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal \
       --aggregators '[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"Status","Aggregators":[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"SourceRegion"}]}]'
   ```

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

   ```
   aws ssm get-ops-summary ^
       --sync-name resource_data_sync_name ^
       --filters Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal ^
       --aggregators '[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"Status","Aggregators":[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"SourceRegion"}]}]'
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

   ```
   {
           "Entities": [
               {
                   "Data": {
                       "AWS:OpsItem": {
                           "Content": [
                               {
                                   "Count": "38",
                                   "SourceRegion": "us-east-1",
                                   "Status": "Open"
                               },
                               {
                                   "Count": "4",
                                   "SourceRegion": "us-east-2",
                                   "Status": "Open"
                               },
                               {
                                   "Count": "1",
                                   "SourceRegion": "us-west-1",
                                   "Status": "Open"
                               },
                               {
                                   "Count": "2",
                                   "SourceRegion": "us-east-2",
                                   "Status": "Resolved"
                               }
                           ]
                       }
                   }
               }
           ]
       }
   ```

   **Più account e regioni con output raggruppati per account e regioni**

   Questo comando restituisce il conteggio di tutte le richieste di modifica per Account AWS e Regioni AWS specificate nella sincronizzazione dei dati delle risorse. L'output raggruppa le informazioni di conteggio in base ad account e Regioni.

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

   ```
   aws ssm get-ops-summary \
       --sync-name resource_data_sync_name \
       --filters Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal \
       --aggregators '[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"Status","Aggregators":[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"SourceAccountId","Aggregators":[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"SourceRegion"}]}]}]'
   ```

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

   ```
   aws ssm get-ops-summary ^
       --sync-name resource_data_sync_name ^
       --filters Key=AWS:OpsItem.OpsItemType,Values="/aws/changerequests",Type=Equal ^
       --aggregators '[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"Status","Aggregators":[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"SourceAccountId","Aggregators":[{"AggregatorType":"count","TypeName":"AWS:OpsItem","AttributeName":"SourceRegion"}]}]}]'
   ```

------

   Il sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "Entities": [
           {
               "Data": {
                   "AWS:OpsItem": {
                       "Content": [
                           {
                               "Count": "38",
                               "SourceAccountId": "123456789012",
                               "SourceRegion": "us-east-1",
                               "Status": "Open"
                           },
                           {
                               "Count": "4",
                               "SourceAccountId": "111122223333",
                               "SourceRegion": "us-east-2",
                               "Status": "Open"
                           },
                           {
                               "Count": "1",
                               "SourceAccountId": "111122223333",
                               "SourceRegion": "us-west-1",
                               "Status": "Open"
                           },
                           {
                               "Count": "2",
                               "SourceAccountId": "444455556666",
                               "SourceRegion": "us-east-2",
                               "Status": "Resolved"
                           },
                           {
                               "Count": "1",
                               "SourceAccountId": "222222222222",
                               "SourceRegion": "us-east-1",
                               "Status": "Open"
                           }
                       ]
                   }
               }
           }
       ]
   }
   ```

# Verifica e registrazione dell'attività Change Manager
<a name="change-manager-auditing"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Puoi controllare l'attività inChange Manager, uno strumento in AWS Systems Manager, utilizzando Amazon CloudWatch e gli AWS CloudTrail allarmi.

Per ulteriori informazioni sulle opzioni di verifica e registrazione per Systems Manager, consulta [Registrazione e monitoraggio AWS Systems Manager](monitoring.md).

## Controlla Change Manager l'attività utilizzando CloudWatch gli allarmi
<a name="change-manager-logging-auditing-alarms"></a>

È possibile configurare e assegnare un CloudWatch allarme a un modello di modifica. Se vengono soddisfatte le condizioni definite nell'allarme, vengono intraprese le azioni specificate per l'allarme. Nella configurazione dell'allarme, puoi specificare un argomento Amazon Simple Notification Service (Amazon SNS) per notificare quando viene soddisfatta una condizione di allarme. 

Per informazioni sulla creazione del modello Change Manager, consulta [Utilizzo dei modelli di modifica](change-templates.md).

Per informazioni sulla creazione di CloudWatch allarmi, consulta [Using CloudWatch Alarms](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) nella *Amazon CloudWatch User Guide*.

## Controlla l'attività utilizzando Change Manager CloudTrail
<a name="change-manager-logging-auditing-cloudtrail"></a>

CloudTrail acquisisce le chiamate API effettuate nella console Systems Manager, AWS Command Line Interface (AWS CLI) e nel Systems Manager SDK. Puoi visualizzare le informazioni nella CloudTrail console o in un bucket Amazon Simple Storage Service (Amazon S3), dove sono archiviate. Un bucket viene utilizzato per tutti i CloudTrail log del tuo account.

I log delle operazioni Change Manager mostrano la creazione dei documenti del modello di modifica, le approvazioni e i rifiuti delle richieste di modifica e dei modelli di modifica, l'attività generata dai runbook di Automazione e altro ancora. Per ulteriori informazioni sulla visualizzazione e l'utilizzo dei CloudTrail registri delle attività di Systems Manager, vedere[Registrazione delle chiamate AWS Systems Manager API con AWS CloudTrail](monitoring-cloudtrail-logs.md).

# Risoluzione dei problemi relativi a Change Manager
<a name="change-manager-troubleshooting"></a>

**Change Managermodifica della disponibilità**  
AWS Systems ManagerChange Managernon sarà più aperto a nuovi clienti a partire dal 7 novembre 2025. Se desideri utilizzarloChange Manager, registrati prima di tale data. I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta [AWS Systems ManagerChange Managerla pagina Modifica della disponibilità](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Utilizza le informazioni seguenti per risolvere i problemi relativi a Change Manager, uno strumento di AWS Systems Manager.

**Topics**
+ [Errore «Gruppo *\$1GUID\$1* non trovato» durante le approvazioni delle richieste di modifica quando si utilizza Active Directory (gruppi)](#change-manager-troubleshooting-sso)

## Errore «Gruppo *\$1GUID\$1* non trovato» durante le approvazioni delle richieste di modifica quando si utilizza Active Directory (gruppi)
<a name="change-manager-troubleshooting-sso"></a>

**Problema**: quando AWS IAM Identity Center (IAM Identity Center) viene utilizzato per la gestione delle identità degli utenti, un membro di un gruppo Active Directory a cui sono concesse le autorizzazioni di approvazione Change Manager riceve un errore «non autorizzato» o «gruppo non trovato».
+ **Soluzione**: quando si selezionano i gruppi Active Directory in IAM Identity Center per l'accesso a Console di gestione AWS, il sistema pianifica una sincronizzazione periodica che copia le informazioni da tali gruppi di Active Directory in IAM Identity Center. Questo processo deve essere completato prima che gli utenti autorizzati tramite l'appartenenza al gruppo di Active Directory possano approvare correttamente una richiesta. Per ulteriori informazioni, consulta [Connetti una Microsoft AD](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-ad.html) nella *Guida per l'utente AWS IAM Identity Center *.

# 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
   ```

# AWS Systems Manager Maintenance Windows
<a name="maintenance-windows"></a>

Maintenance Windows, uno strumento in AWS Systems Manager, consente di definire una pianificazione per l'esecuzione di azioni potenzialmente dannose sui nodi, come l'applicazione di patch a un sistema operativo, l'aggiornamento dei driver o l'installazione di software o patch.

**Nota**  
State Manager e Maintenance Windows sono in grado di eseguire alcuni tipi di aggiornamenti simili sui nodi gestiti. La scelta dipende dalla necessità di automatizzare la conformità del sistema o di eseguire attività ad alta priorità e sensibili al tempo durante i periodi specificati.  
Per ulteriori informazioni, consulta [Scelta tra State Manager e Maintenance Windows](state-manager-vs-maintenance-windows.md).

ConMaintenance Windows, puoi pianificare azioni su numerosi altri tipi di AWS risorse, come i bucket Amazon Simple Storage Service (Amazon S3), le code di Amazon Simple Queue Service (Amazon AWS Key Management Service SQS), le chiavi () e molto altro.AWS KMS

*Per un elenco completo dei tipi di risorse supportati che puoi includere in un obiettivo della finestra di manutenzione, consulta la sezione [Risorse utilizzabili AWS Resource Groups e Tag Editor nella Guida per l'utente](https://docs.aws.amazon.com/ARG/latest/userguide/supported-resources.html#supported-resources-console).AWS Resource Groups * Per cominciare a utilizzare Maintenance Windows, apri la [console di Systems Manager](https://console.aws.amazon.com//systems-manager/maintenance-windows). Nel pannello di navigazione, scegli **Maintenance Windows**.

Ogni finestra di manutenzione ha una pianificazione, una durata massima, un set di obiettivi registrati (i nodi gestiti o altre AWS risorse su cui si agisce) e una serie di attività registrate. È possibile aggiungere tag alle finestre di manutenzione quando vengono create o aggiornate. I tag sono chiavi che consentono di identificare e ordinare le risorse all'interno della tua organizzazione. Puoi anche indicare delle date prima o dopo le quali la finestra di manutenzione non deve essere eseguita, nonché specificare il fuso orario internazionale su cui basare la pianificazione della finestra di manutenzione. 

Per una spiegazione di come le diverse opzioni relative alla pianificazione per le finestre di manutenzione siano tra loro correlate, consulta [Opzioni di pianificazione e periodo attivo per la finestra di manutenzione](maintenance-windows-schedule-options.md).

Per ulteriori informazioni sull'utilizzo dell'opzione `--schedule`, consulta [Riferimento: espressioni Cron e della frequenza per Systems Manager](reference-cron-and-rate-expressions.md).

**Tipi di processi supportati**  
Con le finestre di manutenzione è possibile eseguire quattro tipi di attività:
+ Comandi in Run Command, uno strumento di Systems Manager

  Per ulteriori informazioni su Run Command, consultare [AWS Systems Manager Run Command](run-command.md).
+ Flussi di lavoro in Automazione, uno strumento di Systems Manager

  Per ulteriori informazioni sui flussi di lavoro di automazione, consulta [Automazione di AWS Systems Manager](systems-manager-automation.md).
+ Funzioni in AWS Lambda

  Per ulteriori informazioni sulle funzioni Lambda, consulta [Nozioni di base su Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) nella *Guida per gli sviluppatori di AWS Lambda *.
+ Attività in AWS Step Functions
**Nota**  
Le attività della finestra di manutenzione supportano solo i flussi di lavoro delle macchine a stati standard di Step Functions. Non supportano i flussi di lavoro delle macchine a stati express. Per informazioni sui tipi di flusso di lavoro delle macchine a stati, consulta [Standard vs. Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html) (Differenze flussi di lavoro standard ed express) nella *Guida per gli sviluppatori di AWS Step Functions *.

  Per ulteriori informazioni su Step Functions, consulta la *[Guida per sviluppatori di AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/)*.

Questo significa che è possibile utilizzare le finestre di manutenzione per eseguire attività quali le seguenti sulle destinazioni selezionate.
+ Installazione o aggiornamento di applicazioni.
+ Applicazione di patch.
+ Installazione o aggiornamento dell'SSM Agent.
+ Esegui PowerShell comandi e script di shell Linux utilizzando un'Run Commandattività di Systems Manager.
+ Creazione di Amazon Machine Images (AMIs), bootstrap di software e configurazione di nodi utilizzando l'attività di automazione Systems Manager.
+ Esegui AWS Lambda funzioni che richiamano azioni aggiuntive, come la scansione dei nodi per gli aggiornamenti delle patch.
+ Esegui macchine a AWS Step Functions stati per eseguire attività come rimuovere un nodo da un ambiente Elastic Load Balancing, applicare patch al nodo e quindi aggiungere nuovamente il nodo all'ambiente Elastic Load Balancing.
+ Scegli come target i nodi offline specificando un gruppo di AWS risorse come destinazione.

**Nota**  
È necessario specificare uno o più oggetti per le attività di tipo Run Command della finestra di manutenzione. A seconda dell'attività, gli obiettivi sono facoltativi per altri tipi di attività della finestra di manutenzione (Automazione e AWS Step Functions). AWS Lambda Per ulteriori informazioni sull'esecuzione di attività che non specificano destinazioni, consulta [Registrazione delle attività della finestra di manutenzione senza destinazioni](maintenance-windows-targetless-tasks.md).

**EventBridge supporto**  
Questo strumento Systems Manager è supportato come tipo di *evento* nelle EventBridge regole di Amazon. Per informazioni, consulta [Monitoraggio degli eventi di Systems Manager con Amazon EventBridge](monitoring-eventbridge-events.md) e [Riferimento: modelli e tipi di EventBridge eventi Amazon per Systems Manager](reference-eventbridge-events.md).

**Topics**
+ [Configurazione di Maintenance Windows](setting-up-maintenance-windows.md)
+ [Crea e gestisci finestre di manutenzione utilizzando la console](sysman-maintenance-working.md)
+ [Tutorial](maintenance-windows-tutorials.md)
+ [Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione](maintenance-window-tasks-pseudo-parameters.md)
+ [Opzioni di pianificazione e periodo attivo per la finestra di manutenzione](maintenance-windows-schedule-options.md)
+ [Registrazione delle attività della finestra di manutenzione senza destinazioni](maintenance-windows-targetless-tasks.md)
+ [Risoluzione dei problemi di finestre di manutenzione](troubleshooting-maintenance-windows.md)

# Configurazione di Maintenance Windows
<a name="setting-up-maintenance-windows"></a>

Prima che gli utenti nel tuo Account AWS siano in grado di creare e pianificare attività per le finestre di manutenzione tramite Maintenance Windows, uno strumento di AWS Systems Manager, devono essere concesse loro le autorizzazioni necessarie. Inoltre, è necessario creare un ruolo di servizio IAM per le finestre di manutenzione e la policy IAM da allegare ad esso.

**Prima di iniziare**  
Oltre alle autorizzazioni configurate in questa sezione, è necessario che le entità IAM (utenti, ruoli o gruppi) che funzioneranno con le finestre di manutenzione dispongano già delle autorizzazioni generali relative alle finestre di manutenzione. È possibile concedere queste autorizzazioni assegnando la policy IAM `AmazonSSMFullAccess` alle Entità, oppure assegnando un'altra policy IAM personalizzata che fornisce un insieme più piccolo di autorizzazioni di accesso per Systems Manager che copre le attività delle finestre di manutenzione.

**Topics**
+ [Controllo degli accessi alle finestre di manutenzione tramite la console](configuring-maintenance-window-permissions-console.md)
+ [Controlla l'accesso alle finestre di manutenzione utilizzando AWS CLI](configuring-maintenance-window-permissions-cli.md)

# Controllo degli accessi alle finestre di manutenzione tramite la console
<a name="configuring-maintenance-window-permissions-console"></a>

Le procedure seguenti descrivono come utilizzare la AWS Systems Manager console per creare le autorizzazioni e i ruoli richiesti per le finestre di manutenzione.

**Topics**
+ [Attività 1: crea una policy personalizzata per il ruolo di servizio della finestra di manutenzione tramite la console](#create-custom-policy-console)
+ [Attività 2: crea un ruolo di servizio personalizzato per le finestre di manutenzione tramite la console](#create-custom-role-console)
+ [Attività 3: concedi le autorizzazioni per l'uso del ruolo di servizio agli utenti che registrano le attività della finestra di manutenzione tramite la console](#allow-maintenance-window-access-console)
+ [Attività 4: impedisci agli utenti specificati di registrare le attività della finestra di manutenzione tramite la console](#deny-maintenance-window-access-console)

## Attività 1: crea una policy personalizzata per il ruolo di servizio della finestra di manutenzione tramite la console
<a name="create-custom-policy-console"></a>

Le attività della finestra di manutenzione richiedono un ruolo IAM per concedere le autorizzazioni necessarie per l'esecuzione sulle risorse di destinazione. Le autorizzazioni vengono fornite tramite una policy IAM collegata al ruolo. I tipi di attività eseguite e gli altri requisiti operativi determinano il contenuto di questa policy. Forniamo una policy di base da poter adattare alle proprie esigenze. A seconda delle attività e dei tipi di attività eseguite dalle finestre di manutenzione, è possibile che non tutte le autorizzazioni in questa policy siano necessarie, mentre potrebbe rendersi necessario includere autorizzazioni aggiuntive. Dovrai collegare questa policy al ruolo che creerai successivamente in [Attività 2: crea un ruolo di servizio personalizzato per le finestre di manutenzione tramite la console](#create-custom-role-console).

**Per creare una policy personalizzata tramite la console**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Policy** e **Crea policy**.

1. Nella sezione **Editor di policy**, scegli l'opzione **JSON**.

1. Sostituisci i contenuti di default con il seguente:

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:SendCommand",
                   "ssm:CancelCommand",
                   "ssm:ListCommands",
                   "ssm:ListCommandInvocations",
                   "ssm:GetCommandInvocation",
                   "ssm:GetAutomationExecution",
                   "ssm:StartAutomationExecution",
                   "ssm:ListTagsForResource",
                   "ssm:DescribeInstanceInformation",
                   "ssm:GetParameters"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "states:DescribeExecution",
                   "states:StartExecution"
               ],
               "Resource": [
                   "arn:aws:states:*:*:execution:*:*",
                   "arn:aws:states:*:*:stateMachine:*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "lambda:InvokeFunction"
               ],
               "Resource": [
                   "arn:aws:lambda:*:*:function:*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "resource-groups:ListGroups",
                   "resource-groups:ListGroupResources"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "tag:GetResources"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::111122223333:role/maintenance-window-role-name",
               "Condition": {
                   "StringEquals": {
                       "iam:PassedToService": [
                           "ssm.amazonaws.com"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. Modifica il contenuto JSON secondo necessità per le attività di manutenzione eseguite nel tuo account. Le modifiche apportate sono specifiche per le operazioni pianificate. 

   Esempio:
   + Puoi fornire Amazon Resource Names (ARNs) per funzioni e macchine a stati specifiche invece di utilizzare i qualificatori wildcard (\$1).
   + Se non hai intenzione di eseguire AWS Step Functions attività, puoi rimuovere le `states` autorizzazioni e (). ARNs
   + Se non hai intenzione di eseguire AWS Lambda attività, puoi rimuovere le `lambda` autorizzazioni e. ARNs
   + Se non prevedi l'esecuzione di attività di automazione, puoi rimuovere le autorizzazioni `ssm:GetAutomationExecution` e `ssm:StartAutomationExecution`.
   + Aggiungi le autorizzazioni supplementari che potrebbero essere necessarie per l'esecuzione delle attività. Ad esempio, alcune operazioni di automazione utilizzano gli stack di AWS CloudFormation . Pertanto, servono le autorizzazioni `cloudformation:CreateStack`, `cloudformation:DescribeStacks` e `cloudformation:DeleteStack`. 

     Un altro esempio: il runbook Automation `AWS-CopySnapshot` richiede le autorizzazioni per creare uno snapshot Amazon Elastic Block Store (Amazon EBS). Pertanto, il ruolo di servizio richiede l’autorizzazione `ec2:CreateSnapshot`. 

     Per informazioni sulle autorizzazioni di ruolo necessarie per i runbook di automazione, consulta le descrizioni dei runbook nella [Documentazione di riferimento ai runbook di automazione AWS Systems Manager](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html).

1. Dopo aver completato le revisioni delle policy, scegli **Successivo**.

1. Alla voce **Nome policy**, inserisci un nome che la identifichi come la policy utilizzata dal ruolo di servizio che crei. Ad esempio: **my-maintenance-window-role-policy**.

1. (Facoltativo) Nella sezione **Aggiungi tag**, aggiungi una o più coppie tag chiave-valore per organizzare, monitorare o controllare l'accesso per questa policy. 

1. Scegli **Crea policy**.

   Prendi nota del nome specificato per la policy. Vi farai riferimento nella procedura successiva, [Attività 2: crea un ruolo di servizio personalizzato per le finestre di manutenzione tramite la console](#create-custom-role-console).

## Attività 2: crea un ruolo di servizio personalizzato per le finestre di manutenzione tramite la console
<a name="create-custom-role-console"></a>

La policy che hai creato nell'attività precedente è associata al ruolo di servizio della finestra di manutenzione che crei in questa attività. Quando gli utenti registrano un'attività della finestra di manutenzione, specificano questo ruolo IAM come parte della configurazione dell'attività. Le autorizzazioni in questo ruolo consentono a Systems Manager di eseguire attività nelle finestre di manutenzione per conto tuo.

**Importante**  
In precedenza, la console Systems Manager offriva la possibilità di scegliere il ruolo collegato ai servizi IAM AWS gestito `AWSServiceRoleForAmazonSSM` da utilizzare come ruolo di manutenzione per le attività. Non è più consigliato utilizzare questo ruolo e la relativa policy associata, `AmazonSSMServiceRolePolicy`, per le attività della finestra di manutenzione. Se stai ancora utilizzando questo ruolo per le attività della finestra di manutenzione, ti invitiamo a interromperne l'utilizzo. Invece, crea il tuo ruolo IAM che abiliti la comunicazione tra Systems Manager e altri Servizi AWS quando vengono eseguite le attività della finestra di manutenzione.

Utilizza la seguente procedura per creare un ruolo di servizio personalizzato per Maintenance Windows in modo che Systems Manager possa eseguire le attività Maintenance Windows per tuo conto. Collegherai la policy che hai creato nell'attività precedente al ruolo di servizio personalizzato che andrai a creare.

**Per creare un ruolo di servizio personalizzato per le finestre di manutenzione tramite la console**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Ruoli** e quindi **Crea ruolo**.

1. Per **Seleziona un'entità attendibile**, effettua le seguenti selezioni:

   1. Per **Tipo di entità attendibile**, scegli **Servizio AWS **.

   1. Alla voce **Caso d'uso**, scegli **Systems Manager**

   1. Scegli **Systems Manager**.

      L'immagine seguente evidenzia la posizione dell'opzione Systems Manager.  
![\[Systems Manager è una delle opzioni per Caso d'uso.\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/images/iam_use_cases_for_MWs.png)

1. Scegli **Successivo**. 

1. Nella sezione **Policy di autorizzazione**, nella barra di ricerca, inserisci il nome della policy creata in [Attività 1: crea una policy personalizzata per il ruolo di servizio della finestra di manutenzione tramite la console](#create-custom-policy-console), seleziona il campo accanto al suo nome, quindi scegli **Successivo**.

1. In **Nome ruolo**, inserisci un nome che identifichi questo ruolo come un ruolo Maintenance Windows. Ad esempio: **my-maintenance-window-role**.

1. (Facoltativo) Modificare la descrizione predefinita del ruolo per rispecchiarne lo scopo. Ad esempio: **Performs maintenance window tasks on your behalf**.

1. Per il **passaggio 1: seleziona le entità attendibili**, verifica che la seguente policy sia visualizzata nel campo **Politica attendibile**.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "ssm.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. Per il **passaggio 2: aggiungi le autorizzazioni**, verifica che la politica creata in [Attività 1: crea una policy personalizzata per il ruolo di servizio della finestra di manutenzione tramite la console](#create-custom-policy-console) sia presente.

1. (Facoltativo) Nel **passaggio 3: aggiungi tag**, aggiungi una o più coppie tag chiave-valore per organizzare, monitorare o controllare l'accesso per questo ruolo. 

1. Scegli **Crea ruolo**. Il sistema visualizza di nuovo la pagina **Ruoli**.

1. Scegli il nome del ruolo IAM appena creato.

1. Copia o annota il nome del ruolo e il valore **ARN** nell'area **Riepilogo**. Gli utenti nel tuo account specificano queste informazioni quando creano finestre di manutenzione.

## Attività 3: concedi le autorizzazioni per l'uso del ruolo di servizio agli utenti che registrano le attività della finestra di manutenzione tramite la console
<a name="allow-maintenance-window-access-console"></a>

La concessione agli utenti delle autorizzazioni di accesso al ruolo di servizio personalizzato per la finestra di manutenzione consente loro di utilizzarlo con le attività delle finestre di manutenzione. Si tratta di un'aggiunta alle autorizzazioni già concesse agli utenti per lavorare con i comandi dell'API di Systems Manager dello strumento Maintenance Windows. Questo ruolo IAM trasmette le autorizzazioni necessarie per eseguire un'attività della finestra di manutenzione. Di conseguenza, un utente non può registrare le attività con una finestra di manutenzione utilizzando il ruolo di servizio personalizzato senza la possibilità di passare queste autorizzazioni IAM.

Quando registri un'attività con una finestra di manutenzione, devi specificare un ruolo di servizio per eseguire le operazioni dell'attività effettiva. È il ruolo che assume il servizio durante l'esecuzione di attività per conto dell'utente. Prima di ciò, per registrare l'attività stessa, assegna la policy IAM `PassRole` a un'entità IAM (come un utente o un gruppo). Ciò consente all'entità IAM di specificare, nell'ambito della registrazione di tali attività nella finestra di manutenzione, il ruolo da utilizzare durante l'esecuzione delle attività. Per informazioni, consulta [Concedi autorizzazioni utente per il passaggio di un ruolo a Servizio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) nella *Guida per l'utente IAM*.

**Per configurare le autorizzazioni per gli utenti che registrano le attività della finestra di manutenzione**

Se a un'entità IAM (utente, ruolo o gruppo) vengono assegnate le autorizzazioni di amministratore, l'utente o il ruolo IAM ha accesso alle funzionalità delle finestre di manutenzione. Per le entità IAM senza autorizzazioni di amministratore, un amministratore deve concedere le seguenti autorizzazioni all'entità IAM. Queste sono le autorizzazioni minime necessarie per registrare le attività con una finestra di manutenzione:
+ La policy gestita `AmazonSSMFullAccess` o una policy che fornisce autorizzazioni analoghe.
+ Le seguenti autorizzazioni `iam:PassRole` e `iam:ListRoles`.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "iam:PassRole",
              "Resource": "arn:aws:iam::111122223333:role/my-maintenance-window-role"
          },
          {
              "Effect": "Allow",
              "Action": "iam:ListRoles",
              "Resource": "arn:aws:iam::111122223333:role/"
          },
          {
              "Effect": "Allow",
              "Action": "iam:ListRoles",
              "Resource": "arn:aws:iam::111122223333:role/aws-service-role/ssm.amazonaws.com/"
          }
      ]
  }
  ```

------

  *my-maintenance-window-role*rappresenta il nome del ruolo di servizio personalizzato per la finestra di manutenzione creato in precedenza.

  *account-id*rappresenta l'ID del tuo Account AWS. L'aggiunta di questa autorizzazione per la risorsa `arn:aws:iam::account-id:role/` consente a un utente di visualizzare e scegliere tra i ruoli del cliente nella console quando crea un'attività della finestra di manutenzione. L'aggiunta di questa autorizzazione per `arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/` consente a un utente di scegliere il ruolo collegato ai servizi di Systems Manager nella console quando crea un'attività della finestra di manutenzione. 

  Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:
  + Utenti e gruppi in AWS IAM Identity Center:

    Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) (Creazione di un set di autorizzazioni) nella *Guida per l’utente di AWS IAM Identity Center *.
  + Utenti gestiti in IAM tramite un provider di identità:

    Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) della *Guida per l’utente IAM*.
  + Utenti IAM:
    + Crea un ruolo che l’utente possa assumere. Segui le istruzioni riportate nella pagina [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) della *Guida per l’utente IAM*.
    + (Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina [Aggiunta di autorizzazioni a un utente (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l’utente IAM*.

**Per configurare le autorizzazioni per i gruppi autorizzati a registrare le attività della finestra di manutenzione tramite la console**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Gruppi di utenti**.

1. Nell'elenco dei gruppi, seleziona il nome del gruppo desiderato a cui assegnare l'autorizzazione `iam:PassRole` oppure, se necessario, crea un nuovo gruppo 

1. Nella scheda **Autorizzazioni**, scegli **Aggiungi autorizzazioni, Crea policy in linea**.

1. Nella sezione **Editor di policy**, scegli l'opzione **JSON** e sostituisci i contenuti di default del campo con quanto segue.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::111122223333:role/my-maintenance-window-role"
           },
           {
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "arn:aws:iam::111122223333:role/"
           },
           {
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "arn:aws:iam::111122223333:role/aws-service-role/ssm.amazonaws.com/"
           }
       ]
   }
   ```

------

   *my-maintenance-window-role*rappresenta il nome del ruolo della finestra di manutenzione personalizzata creato in precedenza.

   *account-id*rappresenta l'ID del tuo Account AWS. L'aggiunta di questa autorizzazione per la risorsa `arn:aws:iam::account-id:role/` consente a un utente di visualizzare e scegliere tra i ruoli del cliente nella console quando crea un'attività della finestra di manutenzione. L'aggiunta di questa autorizzazione per `arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/` consente a un utente di scegliere il ruolo collegato ai servizi di Systems Manager nella console quando crea un'attività della finestra di manutenzione. 

1. Scegli **Next (Successivo)**.

1. Alla pagina **Esamina e crea**, inserisci un nome nel campo **Nome policy** per identificare questa policy `PassRole`, ad esempio **my-group-iam-passrole-policy**, quindi scegli **Crea policy**.

## Attività 4: impedisci agli utenti specificati di registrare le attività della finestra di manutenzione tramite la console
<a name="deny-maintenance-window-access-console"></a>

Puoi negare il `ssm:RegisterTaskWithMaintenanceWindow` permesso agli utenti del tuo Account AWS gruppo a cui non desideri di registrare attività nelle finestre di manutenzione. Ciò fornisce un ulteriore livello di prevenzione per gli utenti che non devono registrare le attività della finestra di manutenzione.

**Per configurare le autorizzazioni per i gruppi non autorizzati a registrare le attività della finestra di manutenzione tramite la console**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, seleziona **Gruppi di utenti**.

1. Nell'elenco dei gruppi, seleziona il nome del gruppo a cui desideri negare l'autorizzazione `ssm:RegisterTaskWithMaintenanceWindow` oppure, se necessario, crea un nuovo gruppo.

1. Nella scheda **Autorizzazioni**, scegli **Aggiungi autorizzazioni, Crea policy in linea**.

1. Nella sezione **Editor di policy**, scegli l'opzione **JSON** e successivamente sostituisci i contenuti di default del campo con quanto segue.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "ssm:RegisterTaskWithMaintenanceWindow",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Scegli **Next (Successivo)**.

1. Alla pagina **Esamina e crea**, alla voce **Nome policy**, inserisci un nome per identificare questa policy, ad esempio **my-groups-deny-mw-tasks-policy**, quindi scegli **Crea policy**.

# Controlla l'accesso alle finestre di manutenzione utilizzando AWS CLI
<a name="configuring-maintenance-window-permissions-cli"></a>

Le procedure seguenti descrivono come utilizzare AWS Command Line Interface (AWS CLI) per creare le autorizzazioni e i ruoli richiesti perMaintenance Windows, uno strumento in. AWS Systems Manager

**Topics**
+ [Attività 1: crea file di policy di fiducia e di policy gestita dal cliente in formato JSON](#create-custom-policy-json-files-cli)
+ [Attività 2: Creare e verificare un ruolo di servizio personalizzato per le finestre di manutenzione utilizzando AWS CLI](#create-custom-role-cli)
+ [Attività 3: concedere le autorizzazioni a utenti specifici per registrare le attività della finestra di manutenzione utilizzando il AWS CLI](#allow-maintenance-window-access-cli)
+ [Attività 4: Impedire agli utenti specificati di registrare le attività della finestra di manutenzione utilizzando AWS CLI](#deny-maintenance-window-access-cli)

## Attività 1: crea file di policy di fiducia e di policy gestita dal cliente in formato JSON
<a name="create-custom-policy-json-files-cli"></a>

Le attività della finestra di manutenzione richiedono un ruolo IAM per concedere le autorizzazioni necessarie per l'esecuzione sulle risorse di destinazione. Le autorizzazioni vengono fornite tramite una policy IAM collegata al ruolo. I tipi di attività eseguite e gli altri requisiti operativi determinano il contenuto di questa policy. Forniamo una policy di base da poter adattare alle proprie esigenze. A seconda delle attività e dei tipi di attività eseguite dalle finestre di manutenzione, è possibile che non tutte le autorizzazioni in questa policy siano necessarie, mentre potrebbe rendersi necessario includere autorizzazioni aggiuntive. 

In questa attività, specificherai le autorizzazioni necessarie per il ruolo della finestra di manutenzione personalizzata in un paio di file JSON. Dovrai collegare questa policy al ruolo che creerai successivamente in [Attività 2: Creare e verificare un ruolo di servizio personalizzato per le finestre di manutenzione utilizzando AWS CLI](#create-custom-role-cli). 

**Per creare file di policy di fiducia e di policy gestita dal cliente**

1. Copiare e incollare la seguente policy di attendibilità in un file di testo. Salva il file con il nome ed estensione seguenti: **mw-role-trust-policy.json**.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "ssm.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Copia e incolla la seguente policy JSON in un file di testo diverso. Nella stessa directory in cui hai creato il primo file, salva questo file con il nome e l'estensione seguenti: **mw-role-custom-policy.json**.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:SendCommand",
                   "ssm:CancelCommand",
                   "ssm:ListCommands",
                   "ssm:ListCommandInvocations",
                   "ssm:GetCommandInvocation",
                   "ssm:GetAutomationExecution",
                   "ssm:StartAutomationExecution",
                   "ssm:ListTagsForResource",
                   "ssm:GetParameters"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "states:DescribeExecution",
                   "states:StartExecution"
               ],
               "Resource": [
                   "arn:aws:states:*:*:execution:*:*",
                   "arn:aws:states:*:*:stateMachine:*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "lambda:InvokeFunction"
               ],
               "Resource": [
                   "arn:aws:lambda:*:*:function:*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "resource-groups:ListGroups",
                   "resource-groups:ListGroupResources"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "tag:GetResources"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::111122223333:role/maintenance-window-role-name",
               "Condition": {
                   "StringEquals": {
                       "iam:PassedToService": [
                           "ssm.amazonaws.com"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. Modifica il contenuto di `mw-role-custom-policy.json` in base alle necessità per le attività di manutenzione eseguite nel tuo account. Le modifiche apportate sono specifiche per le operazioni pianificate. 

   Esempio:
   + Puoi fornire Amazon Resource Names (ARNs) per funzioni e macchine a stati specifiche invece di utilizzare i qualificatori wildcard (\$1).
   + Se non hai intenzione di eseguire AWS Step Functions attività, puoi rimuovere le `states` autorizzazioni e (). ARNs
   + Se non hai intenzione di eseguire AWS Lambda attività, puoi rimuovere le `lambda` autorizzazioni e. ARNs
   + Se non prevedi l'esecuzione di attività di automazione, puoi rimuovere le autorizzazioni `ssm:GetAutomationExecution` e `ssm:StartAutomationExecution`.
   + Aggiungi le autorizzazioni supplementari che potrebbero essere necessarie per l'esecuzione delle attività. Ad esempio, alcune operazioni di automazione utilizzano gli stack di AWS CloudFormation . Pertanto, servono le autorizzazioni `cloudformation:CreateStack`, `cloudformation:DescribeStacks` e `cloudformation:DeleteStack`. 

     Un altro esempio: il runbook Automation `AWS-CopySnapshot` richiede le autorizzazioni per creare uno snapshot Amazon Elastic Block Store (Amazon EBS). Pertanto, il ruolo di servizio richiede l’autorizzazione `ec2:CreateSnapshot`. 

     Per informazioni sulle autorizzazioni di ruolo necessarie per i runbook di automazione, consulta le descrizioni dei runbook nella [Documentazione di riferimento ai runbook di automazione AWS Systems Manager](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html).

   Salva nuovamente il file dopo aver apportato le modifiche necessarie.

## Attività 2: Creare e verificare un ruolo di servizio personalizzato per le finestre di manutenzione utilizzando AWS CLI
<a name="create-custom-role-cli"></a>

La policy che hai creato nell'attività precedente è associata al ruolo di servizio della finestra di manutenzione che crei in questa attività. Quando gli utenti registrano un'attività della finestra di manutenzione, specificano questo ruolo IAM come parte della configurazione dell'attività. Le autorizzazioni in questo ruolo consentono a Systems Manager di eseguire attività nelle finestre di manutenzione per conto tuo.

**Importante**  
In precedenza, la console Systems Manager offriva la possibilità di scegliere il ruolo collegato ai servizi IAM AWS gestito `AWSServiceRoleForAmazonSSM` da utilizzare come ruolo di manutenzione per le attività. Non è più consigliato utilizzare questo ruolo e la relativa policy associata, `AmazonSSMServiceRolePolicy`, per le attività della finestra di manutenzione. Se stai ancora utilizzando questo ruolo per le attività della finestra di manutenzione, ti invitiamo a interromperne l'utilizzo. Invece, crea il tuo ruolo IAM che abiliti la comunicazione tra Systems Manager e altri Servizi AWS quando vengono eseguite le attività della finestra di manutenzione.

In questa attività, eseguirai i comandi CLI per creare il ruolo di servizio delle finestre di manutenzione, aggiungendo il contenuto della policy dai file JSON che hai creato. 

**Crea un ruolo di servizio personalizzato per le finestre di manutenzione utilizzando AWS CLI**

1. Apri AWS CLI ed esegui il seguente comando nella directory in cui hai inserito `mw-role-custom-policy.json` e`mw-role-trust-policy.json`. Il comando crea un ruolo di servizio della finestra di manutenzione chiamato `my-maintenance-window-role`, a cui collega la *policy di fiducia*.

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

   ```
   aws iam create-role \
       --role-name "my-maintenance-window-role" \
       --assume-role-policy-document file://mw-role-trust-policy.json
   ```

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

   ```
   aws iam create-role ^
       --role-name "my-maintenance-window-role" ^
       --assume-role-policy-document file://mw-role-trust-policy.json
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "Role": {
           "AssumeRolePolicyDocument": {
               "Version": "2012-10-17", 		 	 	 		 	 	 
               "Statement": [
                   {
                       "Action": "sts:AssumeRole",
                       "Effect": "Allow",
                       "Principal": {
                           "Service": "ssm.amazonaws.com"
                       }
                   }
               ]
           },
           "RoleId": "AROAIIZKPBKS2LEXAMPLE",
           "CreateDate": "2024-08-19T03:40:17.373Z",
           "RoleName": "my-maintenance-window-role",
           "Path": "/",
           "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role"
       }
   }
   ```
**Nota**  
Annota i valori di `RoleName` e `Arn`. Dovrai includerli nel comando successivo.

1. Esegui il seguente comando per collegare la *policy gestita dal cliente* al ruolo. Sostituisci il *account-id* segnaposto con il tuo ID Account AWS 

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

   ```
   aws iam attach-role-policy \
       --role-name "my-maintenance-window-role" \
       --policy-arn "arn:aws:iam::account-id:policy/mw-role-custom-policy.json"
   ```

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

   ```
   aws iam attach-role-policy ^
       --role-name "my-maintenance-window-role" ^
       --policy-arn "arn:aws:iam::account-id:policy/mw-role-custom-policy.json"
   ```

------

1. Esegui il seguente comando per verificare che il ruolo sia stato creato e che la policy di fiducia sia stata collegata.

   ```
   aws iam get-role --role-name my-maintenance-window-role
   ```

   Questo comando restituisce informazioni simili alle seguenti:

   ```
   {
       "Role": {
           "Path": "/",
           "RoleName": "my-maintenance-window-role",
           "RoleId": "AROA123456789EXAMPLE",
           "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role",
           "CreateDate": "2024-08-19T14:13:32+00:00",
           "AssumeRolePolicyDocument": {
               "Version": "2012-10-17", 		 	 	 		 	 	 
               "Statement": [
                   {
                       "Effect": "Allow",
                       "Principal": {
                           "Service": "ssm.amazonaws.com"
                       },
                       "Action": "sts:AssumeRole"
                   }
               ]
           },
           "MaxSessionDuration": 3600,
           "RoleLastUsed": {
               "LastUsedDate": "2024-08-19T14:30:44+00:00",
               "Region": "us-east-2"
           }
       }
   }
   ```

1. Esegui il seguente comando per verificare che la policy gestita dal cliente sia stata collegata al ruolo.

   ```
   aws iam list-attached-role-policies --role-name my-maintenance-window-role
   ```

   Questo comando restituisce informazioni simili alle seguenti:

   ```
   {
       "AttachedPolicies": [
           {
               "PolicyName": "mw-role-custom-policy",
               "PolicyArn": "arn:aws:iam::123456789012:policy/mw-role-custom-policy"
           }
       ]
   }
   ```

## Attività 3: concedere le autorizzazioni a utenti specifici per registrare le attività della finestra di manutenzione utilizzando il AWS CLI
<a name="allow-maintenance-window-access-cli"></a>

La concessione agli utenti delle autorizzazioni di accesso al ruolo di servizio personalizzato per la finestra di manutenzione consente loro di utilizzarlo con le attività delle finestre di manutenzione. Si tratta di un'aggiunta alle autorizzazioni già concesse agli utenti per lavorare con i comandi dell'API di Systems Manager dello strumento Maintenance Windows. Questo ruolo IAM trasmette le autorizzazioni necessarie per eseguire un'attività della finestra di manutenzione. Di conseguenza, un utente non può registrare le attività con una finestra di manutenzione utilizzando il ruolo di servizio personalizzato senza la possibilità di passare queste autorizzazioni IAM.

Quando registri un'attività con una finestra di manutenzione, devi specificare un ruolo di servizio per eseguire le operazioni dell'attività effettiva. È il ruolo che assume il servizio durante l'esecuzione di attività per conto dell'utente. Prima di ciò, per registrare l'attività stessa, assegna la policy IAM `PassRole` a un'entità IAM (come un utente o un gruppo). Ciò consente all'entità IAM di specificare, nell'ambito della registrazione di tali attività nella finestra di manutenzione, il ruolo da utilizzare durante l'esecuzione delle attività. Per informazioni, consulta [Concedi autorizzazioni utente per il passaggio di un ruolo a Servizio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) nella *Guida per l'utente IAM*.

**Per configurare le autorizzazioni per gli utenti autorizzati a registrare le attività della finestra di manutenzione utilizzando AWS CLI**

1. Copia e incolla la seguente politica AWS Identity and Access Management (IAM) in un editor di testo e salvala con il nome e l'estensione di file seguenti:`mw-passrole-policy.json`.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::111122223333:role/my-maintenance-window-role"
           },
           {
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "arn:aws:iam::111122223333:role/"
           },
           {
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "arn:aws:iam::111122223333:role/aws-service-role/ssm.amazonaws.com/"
           }
       ]
   }
   ```

------

   Sostituiscila *my-maintenance-window-role* con il nome del ruolo della finestra di manutenzione personalizzata che hai creato in precedenza.

   Sostituiscilo *account-id* con l'ID del tuo Account AWS. L'aggiunta di questa autorizzazione per la risorsa `arn:aws:iam::account-id:role/` consente agli utenti del gruppo di visualizzare e scegliere tra i ruoli dei clienti nella console quando creano un'attività della finestra di manutenzione. L'aggiunta di questa autorizzazione per `arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/` consente agli utenti del gruppo di scegliere il ruolo Systems Manager collegato ai servizi nella console quando creano un'attività della finestra di manutenzione. 

1. Apri il AWS CLI.

1. Per concedere l'autorizzazione a un’entità IAM (utente o gruppo), esegui uno dei seguenti comandi.
   + **Per un'entità IAM:**

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

     ```
     aws iam put-user-policy \
         --user-name "user-name" \
         --policy-name "policy-name" \
         --policy-document file://path-to-document
     ```

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

     ```
     aws iam put-user-policy ^
         --user-name "user-name" ^
         --policy-name "policy-name" ^
         --policy-document file://path-to-document
     ```

------

     Per*user-name*, specificare l'utente che assegna le attività alle finestre di manutenzione. Per*policy-name*, specifica il nome che desideri utilizzare per identificare la politica, ad esempio**my-iam-passrole-policy**. Per*path-to-document*, specifica il percorso del file salvato nel passaggio 1. Ad esempio: `file://C:\Temp\mw-passrole-policy.json`
**Nota**  
Per concedere l'accesso di un utente alla registrazione delle attività delle finestre di manutenzione utilizzando la console di Systems Manager, è inoltre necessario assegnare la policy `AmazonSSMFullAccess` all'utente (o una policy IAM che fornisca un insieme più piccolo di autorizzazioni di accesso per Systems Manager che esegue le attività delle finestre di manutenzione). Per assegnare la policy `AmazonSSMFullAccess` all’utente, esegui questo comando.  

     ```
     aws iam attach-user-policy \
         --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" \
         --user-name "user-name"
     ```

     ```
     aws iam attach-user-policy ^
         --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" ^
         --user-name "user-name"
     ```
   + **Per un gruppo IAM:**

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

     ```
     aws iam put-group-policy \
         --group-name "group-name" \
         --policy-name "policy-name" \
         --policy-document file://path-to-document
     ```

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

     ```
     aws iam put-group-policy ^
         --group-name "group-name" ^
         --policy-name "policy-name" ^
         --policy-document file://path-to-document
     ```

------

     Per*group-name*, specifica il gruppo i cui membri assegnano le attività alle finestre di manutenzione. Per*policy-name*, specifica il nome che desideri utilizzare per identificare la politica, ad esempio**my-iam-passrole-policy**. Per*path-to-document*, specifica il percorso del file salvato nel passaggio 1. Ad esempio: `file://C:\Temp\mw-passrole-policy.json`
**Nota**  
Per concedere l'accesso ai membri di un gruppo per registrare le attività per le finestre di manutenzione utilizzando la console di Systems Manager, è anche necessario assegnare la policy `AmazonSSMFullAccess` al gruppo. Per assegnare questa policy al gruppo esegui il seguente comando.  

     ```
     aws iam attach-group-policy \
         --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" \
         --group-name "group-name"
     ```

     ```
     aws iam attach-group-policy ^
         --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" ^
         --group-name "group-name"
     ```

1. Esegui il seguente comando per verificare che la policy sia stata assegnata al gruppo.

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

   ```
   aws iam list-group-policies \
       --group-name "group-name"
   ```

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

   ```
   aws iam list-group-policies ^
       --group-name "group-name"
   ```

------

## Attività 4: Impedire agli utenti specificati di registrare le attività della finestra di manutenzione utilizzando AWS CLI
<a name="deny-maintenance-window-access-cli"></a>

Puoi negare l'`ssm:RegisterTaskWithMaintenanceWindow`autorizzazione agli utenti della tua azienda Account AWS che non desideri registrare le attività nelle finestre di manutenzione. Ciò fornisce un ulteriore livello di prevenzione per gli utenti che non devono registrare le attività della finestra di manutenzione.

A seconda del fatto che l'autorizzazione `ssm:RegisterTaskWithMaintenanceWindow` non venga assegnata a uno specifico utente o a un gruppo, utilizzare una delle procedure seguenti per impedire agli utenti di registrare attività con una finestra di manutenzione. 

**Per configurare le autorizzazioni per gli utenti a cui non è consentito registrare le attività delle finestre di manutenzione utilizzando il AWS CLI**

1. Copia e incolla la seguente policy IAM in un editor di testo e salvala con il seguente nome ed estensione del file: **deny-mw-tasks-policy.json**.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "ssm:RegisterTaskWithMaintenanceWindow",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Aprire il. AWS CLI

1. Per concedere l'autorizzazione a un’entità IAM (utente o gruppo), esegui uno dei seguenti comandi.
   + **Per un utente:**

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

     ```
     aws iam put-user-policy \
         --user-name "user-name" \
         --policy-name "policy-name" \
         --policy-document file://path-to-document
     ```

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

     ```
     aws iam put-user-policy ^
         --user-name "user-name" ^
         --policy-name "policy-name" ^
         --policy-document file://path-to-document
     ```

------

     Per*user-name*, specificare l'utente a cui impedire l'assegnazione di attività alle finestre di manutenzione. Per*policy-name*, specifica il nome che desideri utilizzare per identificare la politica, ad esempio**my-deny-mw-tasks-policy**. Per*path-to-document*, specifica il percorso del file salvato nel passaggio 1. Ad esempio: `file://C:\Temp\deny-mw-tasks-policy.json`
   + **Per un gruppo:**

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

     ```
     aws iam put-group-policy \
         --group-name "group-name" \
         --policy-name "policy-name" \
         --policy-document file://path-to-document
     ```

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

     ```
     aws iam put-group-policy ^
         --group-name "group-name" ^
         --policy-name "policy-name" ^
         --policy-document file://path-to-document
     ```

------

     Per*group-name*, specifica il gruppo a cui impedire l'assegnazione di attività alle finestre di manutenzione. Per*policy-name*, specifica il nome che desideri utilizzare per identificare la politica, ad esempio**my-deny-mw-tasks-policy**. Per*path-to-document*, specifica il percorso del file salvato nel passaggio 1. Ad esempio: `file://C:\Temp\deny-mw-tasks-policy.json`

1. Esegui il seguente comando per verificare che la policy sia stata assegnata al gruppo.

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

   ```
   aws iam list-group-policies \
       --group-name "group-name"
   ```

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

   ```
   aws iam list-group-policies ^
       --group-name "group-name"
   ```

------

# Crea e gestisci finestre di manutenzione utilizzando la console
<a name="sysman-maintenance-working"></a>

Questa sezione descrive come creare, configurare, aggiornare ed eliminare le finestre di manutenzione utilizzando la AWS Systems Manager console. Questa sezione fornisce anche informazioni sulla gestione delle destinazioni e delle attività di una finestra di manutenzione.

**Importante**  
Consigliamo di iniziare creando e configurando finestre di manutenzione in un ambiente di test. 

**Prima di iniziare**  
Prima di creare una finestra di manutenzione, è necessario configurare l'accesso aMaintenance Windows, uno strumento in AWS Systems Manager. Per ulteriori informazioni, consulta [Configurazione di Maintenance Windows](setting-up-maintenance-windows.md).

**Topics**
+ [Creare una finestra di manutenzione utilizzando la console](sysman-maintenance-create-mw.md)
+ [Assegnazione di destinazioni a una finestra di manutenzione utilizzando la console](sysman-maintenance-assign-targets.md)
+ [Assegnazione di attività a una finestra di manutenzione utilizzando la console](sysman-maintenance-assign-tasks.md)
+ [Disabilitare o abilitare una finestra di manutenzione utilizzando la console](sysman-maintenance-disable.md)
+ [Aggiorna o elimina le risorse della finestra di manutenzione utilizzando la console](sysman-maintenance-update.md)

# Creare una finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-create-mw"></a>

In questa procedura si crea una finestra di manutenzione in Maintenance Windows, uno strumento di AWS Systems Manager. È possibile specificare le opzioni di base, ad esempio nome, pianificazione e durata. Nelle fasi successive potrai scegliere le destinazioni, o risorse, aggiornate dalla finestra e le attività svolte quando viene eseguita la finestra di manutenzione.

**Nota**  
Per una spiegazione di come le diverse opzioni relative alla pianificazione per le finestre di manutenzione siano tra loro correlate, consulta [Opzioni di pianificazione e periodo attivo per la finestra di manutenzione](maintenance-windows-schedule-options.md).  
Per ulteriori informazioni sull'utilizzo dell'opzione `--schedule`, consulta [Riferimento: espressioni Cron e della frequenza per Systems Manager](reference-cron-and-rate-expressions.md).

**Per creare una finestra di manutenzione utilizzando la console**

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 **Maintenance Windows**. 

1. Scegli **Crea finestra di manutenzione**.

1. Nel campo **Name (Nome)**, inserire un nome descrittivo che aiuti a identificare questa finestra di manutenzione.

1. (Facoltativo) In **Description** (Descrizione), inserisci una descrizione per identificare come verrà utilizzata questa finestra di manutenzione.

1. (Facoltativo) Per consentire a un'attività di una finestra di manutenzione di essere eseguita su nodi gestiti, anche se tali nodi non sono stati registrati come destinazioni, scegliere **Allow unregistered targets** (Consenti destinazioni non registrate). 

   Se si sceglie questa opzione, è possibile scegliere i nodi non registrati (per ID nodo) quando si registra un'attività sulla finestra di manutenzione. 

   Se non si sceglie questa opzione, è necessario scegliere destinazioni precedentemente registrate quando si registra un'attività sulla finestra di manutenzione.

1. Specifica una pianificazione per la finestra di manutenzione utilizzando una delle tre opzioni di pianificazione.

   Per informazioni sulla creazione di cron/rate espressioni, vedere[Riferimento: espressioni Cron e della frequenza per Systems Manager](reference-cron-and-rate-expressions.md).

1. Per **Durata**, inserisci il numero di ore di esecuzione della finestra di manutenzione. Il valore specificato determina l'ora di fine specifica per la finestra di manutenzione in base all'ora di inizio. Nessuna attività della finestra di manutenzione può essere avviata dopo l'ora di fine risultante meno il numero di ore specificato per **Arresta l'inizializzazione di attività** nella fase successiva.

   Ad esempio, se la finestra di manutenzione inizia alle 15:00, la durata è di tre ore e il valore **Arresta l'inizializzazione di attività** è un'ora, nessuna attività della finestra di manutenzione può iniziare dopo le 17:00.

1. In **Stop initiating tasks (Interrompi l'avvio delle attività)**, inserire il numero di ore prima del termine della finestra di manutenzione a partire dalle quali il sistema deve interrompere la pianificazione dell'esecuzione di nuove attività.

1. (Facoltativo) In **Data di inizio finestra**, specifica una data e un'ora nel formato ISO-8601 Extended che indichi il momento dell'attivazione della finestra di manutenzione. In questo modo è possibile ritardare l'attivazione della finestra di manutenzione fino alla data futura indicata.
**Nota**  
Non è possibile specificare una data e un'ora di inizio passate.

1. (Facoltativo) In **Data di fine finestra**, specifica una data e un'ora nel formato ISO-8601 Extended che indichi il momento della disattivazione della finestra di manutenzione. In questo modo è possibile impostare una data e un'ora nel futuro in cui la finestra di manutenzione non sarà più in esecuzione.

1. (Facoltativo) In **Schedule timezone** (Pianifica fuso orario), specificare il fuso orario da utilizzare come base quando vengono eseguite le finestre di manutenzione pianificate, nel formato IANA (Internet Assigned Numbers Authority). Ad esempio: "America/Los\$1Angeles", "etc/UTC", or "Asia/Seoul».

   Per ulteriori informazioni sui formati validi, consulta il [Database dei fusi orari](https://www.iana.org/time-zones) sul sito web IANA.

1. (Facoltativo) In **Pianifica offset**, inserisci il numero di giorni di attesa dopo la data e l'ora specificate da un'espressione Cron o della frequenza prima dell'esecuzione della finestra di manutenzione. È possibile specificare da uno a sei giorni.
**Nota**  
Questa opzione è disponibile solo se è stata specificata una pianificazione immettendo manualmente un'espressione Cron o della frequenza.

1. (Facoltativo) Nell'area **Gestisci tag**, applica una o più name/value coppie di chiavi di tag alla finestra di manutenzione.

   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 applicare un tag a una finestra di manutenzione per identificare il tipo di attività eseguito, i tipi di destinazioni e l'ambiente in cui viene eseguita. In questo caso, puoi specificare le seguenti name/value coppie di chiavi:
   + `Key=TaskType,Value=AgentUpdate`
   + `Key=OS,Value=Windows`
   + `Key=Environment,Value=Production`

1. Scegli **Crea finestra di manutenzione**. Il sistema reindirizza alla pagina della finestra di manutenzione. Lo stato della finestra di manutenzione appena creata è **Enabled (Abilitata)**.

# Assegnazione di destinazioni a una finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-assign-targets"></a>

In questa procedura si registra una destinazione con una finestra di manutenzione. In altre parole, si specificano le risorse su cui la finestra di manutenzione esegue operazioni.

**Nota**  
Se una singola attività della finestra di manutenzione è registrata con più destinazioni, le relative chiamate di attività vengono eseguite in sequenza e non in parallelo. Se l'attività deve essere eseguita su più destinazioni contemporaneamente, registrare un'attività per ogni destinazione singolarmente e assegnare a ciascuna attività lo stesso livello di priorità.

**Per assegnare destinazioni a una finestra di manutenzione utilizzando la console**

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 **Maintenance Windows**. 

1. Nell'elenco delle finestre di manutenzione, scegliere la finestra di manutenzione cui aggiungere le destinazioni.

1. Scegliere **Actions (Operazioni)** e successivamente **Register targets (Registra destinazioni)**.

1. (Facoltativo) In **Target name (Nome destinazione)**, inserire un nome per le destinazioni.

1. (Facoltativo) In **Descrizione**, immetti una descrizione.

1. (Facoltativo) Per **informazioni sul proprietario**, specifica le informazioni da includere in qualsiasi EventBridge evento Amazon generato durante l'esecuzione di attività per questi obiettivi in questa finestra di manutenzione.

   Per informazioni sull'utilizzo per EventBridge monitorare gli eventi di Systems Manager, vedere[Monitoraggio degli eventi di Systems Manager con Amazon EventBridge](monitoring-eventbridge-events.md).

1. Nell'area **Targets (Destinazioni)**, scegliere una delle opzioni descritte nella tabella seguente.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/sysman-maintenance-assign-targets.html)

1. Scegli **Registra destinazione**.

Se desideri assegnare più destinazioni a questa finestra di manutenzione, scegli la scheda **Targets (Destinazioni)** e quindi seleziona **Register target (Registra destinazione)**. Con questa opzione, è possibile scegliere diverse modalità di indicazione delle destinazioni. Ad esempio, se i nodi di destinazione sono stati in precedenza identificati per ID istanza, è possibile registrare nuove destinazioni e nodi di destinazione specificando i tag applicati a nodi gestiti o scegliendo tipi di risorse da un gruppo di risorse.

# Assegnazione di attività a una finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-assign-tasks"></a>

In questa procedura si aggiunge un'attività a una finestra di manutenzione. Le attività sono le operazioni eseguite quando viene eseguita una finestra di manutenzione.

I seguenti quattro tipi di attività possono essere aggiunti a una finestra di manutenzione:
+ Comandi AWS Systems Manager Run Command
+ Flussi di lavoro di automazione di Systems Manager
+ AWS Step Functions compiti
+ AWS Lambda funzioni
**Importante**  
La policy IAM per Maintenance Windows prevede che il nome (o l'alias) della funzione Lambda sia associato al prefisso `SSM`. Prima di procedere alla registrazione di questo tipo di attività, aggiornane il nome AWS Lambda in include`SSM`. Ad esempio, se il nome della funzione Lambda è `MyLambdaFunction`, modifica tale nome in `SSMMyLambdaFunction`.

**Per assegnare task a una finestra di manutenzione**

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 **Maintenance Windows**. 

1. Scegliere una finestra di manutenzione dall'elenco.

1. Scegliere **Actions (Operazioni)**, quindi scegliere l'opzione per il tipo di attività che si desidera registrare con la finestra di manutenzione.
   + **Register run command task (Registra attività di esecuzione comandi)**
   + **Register Automation task (Registra attività di automazione)**
   + **Register Lambda task (Registra attività Lambda)**
   + **Register Step Functions task (Registra attività Step Functions)**
**Nota**  
Le attività della finestra di manutenzione supportano solo i flussi di lavoro delle macchine a stati standard di Step Functions. Non supportano i flussi di lavoro delle macchine a stati express. Per informazioni sui tipi di flusso di lavoro delle macchine a stati, consulta [Standard vs. Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html) (Differenze flussi di lavoro standard ed express) nella *Guida per gli sviluppatori di AWS Step Functions *.

1. (Facoltativo) In **Nome**, immetti un nome per l'attività.

1. (Facoltativo) In **Descrizione**, immetti una descrizione.

1. Per **Nuovo cutoff dell'invocazione delle attività**, se non si desidera che vengano avviate nuove invocazioni di attività dopo il raggiungimento del tempo limite della finestra di manutenzione, scegliere **Abilitato**.

   Quando questa opzione è *non* abilitato, l'attività continua a funzionare quando viene raggiunto il tempo limite e avvia nuove invocazioni di attività fino al completamento. 
**Nota**  
Lo stato delle attività che non vengono completate quando si abilita questa opzione è `TIMED_OUT`. 

1. Per questo passaggio, scegli la scheda per il tipo di attività selezionato.

------
#### [ Run Command ]

   1. Nell'elenco **Command document (Documento di comando)** , scegli il documento SSM (documento di comando di Systems Manager) che definisce le attività da eseguire.

   1. In **Document version (Versione del documento)**, scegliere la versione del documento da utilizzare.

   1. In **Task priority (Priorità attività)**, specificare una priorità per questa attività. Zero (`0`) indica la priorità più elevata. Le attività di una finestra di manutenzione vengono pianificate in ordine di priorità con le attività che hanno la stessa priorità pianificate in parallelo.

------
#### [ Automation ]

   1.  Nell'elenco **Automation document (Documento di automazione)**, scegli il runbook Automation che definisce le attività da eseguire.

   1. In **Document version (Versione del documento)**, scegliere la versione del runbook da utilizzare.

   1. In **Task priority (Priorità attività)**, specificare una priorità per questa attività. Zero (`0`) indica la priorità più elevata. Le attività di una finestra di manutenzione vengono pianificate in ordine di priorità con le attività che hanno la stessa priorità pianificate in parallelo.

------
#### [ Lambda ]

   1. Nell'area **Lambda parameters (Parametri Lambda)**, scegli una funzione Lambda dall'elenco.

   1. (Facoltativo) Fornisci un contenuto per l'elemento **Payload** (Payload), **Client Context** (Contesto client) oppure **Qualifier** (Qualificatore) che desideri includere.
**Nota**  
In alcuni casi, è possibile utilizzare uno *pseudo parametro* come parte del valore `Payload`. Quando poi viene eseguita, l'operazione della finestra di manutenzione trasmette i valori corretti invece dei segnaposto degli pseudoparametri. Per informazioni, consulta [Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione](maintenance-window-tasks-pseudo-parameters.md).

   1. In **Task priority (Priorità attività)**, specificare una priorità per questa attività. Zero (`0`) indica la priorità più elevata. Le attività di una finestra di manutenzione vengono pianificate in ordine di priorità con le attività che hanno la stessa priorità pianificate in parallelo.

------
#### [ Step Functions ]

   1. Nell'area **Step Functions parameters (Parametri di Step Functions)**, scegli una macchina a stati dall'elenco.

   1. (Facoltativo) Fornisci un nome per l'esecuzione della macchina a stati e un contenuto per l'elemento **Input** che desideri includere.
**Nota**  
In alcuni casi, è possibile utilizzare uno *pseudo parametro* come parte del valore `Input`. Quando poi viene eseguita, l'operazione della finestra di manutenzione trasmette i valori corretti invece dei segnaposto degli pseudoparametri. Per informazioni, consulta [Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione](maintenance-window-tasks-pseudo-parameters.md).

   1. In **Task priority (Priorità attività)**, specificare una priorità per questa attività. Zero (`0`) indica la priorità più elevata. Le attività di una finestra di manutenzione vengono pianificate in ordine di priorità con le attività che hanno la stessa priorità pianificate in parallelo.

------

1. Nell'area **Targets (Destinazioni)**, scegli una delle seguenti opzioni:
   + **Selezione di gruppi di destinazione registrati**: seleziona una o più destinazioni della finestra di manutenzione registrate con la finestra di manutenzione corrente.
   + **Selezione di destinazioni non registrate**: scegli le risorse disponibili una per una come destinazioni per l'attività.

     Se un nodo Amazon EC2 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.
   + **Target attività non richiesto**: i target per l'attività potrebbero essere già specificati in altre funzioni per tutte le attività di tipo Run Command.

     Specifica uno o più target per le attività di tipo Run Command della finestra di manutenzione. A seconda dell'attività, gli obiettivi sono facoltativi per altri tipi di attività della finestra di manutenzione (Automazione AWS Lambda, e AWS Step Functions). Per ulteriori informazioni sull'esecuzione di attività che non specificano destinazioni, consulta [Registrazione delle attività della finestra di manutenzione senza destinazioni](maintenance-windows-targetless-tasks.md).
**Nota**  
In molti casi, non devi specificare esplicitamente una destinazione per un'attività di automazione. Supponiamo ad esempio che si sta creando un'attività di automazione per aggiornare un Amazon Machine Image (AMI) per Linux tramite il runbook `AWS-UpdateLinuxAmi`. Quando l'attività viene eseguita, AMI viene aggiornato con gli ultimi pacchetti di distribuzione Linux disponibili e il software Amazon. Nuove istanze create da AMI hanno già questi aggiornamenti installati. Perché l'ID dell'AMI da aggiornare è specificato nei parametri di input per il runbook, non è necessario specificare nuovamente una destinazione nel processo della finestra di manutenzione.

1. *Solo attività di automazione:*

   Nell'area **Input parameters** (Parametri di input), fornisci i valori per tutti i parametri obbligatori o facoltativi necessari per eseguire l'attività.
**Nota**  
In alcuni casi, è possibile utilizzare uno *pseudo parametro* per determinati valori dei parametri di input. Quando poi viene eseguita, l'operazione della finestra di manutenzione trasmette i valori corretti invece dei segnaposto degli pseudoparametri. Per informazioni, consulta [Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione](maintenance-window-tasks-pseudo-parameters.md).

1. In **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 da utilizzare 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) Per il **Ruolo di servizio IAM**, scegli un ruolo affinché Systems Manager conceda le autorizzazioni durante l'esecuzione di attività della finestra di manutenzione.

   Se non specifichi un ARN del ruolo di servizio, Systems Manager utilizza un ruolo collegato al servizio nell’account. Questo ruolo non è elencato nel menu a discesa. Se nell'account non esiste un ruolo collegato al servizio appropriato per Systems Manager, questo viene creato quando l'attività viene registrata correttamente. 
**Nota**  
Per migliorare il livello di sicurezza, consigliamo vivamente di creare una policy personalizzata e un ruolo di servizio personalizzato per l'esecuzione delle attività della finestra di manutenzione. C'è la possibilità di creare la policy per fornire solo le autorizzazioni necessarie per le specifiche attività della finestra di manutenzione. Per ulteriori informazioni, consulta [Configurazione di Maintenance Windows](setting-up-maintenance-windows.md).

1. *Solo attività Run Command:*

   (Facoltativo) Per **Output options** (Opzioni di output) eseguire una delle seguenti operazioni:
   + Seleziona la casella di controllo **Enable writing to S3 (Abilita scrittura in S3)** per salvare l'output del comando in un file. Digita i nomi del bucket e del prefisso (cartella) nelle caselle.
   + Seleziona la casella **CloudWatch di controllo dell'output** per scrivere l'output completo su Amazon CloudWatch Logs. Inserisci il nome di un gruppo di log di CloudWatch Logs.
**Nota**  
Le autorizzazioni che garantiscono la possibilità di scrivere dati su un bucket S3 o su CloudWatch Logs sono quelle del profilo di istanza assegnato al nodo, non quelle dell'utente IAM che esegue questa attività. Per ulteriori informazioni, consulta la pagina [Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager](setup-instance-permissions.md). Inoltre, se il bucket o il gruppo di log S3 specificato si trova in un altro gruppo Account AWS, verifica che il profilo di istanza associato al nodo disponga delle autorizzazioni necessarie per scrivere su quel bucket.

1. *Solo attività Run Command:*

   Se si desidera che vengano inviate notifiche sullo stato dell'esecuzione del comando, nella sezione **SNS notifications (Notifiche SNS)** selezionare la casella di controllo **Enable SNS notifications (Abilita notifiche SNS)**.

   Per ulteriori informazioni, sulla configurazione delle notifiche Amazon SNS per Run Command consulta [Monitoraggio delle modifiche di stato di Systems Manager utilizzando le notifiche Amazon SNS](monitoring-sns-notifications.md).

1. *Solo attività Run Command:*

   Nell'area **Parameters (Parametri)**, specifica i parametri per il documento. 
**Nota**  
In alcuni casi, è possibile utilizzare uno *pseudo parametro* per determinati valori dei parametri di input. Quando poi viene eseguita, l'operazione della finestra di manutenzione trasmette i valori corretti invece dei segnaposto degli pseudoparametri. Per informazioni, consulta [Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione](maintenance-window-tasks-pseudo-parameters.md).

1. *Solo attività Automation e Run Command:*

   (Facoltativo) Nell'area degli **CloudWatch allarmi**, per **Nome dell'allarme**, scegliete un CloudWatch allarme esistente da applicare all'attività di monitoraggio. 

   Se l'allarme si attiva, l'attività viene interrotta.
**Nota**  
Per allegare un CloudWatch allarme alla tua attività, il responsabile IAM che esegue l'attività deve disporre dell'autorizzazione per l'`iam:createServiceLinkedRole`azione. Per ulteriori informazioni sugli CloudWatch allarmi, consulta [Usare gli CloudWatch allarmi Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html).

1. A seconda del tipo di task, scegli una delle seguenti opzioni:
   + **Register run command task (Registra attività di esecuzione comandi)**
   + **Register Automation task (Registra attività di automazione)**
   + **Register Lambda task (Registra attività Lambda)**
   + **Register Step Functions task (Registra attività Step Functions)**

# Disabilitare o abilitare una finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-disable"></a>

È possibile disabilitare o abilitare una finestra di manutenzione in Maintenance Windows, uno strumento di AWS Systems Manager. È possibile scegliere una finestra di manutenzione alla volta per disabilitare o abilitare l'esecuzione della finestra di manutenzione. È possibile inoltre selezionare più finestre di manutenzione o tutte le finestre di manutenzione da abilitare e disabilitare.

Questa sezione descrive come disabilitare o abilitare una finestra di manutenzione utilizzando la console di Systems Manager. Per esempi di come eseguire questa operazione utilizzando il AWS Command Line Interface (AWS CLI), vedere[Tutorial: Aggiornare una finestra di manutenzione utilizzando il AWS CLI](maintenance-windows-cli-tutorials-update.md). 

**Topics**
+ [Disabilitare una finestra di manutenzione utilizzando la console](#sysman-maintenance-disable-mw)
+ [Abilitare una finestra di manutenzione utilizzando la console](#sysman-maintenance-enable-mw)

## Disabilitare una finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-disable-mw"></a>

È possibile disabilitare una finestra di manutenzione per sospendere un'attività per un periodo specificato e tale finestra rimarrà disponibile per essere riattivata in seguito.

**Disabilitare una finestra di manutenzione**

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 **Maintenance Windows**. 

1. Utilizzando la casella di controllo accanto alla finestra di manutenzione che desideri disabilitare, seleziona una o più finestre di manutenzione.

1. Scegli **Disabilita finestra di manutenzione** nel menu **Operazioni**. Il sistema richiede di confermare le operazioni. 

## Abilitare una finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-enable-mw"></a>

È possibile abilitare una finestra di manutenzione per riprendere un'attività.

**Nota**  
Se la finestra di manutenzione utilizza una pianificazione tariffaria e la data di inizio è attualmente impostata su una data e un'ora precedenti, la data e l'ora correnti vengono utilizzate come data di inizio della finestra di manutenzione. È possibile modificare la data di inizio della finestra di manutenzione prima o dopo averla abilitata. Per informazioni, consulta [Aggiorna o elimina le risorse della finestra di manutenzione utilizzando la console](sysman-maintenance-update.md).

**Per abilitare una finestra di manutenzione**

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 **Maintenance Windows**. 

1. Seleziona la casella di controllo accanto alla finestra di manutenzione per abilitarla.

1. Scegli **Operazioni, Abilita finestra di manutenzione**. Il sistema richiede di confermare le operazioni. 

# Aggiorna o elimina le risorse della finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-update"></a>

È possibile aggiornare o eliminare una finestra di manutenzione in Maintenance Windows, uno strumento di AWS Systems Manager. È inoltre possibile aggiornare o eliminare le destinazioni o le attività di una finestra di manutenzione. Se si modificano i dettagli di una finestra di manutenzione, è possibile modificarne la pianificazione, le destinazioni e le attività. È inoltre possibile specificare nomi e descrizioni per finestre, destinazioni e attività, per permettere di comprendere meglio il loro scopo e rendere più semplice la gestione della coda delle finestre.

Questa sezione descrive come aggiornare o eliminare una finestra di manutenzione, destinazioni e attività utilizzando la console di Systems Manager. Per esempi su come eseguire questa operazione utilizzando l' AWS Command Line Interface (AWS CLI), consulta [Tutorial: Aggiornare una finestra di manutenzione utilizzando il AWS CLI](maintenance-windows-cli-tutorials-update.md). 

**Topics**
+ [Aggiornamento o eliminazione di una finestra di manutenzione utilizzando la console](#sysman-maintenance-update-mw)
+ [Aggiornamento o annullamento della registrazione delle destinazioni della finestra di manutenzione utilizzando la console](#sysman-maintenance-update-target)
+ [Aggiornamento o annullamento della registrazione delle attività di una finestra di manutenzione utilizzando la console](#sysman-maintenance-update-tasks)

## Aggiornamento o eliminazione di una finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-update-mw"></a>

È possibile aggiornare una finestra di manutenzione in modo da modificarne il nome, la descrizione e la pianificazione, nonché la possibilità di consentire le destinazioni non registrate.

**Per aggiornare o eliminare una finestra di manutenzione**

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 **Maintenance Windows**. 

1. Selezionare il pulsante accanto alla finestra di manutenzione che si desidera aggiornare o eliminare ed eseguire una delle operazioni seguenti:
   + Scegli **Elimina**. Il sistema richiede di confermare le operazioni. 
   + Scegli **Modifica**. Nella pagina **Modifica finestra di manutenzione**, modifica i valori e le opzioni desiderate, quindi scegli **Salva modifiche**.

     Per informazioni sulle scelte di configurazione disponibili, consulta [Creare una finestra di manutenzione utilizzando la console](sysman-maintenance-create-mw.md).

## Aggiornamento o annullamento della registrazione delle destinazioni della finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-update-target"></a>

È possibile aggiornare o annullare la registrazione delle destinazioni di una finestra di manutenzione. Se si sceglie di aggiornare una destinazione di una finestra di manutenzione, è possibile specificare nuovi nome, descrizione e proprietario della destinazione. È anche possibile scegliere diverse destinazioni. 

**Per aggiornare o eliminare le destinazioni di una finestra di manutenzione**

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 **Maintenance Windows**. 

1. Scegliere il nome della finestra di manutenzione che si desidera aggiornare, scegliere la scheda **Destinazioni**, quindi eseguire una delle operazioni seguenti:
   + Per aggiornare le destinazioni, seleziona il pulsante accanto alla destinazione da aggiornare, quindi scegli **Modifica**.
   + Per annullare la registrazione delle destinazioni, selezionare il pulsante accanto alla destinazione di cui annullare la registrazione, quindi scegliere **Annulla la registrazione della destinazione**. Nella finestra di dialogo **Annulla registrazione della destinazione delle finestre di manutenzione** scegli **Annulla registrazione**.

## Aggiornamento o annullamento della registrazione delle attività di una finestra di manutenzione utilizzando la console
<a name="sysman-maintenance-update-tasks"></a>

È possibile aggiornare o annullare la registrazione delle attività di una finestra di manutenzione. Se si sceglie l'aggiornamento, è possibile specificare nuovi nome, descrizione e proprietario dell'attività. Per le attività Run Command e di automazione, è possibile scegliere un documento SSM diverso per le attività. Non è possibile, tuttavia, modificare un'attività per modificarne il tipo. Ad esempio, se si crea un'attività di automazione, non è possibile modificare tale attività e modificarla in un'attività Run Command. 

**Per aggiornare o eliminare le attività di una finestra di manutenzione utilizzando la console**

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 **Maintenance Windows**. 

1. Scegliere il nome della finestra di manutenzione che si desidera aggiornare.

1. Scegli la scheda **Attività**, quindi seleziona il pulsante accanto all'attività da aggiornare.

1. Esegui una delle seguenti operazioni:
   + Per annullare la registrazione di un'attività, scegli **Annullamento registrazione attività**.
   + Per modificare l'attività, scegliere **Modifica**. Modificare i valori e le opzioni desiderate, quindi scegliere **Modifica attività**.

# Tutorial
<a name="maintenance-windows-tutorials"></a>

I tutorial mostrano come eseguire le attività comuni quando si utilizzano le finestre di manutenzione.

**Completamento dei prerequisiti**  
Prima di eseguire questi tutorial, completare le attività seguenti.
+ **Configurazione della AWS CLI nel computer locale**: prima di poter eseguire i comandi della AWS CLI, è necessario installare e configurare la CLI nel computer locale. Per informazioni, consulta le pagine [Installazione o aggiornamento della versione più recente di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Installazione di AWS Strumenti per PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).
+ **Verifica di ruoli e autorizzazioni a livello di finestra di manutenzione**: un amministratore AWS nell'account in uso deve concederti le autorizzazioni AWS Identity and Access Management (IAM) necessarie per la gestione delle finestre di manutenzione mediante la CLI. Per informazioni, consultare [Configurazione di Maintenance Windows](setting-up-maintenance-windows.md).
+ **Creazione o configurazione di un'istanza compatibile con Systems Manager**: per poter completare i tutorial, è necessario disporre di almeno un'istanza Amazon Elastic Compute Cloud (Amazon EC2) configurata per l'uso con Systems Manager. Ciò significa che SSM Agent è installato sull'istanza e un profilo dell'istanza IAM per Systems Manager è collegato all'istanza. 

  Ti consigliamo di avviare un'istanza da un'Amazon Machine Image (AMI) gestita da AWS con l'agente preinstallato. Per ulteriori informazioni, consulta [Trova AMIs con SSM Agent preinstallato](ami-preinstalled-agent.md).

  Per informazioni su come installare SSM Agent su un'istanza, consulta i seguenti argomenti:
  + [Installazione e disinstallazione manuale di SSM Agent su istanze EC2 per Windows Server](manually-install-ssm-agent-windows.md)
  + [Installazione e disinstallazione manuale di SSM Agent su istanze EC2 per Linux](manually-install-ssm-agent-linux.md)

  Per informazioni su come configurare le autorizzazioni IAM per Systems Manager per l'istanza in uso, consulta la pagina [Configurazione delle autorizzazioni dell'istanza richieste per Systems Manager](setup-instance-permissions.md).
+ **Creazione delle risorse aggiuntive necessarie**: Run Command, uno strumento di Systems Manager, include diverse attività che non richiedono la creazione di risorse aggiuntive rispetto a quelle elencate in questo argomento sui prerequisiti. Per questo motivo, forniamo un task Run Command semplice che puoi utilizzare la prima volta che esegui i tutorial. È inoltre necessario disporre di un'istanza EC2 configurata per l'uso con Systems Manager, come descritto in precedenza in questo argomento. Dopo aver configurato l'istanza, potrai registrare un task Run Command semplice. 

  Lo strumento Maintenance Windows di Systems Manager supporta l'esecuzione dei quattro tipi di attività seguenti: 
  + Comandi Run Command
  + Flussi di lavoro di automazione di Systems Manager
  + Funzioni AWS Lambda
  + Processi AWS Step Functions

  In linea generale, se un task della finestra di manutenzione che si desidera eseguire richiede risorse aggiuntive, è necessario crearle prima. Ad esempio, se si desidera che una finestra di manutenzione esegua una funzione di AWS Lambda, è necessario creare la funzione di Lambda prima di iniziare. Per un'attività Run Command, è necessario creare il bucket S3 in cui salvare l'output del comando (se si prevede di farlo) e così via.

**Topics**
+ [Tutorial: creazione e gestione delle finestre di manutenzione utilizzando AWS CLI](maintenance-window-tutorial-cli.md)
+ [Tutorial: creazione di una finestra di manutenzione per l'applicazione di patch tramite console](maintenance-window-tutorial-patching.md)

# Tutorial: creazione e gestione delle finestre di manutenzione utilizzando AWS CLI
<a name="maintenance-window-tutorial-cli"></a>

Questa sezione include tutorial, che consentono di imparare a utilizzare la AWS Command Line Interface (AWS CLI) per eseguire le operazioni seguenti:
+ Creazione e configurazione di una finestra di manutenzione
+ Visualizzazione delle informazioni sulle finestre di manutenzione
+ Visualizzazione delle informazioni sui task relativi alle finestre di manutenzione e sulla loro esecuzione
+ Aggiornamento di una finestra di manutenzione
+ Eliminazione di una finestra di manutenzione

**Tieni traccia delle risorse IDs**  
Man mano che completi le attività di questi AWS CLI tutorial, tieni traccia delle risorse IDs generate dai comandi che esegui. Puoi utilizzare molti di questi ID come input per i comandi successivi. Ad esempio, quando crei la finestra di manutenzione, il sistema fornisce il relativo ID nel seguente formato.

```
{
   "WindowId":"mw-0c50858d01EXAMPLE"
}
```

Prendi nota dei seguenti comandi generati dal sistema, IDs poiché i tutorial di questa sezione li utilizzano:
+ `WindowId`
+ `WindowTargetId`
+ `WindowTaskId`
+ `WindowExecutionId`
+ `TaskExecutionId`
+ `InvocationId`
+ `ExecutionId`

Inoltre, devi disporre dell'ID dell'istanza EC2 che prevedi di utilizzare nei tutorial. Ad esempio: `i-02573cafcfEXAMPLE`

**Topics**
+ [Tutorial: Creare e configurare una finestra di manutenzione utilizzando il AWS CLI](maintenance-windows-cli-tutorials-create.md)
+ [Tutorial: Visualizza le informazioni sulle finestre di manutenzione utilizzando il AWS CLI](maintenance-windows-cli-tutorials-describe.md)
+ [Tutorial: Visualizza informazioni sulle attività e sulle esecuzioni delle attività utilizzando il AWS CLI](mw-cli-tutorial-task-info.md)
+ [Tutorial: Aggiornare una finestra di manutenzione utilizzando il AWS CLI](maintenance-windows-cli-tutorials-update.md)
+ [Tutorial: Eliminare una finestra di manutenzione utilizzando il AWS CLI](mw-cli-tutorial-delete-mw.md)

# Tutorial: Creare e configurare una finestra di manutenzione utilizzando il AWS CLI
<a name="maintenance-windows-cli-tutorials-create"></a>

Questo tutorial illustra come utilizzare il AWS Command Line Interface (AWS CLI) per creare e configurare una finestra di manutenzione, i relativi obiettivi e le relative attività. L'esecuzione del tutorial si articola in semplici passi. È infatti possibile creare una singola finestra di manutenzione, identificare una singola destinazione e impostare l'esecuzione di un'operazione semplice da parte della finestra di manutenzione. Durante l'intera procedura verranno visualizzate altre informazioni che potrai usare per ottenere scenari più complessi.

Mentre segui i passaggi di questo tutorial, sostituisci i valori nel *red* testo in corsivo con le tue opzioni e. IDs Ad esempio, sostituisci l'ID della finestra di manutenzione *mw-0c50858d01EXAMPLE* e l'ID dell'istanza *i-02573cafcfEXAMPLE* con l'ID IDs delle risorse che crei.

**Topics**
+ [Fase 1: Creare la finestra di manutenzione utilizzando AWS CLI](mw-cli-tutorial-create-mw.md)
+ [Fase 2: Registrare un nodo di destinazione nella finestra di manutenzione utilizzando il AWS CLI](mw-cli-tutorial-targets.md)
+ [Fase 3: Registrare un'operazione nella finestra di manutenzione utilizzando il AWS CLI](mw-cli-tutorial-tasks.md)

# Fase 1: Creare la finestra di manutenzione utilizzando AWS CLI
<a name="mw-cli-tutorial-create-mw"></a>

In questa fase è possibile creare una finestra di manutenzione e specificarne le opzioni di base, come il nome, la pianificazione e la durata. Nelle fasi successive verrà scelta l'istanza da aggiornare e il task da eseguire.

In questo esempio, è necessario creare una finestra di manutenzione che viene eseguita ogni cinque minuti. Di solito, non è possibile eseguire una finestra di manutenzione con questa frequenza. Tuttavia, con questa frequenza è possibile velocizzare la visualizzazione dei risultati del tutorial. Al termine dell'esecuzione di quest'attività verrà illustrato come impostare una frequenza di aggiornamento più bassa.

**Nota**  
Per una spiegazione di come le diverse opzioni relative alla pianificazione per le finestre di manutenzione siano tra loro correlate, consulta [Opzioni di pianificazione e periodo attivo per la finestra di manutenzione](maintenance-windows-schedule-options.md).  
Per ulteriori informazioni sull'utilizzo dell'opzione `--schedule`, consulta [Riferimento: espressioni Cron e della frequenza per Systems Manager](reference-cron-and-rate-expressions.md).

**Per creare una finestra di manutenzione utilizzando il AWS CLI**

1. Apri AWS Command Line Interface (AWS CLI) ed esegui il seguente comando sul tuo computer locale per creare una finestra di manutenzione che esegua le seguenti operazioni:
   + Avvia l'esecuzione ogni cinque minuti per un massimo di due ore (in base alle esigenze).
   + Impedisce l'avvio di nuovi task nell'ora successiva alla fine dell'operazione della finestra di manutenzione.
   + Consente il supporto di destinazioni non associate (istanze non registrate con la finestra di manutenzione).
   + Mediante l'uso di tag personalizzati indica che l'autore intende utilizzare la finestra di manutenzione in un tutorial.

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

   ```
   aws ssm create-maintenance-window \
       --name "My-First-Maintenance-Window" \
       --schedule "rate(5 minutes)" \
       --duration 2 \
       --cutoff 1 \
       --allow-unassociated-targets \
       --tags "Key=Purpose,Value=Tutorial"
   ```

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

   ```
   aws ssm create-maintenance-window ^
       --name "My-First-Maintenance-Window" ^
       --schedule "rate(5 minutes)" ^
       --duration 2 ^
       --cutoff 1 ^
       --allow-unassociated-targets ^
       --tags "Key"="Purpose","Value"="Tutorial"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
      "WindowId":"mw-0c50858d01EXAMPLE"
   }
   ```

1. Eseguire il seguente comando per visualizzare ulteriori informazioni su questa e altre finestre di manutenzione già presenti nell'account.

   ```
   aws ssm describe-maintenance-windows
   ```

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
      "WindowIdentities":[
         {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "Name": "My-First-Maintenance-Window",
               "Enabled": true,
               "Duration": 2,
               "Cutoff": 1,
               "NextExecutionTime": "2019-05-11T16:46:16.991Z"
         }
      ]
   }
   ```

Continua su [Fase 2: Registrare un nodo di destinazione nella finestra di manutenzione utilizzando il AWS CLI](mw-cli-tutorial-targets.md).

# Fase 2: Registrare un nodo di destinazione nella finestra di manutenzione utilizzando il AWS CLI
<a name="mw-cli-tutorial-targets"></a>

In questa fase viene registrata una destinazione con la nuova finestra di manutenzione. In questo caso, specifica quale nodo aggiornare durante l'esecuzione della finestra di manutenzione. 

Per un esempio di registrazione di più di un nodo alla volta utilizzando node IDs, esempi di utilizzo di tag per identificare più nodi ed esempi di specificazione di gruppi di risorse come destinazioni, vedere. [Esempi: registrazione delle destinazioni con una finestra di manutenzione](mw-cli-tutorial-targets-examples.md)

**Nota**  
Per eseguire questa fase, è necessario aver già creato un'istanza Amazon Elastic Compute Cloud (Amazon EC2), come descritto nei [prerequisiti per il tutorial relativo alle Maintenance Windows](maintenance-windows-tutorials.md).

**Per registrare un nodo di destinazione con una finestra di manutenzione utilizzando il AWS CLI**

1. Esegui il comando seguente sul computer locale. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

   ```
   aws ssm register-target-with-maintenance-window \
       --window-id "mw-0c50858d01EXAMPLE" \
       --resource-type "INSTANCE" \
       --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE"
   ```

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

   ```
   aws ssm register-target-with-maintenance-window ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --resource-type "INSTANCE" ^
       --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
      "WindowTargetId":"e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
   }
   ```

1. Esegui ora questo comando sul computer locale per visualizzare i dettagli sulla destinazione della finestra di manutenzione.

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

   ```
   aws ssm describe-maintenance-window-targets \
       --window-id "mw-0c50858d01EXAMPLE"
   ```

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

   ```
   aws ssm describe-maintenance-window-targets ^
       --window-id "mw-0c50858d01EXAMPLE"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "Targets": [
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE",
               "ResourceType": "INSTANCE",
               "Targets": [
                   {
                       "Key": "InstanceIds",
                       "Values": [
                           "i-02573cafcfEXAMPLE"
                       ]
                   }
               ]
           }
       ]
   }
   ```

Continua su [Fase 3: Registrare un'operazione nella finestra di manutenzione utilizzando il AWS CLI](mw-cli-tutorial-tasks.md). 

# Esempi: registrazione delle destinazioni con una finestra di manutenzione
<a name="mw-cli-tutorial-targets-examples"></a>

Puoi registrare un singolo nodo come destinazione utilizzandone l'ID nodo, come mostrato in [Fase 2: Registrare un nodo di destinazione nella finestra di manutenzione utilizzando il AWS CLI](mw-cli-tutorial-targets.md). Puoi anche registrare uno o più nodi come destinazioni utilizzando i formati di comando forniti in questa pagina.

In generale, sono disponibili due metodi per identificare i nodi da utilizzare come destinazioni della finestra di manutenzione: specificare li singoli nodi e utilizzare i tag delle risorse. Il metodo dei tag delle risorse fornisce più opzioni, come mostrato negli esempi 2-3. 

Puoi anche specificare uno o più gruppi di risorse come la destinazione di una finestra di manutenzione. Un gruppo di risorse può includere nodi e molti altri tipi di AWS risorse supportate. Gli esempi 4 e 5, di seguito, mostrano come aggiungere gruppi di risorse alle destinazioni della finestra di manutenzione.

**Nota**  
Se una singola attività della finestra di manutenzione è registrata con più destinazioni, le relative chiamate di attività vengono eseguite in sequenza e non in parallelo. Se l'attività deve essere eseguita su più destinazioni contemporaneamente, registrare un'attività per ogni destinazione singolarmente e assegnare a ciascuna attività lo stesso livello di priorità.

Per ulteriori informazioni sulla creazione e la gestione di gruppi di risorse, consulta [Cosa sono i gruppi di risorse?](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html) nella *AWS Resource Groups Guida per l'utente* e [Gruppi di risorse e Assegnazione di tag per AWS](https://aws.amazon.com/blogs/aws/resource-groups-and-tagging/) nel *AWS News Blog‏*.

Per informazioni sulle quote perMaintenance Windows, uno strumento in AWS Systems Manager, oltre a quelle specificate negli esempi seguenti, vedere [Systems Manager service quotas](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm) in. *Riferimenti generali di Amazon Web Services*

## Esempio 1: Registrare più destinazioni utilizzando il nodo IDs
<a name="mw-target-example-1"></a>

Esegui il comando seguente sul formato del computer locale per registrare più nodi come destinazioni utilizzando il relativo nodo IDs. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "INSTANCE" \
    --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE,i-07782c72faEXAMPLE"
```

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

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE ^
    --resource-type "INSTANCE" ^
    --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE,i-07782c72faEXAMPLE
```

------

**Utilizzo consigliato**: questa opzione è particolarmente utile quando si registra per la prima volta un gruppo unico di nodi con una qualsiasi finestra di manutenzione e quando questi nodi *non* condividono un tag di nodo comune.

**Quote:** è possibile specificare fino a un massimo di 50 nodi totali per ogni destinazione della finestra di manutenzione.

## Esempio 2: registrazione delle destinazioni con i tag delle risorse applicati ai nodi
<a name="mw-target-example-2"></a>

Esegui il comando seguente sul computer locale per registrare tutti i nodi già contrassegnate con una coppia chiave-valore che hai assegnato. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "INSTANCE" \
    --target "Key=tag:Region,Values=East"
```

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

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --resource-type "INSTANCE" ^
    --target "Key=tag:Region,Values=East"
```

------

**Utilizzo consigliato**: questa opzione è particolarmente utile quando si registra per la prima volta un gruppo unico di nodi con una qualsiasi finestra di manutenzione e quando questi nodi *non* condividono un tag di nodo comune.

**Quote:** è possibile specificare fino a cinque coppie chiave-valore in totale per ogni destinazione. Se si specificano più coppie chiave-valore, un nodo deve essere contrassegnato con *tutte* le chiavi tag e i valori specificati per essere inclusi nel gruppo di destinazione.

**Nota**  
È possibile applicare tag a un gruppo di nodi con la chiave di tag `Patch Group` o `PatchGroup` e assegnare ai nodi un valore di chiave comune, ad esempio `my-patch-group`. (È necessario utilizzare `PatchGroup`, senza spazio, se sono presenti [tag consentiti nei metadati dell'istanza EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#allow-access-to-tags-in-IMDS).) Patch Manager, uno strumento di Systems Manager, valuta la chiave `Patch Group` o `PatchGroup` sui nodi per determinare quale baseline delle patch vi si può applicare. Se l'attività eseguirà il documento SSM `AWS-RunPatchBaseline` o il documento legacy SSM `AWS-ApplyPatchBaseline`, è possibile specificare la stessa coppia chiave-valore `Patch Group` o `PatchGroup` quando si registrano destinazioni con una finestra di manutenzione. Ad esempio: `--target "Key=tag:PatchGroup,Values=my-patch-group`. In questo modo è possibile utilizzare una finestra di manutenzione per aggiornare le patch su un gruppo di nodi che sono già associati alla stessa baseline delle patch. Per ulteriori informazioni, consulta [Gruppi di patch](patch-manager-patch-groups.md).

## Esempio 3: registrazione delle destinazioni con un gruppo di chiavi dei tag (senza valori di tag)
<a name="mw-target-example-3"></a>

Esegui il comando seguente sul computer locale per registrare tutti i nodi che hanno una o più chiavi dei tag assegnate, indipendentemente dai valori delle chiavi. Sostituisci ogni *example resource placeholder* con le tue informazioni.

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

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "INSTANCE" \
    --target "Key=tag-key,Values=Name,Instance-Type,CostCenter"
```

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

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --resource-type "INSTANCE" ^
    --target "Key=tag-key,Values=Name,Instance-Type,CostCenter"
```

------

**Utilizzo consigliato**: utile quando si desidera definire i nodi come destinazioni specificando più *chiavi* dei tag (senza i relativi valori) invece di una sola coppia tag-chiave o coppia di tag chiave-valore.

**Quote:** è possibile specificare fino a cinque coppie tag-chiave in totale per ogni destinazione. Se si specificano più chiavi di tag, un nodo deve essere contrassegnato con *tutte* le chiavi tag specificate per essere incluse nel gruppo di destinazione.

## Esempio 4: registrazione di destinazioni utilizzando un nome del gruppo di risorse
<a name="mw-target-example-4"></a>

Esegui il comando seguente sul computer locale per registrare un gruppo di risorse specificato, a prescindere dal tipo di risorse che contiene. Sostituiscilo *mw-0c50858d01EXAMPLE* con le tue informazioni. Se le attività assegnate alla finestra di manutenzione non agiscano su un tipo di risorsa incluso in questo gruppo di risorse, il sistema potrebbe segnalare un errore. Attività per le quali viene individuato un tipo di risorsa supportato continuano a essere eseguite nonostante questi errori.

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

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "RESOURCE_GROUP" \
    --target "Key=resource-groups:Name,Values=MyResourceGroup"
```

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

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --resource-type "RESOURCE_GROUP" ^
    --target "Key=resource-groups:Name,Values=MyResourceGroup"
```

------

**Uso consigliato**: utile quando desideri specificare rapidamente un gruppo di risorse come una destinazione senza valutare se tutti i tipi di risorse saranno selezionati per una finestra di manutenzione, oppure quando sai che il gruppo di risorse contiene solo i tipi di risorse su cui le attività eseguono operazioni.

**Quote:** è possibile specificare un solo gruppo di risorse come una destinazione.

## Esempio 5: registrazione di destinazioni filtrando tipi di risorse in un gruppo di risorse
<a name="mw-target-example-5"></a>

Esegui il comando seguente sul computer locale per registrare solo determinati tipi di risorse che appartengono a un gruppo di risorse specificato. Sostituiscila *mw-0c50858d01EXAMPLE* con le tue informazioni. Con questa opzione, anche se aggiungi un'attività per un tipo di risorsa che appartiene al gruppo di risorse, l'attività non verrà eseguita se non hai aggiunto esplicitamente il tipo di risorsa al filtro.

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

```
aws ssm register-target-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --resource-type "RESOURCE_GROUP" \
    --target "Key=resource-groups:Name,Values=MyResourceGroup" \
    "Key=resource-groups:ResourceTypeFilters,Values=AWS::EC2::Instance,AWS::ECS::Cluster"
```

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

```
aws ssm register-target-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --resource-type "RESOURCE_GROUP" ^
    --target "Key=resource-groups:Name,Values=MyResourceGroup" ^
    "Key=resource-groups:ResourceTypeFilters,Values=AWS::EC2::Instance,AWS::ECS::Cluster"
```

------

**Uso consigliato**: utile quando si desidera mantenere un controllo rigoroso sui tipi di AWS risorse su cui la finestra di manutenzione può eseguire azioni o quando il gruppo di risorse contiene un gran numero di tipi di risorse e si desidera evitare segnalazioni di errori non necessarie nei registri delle finestre di manutenzione.

**Quote:** è possibile specificare un solo gruppo di risorse come una destinazione.

# Fase 3: Registrare un'operazione nella finestra di manutenzione utilizzando il AWS CLI
<a name="mw-cli-tutorial-tasks"></a>

In questo passaggio del tutorial, registri un' AWS Systems Manager Run Commandattività che esegue il `df` comando sulla tua istanza Amazon Elastic Compute Cloud (Amazon EC2) per Linux. I risultati di questo comando Linux standard mostrano la quantità di spazio libero disponibile e la quantità di spazio utilizzato sul file system del disco dell'istanza.

oppure

Se utilizzi un'istanza Amazon EC2 per Windows Server anziché una di Linux, nel comando seguente devi sostituire **df** con **ipconfig**. Nell'output di questo comando sono elencati i dettagli relativi all'indirizzo IP, alla maschera di sottorete e al gateway predefinito per i convertitori sull'istanza di destinazione.

Quando sei pronto a registrare altri tipi di task oppure a utilizzare un maggior numero di opzioni Run Command di Systems Manager disponibili, consulta [Esempi: registrazione delle operazioni con una finestra di manutenzione](mw-cli-register-tasks-examples.md). In questo argomento sono disponibili ulteriori informazioni su tutti e quattro i tipi di task e su alcune delle opzioni più importanti in modo da consentirti di creare scenari reali più complessi. 

**Per registrare un task con una finestra di manutenzione**

1. Esegui il comando seguente sul computer locale. Sostituisci ogni *example resource placeholder* con le tue informazioni. La versione da eseguire da un computer Windows locale include i caratteri di escape ("/") necessari per eseguire il comando dallo strumento a riga di comando.

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

   ```
   aws ssm register-task-with-maintenance-window \
       --window-id mw-0c50858d01EXAMPLE \
       --task-arn "AWS-RunShellScript" \
       --max-concurrency 1 --max-errors 1 \
       --priority 10 \
       --targets "Key=InstanceIds,Values=i-0471e04240EXAMPLE" \
       --task-type "RUN_COMMAND" \
       --task-invocation-parameters '{"RunCommand":{"Parameters":{"commands":["df"]}}}'
   ```

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

   ```
   aws ssm register-task-with-maintenance-window ^
       --window-id mw-0c50858d01EXAMPLE ^
       --task-arn "AWS-RunShellScript" ^
       --max-concurrency 1 --max-errors 1 ^
       --priority 10 ^
       --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" ^
       --task-type "RUN_COMMAND" ^
       --task-invocation-parameters={\"RunCommand\":{\"Parameters\":{\"commands\":[\"df\"]}}}
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
   }
   ```

1. Eseguire il comando seguente per visualizzare i dettagli relativi alla finestra di manutenzione creata. 

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

   ```
   aws ssm describe-maintenance-window-tasks \
       --window-id mw-0c50858d01EXAMPLE
   ```

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

   ```
   aws ssm describe-maintenance-window-tasks ^
       --window-id mw-0c50858d01EXAMPLE
   ```

------

1. Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "Tasks": [
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
               "TaskArn": "AWS-RunShellScript",
               "Type": "RUN_COMMAND",
               "Targets": [
                   {
                       "Key": "InstanceIds",
                       "Values": [
                           "i-02573cafcfEXAMPLE"
                       ]
                   }
               ],
               "TaskParameters": {},
               "Priority": 10,
               "ServiceRoleArn": "arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole",
               "MaxConcurrency": "1",
               "MaxErrors": "1"
           }
       ]
   }
   ```

1. Attendere il completamento dell'esecuzione del task, in base alla pianificazione specificata nella [Fase 1: Creare la finestra di manutenzione utilizzando AWS CLI](mw-cli-tutorial-create-mw.md). Ad esempio, se è stato specificato **--schedule "rate(5 minutes)"**, attendere cinque minuti. Eseguire quindi il comando seguente per visualizzare le informazioni sulle esecuzioni completate per questo task. 

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

   ```
   aws ssm describe-maintenance-window-executions \
       --window-id mw-0c50858d01EXAMPLE
   ```

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

   ```
   aws ssm describe-maintenance-window-executions ^
       --window-id mw-0c50858d01EXAMPLE
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowExecutions": [
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
               "Status": "SUCCESS",
               "StartTime": 1557593493.096,
               "EndTime": 1557593498.611
           }
       ]
   }
   ```

**Suggerimento**  
Dopo aver eseguito l'attività, è possibile ridurre la frequenza con cui viene eseguita la finestra di manutenzione. Ad esempio, eseguire il comando seguente per ridurre la frequenza a una volta alla settimana. *mw-0c50858d01EXAMPLE*Sostituiscilo con le tue informazioni.  

```
aws ssm update-maintenance-window \
    --window-id mw-0c50858d01EXAMPLE \
    --schedule "rate(7 days)"
```

```
aws ssm update-maintenance-window ^
    --window-id mw-0c50858d01EXAMPLE ^
    --schedule "rate(7 days)"
```
Per informazioni sulla gestione delle pianificazioni delle finestre di manutenzione, consulta [Riferimento: espressioni Cron e della frequenza per Systems Manager](reference-cron-and-rate-expressions.md) e [Opzioni di pianificazione e periodo attivo per la finestra di manutenzione](maintenance-windows-schedule-options.md).  
Per informazioni sull'utilizzo di AWS Command Line Interface (AWS CLI) per modificare una finestra di manutenzione, vedere[Tutorial: Aggiornare una finestra di manutenzione utilizzando il AWS CLI](maintenance-windows-cli-tutorials-update.md).

Per esercitarsi nell'esecuzione dei AWS CLI comandi e visualizzare ulteriori dettagli sull'attività della finestra di manutenzione e sulle relative esecuzioni, continua a[Tutorial: Visualizza informazioni sulle attività e sulle esecuzioni delle attività utilizzando il AWS CLI](mw-cli-tutorial-task-info.md).

**Accesso all'output dei comandi del tutorial**  
L'utilizzo di per visualizzare l'*output* del Run Command comando associato alle esecuzioni delle AWS CLI attività della finestra di manutenzione non rientra nell'ambito di questo tutorial.

È possibile visualizzare questi dati, tuttavia, utilizzando il AWS CLI. (È inoltre possibile visualizzare l'output nella console di Systems Manager o in un file di log archiviato in un bucket Amazon Simple Storage Service (Amazon S3), se la finestra di manutenzione è stata configurata per l'archiviazione dell'output del comando in tale posizione.) L'output del comando **df** in un'istanza EC2 per Linux è simile a quello riportato di seguito.

```
Filesystem 1K-blocks Used Available Use% Mounted on

devtmpfs 485716 0 485716 0% /dev

tmpfs 503624 0 503624 0% /dev/shm

tmpfs 503624 328 503296 1% /run

tmpfs 503624 0 503624 0% /sys/fs/cgroup

/dev/xvda1 8376300 1464160 6912140 18% /
```

L'output del comando **ipconfig** in un'istanza EC2 per Windows Server è simile a quello riportato di seguito:

```
Windows IP Configuration


Ethernet adapter Ethernet 2:

   Connection-specific DNS Suffix  . : example.com
   IPv4 Address. . . . . . . . . . . : 10.24.34.0/23
   Subnet Mask . . . . . . . . . . . : 255.255.255.255
   Default Gateway . . . . . . . . . : 0.0.0.0

Ethernet adapter Ethernet:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : abc1.wa.example.net

Wireless LAN adapter Local Area Connection* 1:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Wi-Fi:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::100b:c234:66d6:d24f%4
   IPv4 Address. . . . . . . . . . . : 192.0.2.0
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.0.2.0

Ethernet adapter Bluetooth Network Connection:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
```

# Esempi: registrazione delle operazioni con una finestra di manutenzione
<a name="mw-cli-register-tasks-examples"></a>

È possibile registrare un'attività inRun Command, uno strumento in AWS Systems Manager, con una finestra di manutenzione utilizzando AWS Command Line Interface (AWS CLI), come illustrato in [Registrare le attività con la finestra di manutenzione](mw-cli-tutorial-tasks.md). È inoltre possibile registrare le attività per i flussi di lavoro, AWS Lambda le funzioni e le AWS Step Functions attività di Systems Manager Automation, come illustrato più avanti in questo argomento.

**Nota**  
Specifica uno o più target per le attività di tipo Run Command della finestra di manutenzione. A seconda dell'attività, gli obiettivi sono facoltativi per altri tipi di attività della finestra di manutenzione (Automazione e AWS Step Functions). AWS Lambda Per ulteriori informazioni sull'esecuzione di attività che non specificano destinazioni, consulta [Registrazione delle attività della finestra di manutenzione senza destinazioni](maintenance-windows-targetless-tasks.md).

In questo argomento, forniamo esempi di utilizzo del comando AWS Command Line Interface (AWS CLI) `register-task-with-maintenance-window` per registrare ciascuno dei quattro tipi di attività supportati in una finestra di manutenzione. Gli esempi sono solo a titolo dimostrativo, ma è possibile modificarli per creare comandi di registrazione di task funzionanti. 

**Utilizzo dell'cli-input-json opzione --**  
Per ottimizzare la gestione delle opzioni relative ai task, è possibile utilizzare l'opzione di comando `--cli-input-json`, con i valori delle opzioni inclusi in un file JSON. 

Per utilizzare il contenuto del file JSON di esempio disponibile negli esempi, eseguire la procedura seguente nel computer locale:

1. Creare un file assegnandogli, ad esempio, il nome `MyRunCommandTask.json`, `MyAutomationTask.json` oppure il nome desiderato.

1. Copiare il contenuto dell'esempio JSON nel file.

1. Modificare il contenuto del file per la registrazione del task, quindi salvare il file.

1. Nella stessa directory in cui è stato salvato il file, eseguire il comando seguente. Sostituisci il nome del file con. *MyFile.json* 

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

   ```
   aws ssm register-task-with-maintenance-window \
       --cli-input-json file://MyFile.json
   ```

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

   ```
   aws ssm register-task-with-maintenance-window ^
       --cli-input-json file://MyFile.json
   ```

------

**Pseudo parametri nelle attività della finestra di manutenzione**  
In alcuni esempi vengono utilizzati gli *pseudoparametri* come metodo per passare le informazioni sugli ID ai task. Ad esempio, `{{TARGET_ID}}` e `{{RESOURCE_ID}}` può essere utilizzato per trasferire AWS risorse alle IDs attività di Automation, Lambda e Step Functions. Per ulteriori informazioni sugli pseudoparametri nel parametro `--task-invocation-parameters`, consulta [Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione](maintenance-window-tasks-pseudo-parameters.md). 

**Ulteriori informazioni**  
+ [Opzioni dei parametri per il comando register-task-with-maintenance -windows](mw-cli-task-options.md).
+ [https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html) in *Riferimento ai comandi AWS CLI *
+ [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_RegisterTaskWithMaintenanceWindow.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_RegisterTaskWithMaintenanceWindow.html) nella *Documentazione di riferimento API di AWS Systems Manager *

## Esempi di registrazione dei task
<a name="task-examples"></a>

Le sezioni seguenti forniscono un AWS CLI comando di esempio per la registrazione di un tipo di attività supportato e un esempio JSON che può essere utilizzato con l'opzione. `--cli-input-json`

### Registra un task Run Command di Systems Manager
<a name="register-tasks-tutorial-run-command"></a>

I seguenti esempi illustrano come registrare i task Run Command di Systems Manager con una finestra di manutenzione utilizzando l' AWS CLI.

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

```
aws ssm register-task-with-maintenance-window \
    --window-id mw-0c50858d01EXAMPLE \
    --task-arn "AWS-RunShellScript" \
    --max-concurrency 1 --max-errors 1 --priority 10 \
    --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" \
    --task-type "RUN_COMMAND" \
    --task-invocation-parameters '{"RunCommand":{"Parameters":{"commands":["df"]}}}'
```

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

```
aws ssm register-task-with-maintenance-window ^
    --window-id mw-0c50858d01EXAMPLE ^
    --task-arn "AWS-RunShellScript" ^
    --max-concurrency 1 --max-errors 1 --priority 10 ^
    --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" ^
    --task-type "RUN_COMMAND" ^
    --task-invocation-parameters "{\"RunCommand\":{\"Parameters\":{\"commands\":[\"df\"]}}}"
```

------

**Contenuto JSON da utilizzare con l'opzione di file `--cli-input-json`:**

```
{
    "TaskType": "RUN_COMMAND",
    "WindowId": "mw-0c50858d01EXAMPLE",
    "Description": "My Run Command task to update SSM Agent on an instance",
    "MaxConcurrency": "1",
    "MaxErrors": "1",
    "Name": "My-Run-Command-Task",
    "Priority": 10,
    "Targets": [
        {
            "Key": "WindowTargetIds",
            "Values": [
                "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            ]
        }
    ],
    "TaskArn": "AWS-UpdateSSMAgent",
    "TaskInvocationParameters": {
        "RunCommand": {
            "Comment": "A TaskInvocationParameters test comment",
            "NotificationConfig": {
                "NotificationArn": "arn:aws:sns:region:123456789012:my-sns-topic-name",
                "NotificationEvents": [
                    "All"
                ],
                "NotificationType": "Invocation"
            },
            "OutputS3BucketName": "amzn-s3-demo-bucket",
            "OutputS3KeyPrefix": "S3-PREFIX",
            "TimeoutSeconds": 3600
        }
    }
}
```

### Registra un task di automazione Systems Manager
<a name="register-tasks-tutorial-automation"></a>

I seguenti esempi illustrano come registrare i task di automazione di Systems Manager con una finestra di manutenzione utilizzando l' AWS CLI: 

**AWS CLI comando:**

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

```
aws ssm register-task-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --task-arn "AWS-RestartEC2Instance" \
    --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole \
    --task-type AUTOMATION \
    --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" \
    --priority 0 --name "My-Restart-EC2-Instances-Automation-Task" \
    --description "Automation task to restart EC2 instances"
```

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

```
aws ssm register-task-with-maintenance-window ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --task-arn "AWS-RestartEC2Instance" ^
    --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole ^
    --task-type AUTOMATION ^
    --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{TARGET_ID}}'}}" ^
    --priority 0 --name "My-Restart-EC2-Instances-Automation-Task" ^
    --description "Automation task to restart EC2 instances"
```

------

**Contenuto JSON da utilizzare con l'opzione di file `--cli-input-json`:**

```
{
    "WindowId": "mw-0c50858d01EXAMPLE",
        "TaskArn": "AWS-PatchInstanceWithRollback",
    "TaskType": "AUTOMATION","TaskInvocationParameters": {
        "Automation": {
            "DocumentVersion": "1",
            "Parameters": {
                "instanceId": [
                    "{{RESOURCE_ID}}"
                ]
            }
        }
    }
}
```

### Registra un' AWS Lambda attività
<a name="register-tasks-tutorial-lambda"></a>

I seguenti esempi illustrano come registrare le operazioni delle funzioni Lambda con una finestra di manutenzione utilizzando la AWS CLI. 

Per questi esempi, l'utente che ha creato la funzione Lambda ha denominato tale funzione `SSMrestart-my-instances` e ha creato due parametri denominati `instanceId` e `targetType`.

**Importante**  
La policy IAM per Maintenance Windows prevede che il nome (o l'alias) della funzione Lambda sia associato al prefisso `SSM`. Prima di procedere alla registrazione di questo tipo di attività, aggiornane il nome in AWS Lambda includi`SSM`. Ad esempio, se il nome della funzione Lambda è `MyLambdaFunction`, modificalo in `SSMMyLambdaFunction`.

**AWS CLI comando:**

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

**Importante**  
Se si utilizza la versione 2 di AWS CLI, è necessario includere l'opzione `--cli-binary-format raw-in-base64-out` nel comando seguente se il payload Lambda non è codificato in base 64. L'opzione `cli_binary_format` è disponibile solo nella versione 2. *Per informazioni su questa e altre impostazioni dei file, consulta Impostazioni dei AWS CLI `config` [`config`file supportate](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-settings) nella Guida per l'utente.AWS Command Line Interface *

```
aws ssm register-task-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
    --priority 2 --max-concurrency 10 --max-errors 5 --name "My-Lambda-Example" \
    --description "A description for my LAMBDA example task" --task-type "LAMBDA" \
    --task-arn "arn:aws:lambda:region:123456789012:function:serverlessrepo-SSMrestart-my-instances-C4JF9EXAMPLE" \
    --task-invocation-parameters '{"Lambda":{"Payload":"{\"InstanceId\":\"{{RESOURCE_ID}}\",\"targetType\":\"{{TARGET_TYPE}}\"}","Qualifier": "$LATEST"}}'
```

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

**Importante**  
Se si utilizza la versione 2 di AWS CLI, è necessario includere l'opzione `--cli-binary-format raw-in-base64-out` nel comando seguente se il payload Lambda non è codificato in base 64. L'opzione `cli_binary_format` è disponibile solo nella versione 2. *Per informazioni su questa e altre impostazioni dei file, consulta Impostazioni dei AWS CLI `config` [`config`file supportate](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-settings) nella Guida per l'utente.AWS Command Line Interface *

```
aws ssm register-task-with-maintenance-window `
    --window-id "mw-0c50858d01EXAMPLE" `
    --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" `
    --priority 2 --max-concurrency 10 --max-errors 5 --name "My-Lambda-Example" `
    --description "A description for my LAMBDA example task" --task-type "LAMBDA" `
    --task-arn "arn:aws:lambda:region:123456789012:function:serverlessrepo-SSMrestart-my-instances-C4JF9EXAMPLE" `
    --task-invocation-parameters '{\"Lambda\":{\"Payload\":\"{\\\"InstanceId\\\":\\\"{{RESOURCE_ID}}\\\",\\\"targetType\\\":\\\"{{TARGET_TYPE}}\\\"}\",\"Qualifier\": \"$LATEST\"}}'
```

------

**Contenuto JSON da utilizzare con l'opzione di file `--cli-input-json`:**

```
{
    "WindowId": "mw-0c50858d01EXAMPLE",
    "Targets": [
        {
            "Key": "WindowTargetIds",
            "Values": [
                "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            ]
        }
    ],
    "TaskArn": "SSM_RestartMyInstances",
    "TaskType": "LAMBDA",
    "MaxConcurrency": "10",
    "MaxErrors": "10",
    "TaskInvocationParameters": {
        "Lambda": {
            "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE",
            "Payload": "{ \"instanceId\": \"{{RESOURCE_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }",
            "Qualifier": "$LATEST"
        }
    },
    "Name": "My-Lambda-Task",
    "Description": "A description for my LAMBDA task",
    "Priority": 5
}
```

### Register a Step Functions task (Registra un'attività Step Functions)
<a name="register-tasks-tutorial-step-functions"></a>

I seguenti esempi illustrano come registrare i task delle macchine a stati Step Functions con una finestra di manutenzione utilizzando l' AWS CLI.

**Nota**  
Le attività della finestra di manutenzione supportano solo i flussi di lavoro delle macchine a stati standard di Step Functions. Non supportano i flussi di lavoro delle macchine a stati express. Per informazioni sui tipi di flusso di lavoro delle macchine a stati, consulta [Standard vs. Express Workflows](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html) (Differenze flussi di lavoro standard ed express) nella *Guida per gli sviluppatori di AWS Step Functions *.

Per questi esempi, l'utente che ha creato le macchine a stati Step Functions ha creato una macchina a stati denominata `SSMMyStateMachine` con un parametro denominato `instanceId`.

**Importante**  
La policy AWS Identity and Access Management (IAM) per Maintenance Windows richiede che i nomi delle macchine a stati Step Functions vengano aggiunti come prefisso. `SSM` Prima di procedere alla registrazione di questo tipo di task, è necessario aggiornare il relativo nome in AWS Step Functions in modo da includere `SSM`. Ad esempio, se il nome della macchina a stati è `MyStateMachine`, modifica tale nome in `SSMMyStateMachine`.

**AWS CLI comando:**

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

```
aws ssm register-task-with-maintenance-window \
    --window-id "mw-0c50858d01EXAMPLE" \
    --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
    --task-arn arn:aws:states:region:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE \
    --task-type STEP_FUNCTIONS \
    --task-invocation-parameters '{"StepFunctions":{"Input":"{\"InstanceId\":\"{{RESOURCE_ID}}\"}", "Name":"{{INVOCATION_ID}}"}}' \
    --priority 0 --max-concurrency 10 --max-errors 5 \
    --name "My-Step-Functions-Task" --description "A description for my Step Functions task"
```

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

```
aws ssm register-task-with-maintenance-window `
    --window-id "mw-0c50858d01EXAMPLE" `
    --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" `
    --task-arn arn:aws:states:region:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE `
    --task-type STEP_FUNCTIONS `
    --task-invocation-parameters '{\"StepFunctions\":{\"Input\":\"{\\\"InstanceId\\\":\\\"{{RESOURCE_ID}}\\\"}\", \"Name\":\"{{INVOCATION_ID}}\"}}' `
    --priority 0 --max-concurrency 10 --max-errors 5 `
    --name "My-Step-Functions-Task" --description "A description for my Step Functions task"
```

------

**Contenuto JSON da utilizzare con l'opzione di file `--cli-input-json`:**

```
{
    "WindowId": "mw-0c50858d01EXAMPLE",
    "Targets": [
        {
            "Key": "WindowTargetIds",
            "Values": [
                "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            ]
        }
    ],
    "TaskArn": "SSM_MyStateMachine",
    "TaskType": "STEP_FUNCTIONS",
    "MaxConcurrency": "10",
    "MaxErrors": "10",
    "TaskInvocationParameters": {
        "StepFunctions": {
            "Input": "{ \"instanceId\": \"{{TARGET_ID}}\" }",
            "Name": "{{INVOCATION_ID}}"
        }
    },
    "Name": "My-Step-Functions-Task",
    "Description": "A description for my Step Functions task",
    "Priority": 5
}
```

# Opzioni dei parametri per il comando register-task-with-maintenance -windows
<a name="mw-cli-task-options"></a>

Il comando **register-task-with-maintenance-window** dispone di diverse opzioni per la configurazione di un task in base a esigenze specifiche. Alcune opzioni sono obbligatorie, altre sono facoltative, mentre alcune di esse sono valide solo per un tipo specifico di task della finestra di manutenzione.

Questo argomento fornisce informazioni su alcune di queste opzioni a supporto delle procedure di utilizzo degli esempi disponibili in questa sezione del tutorial. Per informazioni su altre opzioni di comando, consulta **[https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html)** nelle *Informazioni di riferimento sui comandi AWS CLI *.

**Opzione di comando: `--task-arn`**  
L'opzione `--task-arn` consente di specificare la risorsa utilizzata dal task durante l'operazione. Il valore che è possibile specificare dipende dal tipo di task che si sta registrando, come descritto nella seguente tabella.


**TaskArn formati per le attività delle finestre di manutenzione**  

| Tipo di task della finestra di manutenzione | TaskArn valore | 
| --- | --- | 
|  **`RUN_COMMAND`** e ** `AUTOMATION`**  |  `TaskArn` è il nome del documento SSM o l'Amazon Resource Name (ARN). Ad esempio:  `AWS-RunBatchShellScript`  oppure `arn:aws:ssm:region:111122223333:document/My-Document`.  | 
|  **`LAMBDA`**  |  `TaskArn` è l'ARN o il nome della funzione. Ad esempio:  `SSMMy-Lambda-Function` oppure `arn:aws:lambda:region:111122223333:function:SSMMyLambdaFunction`.  La policy IAM per Maintenance Windows prevede che il nome (o l'alias) della funzione Lambda sia associato al prefisso `SSM`. Prima di procedere alla registrazione di questo tipo di attività, aggiornane il nome in AWS Lambda includi`SSM`. Ad esempio, se il nome della funzione Lambda è `MyLambdaFunction`, modifica tale nome in `SSMMyLambdaFunction`.   | 
|  **`STEP_FUNCTIONS`**  |  `TaskArn` è l'ARN della macchina a stati. Ad esempio:  `arn:aws:states:us-east-2:111122223333:stateMachine:SSMMyStateMachine`.  La policy IAM per le finestre di manutenzione prevede che i nomi delle macchine a stati Step Functions siano associati al prefisso `SSM`. Prima di registrare questo tipo di task, è necessario aggiornare il relativo nome in AWS Step Functions in modo da includere `SSM`. Ad esempio, se il nome della macchina a stati è `MyStateMachine`, modifica tale nome in `SSMMyStateMachine`.   | 

**Opzione di comando: `--service-role-arn`**  
Il ruolo AWS Systems Manager da assumere durante l'esecuzione dell'operazione della finestra di manutenzione. 

Per ulteriori informazioni, consulta [Configurazione di Maintenance Windows](setting-up-maintenance-windows.md)

**Opzione di comando: `--task-invocation-parameters`**  
L'opzione `--task-invocation-parameters` viene utilizzata per specificare i parametri univoci per ciascuno dei quattro tipi di task. I parametri supportati per ciascuno dei quattro tipi di task sono descritti nella tabella riportata di seguito.

**Nota**  
Per informazioni sull'utilizzo degli pseudoparametri nel contenuto `--task-invocation-parameters`, ad esempio \$1\$1TARGET\$1ID\$1\$1, consulta [Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione](maintenance-window-tasks-pseudo-parameters.md). 

Opzioni dei parametri di invocazione dei task per i task della finestra di manutenzione


| Tipo di task della finestra di manutenzione | Parametri disponibili  | Esempio | 
| --- | --- | --- | 
|  **`RUN_COMMAND`**  |  `Comment` `DocumentHash` `DocumentHashType` `NotificationConfig` `OutputS3BucketName` `OutPutS3KeyPrefix` `Parameters` `ServiceRoleArn` `TimeoutSeconds`  |  <pre>"TaskInvocationParameters": {<br />        "RunCommand": {<br />            "Comment": "My Run Command task comment",<br />            "DocumentHash": "6554ed3d--truncated--5EXAMPLE",<br />            "DocumentHashType": "Sha256",<br />            "NotificationConfig": {<br />                "NotificationArn": "arn:aws:sns:region:123456789012:my-sns-topic-name",<br />                "NotificationEvents": [<br />                    "FAILURE"<br />                ],<br />                "NotificationType": "Invocation"<br />            },<br />            "OutputS3BucketName": "amzn-s3-demo-bucket",<br />            "OutputS3KeyPrefix": "S3-PREFIX",<br />            "Parameters": {<br />                "commands": [<br />                    "Get-ChildItem$env: temp-Recurse|Remove-Item-Recurse-force"<br />                ]<br />            },<br />            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole",<br />            "TimeoutSeconds": 3600<br />        }<br />    }</pre>  | 
|  **`AUTOMATION`**  |  `DocumentVersion` `Parameters`  |  <pre>"TaskInvocationParameters": {<br />        "Automation": {<br />            "DocumentVersion": "3",<br />            "Parameters": {<br />                "instanceid": [<br />                    "{{TARGET_ID}}"<br />                ]<br />            }<br />        }<br />    }</pre>  | 
|  **`LAMBDA`**  |  `ClientContext` `Payload` `Qualifier`  |  <pre>"TaskInvocationParameters": {<br />        "Lambda": {<br />            "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE",<br />            "Payload": "{ \"targetId\": \"{{TARGET_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }",<br />            "Qualifier": "$LATEST"<br />        }<br />    }</pre>  | 
|  **`STEP_FUNCTIONS`**  |  `Input` `Name`  |  <pre>"TaskInvocationParameters": {<br />        "StepFunctions": {<br />            "Input": "{ \"targetId\": \"{{TARGET_ID}}\" }",<br />            "Name": "{{INVOCATION_ID}}"<br />        }<br />    }</pre>  | 

# Tutorial: Visualizza le informazioni sulle finestre di manutenzione utilizzando il AWS CLI
<a name="maintenance-windows-cli-tutorials-describe"></a>

Questo tutorial include comandi che consentono di aggiornare o ottenere informazioni su finestre di manutenzione, task, esecuzioni e invocazioni. Gli esempi sono organizzati per comando, per dimostrare come utilizzare le opzioni dei comandi per filtrare il tipo di dettaglio che si desidera visualizzare.

Mentre segui i passaggi di questo tutorial, sostituisci i valori nel *red* testo in corsivo con le tue opzioni e. IDs Ad esempio, sostituisci l'ID della finestra di manutenzione *mw-0c50858d01EXAMPLE* e l'ID dell'istanza *i-02573cafcfEXAMPLE* con l'ID IDs delle risorse che crei.

Per informazioni sull'impostazione e la configurazione di AWS Command Line Interface (AWS CLI), consultate [Installazione, aggiornamento e disinstallazione di AWS CLI e](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) [Configurazione](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) di. AWS CLI

**Topics**
+ [Esempi di '' describe-maintenance-windows](#mw-cli-tutorials-describe-maintenance-windows)
+ [Esempi di 'describe-maintenance-window-targets'](#mw-cli-tutorials-describe-maintenance-window-targets)
+ [Esempi per 'describe-maintenance-window-tasks'](#mw-cli-tutorials-describe-maintenance-window-tasks)
+ [Esempi per 'describe-maintenance-windows-for-target'](#mw-cli-tutorials-describe-maintenance-windows-for-target)
+ [Esempi per '' describe-maintenance-window-executions](#mw-cli-tutorials-describe-maintenance-window-executions)
+ [Esempi per 'describe-maintenance-window-schedule'](#mw-cli-tutorials-describe-maintenance-window-schedule)

## Esempi di '' describe-maintenance-windows
<a name="mw-cli-tutorials-describe-maintenance-windows"></a>

**Elenca tutte le finestre di manutenzione del tuo Account AWS**  
Eseguire il seguente comando seguente.

```
aws ssm describe-maintenance-windows
```

Questo sistema restituisce informazioni simili alle seguenti.

```
{
   "WindowIdentities":[
      {
         "WindowId":"mw-0c50858d01EXAMPLE",
         "Name":"My-First-Maintenance-Window",
         "Enabled":true,
         "Duration":2,
         "Cutoff":0,
         "NextExecutionTime": "2019-05-18T17:01:01.137Z"        
      },
      {
         "WindowId":"mw-9a8b7c6d5eEXAMPLE",
         "Name":"My-Second-Maintenance-Window",
         "Enabled":true,
         "Duration":4,
         "Cutoff":1,
         "NextExecutionTime": "2019-05-30T03:30:00.137Z"        
      },
   ]
}
```

**Elenca tutte le finestre di manutenzione abilitate**  
Eseguire il seguente comando seguente.

```
aws ssm describe-maintenance-windows --filters "Key=Enabled,Values=true"
```

Questo sistema restituisce informazioni simili alle seguenti.

```
{
   "WindowIdentities":[
      {
         "WindowId":"mw-0c50858d01EXAMPLE",
         "Name":"My-First-Maintenance-Window",
         "Enabled":true,
         "Duration":2,
         "Cutoff":0,
         "NextExecutionTime": "2019-05-18T17:01:01.137Z"        
      },
      {
         "WindowId":"mw-9a8b7c6d5eEXAMPLE",
         "Name":"My-Second-Maintenance-Window",
         "Enabled":true,
         "Duration":4,
         "Cutoff":1,
         "NextExecutionTime": "2019-05-30T03:30:00.137Z"        
      },
   ]
}
```

**Elenca tutte le finestre di manutenzione disabilitate**  
Eseguire il seguente comando seguente.

```
aws ssm describe-maintenance-windows --filters "Key=Enabled,Values=false"
```

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "WindowIdentities": [
        {
            "WindowId": "mw-6e5c9d4b7cEXAMPLE",
            "Name": "My-Disabled-Maintenance-Window",
            "Enabled": false,
            "Duration": 2,
            "Cutoff": 1
        }
    ]
}
```

**Elenca tutte le finestre di manutenzione con nomi che iniziano con un determinato prefisso**  
Eseguire il seguente comando seguente.

```
aws ssm describe-maintenance-windows --filters "Key=Name,Values=My"
```

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "WindowIdentities": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window",
            "Enabled": true,
            "Duration": 2,
            "Cutoff": 0,
            "NextExecutionTime": "2019-05-18T17:01:01.137Z"
        },
        {
            "WindowId": "mw-9a8b7c6d5eEXAMPLE",
            "Name": "My-Second-Maintenance-Window",
            "Enabled": true,
            "Duration": 4,
            "Cutoff": 1,
            "NextExecutionTime": "2019-05-30T03:30:00.137Z"
        },
        {
            "WindowId": "mw-6e5c9d4b7cEXAMPLE",
            "Name": "My-Disabled-Maintenance-Window",
            "Enabled": false,
            "Duration": 2,
            "Cutoff": 1
        }
    ]
}
```

## Esempi di 'describe-maintenance-window-targets'
<a name="mw-cli-tutorials-describe-maintenance-window-targets"></a>

**Visualizza le destinazioni di una finestra di manutenzione che corrispondono a un determinato valore delle informazioni dello specifico proprietario**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-window-targets \
    --window-id "mw-6e5c9d4b7cEXAMPLE" \
    --filters "Key=OwnerInformation,Values=CostCenter1"
```

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

```
aws ssm describe-maintenance-window-targets ^
    --window-id "mw-6e5c9d4b7cEXAMPLE" ^
    --filters "Key=OwnerInformation,Values=CostCenter1"
```

------

**Nota**  
Le chiavi di filtro supportate sono `Type`, `WindowTargetId` e `OwnerInformation`.

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "Targets": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE",
            "ResourceType": "INSTANCE",
            "Targets": [
                {
                    "Key": "tag:Name",
                    "Values": [
                        "Production"
                    ]
                }
            ],
            "OwnerInformation": "CostCenter1",
            "Name": "Target1"
        }
    ]
}
```

## Esempi per 'describe-maintenance-window-tasks'
<a name="mw-cli-tutorials-describe-maintenance-window-tasks"></a>

**Mostra tutte le attività registrate che richiamano al documento del comando SSM `AWS-RunPowerShellScript`**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-window-tasks \
    --window-id "mw-0c50858d01EXAMPLE" \
    --filters "Key=TaskArn,Values=AWS-RunPowerShellScript"
```

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

```
aws ssm describe-maintenance-window-tasks ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --filters "Key=TaskArn,Values=AWS-RunPowerShellScript"
```

------

Questo sistema restituisce informazioni simili alle seguenti.

```
{
   "Tasks":[
      {
         "ServiceRoleArn": "arn:aws:iam::111122223333:role/MyMaintenanceWindowServiceRole",
         "MaxErrors":"1",
         "TaskArn":"AWS-RunPowerShellScript",
         "MaxConcurrency":"1",
         "WindowTaskId":"4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
         "TaskParameters":{
            "commands":{
               "Values":[
                  "driverquery.exe"
               ]
            }
         },
         "Priority":3,
         "Type":"RUN_COMMAND",
         "Targets":[
            {
               "TaskTargetId":"i-02573cafcfEXAMPLE",
               "TaskTargetType":"INSTANCE"
            }
         ]
      },
      {
         "ServiceRoleArn":"arn:aws:iam::111122223333:role/MyMaintenanceWindowServiceRole",
         "MaxErrors":"1",
         "TaskArn":"AWS-RunPowerShellScript",
         "MaxConcurrency":"1",
         "WindowTaskId":"4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
         "TaskParameters":{
            "commands":{
               "Values":[
                  "ipconfig"
               ]
            }
         },
         "Priority":1,
         "Type":"RUN_COMMAND",
         "Targets":[
            {
               "TaskTargetId":"i-02573cafcfEXAMPLE",
               "TaskTargetType":"WINDOW_TARGET"
            }
         ]
      }
   ]
}
```

**Mostra tutte le attività registrate che hanno una priorità di "3"**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-window-tasks \
    --window-id "mw-9a8b7c6d5eEXAMPLE" \
    --filters "Key=Priority,Values=3"
```

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

```
aws ssm describe-maintenance-window-tasks ^
    --window-id "mw-9a8b7c6d5eEXAMPLE" ^
    --filters "Key=Priority,Values=3"
```

------

Questo sistema restituisce informazioni simili alle seguenti.

```
{
   "Tasks":[
      {
         "ServiceRoleArn":"arn:aws:iam::111122223333:role/MyMaintenanceWindowServiceRole",
         "MaxErrors":"1",
         "TaskArn":"AWS-RunPowerShellScript",
         "MaxConcurrency":"1",
         "WindowTaskId":"4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
         "TaskParameters":{
            "commands":{
               "Values":[
                  "driverquery.exe"
               ]
            }
         },
         "Priority":3,
         "Type":"RUN_COMMAND",
         "Targets":[
            {
               "TaskTargetId":"i-02573cafcfEXAMPLE",
               "TaskTargetType":"INSTANCE"
            }
         ]
      }
   ]
}
```

**Mostra tutte le attività registrate che hanno una priorità di "1" e utilizzano Run Command**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-window-tasks \
    --window-id "mw-0c50858d01EXAMPLE" \
    --filters "Key=Priority,Values=1" "Key=TaskType,Values=RUN_COMMAND"
```

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

```
aws ssm describe-maintenance-window-tasks ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --filters "Key=Priority,Values=1" "Key=TaskType,Values=RUN_COMMAND"
```

------

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "Tasks": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
            "TaskArn": "AWS-RunShellScript",
            "Type": "RUN_COMMAND",
            "Targets": [
                {
                    "Key": "InstanceIds",
                    "Values": [
                        "i-02573cafcfEXAMPLE"
                    ]
                }
            ],
            "TaskParameters": {},
            "Priority": 1,
            "ServiceRoleArn": "arn:aws:iam::111122223333:role/MyMaintenanceWindowServiceRole",
            "MaxConcurrency": "1",
            "MaxErrors": "1"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "WindowTaskId": "8a5c4629-31b0-4edd-8aea-33698EXAMPLE",
            "TaskArn": "AWS-UpdateSSMAgent",
            "Type": "RUN_COMMAND",
            "Targets": [
                {
                    "Key": "InstanceIds",
                    "Values": [
                        "i-0471e04240EXAMPLE"
                    ]
                }
            ],
            "TaskParameters": {},
            "Priority": 1,
            "ServiceRoleArn": "arn:aws:iam::111122223333:role/MyMaintenanceWindowServiceRole",
            "MaxConcurrency": "1",
            "MaxErrors": "1",
            "Name": "My-Run-Command-Task",
            "Description": "My Run Command task to update SSM Agent on an instance"
        }
    ]
}
```

## Esempi per 'describe-maintenance-windows-for-target'
<a name="mw-cli-tutorials-describe-maintenance-windows-for-target"></a>

**Elenca le informazioni sulle destinazioni della finestra di manutenzione o sui task associati a un nodo specifico.**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-windows-for-target \
    --resource-type INSTANCE \
    --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" \
    --max-results 10
```

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

```
aws ssm describe-maintenance-windows-for-target ^
    --resource-type INSTANCE ^
    --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" ^
    --max-results 10
```

------

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "WindowIdentities": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window"
        },
        {
            "WindowId": "mw-9a8b7c6d5eEXAMPLE",
            "Name": "My-Second-Maintenance-Window"
        }
    ]
}
```

## Esempi per '' describe-maintenance-window-executions
<a name="mw-cli-tutorials-describe-maintenance-window-executions"></a>

**Visualizza tutte le attività eseguite prima di una determinata data**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-window-executions \
    --window-id "mw-9a8b7c6d5eEXAMPLE" \
    --filters "Key=ExecutedBefore,Values=2019-05-12T05:00:00Z"
```

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

```
aws ssm describe-maintenance-window-executions ^
    --window-id "mw-9a8b7c6d5eEXAMPLE" ^
    --filters "Key=ExecutedBefore,Values=2019-05-12T05:00:00Z"
```

------

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "WindowExecutions": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
            "Status": "FAILED",
            "StatusDetails": "The following SSM parameters are invalid: LevelUp",
            "StartTime": 1557617747.993,
            "EndTime": 1557617748.101
        },
        {
            "WindowId": "mw-9a8b7c6d5eEXAMPLE",
            "WindowExecutionId": "791b72e0-f0da-4021-8b35-f95dfEXAMPLE",
            "Status": "SUCCESS",
            "StartTime": 1557594085.428,
            "EndTime": 1557594090.978
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "WindowExecutionId": "ecec60fa-6bb0-4d26-98c7-140308EXAMPLE",
            "Status": "SUCCESS",
            "StartTime": 1557593793.483,
            "EndTime": 1557593798.978
        }
    ]
}
```

**Elenca tutte le attività eseguite dopo una determinata data**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-window-executions \
    --window-id "mw-9a8b7c6d5eEXAMPLE" \
    --filters "Key=ExecutedAfter,Values=2018-12-31T17:00:00Z"
```

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

```
aws ssm describe-maintenance-window-executions ^
    --window-id "mw-9a8b7c6d5eEXAMPLE" ^
    --filters "Key=ExecutedAfter,Values=2018-12-31T17:00:00Z"
```

------

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "WindowExecutions": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
            "Status": "FAILED",
            "StatusDetails": "The following SSM parameters are invalid: LevelUp",
            "StartTime": 1557617747.993,
            "EndTime": 1557617748.101
        },
        {
            "WindowId": "mw-9a8b7c6d5eEXAMPLE",
            "WindowExecutionId": "791b72e0-f0da-4021-8b35-f95dfEXAMPLE",
            "Status": "SUCCESS",
            "StartTime": 1557594085.428,
            "EndTime": 1557594090.978
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "WindowExecutionId": "ecec60fa-6bb0-4d26-98c7-140308EXAMPLE",
            "Status": "SUCCESS",
            "StartTime": 1557593793.483,
            "EndTime": 1557593798.978
        }
    ]
}
```

## Esempi per 'describe-maintenance-window-schedule'
<a name="mw-cli-tutorials-describe-maintenance-window-schedule"></a>

**Visualizza le prossime dieci esecuzioni programmate della finestra di manutenzione per un determinato nodo.**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-window-schedule \
    --resource-type INSTANCE \
    --targets "Key=InstanceIds,Values=i-07782c72faEXAMPLE" \
    --max-results 10
```

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

```
aws ssm describe-maintenance-window-schedule ^
    --resource-type INSTANCE ^
    --targets "Key=InstanceIds,Values=i-07782c72faEXAMPLE" ^
    --max-results 10
```

------

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "ScheduledWindowExecutions": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window",
            "ExecutionTime": "2019-05-18T23:35:24.902Z"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window",
            "ExecutionTime": "2019-05-25T23:35:24.902Z"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window",
            "ExecutionTime": "2019-06-01T23:35:24.902Z"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window",
            "ExecutionTime": "2019-06-08T23:35:24.902Z"
        },
        {
            "WindowId": "mw-9a8b7c6d5eEXAMPLE",
            "Name": "My-Second-Maintenance-Window",
            "ExecutionTime": "2019-06-15T23:35:24.902Z"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window",
            "ExecutionTime": "2019-06-22T23:35:24.902Z"
        },
        {
            "WindowId": "mw-9a8b7c6d5eEXAMPLE",
            "Name": "My-Second-Maintenance-Window",
            "ExecutionTime": "2019-06-29T23:35:24.902Z"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window",
            "ExecutionTime": "2019-07-06T23:35:24.902Z"
        },
        {
            "WindowId": "mw-9a8b7c6d5eEXAMPLE",
            "Name": "My-Second-Maintenance-Window",
            "ExecutionTime": "2019-07-13T23:35:24.902Z"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window",
            "ExecutionTime": "2019-07-20T23:35:24.902Z"
        }
    ],
    "NextToken": "AAEABUXdceT92FvtKld/dGHELj5Mi+GKW/EXAMPLE"
}
```

**Visualizza la pianificazione della finestra di manutenzione per i nodi taggati con una determinata coppia chiave-valore**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-window-schedule \
    --resource-type INSTANCE \
    --targets "Key=tag:prod,Values=rhel7"
```

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

```
aws ssm describe-maintenance-window-schedule ^
    --resource-type INSTANCE ^
    --targets "Key=tag:prod,Values=rhel7"
```

------

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "ScheduledWindowExecutions": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "DemoRateStartDate",
            "ExecutionTime": "2019-10-20T05:34:56-07:00"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "DemoRateStartDate",
            "ExecutionTime": "2019-10-21T05:34:56-07:00"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "DemoRateStartDate",
            "ExecutionTime": "2019-10-22T05:34:56-07:00"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "DemoRateStartDate",
            "ExecutionTime": "2019-10-23T05:34:56-07:00"
        },
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "DemoRateStartDate",
            "ExecutionTime": "2019-10-24T05:34:56-07:00"
        }
    ],
    "NextToken": "AAEABccwSXqQRGKiTZ1yzGELR6cxW4W/EXAMPLE"
}
```

**Visualizza gli orari di inizio delle prossime quattro esecuzioni di una finestra di manutenzione**  
Eseguire il seguente comando seguente.

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

```
aws ssm describe-maintenance-window-schedule \
    --window-id "mw-0c50858d01EXAMPLE" \
    --max-results "4"
```

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

```
aws ssm describe-maintenance-window-schedule ^
    --window-id "mw-0c50858d01EXAMPLE" ^
    --max-results "4"
```

------

Questo sistema restituisce informazioni simili alle seguenti.

```
{
    "WindowSchedule": [
        {
            "ScheduledWindowExecutions": [
                {
                    "ExecutionTime": "2019-10-04T10:10:10Z",
                    "Name": "My-First-Maintenance-Window",
                    "WindowId": "mw-0c50858d01EXAMPLE"
                },
                {
                    "ExecutionTime": "2019-10-11T10:10:10Z",
                    "Name": "My-First-Maintenance-Window",
                    "WindowId": "mw-0c50858d01EXAMPLE"
                },
                {
                    "ExecutionTime": "2019-10-18T10:10:10Z",
                    "Name": "My-First-Maintenance-Window",
                    "WindowId": "mw-0c50858d01EXAMPLE"
                },
                {
                    "ExecutionTime": "2019-10-25T10:10:10Z",
                    "Name": "My-First-Maintenance-Window",
                    "WindowId": "mw-0c50858d01EXAMPLE"
                }
            ]
        }
    ]
}
```

# Tutorial: Visualizza informazioni sulle attività e sulle esecuzioni delle attività utilizzando il AWS CLI
<a name="mw-cli-tutorial-task-info"></a>

Questo tutorial dimostra come utilizzare AWS Command Line Interface (AWS CLI) per visualizzare i dettagli sulle attività completate nella finestra di manutenzione. 

Se arrivi direttamente da [Tutorial: Creare e configurare una finestra di manutenzione utilizzando il AWS CLI](maintenance-windows-cli-tutorials-create.md), verifica di aver lasciato tempo sufficiente alla finestra di manutenzione per completare l'esecuzione almeno una volta al fine di visualizzare i risultati dell'esecuzione.

Man mano che seguite i passaggi di questo tutorial, sostituite i valori nel *red* testo in corsivo con le vostre opzioni e. IDs Ad esempio, sostituisci l'ID della finestra di manutenzione *mw-0c50858d01EXAMPLE* e l'ID dell'istanza *i-02573cafcfEXAMPLE* con l'ID IDs delle risorse che crei.

**Per visualizzare informazioni sulle attività e sulle esecuzioni delle attività utilizzando il AWS CLI**

1. Per visualizzare un elenco di esecuzioni delle attività per una specifica finestra di manutenzione, eseguire il seguente comando.

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

   ```
   aws ssm describe-maintenance-window-executions \
       --window-id "mw-0c50858d01EXAMPLE"
   ```

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

   ```
   aws ssm describe-maintenance-window-executions ^
       --window-id "mw-0c50858d01EXAMPLE"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowExecutions": [
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
               "Status": "SUCCESS",
               "StartTime": 1557593793.483,
               "EndTime": 1557593798.978
           },
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowExecutionId": "791b72e0-f0da-4021-8b35-f95dfEXAMPLE",
               "Status": "SUCCESS",
               "StartTime": 1557593493.096,
               "EndTime": 1557593498.611
           },
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowExecutionId": "ecec60fa-6bb0-4d26-98c7-140308EXAMPLE",
               "Status": "SUCCESS",
               "StatusDetails": "No tasks to execute.",
               "StartTime": 1557593193.309,
               "EndTime": 1557593193.334
           }
       ]
   }
   ```

1. Per ottenere informazioni sull'esecuzione di un'attività in una finestra di manutenzione, eseguire il seguente comando.

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

   ```
   aws ssm get-maintenance-window-execution \
       --window-execution-id "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE"
   ```

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

   ```
   aws ssm get-maintenance-window-execution ^
       --window-execution-id "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
       "TaskIds": [
           "c9b05aba-197f-4d8d-be34-e73fbEXAMPLE"
       ],
       "Status": "SUCCESS",
       "StartTime": 1557593493.096,
       "EndTime": 1557593498.611
   }
   ```

1. Per visualizzare l'elenco delle attività completate nell'ambito di un'esecuzione di una finestra di manutenzione, eseguire il seguente comando.

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

   ```
   aws ssm describe-maintenance-window-execution-tasks \
       --window-execution-id "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE"
   ```

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

   ```
   aws ssm describe-maintenance-window-execution-tasks ^
       --window-execution-id "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowExecutionTaskIdentities": [
           {
               "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
               "TaskExecutionId": "c9b05aba-197f-4d8d-be34-e73fbEXAMPLE",
               "Status": "SUCCESS",
               "StartTime": 1557593493.162,
               "EndTime": 1557593498.57,
               "TaskArn": "AWS-RunShellScript",
               "TaskType": "RUN_COMMAND"
           }
       ]
   }
   ```

1. Per ottenere informazioni su un'esecuzione di attività, esegui il seguente comando.

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

   ```
   aws ssm get-maintenance-window-execution-task \
       --window-execution-id "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE" \
       --task-id "c9b05aba-197f-4d8d-be34-e73fbEXAMPLE"
   ```

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

   ```
   aws ssm get-maintenance-window-execution-task ^
       --window-execution-id "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE" ^
       --task-id "c9b05aba-197f-4d8d-be34-e73fbEXAMPLE"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
       "TaskExecutionId": "c9b05aba-197f-4d8d-be34-e73fbEXAMPLE",
       "TaskArn": "AWS-RunShellScript",
       "ServiceRole": "arn:aws:iam::111122223333:role/MyMaintenanceWindowServiceRole",
       "Type": "RUN_COMMAND",
       "TaskParameters": [
           {
               "aws:InstanceId": {
                   "Values": [
                       "i-02573cafcfEXAMPLE"
                   ]
               },
               "commands": {
                   "Values": [
                       "df"
                   ]
               }
           }
       ],
       "Priority": 10,
       "MaxConcurrency": "1",
       "MaxErrors": "1",
       "Status": "SUCCESS",
       "StartTime": 1557593493.162,
       "EndTime": 1557593498.57
   }
   ```

1. Per ottenere la specifica chiamata dell'attività eseguita per l'esecuzione di un'attività, esegui il seguente comando.

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

   ```
   aws ssm describe-maintenance-window-execution-task-invocations \
       --window-execution-id "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE" \
       --task-id "c9b05aba-197f-4d8d-be34-e73fbEXAMPLE"
   ```

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

   ```
   aws ssm describe-maintenance-window-execution-task-invocations ^
       --window-execution-id "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE" ^
       --task-id "c9b05aba-197f-4d8d-be34-e73fbEXAMPLE"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowExecutionTaskInvocationIdentities": [
           {
               "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
               "TaskExecutionId": "c9b05aba-197f-4d8d-be34-e73fbEXAMPLE",
               "InvocationId": "c336d2ab-09de-44ba-8f6a-6136cEXAMPLE",
               "ExecutionId": "76a5a04f-caf6-490c-b448-92c02EXAMPLE",
               "TaskType": "RUN_COMMAND",
               "Parameters": "{\"documentName\":\"AWS-RunShellScript\",\"instanceIds\":[\"i-02573cafcfEXAMPLE\"],\"maxConcurrency\":\"1\",\"maxErrors\":\"1\",\"parameters\":{\"commands\":[\"df\"]}}",
               "Status": "SUCCESS",
               "StatusDetails": "Success",
               "StartTime": 1557593493.222,
               "EndTime": 1557593498.466
           }
       ]
   }
   ```

# Tutorial: Aggiornare una finestra di manutenzione utilizzando il AWS CLI
<a name="maintenance-windows-cli-tutorials-update"></a>

Questo tutorial mostra come usare il AWS Command Line Interface (AWS CLI) per aggiornare una finestra di manutenzione. Mostra anche come aggiornare diversi tipi di attività, incluse quelle per AWS Systems Manager Run Command and Automation e AWS Step Functions. AWS Lambda

Gli esempi di questa sezione utilizzano le seguenti operazioni Systems Manager per l'aggiornamento di una finestra di manutenzione:
+ [UpdateMaintenanceWindow](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_UpdateMaintenanceWindow.html)
+ [UpdateMaintenanceWindowTarget](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_UpdateMaintenanceWindowTarget.html)
+ [UpdateMaintenanceWindowTask](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_UpdateMaintenanceWindowTask.html)
+ [DeregisterTargetFromMaintenanceWindow](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DeregisterTargetFromMaintenanceWindow.html)

Per informazioni sull'utilizzo della console di Systems Manager per aggiornare una finestra di manutenzione, consulta [Aggiorna o elimina le risorse della finestra di manutenzione utilizzando la console](sysman-maintenance-update.md). 

Mentre segui i passaggi di questo tutorial, sostituisci i valori nel *red* testo in corsivo con le tue opzioni e. IDs Ad esempio, sostituisci l'ID della finestra di manutenzione *mw-0c50858d01EXAMPLE* e l'ID dell'istanza *i-02573cafcfEXAMPLE* con l'ID IDs delle risorse che crei.

**Per aggiornare una finestra di manutenzione utilizzando il AWS CLI**

1. Apri AWS CLI ed esegui il comando seguente per aggiornare una destinazione in modo da includere un nome e una descrizione.

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

   ```
   aws ssm update-maintenance-window-target \
       --window-id "mw-0c50858d01EXAMPLE" \
       --window-target-id "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
       --name "My-Maintenance-Window-Target" \
       --description "Description for my maintenance window target"
   ```

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

   ```
   aws ssm update-maintenance-window-target ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --window-target-id "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ^
       --name "My-Maintenance-Window-Target" ^
       --description "Description for my maintenance window target"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE",
       "Targets": [
           {
               "Key": "InstanceIds",
               "Values": [
                   "i-02573cafcfEXAMPLE"
               ]
           }
       ],
       "Name": "My-Maintenance-Window-Target",
       "Description": "Description for my maintenance window target"
   }
   ```

1. Eseguire questo comando per utilizzare l'opzione `replace` per rimuovere il campo descrizione e aggiungere un'ulteriore destinazione. Il campo descrizione è rimosso, perché l'aggiornamento non include il campo (valore nullo). Assicurarsi di specificare un nodo aggiuntivo configurato per l'utilizzo con Systems Manager.

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

   ```
   aws ssm update-maintenance-window-target \
       --window-id "mw-0c50858d01EXAMPLE" \
       --window-target-id "d208dedf-3f6b-41ff-ace8-8e751EXAMPLE" \
       --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE" \
       --name "My-Maintenance-Window-Target" \
       --replace
   ```

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

   ```
   aws ssm update-maintenance-window-target ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --window-target-id "d208dedf-3f6b-41ff-ace8-8e751EXAMPLE" ^
       --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE" ^
       --name "My-Maintenance-Window-Target" ^
       --replace
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE",
       "Targets": [
           {
               "Key": "InstanceIds",
               "Values": [
                   "i-02573cafcfEXAMPLE",
                   "i-0471e04240EXAMPLE"
               ]
           }
       ],
       "Name": "My-Maintenance-Window-Target"
   }
   ```

1. L'opzione `start-date` permette di ritardare l'attivazione di una finestra di manutenzione fino a una data futura indicata. L'opzione `end-date` permette di impostare una data e un'ora nel futuro dopo la quale la finestra di manutenzione non sarà più eseguita. Specificare le opzioni in formato ISO-8601 Extended.

   Eseguire il comando seguente per specificare un intervallo di data e ora per esecuzioni regolarmente pianificate della finestra di manutenzione.

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

   ```
   aws ssm update-maintenance-window \
       --window-id "mw-0c50858d01EXAMPLE" \
       --start-date "2020-10-01T10:10:10Z" \
       --end-date "2020-11-01T10:10:10Z"
   ```

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

   ```
   aws ssm update-maintenance-window ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --start-date "2020-10-01T10:10:10Z" ^
       --end-date "2020-11-01T10:10:10Z"
   ```

------

1. Esegui il seguente comando per aggiornare un task Run Command.
**Suggerimento**  
Se il target è un'istanza Amazon Elastic Compute Cloud (Amazon EC2) per Windows Server, modifica da `df` a `ipconfig` e da `AWS-RunShellScript` a `AWS-RunPowerShellScript` nel comando seguente.

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

   ```
   aws ssm update-maintenance-window-task \
       --window-id "mw-0c50858d01EXAMPLE" \
       --window-task-id "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE" \
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
       --task-arn "AWS-RunShellScript" \
       --service-role-arn "arn:aws:iam::account-id:role/MaintenanceWindowsRole" \
       --task-invocation-parameters "RunCommand={Comment=Revising my Run Command task,Parameters={commands=df}}" \
       --priority 1 --max-concurrency 10 --max-errors 4 \
       --name "My-Task-Name" --description "A description for my Run Command task"
   ```

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

   ```
   aws ssm update-maintenance-window-task ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --window-task-id "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE" ^
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ^
       --task-arn "AWS-RunShellScript" ^
       --service-role-arn "arn:aws:iam::account-id:role/MaintenanceWindowsRole" ^
       --task-invocation-parameters "RunCommand={Comment=Revising my Run Command task,Parameters={commands=df}}" ^
       --priority 1 --max-concurrency 10 --max-errors 4 ^
       --name "My-Task-Name" --description "A description for my Run Command task"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
       "Targets": [
           {
               "Key": "WindowTargetIds",
               "Values": [
                   "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
               ]
           }
       ],
       "TaskArn": "AWS-RunShellScript",
       "ServiceRoleArn": "arn:aws:iam::111122223333:role/MaintenanceWindowsRole",
       "TaskParameters": {},
       "TaskInvocationParameters": {
           "RunCommand": {
               "Comment": "Revising my Run Command task",
               "Parameters": {
                   "commands": [
                       "df"
                   ]
               }
           }
       },
       "Priority": 1,
       "MaxConcurrency": "10",
       "MaxErrors": "4",
       "Name": "My-Task-Name",
       "Description": "A description for my Run Command task"
   }
   ```

1. Adatta ed esegui il seguente comando per aggiornare un task Lambda.

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

   ```
   aws ssm update-maintenance-window-task \
       --window-id mw-0c50858d01EXAMPLE \
       --window-task-id 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE \
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
       --task-arn "arn:aws:lambda:region:111122223333:function:SSMTestLambda" \
       --service-role-arn "arn:aws:iam:account-id:role/MaintenanceWindowsRole" \
       --task-invocation-parameters '{"Lambda":{"Payload":"{\"InstanceId\":\"{{RESOURCE_ID}}\",\"targetType\":\"{{TARGET_TYPE}}\"}"}}' \
       --priority 1 --max-concurrency 10 --max-errors 5 \
       --name "New-Lambda-Task-Name" \
       --description "A description for my Lambda task"
   ```

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

   ```
   aws ssm update-maintenance-window-task ^
       --window-id mw-0c50858d01EXAMPLE ^
       --window-task-id 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE ^
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ^
       --task-arn --task-arn "arn:aws:lambda:region:111122223333:function:SSMTestLambda" ^
       --service-role-arn "arn:aws:iam:account-id:role/MaintenanceWindowsRole" ^
       --task-invocation-parameters '{"Lambda":{"Payload":"{\"InstanceId\":\"{{RESOURCE_ID}}\",\"targetType\":\"{{TARGET_TYPE}}\"}"}}' ^
       --priority 1 --max-concurrency 10 --max-errors 5 ^
       --name "New-Lambda-Task-Name" ^
       --description "A description for my Lambda task"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
       "Targets": [
           {
               "Key": "WindowTargetIds",
               "Values": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
           }
       ],
       "TaskArn": "arn:aws:lambda:us-east-2:111122223333:function:SSMTestLambda",
       "ServiceRoleArn": "arn:aws:iam::111122223333:role/MaintenanceWindowsRole",
       "TaskParameters": {},
       "TaskInvocationParameters": {
           "Lambda": {
               "Payload": "e30="
           }
       },
       "Priority": 1,
       "MaxConcurrency": "10",
       "MaxErrors": "5",
       "Name": "New-Lambda-Task-Name",
       "Description": "A description for my Lambda task"
   }
   ```

1. Se stai aggiornando un'attività Step Functions, adatta ed esegui il comando seguente per aggiornarla task-invocation-parameters.

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

   ```
   aws ssm update-maintenance-window-task \
       --window-id "mw-0c50858d01EXAMPLE" \
       --window-task-id "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE" \
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
       --task-arn "arn:aws:states:region:execution:SSMStepFunctionTest" \
       --service-role-arn "arn:aws:iam:account-id:role/MaintenanceWindowsRole" \
       --task-invocation-parameters '{"StepFunctions":{"Input":"{\"InstanceId\":\"{{RESOURCE_ID}}\"}"}}' \
       --priority 0 --max-concurrency 10 --max-errors 5 \
       --name "My-Step-Functions-Task" \
       --description "A description for my Step Functions task"
   ```

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

   ```
   aws ssm update-maintenance-window-task ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --window-task-id "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE" ^
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ^
       --task-arn "arn:aws:states:region:execution:SSMStepFunctionTest" ^
       --service-role-arn "arn:aws:iam:account-id:role/MaintenanceWindowsRole" ^
       --task-invocation-parameters '{"StepFunctions":{"Input":"{\"InstanceId\":\"{{RESOURCE_ID}}\"}"}}' ^
       --priority 0 --max-concurrency 10 --max-errors 5 ^
       --name "My-Step-Functions-Task" ^
       --description "A description for my Step Functions task"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
       "Targets": [
           {
               "Key": "WindowTargetIds",
               "Values": [
                   "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
               ]
           }
       ],
       "TaskArn": "arn:aws:states:us-east-2:111122223333:execution:SSMStepFunctionTest",
       "ServiceRoleArn": "arn:aws:iam::111122223333:role/MaintenanceWindowsRole",
       "TaskParameters": {},
       "TaskInvocationParameters": {
           "StepFunctions": {
               "Input": "{\"instanceId\":\"{{RESOURCE_ID}}\"}"
           }
       },
       "Priority": 0,
       "MaxConcurrency": "10",
       "MaxErrors": "5",
       "Name": "My-Step-Functions-Task",
       "Description": "A description for my Step Functions task"
   }
   ```

1. Eseguire il comando seguente per annullare la registrazione di una destinazione da una finestra di manutenzione. Questo esempio utilizza il parametro `safe` per determinare se la destinazione è referenziata da una qualsiasi e quindi se l'annullamento della registrazione è sicuro.

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

   ```
   aws ssm deregister-target-from-maintenance-window \
       --window-id "mw-0c50858d01EXAMPLE" \
       --window-target-id "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
       --safe
   ```

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

   ```
   aws ssm deregister-target-from-maintenance-window ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --window-target-id "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ^
       --safe
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   An error occurred (TargetInUseException) when calling the DeregisterTargetFromMaintenanceWindow operation: 
   This Target cannot be deregistered because it is still referenced in Task: 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
   ```

1. Eseguire il comando seguente per annullare la registrazione di una destinazione da una finestra di manutenzione anche se la destinazione è referenziata da un'attività. È possibile forzare l'operazione di annullamento della registrazione utilizzando il parametro `no-safe`.

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

   ```
   aws ssm deregister-target-from-maintenance-window \
       --window-id "mw-0c50858d01EXAMPLE" \
       --window-target-id "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \
       --no-safe
   ```

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

   ```
   aws ssm deregister-target-from-maintenance-window ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --window-target-id "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ^
       --no-safe
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
   }
   ```

1. Esegui il seguente comando per aggiornare un task Run Command. Questo esempio utilizza un parametro Parameter Store Systems Manager denominato `UpdateLevel`, formattato nel seguente modo: '`{{ssm:UpdateLevel}}`'

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

   ```
   aws ssm update-maintenance-window-task \
       --window-id "mw-0c50858d01EXAMPLE" \
       --window-task-id "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE" \
       --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE"  \
       --task-invocation-parameters "RunCommand={Comment=A comment for my task update,Parameters={UpdateLevel='{{ssm:UpdateLevel}}'}}"
   ```

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

   ```
   aws ssm update-maintenance-window-task ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --window-task-id "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE" ^
       --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE"  ^
       --task-invocation-parameters "RunCommand={Comment=A comment for my task update,Parameters={UpdateLevel='{{ssm:UpdateLevel}}'}}"
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
       "Targets": [
           {
               "Key": "InstanceIds",
               "Values": [
                   "i-02573cafcfEXAMPLE"
               ]
           }
       ],
       "TaskArn": "AWS-RunShellScript",
       "ServiceRoleArn": "arn:aws:iam::111122223333:role/MyMaintenanceWindowServiceRole",
       "TaskParameters": {},
       "TaskInvocationParameters": {
           "RunCommand": {
               "Comment": "A comment for my task update",
               "Parameters": {
                   "UpdateLevel": [
                       "{{ssm:UpdateLevel}}"
                   ]
               }
           }
       },
       "Priority": 10,
       "MaxConcurrency": "1",
       "MaxErrors": "1"
   }
   ```

1. Eseguire questo comando per aggiornare un'attività di automazione per specificare i parametri `WINDOW_ID` e `WINDOW_TASK_ID` per il parametro `task-invocation-parameters`:

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

   ```
   aws ssm update-maintenance-window-task \
       --window-id "mw-0c50858d01EXAMPLE" \
       --window-task-id "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE" \
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE \
       --task-arn "AutoTestDoc" \
       --service-role-arn "arn:aws:iam:account-id:role/MyMaintenanceWindowServiceRole \
       --task-invocation-parameters "Automation={Parameters={InstanceId='{{RESOURCE_ID}}',initiator='{{WINDOW_ID}}.Task-{{WINDOW_TASK_ID}}'}}" \
       --priority 3 --max-concurrency 10 --max-errors 5
   ```

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

   ```
   aws ssm update-maintenance-window-task ^
       --window-id "mw-0c50858d01EXAMPLE" ^
       --window-task-id "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE" ^
       --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE ^
       --task-arn "AutoTestDoc" ^
       --service-role-arn "arn:aws:iam:account-id:role/MyMaintenanceWindowServiceRole ^
       --task-invocation-parameters "Automation={Parameters={InstanceId='{{RESOURCE_ID}}',initiator='{{WINDOW_ID}}.Task-{{WINDOW_TASK_ID}}'}}" ^
       --priority 3 --max-concurrency 10 --max-errors 5
   ```

------

   Questo sistema restituisce informazioni simili alle seguenti.

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
       "Targets": [
           {
               "Key": "WindowTargetIds",
               "Values": [
                   "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
               ]
           }
       ],
       "TaskArn": "AutoTestDoc",
       "ServiceRoleArn": "arn:aws:iam::111122223333:role/MyMaintenanceWindowServiceRole",
       "TaskParameters": {},
       "TaskInvocationParameters": {
           "Automation": {
               "Parameters": {
                   "multi": [
                       "{{WINDOW_TASK_ID}}"
                   ],
                   "single": [
                       "{{WINDOW_ID}}"
                   ]
               }
           }
       },
       "Priority": 0,
       "MaxConcurrency": "10",
       "MaxErrors": "5",
       "Name": "My-Automation-Task",
       "Description": "A description for my Automation task"
   }
   ```

# Tutorial: Eliminare una finestra di manutenzione utilizzando il AWS CLI
<a name="mw-cli-tutorial-delete-mw"></a>

Per eliminare una finestra di manutenzione creata in queste esercitazioni, eseguire il seguente comando.

```
aws ssm delete-maintenance-window --window-id "mw-0c50858d01EXAMPLE"
```

Questo sistema restituisce informazioni simili alle seguenti.

```
{
   "WindowId":"mw-0c50858d01EXAMPLE"
}
```

# Tutorial: creazione di una finestra di manutenzione per l'applicazione di patch tramite console
<a name="maintenance-window-tutorial-patching"></a>

**Importante**  
Puoi continuare a usare questo argomento legacy per creare una finestra di manutenzione per l'applicazione di patch. Consigliamo, tuttavia, di utilizzare una policy di patch. Per ulteriori informazioni, consultare [Configurazioni delle policy di patch in Quick Setup](patch-manager-policies.md) e [Configura l'applicazione di patch per le istanze in un'organizzazione utilizzando una policy di patch di Quick Setup](quick-setup-patch-manager.md). 

Per ridurre al minimo l'impatto sulla disponibilità dei server, ti consigliamo di configurare una finestra di manutenzione per eseguire l'applicazione di patch in orari che non interrompano le attività aziendali.

È necessario configurare ruoli e autorizzazioni perMaintenance Windows, uno strumento in AWS Systems Manager, prima di iniziare questa procedura. Per ulteriori informazioni, consulta [Configurazione di Maintenance Windows](setting-up-maintenance-windows.md). 

**Per creare una finestra di manutenzione per l'applicazione di patch**

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 **Maintenance Windows**.

1. Scegli **Crea finestra di manutenzione**.

1. Nel campo **Nome**, immetti un nome che lo indichi come una finestra di manutenzione per l'applicazione di aggiornamenti critici e importanti.

1. (Facoltativo) In **Descrizione**, immetti una descrizione. 

1. Scegli **Consenti destinazioni non registrate** per consentire a un'attività di una finestra di manutenzione di essere eseguita su nodi gestiti, anche se tali nodi non sono stati registrati come destinazioni.

   Se si sceglie questa opzione, è possibile scegliere i nodi non registrati (per ID nodo) quando si registra un'attività sulla finestra di manutenzione.

   Se non si sceglie questa opzione, è necessario scegliere destinazioni precedentemente registrate quando si registra un'attività sulla finestra di manutenzione. 

1. Nella parte superiore della sezione **Pianificazione**, specifica una pianificazione per la finestra di manutenzione tramite una delle tre opzioni di pianificazione.

   Per informazioni sulla creazione di cron/rate espressioni, vedere[Riferimento: espressioni Cron e della frequenza per Systems Manager](reference-cron-and-rate-expressions.md).

1. Per **Durata**, inserisci il numero di ore di esecuzione della finestra di manutenzione. Il valore specificato determina l'ora di fine specifica per la finestra di manutenzione in base all'ora di inizio. Nessuna attività della finestra di manutenzione può essere avviata dopo l'ora di fine risultante meno il numero di ore specificato per **Arresta l'inizializzazione di attività** nella fase successiva. 

   Ad esempio, se la finestra di manutenzione inizia alle 15:00, la durata è di tre ore e il valore **Arresta l'inizializzazione di attività** è un'ora, nessuna attività della finestra di manutenzione può iniziare dopo le 17:00. 

1. In **Stop initiating tasks (Interrompi l'avvio delle attività)**, inserire il numero di ore prima del termine della finestra di manutenzione a partire dalle quali il sistema deve interrompere la pianificazione dell'esecuzione di nuove attività. 

1. (Facoltativo) In **Data di inizio finestra**, specifica una data e un'ora nel formato ISO-8601 Extended che indichi il momento dell'attivazione della finestra di manutenzione. In questo modo è possibile ritardare l'attivazione della finestra di manutenzione fino alla data futura indicata.

1. (Facoltativo) In **Data di fine finestra**, specifica una data e un'ora nel formato ISO-8601 Extended che indichi il momento della disattivazione della finestra di manutenzione. In questo modo è possibile impostare una data e un'ora nel futuro in cui la finestra di manutenzione non sarà più in esecuzione.

1. (Facoltativo) In **Pianificazione fuso orario**, specifica il fuso orario su cui deve essere basata la pianificazione delle esecuzioni della finestra di manutenzione, nel formato IANA (Internet Assigned Numbers Authority). Ad esempio: "America/Los\$1Angeles", "etc/UTC", or "Asia/Seoul».

   Per ulteriori informazioni sui formati validi, consulta il [Database dei fusi orari](https://www.iana.org/time-zones) sul sito web IANA.

1. (Facoltativo) Nell'area **Gestisci tag**, applica una o più name/value coppie di chiavi di tag alla finestra di manutenzione.

   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 applicare un tag a questa finestra di manutenzione per identificare il tipo di attività eseguito. In questo caso, puoi specificare la seguente name/value coppia di chiavi:
   + `Key=TaskType,Value=Patching`

1. Scegli **Crea finestra di manutenzione**.

1. Nell'elenco delle finestre di manutenzione, scegli la finestra di manutenzione appena creata, quindi scegli **Operazioni**, **Registra destinazioni**.

1. (Facoltativo) Nella sezione **Dettagli della finestra di manutenzione di destinazione**, specifica il nome, la descrizione e le informazioni sul proprietario (il proprio nome o alias) per la destinazione.

1. In **Selezione della destinazione**, scegli **Specifica tag delle istanze**.

1. In **Specifica tag delle istanze**, immetti una chiave e un valore di tag per identificare i nodi da registrare nella finestra di manutenzione, quindi scegli **Aggiungi**.

1. Scegli **Registra destinazione**. Il sistema crea una finestra di manutenzione di destinazione.

1. Nella pagina dei dettagli della finestra di manutenzione creata, scegli **Operazioni**, **Registra attività di esecuzione comandi**.

1. (Facoltativo) In **Dettagli attività finestra di manutenzione** fornisci il nome e la descrizione dell'attività.

1. Per **Documento comando**, scegli `AWS-RunPatchBaseline`.

1. Per **Priorità attività**, scegli una priorità. Zero (`0`) indica la priorità più elevata.

1. In **Destinazioni**, sotto **Destinazione di**, scegli la finestra di manutenzione di destinazione creata precedentemente in questa procedura.

1. In **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) Per il **Ruolo di servizio IAM**, scegli un ruolo affinché Systems Manager conceda le autorizzazioni durante l'esecuzione di attività della finestra di manutenzione.

   Se non specifichi un ARN del ruolo di servizio, Systems Manager utilizza un ruolo collegato al servizio nell’account. Se nell'account non esiste un ruolo collegato al servizio appropriato per Systems Manager, questo viene creato quando l'attività viene registrata correttamente.
**Nota**  
Per migliorare il livello di sicurezza, consigliamo vivamente di creare una policy personalizzata e un ruolo di servizio personalizzato per l'esecuzione delle attività della finestra di manutenzione. C'è la possibilità di creare la policy per fornire solo le autorizzazioni necessarie per le specifiche attività della finestra di manutenzione. Per ulteriori informazioni, consulta [Configurazione di Maintenance Windows](setting-up-maintenance-windows.md).

1. (Facoltativo) In **Opzioni di output**, per salvare l'output del comando in un file, seleziona la casella **Abilita scrittura in S3**. Digita i nomi del bucket e del prefisso (cartella) nelle caselle.
**Nota**  
Le autorizzazioni S3 che consentono di scrivere dati in un bucket S3 sono quelle del profilo dell'istanza assegnate al nodo gestito e 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 in un Account AWS diverso, assicurarsi che il profilo dell'istanza o il ruolo di servizio IAM associato all'istanza disponga delle autorizzazioni necessarie per scrivere su quel bucket.

   Per trasmettere l'output a un gruppo di log di Amazon CloudWatch Logs, seleziona la casella **CloudWatch di output**. Inserisci il nome del gruppo di log nella casella.

1. Nella sezione **SNS notifications (Notifiche SNS)**, se si desidera che vengano inviate notifiche sullo stato di esecuzione del comando, selezionare la casella di controllo **Enable SNS notifications (Abilita notifiche SNS)**.

   Per ulteriori informazioni sulla configurazione delle notifiche Amazon SNS per Run Command, consulta [Monitoraggio delle modifiche di stato di Systems Manager utilizzando le notifiche Amazon SNS](monitoring-sns-notifications.md).

1. In **Parametri**:
   + Nell'elenco **Operazione**, scegli **Scansiona** per cercare le patch mancanti oppure **Installa** per cercare e installare le patch mancanti.
   + Non è necessario specificare nulla nel campo **Snapshot Id (ID snapshot)**. Questo sistema genera e fornisce automaticamente questo parametro.
   + Non è necessario specificare nulla nel campo **Installa elenco sostituzioni**, a meno che non si desideri che Patch Manager utilizzi un set di patch diverso da quello specificato per la baseline delle patch. Per informazioni, consulta [Nome parametro: `InstallOverrideList`](patch-manager-aws-runpatchbaseline.md#patch-manager-aws-runpatchbaseline-parameters-installoverridelist).
   + Per **RebootOption**, specifica se desideri che i nodi si riavviino se le patch vengono installate durante l'`Install`operazione o se Patch Manager rileva altre patch installate dopo l'ultimo riavvio del nodo. Per informazioni, consulta [Nome parametro: `RebootOption`](patch-manager-aws-runpatchbaseline.md#patch-manager-aws-runpatchbaseline-parameters-norebootoption).
   + (Facoltativo) In **Comment (Commento)** immettere una nota di tracciamento o un promemoria su questo comando.
   + Nella casella **Timeout (seconds) (Timeout (secondi))** immettere il numero di secondi che devono trascorrere per il completamento dell'operazione prima che il sistema la consideri come non andata a buon fine.

1. Scegliere **Register Run command task (Registra attività di esecuzione comandi)**.

Al termine dell'attività della finestra di manutenzione, è possibile visualizzare i dettagli di conformità delle patch nella console di Systems Manager nello strumento [Fleet Manager](fleet-manager.md). 

È inoltre possibile visualizzare le informazioni sulla conformità nello strumento [Patch Manager](patch-manager.md), nella scheda **Creazione di rapporti sulla conformità**. 

È inoltre possibile utilizzare [DescribePatchGroupState](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribePatchGroupState.html)and [DescribeInstancePatchStatesForPatchGroup](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeInstancePatchStatesForPatchGroup.html) APIs per visualizzare i dettagli sulla conformità. Per informazioni sui dati di conformità delle patch, consulta [Informazioni sulla conformità delle patch](compliance-about.md#compliance-monitor-patch).

# Piani di applicazione di patch con le finestre di manutenzione
<a name="sysman-patch-scheduletasks"></a>

Dopo avere configurato una baseline delle patch, ed facoltativamente un gruppo di patch, è possibile applicare le patch al nodo utilizzando una finestra di manutenzione. Una finestra di manutenzione può ridurre l'impatto sulla disponibilità del server consentendoti di specificare un'ora per l'applicazione di patch che non interrompa le operazioni aziendali. Una finestra di manutenzione funziona in questo modo:

1. Creare una finestra di manutenzione con una pianificazione per le operazioni di applicazione di patch.

1. Scegliere le destinazioni della finestra di manutenzione specificando il tag `Patch Group` o `PatchGroup` come nome del tag e qualsiasi valore definito per i tag Amazon Elastic Compute Cloud (Amazon EC2), ad esempio, "server web" o "US-EAST-PROD. Se sono presenti [tag consentiti nei metadati dell'istanza EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#allow-access-to-tags-in-IMDS), è necessario utilizzare `PatchGroup` (senza spazio).

1. Creare una nuova attività della finestra di manutenzione task e specificare il documento `AWS-RunPatchBaseline`. 

Quando configuri l'attività, è possibile scegliere di effettuare la scansione del nodo o di effettuare la scansione e installare le patch nei nodi. Se scegli di effettuare la scansione dei nodi, Patch Manager, uno strumento di AWS Systems Manager, effettua la scansione di ciascun nodo e genera un elenco delle patch mancanti da verificare.

Se scegli di effettuare la scansione e installare le patch, Patch Manager effettua la scansione di ogni nodo e confronta l'elenco delle patch installate a fronte di quello delle patch approvate nella baseline. Patch Manager identifica le patch mancanti, quindi scarica e installa tutte le patch approvate e mancanti.

Per eseguire un'unica scansione o installazione per risolvere un problema, è possibile utilizzare Run Command per chiamare direttamente il documento `AWS-RunPatchBaseline`.

**Importante**  
Dopo l'installazione delle patch, Systems Manager riavvia ciascuna nodo. Il riavvio è necessario per assicurare che le patch vengono installate correttamente e per garantire che il sistema non abbia lasciato il nodo in uno stato potenzialmente errato. (Eccezione: se il parametro `RebootOption` è impostato su `NoReboot` nel documento `AWS-RunPatchBaseline`, il nodo non viene riavviato dopo l'esecuzione di Patch Manager. Per ulteriori informazioni, consulta [Nome parametro: `RebootOption`](patch-manager-aws-runpatchbaseline.md#patch-manager-aws-runpatchbaseline-parameters-norebootoption).) 

# Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione
<a name="maintenance-window-tasks-pseudo-parameters"></a>

Quando si registra un'attività in Maintenance Windows, uno strumento di AWS Systems Manager, è possibile specificare i parametri univoci per ciascuno dei quattro tipi di attività. (Nei comandi CLI, questi vengono forniti utilizzando l'opzione `--task-invocation-parameters`.)

 Puoi anche fare riferimento a determinati valori utilizzando la sintassi degli *pseudoparametri*, ad esempio `{{RESOURCE_ID}}`, `{{TARGET_TYPE}}` e `{{WINDOW_TARGET_ID}}`. Quando viene eseguita, l'operazione della finestra di manutenzione trasmette i valori corretti invece dei segnaposto degli pseudoparametri. L'elenco completo degli pseudo parametri che è possibile utilizzare è fornito di seguito in questo argomento in [Pseudoparametri supportati](#pseudo-parameters).

**Importante**  
Per il tipo di destinazione `RESOURCE_GROUP`, a seconda del formato ID necessario per l'attività, è possibile scegliere tra utilizzare `{{TARGET_ID}}` e `{{RESOURCE_ID}}` e fare riferimento alla risorsa quando viene eseguita l'attività. `{{TARGET_ID}}` restituisce l'ARN completo della risorsa. `{{RESOURCE_ID}}` restituisce solo un nome o un ID più breve della risorsa, come mostrato in questi esempi.  
`{{TARGET_ID}}` format: `arn:aws:ec2:us-east-1:123456789012:instance/i-02573cafcfEXAMPLE`
`{{RESOURCE_ID}}` format: `i-02573cafcfEXAMPLE`
Per il tipo di destinazione `INSTANCE`, i parametri sia `{{TARGET_ID}}` sia `{{RESOURCE_ID}}` restituiscono solo l'ID istanza. Per ulteriori informazioni, consulta [Pseudoparametri supportati](#pseudo-parameters).  
`{{TARGET_ID}}`e `{{RESOURCE_ID}}` può essere utilizzato per trasferire AWS risorse solo alle attività IDs di Automation, Lambda e Step Functions. Questi due pseudo parametri non possono essere usati con attività Run Command.

## Esempi di pseudoparametri
<a name="pseudo-parameter-examples"></a>

Supponiamo che il payload per un' AWS Lambda attività debba fare riferimento a un'istanza tramite il relativo ID.

Sia che si utilizzi una destinazione della finestra di manutenzione `INSTANCE` o `RESOURCE_GROUP`, è possibile ottenere questo risultato utilizzando lo pseudoparametro `{{RESOURCE_ID}}`. Ad esempio:

```
"TaskArn": "arn:aws:lambda:us-east-2:111122223333:function:SSMTestFunction",
    "TaskType": "LAMBDA",
    "TaskInvocationParameters": {
        "Lambda": {
            "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE",
            "Payload": "{ \"instanceId\": \"{{RESOURCE_ID}}\" }",
            "Qualifier": "$LATEST"
        }
    }
```

Se l'attività Lambda è destinata a essere eseguita su un altro tipo di destinazione supportato oltre alle istanze Amazon Elastic Compute Cloud (Amazon EC2), ad esempio una tabella Amazon DynamoDB, è possibile utilizzare la stessa sintassi e `{{RESOURCE_ID}}` restituisce solo il nome della tabella. Tuttavia, se si richiede l'ARN completo della tabella, utilizzare `{{TARGET_ID}}`, come illustrato nell'esempio seguente.

```
"TaskArn": "arn:aws:lambda:us-east-2:111122223333:function:SSMTestFunction",
    "TaskType": "LAMBDA",
    "TaskInvocationParameters": {
        "Lambda": {
            "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE",
            "Payload": "{ \"tableArn\": \"{{TARGET_ID}}\" }",
            "Qualifier": "$LATEST"
        }
    }
```

La stessa sintassi funziona per il targeting di istanze o altri tipi di risorse. Quando più tipi di risorse sono stati aggiunti a un gruppo di risorse, l'attività viene eseguita su ciascuna delle risorse appropriate. 

**Importante**  
Non tutti i tipi di risorse che potrebbero essere inclusi in un gruppo di risorse producono un valore per il parametro `{{RESOURCE_ID}}`. Per un elenco dei tipi di risorse supportati, vedere [Pseudoparametri supportati](#pseudo-parameters).

A titolo di esempio aggiuntivo, per eseguire un task di automazione che interrompa l'esecuzione delle istanze EC2, devi specificare il documento di Systems Manager `AWS-StopEC2Instance` (documento SSM) come valore `TaskArn` e utilizzare lo pseudoparametro `{{RESOURCE_ID}}`:

```
"TaskArn": "AWS-StopEC2Instance",
    "TaskType": "AUTOMATION"
    "TaskInvocationParameters": {
        "Automation": {
            "DocumentVersion": "1",
            "Parameters": {
                "instanceId": [
                    "{{RESOURCE_ID}}"
                ]
            }
        }
    }
```

Per eseguire un'attività di automazione che copia uno snapshot di un volume Amazon Elastic Block Store (Amazon EBS), specificare il documento SSM `AWS-CopySnapshot` come valore `TaskArn` e utilizzare lo pseudoparametro `{{RESOURCE_ID}}`.

```
"TaskArn": "AWS-CopySnapshot",
    "TaskType": "AUTOMATION"
    "TaskInvocationParameters": {
        "Automation": {
            "DocumentVersion": "1",
            "Parameters": {
                "SourceRegion": "us-east-2",
                "targetType":"RESOURCE_GROUP",
                "SnapshotId": [
                    "{{RESOURCE_ID}}"
                ]
            }
        }
    }
```

## Pseudoparametri supportati
<a name="pseudo-parameters"></a>

Nell'elenco seguente sono riportati gli pseudoparametri che puoi specificare utilizzando la sintassi `{{PSEUDO_PARAMETER}}` nell'opzione `--task-invocation-parameters`.
+ **`WINDOW_ID`**: ID della finestra di manutenzione di destinazione.
+ **`WINDOW_TASK_ID`**: l'ID dell'attività della finestra che è in esecuzione.
+ **`WINDOW_TARGET_ID`**: l'ID della destinazione della finestra che include la destinazione (ID destinazione).
+ **`WINDOW_EXECUTION_ID`**: l'ID dell'esecuzione della finestra corrente.
+ **`TASK_EXECUTION_ID`**: l'ID dell'esecuzione dell'attività corrente.
+ **`INVOCATION_ID`**: l'ID dell'invocazione corrente.
+ **`TARGET_TYPE`**: il tipo di destinazione. I tipi supportati includono `RESOURCE_GROUP` e `INSTANCE`.
+ **`TARGET_ID`**: 

  Se il tipo di destinazione specificato è `INSTANCE`, lo pseudoparametro `TARGET_ID` viene sostituito dall'ID dell'istanza. Ad esempio, `i-078a280217EXAMPLE`.

  Se il tipo di destinazione specificato è `RESOURCE_GROUP`, il valore a cui si fa riferimento per l'esecuzione dell'attività è l'ARN completo della risorsa. Ad esempio: `arn:aws:ec2:us-east-1:123456789012:instance/i-078a280217EXAMPLE`. Nella tabella seguente sono riportati i valori `TARGET_ID` di esempio per particolari tipi di risorse in un gruppo di risorse. 
**Nota**  
`TARGET_ID` non è supportato per le attività Run Command.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/maintenance-window-tasks-pseudo-parameters.html)
+ **`RESOURCE_ID`**: ID breve di un tipo di risorsa contenuto in un gruppo di risorse. Nella tabella seguente sono riportati i valori `RESOURCE_ID` di esempio per particolari tipi di risorse in un gruppo di risorse. 
**Nota**  
`RESOURCE_ID` non è supportato per le attività Run Command.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/maintenance-window-tasks-pseudo-parameters.html)
**Nota**  
Se il gruppo di AWS risorse specificato include tipi di risorse che non producono alcun `RESOURCE_ID` valore e non sono elencati nella tabella precedente, il `RESOURCE_ID` parametro non viene compilato. Una chiamata di esecuzione verrà comunque eseguita per tale risorsa. In questi casi, utilizzare invece lo pseudo parametro `TARGET_ID`, che verrà sostituito con l'ARN completo della risorsa.

# Opzioni di pianificazione e periodo attivo per la finestra di manutenzione
<a name="maintenance-windows-schedule-options"></a>

Quando si crea una finestra di manutenzione, è necessario specificare la frequenza con la quale viene eseguita utilizzando un'[espressione Cron o della frequenza](reference-cron-and-rate-expressions.md). Facoltativamente, puoi specificare un intervallo di date durante il quale la finestra di manutenzione può essere eseguita in base alla pianificazione periodica, nonché un fuso orario sul quale basare la pianificazione periodica. 

Tieni tuttavia presente che l'opzione relativa al fuso orario e le opzioni relative a data di inizio e fine non si influenzano a vicenda. Qualsiasi data/ora di inizio e fine specificata (con o senza un offset per il fuso orario) determina solo il *periodo di validità* durante il quale la finestra di manutenzione può essere eseguita in base alla pianificazione. Un'opzione relativa al fuso orario determina il fuso orario internazionale sul quale è basata la pianificazione per la finestra di manutenzione *durante* il suo periodo di validità.

**Nota**  
Le date di inizio e fine devono essere specificate nel formato timestamp ISO-8601. Ad esempio: `2021-04-07T14:29:00-08:00`  
I fusi orari devono essere specificati nel formato IANA (Internet Assigned Numbers Authority). Ad esempio: `America/Chicago`, `Europe/Berlin` o `Asia/Tokyo`

**Topics**
+ [Esempio 1: specificare la data di inizio di una finestra di manutenzione](#schedule-example-start-date)
+ [Esempio 2: specificare una data di inizio e fine di una finestra di manutenzione](#schedule-example-start-end-date)
+ [Esempio 3: creare una finestra di manutenzione che viene eseguita solo una volta](#schedule-example-one-time)
+ [Esempio 4: specificare il numero di giorni di offset di pianificazione per una finestra di manutenzione](#schedule-example-schedule-offset)

## Esempio 1: specificare la data di inizio di una finestra di manutenzione
<a name="schedule-example-start-date"></a>

Supponiamo di utilizzare il AWS Command Line Interface (AWS CLI) per creare una finestra di manutenzione con le seguenti opzioni:
+ `--start-date 2021-01-01T00:00:00-08:00`
+ `--schedule-timezone "America/Los_Angeles"`
+ `--schedule "cron(0 09 ? * WED *)"`

Esempio:

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

```
aws ssm create-maintenance-window \
    --name "My-LAX-Maintenance-Window" \
    --allow-unassociated-targets \
    --duration 3 \
    --cutoff 1 \
    --start-date 2021-01-01T00:00:00-08:00 \
    --schedule-timezone "America/Los_Angeles" \
    --schedule "cron(0 09 ? * WED *)"
```

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

```
aws ssm create-maintenance-window ^
    --name "My-LAX-Maintenance-Window" ^
    --allow-unassociated-targets ^
    --duration 3 ^
    --cutoff 1 ^
    --start-date 2021-01-01T00:00:00-08:00 ^
    --schedule-timezone "America/Los_Angeles" ^
    --schedule "cron(0 09 ? * WED *)"
```

------

In questo caso, il primo utilizzo della finestra di manutenzione si verificherà solo *dopo* la data e l'ora di inizio specificate, che corrispondono alle 12:00 (fuso orario Stati Uniti/Pacifico) di venerdì 1° gennaio 2021, ovvero otto ore indietro rispetto all'orario UTC. In questo caso, la data e l'ora di inizio del periodo della finestra non rappresentano la prima esecuzione delle finestre di manutenzione. Complessivamente, i valori `--schedule-timezone` e `--schedule` indicano che la finestra di manutenzione verrà eseguita alle 09:00 di ogni mercoledì, in base al fuso orario Stati Uniti/Pacifico (rappresentato da "America/Los Angeles" nel formato IANA). La prima esecuzione nel periodo consentito avverrà mercoledì 4 gennaio 2021, alle 9:00 (fuso orario Stati Uniti/Pacifico).

## Esempio 2: specificare una data di inizio e fine di una finestra di manutenzione
<a name="schedule-example-start-end-date"></a>

Supponiamo che in seguito si crei una finestra di manutenzione con queste opzioni:
+ `--start-date 2019-01-01T00:03:15+09:00`
+ `--end-date 2019-06-30T00:06:15+09:00`
+ `--schedule-timezone "Asia/Tokyo"`
+ `--schedule "rate(7 days)"`

Ad esempio:

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

```
aws ssm create-maintenance-window \
    --name "My-NRT-Maintenance-Window" \
    --allow-unassociated-targets \
    --duration 3 \
    --cutoff 1 \
    --start-date 2019-01-01T00:03:15+09:00 \
    --end-date 2019-06-30T00:06:15+09:00 \
    --schedule-timezone "Asia/Tokyo" \
    --schedule "rate(7 days)"
```

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

```
aws ssm create-maintenance-window ^
    --name "My-NRT-Maintenance-Window" ^
    --allow-unassociated-targets ^
    --duration 3 ^
    --cutoff 1 ^
    --start-date 2019-01-01T00:03:15+09:00 ^
    --end-date 2019-06-30T00:06:15+09:00 ^
    --schedule-timezone "Asia/Tokyo" ^
    --schedule "rate(7 days)"
```

------

Il periodo consentito per questa finestra di manutenzione inizia alle 03:15 del 1° gennaio 2019, nel fuso orario standard del Giappone. Il periodo valido per questa finestra di manutenzione termina alle 06:15 di domenica 30 giugno 2019, nel fuso orario standard del Giappone. ovvero nove ore in avanti rispetto all'ora UTC. Complessivamente i valori `--schedule-timezone` e `--schedule` indicano che la finestra di manutenzione verrà eseguita alle 03:15 ogni martedì, in base al fuso orario standard del Giappone (rappresentato da "Asia/Tokyo" nel formato IANA). Ciò è dovuto al fatto che la finestra di manutenzione viene eseguita ogni sette giorni e diventa attiva alle 03:15 di martedì 1° gennaio. L'ultima esecuzione sarà alle 03:15 del 25 giugno 2019, nel fuso orario standard del Giappone. Questo è l'ultimo martedì prima che il periodo della finestra di manutenzione consentita termini cinque giorni più tardi.

## Esempio 3: creare una finestra di manutenzione che viene eseguita solo una volta
<a name="schedule-example-one-time"></a>

Ora è possibile creare una finestra di manutenzione con questa opzione:
+ `--schedule "at(2020-07-07T15:55:00)"`

Ad esempio:

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

```
aws ssm create-maintenance-window \
    --name "My-One-Time-Maintenance-Window" \
    --schedule "at(2020-07-07T15:55:00)" \
    --duration 5 \
    --cutoff 2 \
    --allow-unassociated-targets
```

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

```
aws ssm create-maintenance-window ^
    --name "My-One-Time-Maintenance-Window" ^
    --schedule "at(2020-07-07T15:55:00)" ^
    --duration 5 ^
    --cutoff 2 ^
    --allow-unassociated-targets
```

------

Questa finestra di manutenzione viene eseguita solo una volta, alle ore 15:55 UTC del 7 luglio 2020. La finestra di manutenzione è abilitata per essere eseguita fino a cinque ore, a seconda delle esigenze, ma le nuove attività non possono iniziare due ore prima della fine del periodo di finestra di manutenzione.

## Esempio 4: specificare il numero di giorni di offset di pianificazione per una finestra di manutenzione
<a name="schedule-example-schedule-offset"></a>

Ora è possibile creare una finestra di manutenzione con questa opzione:

```
--schedule-offset 2
```

Ad esempio:

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

```
aws ssm create-maintenance-window \
    --name "My-Cron-Offset-Maintenance-Window" \
    --schedule "cron(0 30 23 ? * TUE#3 *)" \
    --duration 4 \
    --cutoff 1 \
    --schedule-offset 2 \
    --allow-unassociated-targets
```

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

```
aws ssm create-maintenance-window ^
    --name "My-Cron-Offset-Maintenance-Window" ^
    --schedule "cron(0 30 23 ? * TUE#3 *)" ^
    --duration 4 ^
    --cutoff 1 ^
    --schedule-offset 2 ^
    --allow-unassociated-targets
```

------

Un offset di pianificazione è il numero di giorni di attesa dopo la data e l'ora specificate da un'espressione CRON per l'avvio dell'esecuzione della finestra di manutenzione.

Nell'esempio precedente, l'espressione CRON pianifica l'esecuzione di una finestra di manutenzione il terzo martedì di ogni mese alle 23:30: 

```
--schedule "cron(0 30 23 ? * TUE#3 *)
```

Tuttavia, includendo `--schedule-offset 2`, la finestra di manutenzione verrà eseguita due giorni *dopo* il terzo martedì di ogni mese alle 23:30. 

Gli offset di pianificazione sono supportati solo per le espressioni CRON. 

**Ulteriori informazioni**  
+ [Riferimento: espressioni Cron e della frequenza per Systems Manager](reference-cron-and-rate-expressions.md)
+ [Creare una finestra di manutenzione utilizzando la console](sysman-maintenance-create-mw.md)
+ [Tutorial: Creare e configurare una finestra di manutenzione utilizzando il AWS CLI](maintenance-windows-cli-tutorials-create.md)
+ [CreateMaintenanceWindow](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateMaintenanceWindow.html) nel *Documentazione di riferimento API di AWS Systems Manager *
+ [https://docs.aws.amazon.com/cli/latest/reference/ssm/create-maintenance-window.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/create-maintenance-window.html)nella *AWS Systems Manager sezione del AWS CLI Command Reference*
+ [Time Zone Database](https://www.iana.org/time-zones) sul sito Web IANA

# Registrazione delle attività della finestra di manutenzione senza destinazioni
<a name="maintenance-windows-targetless-tasks"></a>

Per ogni finestra di manutenzione creata, è possibile specificare uno o più task da eseguire quando viene eseguita la finestra di manutenzione. Nella maggior parte dei casi, è necessario specificare le risorse o le destinazioni su cui eseguire l'attività. In alcuni casi, tuttavia, non devi specificare le destinazioni in modo esplicito nell'attività.

È necessario specificare uno o più oggetti per le attività di tipo Run Command di Systems Manager della finestra di manutenzione. A seconda della natura dell'attività, gli obiettivi sono facoltativi per altri tipi di attività della finestra di manutenzione (Systems Manager Automation e AWS Step Functions). AWS Lambda

Per i tipi di attività Lambda e Step Functions, se è necessaria una destinazione dipende dal contenuto della funzione o della macchina creati.

**Nota**  
Quando un'attività ha obiettivi registrati AWS Lambda, Automation e AWS Step Functions Tasks risolvono gli obiettivi dai gruppi di risorse e dai tag e inviano una chiamata per risorsa risolta, il che si traduce in più chiamate di attività. Ad esempio, supponiamo di volere una sola invocazione per un'attività Lambda registrata in un gruppo di risorse contenente più di un'istanza. In questo caso, se stai lavorando nella Console di gestione AWS, scegli l'opzione **Target attività non richiesto** nella pagina **Registra attività Lambda** o **Modifica attività Lambda**. Se si utilizza il AWS CLI comando, non specificare gli obiettivi utilizzando il `--targets` parametro durante l'esecuzione del comando o del [https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/register-task-with-maintenance-window.html)comando. [https://docs.aws.amazon.com/cli/latest/reference/ssm/update-maintenance-window-task.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/update-maintenance-window-task.html)

In molti casi, non devi specificare esplicitamente una destinazione per un'attività di automazione. Supponiamo ad esempio che si sta creando un'attività di automazione per aggiornare un Amazon Machine Image (AMI) per Linux tramite il runbook `AWS-UpdateLinuxAmi`. Quando l'attività viene eseguita, AMI viene aggiornato con gli ultimi pacchetti di distribuzione Linux disponibili e il software Amazon. Nuove istanze create da AMI hanno già questi aggiornamenti installati. Perché l'ID dell'AMI da aggiornare è specificato nei parametri di input per il runbook, non è necessario specificare nuovamente una destinazione nel processo della finestra di manutenzione.

Allo stesso modo, supponete di utilizzare AWS Command Line Interface (AWS CLI) per registrare un'attività di automazione della finestra di manutenzione che utilizza il `AWS-RestartEC2Instance` runbook. Poiché il nodo da riavviare è specificato nell'argomento `--task-invocation-parameters`, non è necessario specificare anche un'opzione `--targets`. 

**Nota**  
Per le attività della finestra di manutenzione senza una destinazione specificata, non è possibile fornire valori per `--max-errors` e `--max-concurrency`. Invece, il sistema inserisce un valore segnaposto pari a `1`, che potrebbe essere segnalato nella risposta a comandi come [https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-maintenance-window-tasks.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-maintenance-window-tasks.html) e [https://docs.aws.amazon.com/cli/latest/reference/ssm/get-maintenance-window-task.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-maintenance-window-task.html). Questi valori non influiscono sull'esecuzione di un'attività e possono essere ignorati.

L'esempio seguente mostra le omissioni delle opzioni `--targets`, `--max-errors` e `--max-concurrency` per un'attività di una finestra di manutenzione senza destinazione.

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

```
aws ssm register-task-with-maintenance-window \
    --window-id "mw-ab12cd34eEXAMPLE" \
    --service-role-arn "arn:aws:iam::123456789012:role/MaintenanceWindowAndAutomationRole" \
    --task-type "AUTOMATION" \
    --name "RestartInstanceWithoutTarget" \
    --task-arn "AWS-RestartEC2Instance" \
    --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"]}}}" \
    --priority 10
```

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

```
aws ssm register-task-with-maintenance-window ^
    --window-id "mw-ab12cd34eEXAMPLE" ^
    --service-role-arn "arn:aws:iam::123456789012:role/MaintenanceWindowAndAutomationRole" ^
    --task-type "AUTOMATION" ^
    --name "RestartInstanceWithoutTarget" ^
    --task-arn "AWS-RestartEC2Instance" ^
    --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"]}}}" ^
    --priority 10
```

------

**Nota**  
Per le attività della finestra di manutenzione registrate prima del 23 dicembre 2020: se sono stati specificati obiettivi per l'attività e uno non è più necessario, è possibile aggiornare l'attività per rimuovere gli obiettivi utilizzando la console Systems Manager o il [https://docs.aws.amazon.com/cli/latest/reference/ssm/update-maintenance-window-task.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/update-maintenance-window-task.html) AWS CLI comando.

**Ulteriori informazioni**  
+ [Messaggi di errore: «Le attività della finestra di manutenzione senza obiettivi non supportano MaxConcurrency valori» e «Le attività della finestra di manutenzione senza obiettivi non supportano MaxErrors valori»](troubleshooting-maintenance-windows.md#maxconcurrency-maxerrors-not-supported)

# Risoluzione dei problemi di finestre di manutenzione
<a name="troubleshooting-maintenance-windows"></a>

Utilizza le informazioni seguenti per risolvere i problemi relativi alle finestre di manutenzione.

**Topics**
+ [Errore nella modifica dell'attività: nella pagina per la modifica di un'attività della finestra di manutenzione, l'elenco dei ruoli IAM restituisce un messaggio di errore: "Non è stato possibile individuare il ruolo IAM della finestra di manutenzione specificato per questa attività. Potrebbe essere stato cancellato o potrebbe non essere stato ancora creato".](#maintenance-window-role-troubleshooting)
+ [Non tutte le destinazioni di finestra di manutenzione vengono aggiornate](#targets-not-updated)
+ [L'attività non riesce con lo stato di richiamo dell'attività: «Il ruolo fornito non contiene le autorizzazioni SSM corrette».](#incorrect-ssm-permissions)
+ [L'attività fallisce con messaggio di errore: "Il passaggio da esito negativo quando convalida e risolve gli input del passaggio"](#step-fails)
+ [Messaggi di errore: «Le attività della finestra di manutenzione senza obiettivi non supportano MaxConcurrency valori» e «Le attività della finestra di manutenzione senza obiettivi non supportano MaxErrors valori»](#maxconcurrency-maxerrors-not-supported)

## Errore nella modifica dell'attività: nella pagina per la modifica di un'attività della finestra di manutenzione, l'elenco dei ruoli IAM restituisce un messaggio di errore: "Non è stato possibile individuare il ruolo IAM della finestra di manutenzione specificato per questa attività. Potrebbe essere stato cancellato o potrebbe non essere stato ancora creato".
<a name="maintenance-window-role-troubleshooting"></a>

**Problema 1**: il ruolo della finestra di manutenzione AWS Identity and Access Management (IAM) originariamente specificato è stato eliminato dopo la creazione dell'attività.

**Possibile soluzione**: (1) seleziona un altro ruolo IAM per la finestra di manutenzione, se disponibile nell'account, oppure creane uno nuovo e selezionalo per l'attività. 

**Problema 2**: se l'attività è stata creata utilizzando AWS Command Line Interface (AWS CLI) o un AWS SDK AWS Tools for Windows PowerShell, sarebbe stato possibile specificare un nome di ruolo inesistente nella finestra di manutenzione IAM. Ad esempio, il ruolo IAM per la finestra di manutenzione potrebbe essere stato eliminato prima della creazione dell'attività, oppure il nome del ruolo potrebbe essere stato digitato non correttamente, ad esempio **myrole** invece di **my-role**.

**Possibile soluzione**: seleziona il nome corretto del ruolo IAM per la finestra di manutenzione che desideri utilizzare o creane uno nuovo specifico per l'attività. 

## Non tutte le destinazioni di finestra di manutenzione vengono aggiornate
<a name="targets-not-updated"></a>

**Problema:** si nota che le attività della finestra di manutenzione non sono state eseguite su tutte le risorse interessate dalla finestra di manutenzione. Ad esempio, nei risultati dell'esecuzione della finestra di manutenzione, l'attività per tale risorsa viene contrassegnata come non riuscita o scaduta.

**Soluzione:** i motivi più comuni per cui un'attività della finestra di manutenzione non è in esecuzione su una risorsa di destinazione riguardano connettività e disponibilità. Ad esempio:
+ Systems Manager ha perso la connessione alla risorsa prima o durante l'operazione di manutenzione della finestra.
+ La risorsa non è in linea o è stata arrestata durante l'operazione di manutenzione della finestra.

È possibile attendere il periodo successivo pianificato della finestra di manutenzione per eseguire le attività sulle risorse. È possibile eseguire manualmente le attività della finestra di manutenzione sulle risorse non disponibili o non in linea.

## L'attività non riesce con lo stato di richiamo dell'attività: «Il ruolo fornito non contiene le autorizzazioni SSM corrette».
<a name="incorrect-ssm-permissions"></a>

**Problema**: è stato specificato un ruolo di servizio della finestra di manutenzione per un'attività, ma l'esecuzione dell'attività non riesce e lo stato di richiamo dell'attività riporta che «Il ruolo fornito non contiene le autorizzazioni SSM corrette». 
+ **Soluzione**: In[Attività 1: crea una policy personalizzata per il ruolo di servizio della finestra di manutenzione tramite la console](configuring-maintenance-window-permissions-console.md#create-custom-policy-console), forniamo una policy di base che si può allegare al [ruolo di servizio personalizzato della finestra di manutenzione](configuring-maintenance-window-permissions-console.md#create-custom-role-console). La policy include le autorizzazioni necessarie per molti scenari di attività. Tuttavia, a causa dell'ampia varietà di attività che è possibile eseguire, potrebbe essere necessario fornire autorizzazioni aggiuntive nella policy per il ruolo della finestra di manutenzione.

  Ad esempio, alcune azioni di automazione funzionano con gli stack. AWS CloudFormation Pertanto, potrebbe essere necessario dover aggiungere le autorizzazioni aggiuntive `cloudformation:CreateStack`,`cloudformation:DescribeStacks` e `cloudformation:DeleteStack` alla policy per il ruolo di servizio della finestra di manutenzione. 

  Un altro esempio: il runbook di automazione `AWS-CopySnapshot` richiede le autorizzazioni per creare uno snapshot Amazon Elastic Block Store (Amazon EBS). Pertanto, potrebbe essere necessario dover aggiungere l'autorizzazione `ec2:CreateSnapshot`.

  [Per informazioni sulle autorizzazioni di ruolo necessarie per un runbook di automazione AWS gestito, consulta le descrizioni dei runbook nell'Automation Runbook Reference.AWS Systems Manager](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html)

  Per informazioni sulle autorizzazioni di ruolo necessarie per un documento SSM AWS gestito, consulta il contenuto del documento nella sezione [Documenti](https://console.aws.amazon.com//systems-manager/documents) (console Systems Manager).

  Per informazioni sulle autorizzazioni dei ruoli necessarie per le attività Step Functions, Lambda, i runbook Automation personalizzati e i documenti SSM, verifica i requisiti di autorizzazione con l'autore di tali risorse.

## L'attività fallisce con messaggio di errore: "Il passaggio da esito negativo quando convalida e risolve gli input del passaggio"
<a name="step-fails"></a>

**Problema**: un runbook Automation o un documento di comando di Systems Manager utilizzato in un'attività richiede l'immissione di input quali `InstanceId` o `SnapshotId`, ma un valore non viene fornito o non viene fornito in modo corretto.
+ **Soluzione 1**: se l'attività è destinata a una singola risorsa, ad esempio un singolo nodo o una singola snapshot, inserire il relativo ID nei parametri di input per l'attività.
+ **Soluzione 2**: se l'attività prevede l'utilizzo di più risorse, ad esempio la creazione di immagini da più nodi quando si utilizza il runbook`AWS-CreateImage`, è possibile utilizzare uno degli pseudo parametri supportati per le attività della finestra di manutenzione nei parametri di input per rappresentare il nodo nel comando. IDs 

  I seguenti comandi registrano un'attività di automazione di Systems Manager con una finestra di manutenzione tramite AWS CLI. Il valore `--targets` indica un ID di destinazione della finestra di manutenzione. Inoltre, anche se il parametro `--targets` specifica un ID di destinazione della finestra, i parametri del runbook Automation richiedono che venga fornito un ID nodo. In questo caso, il comando utilizza lo pseudoparametro `{{RESOURCE_ID}}` come valore `InstanceId`.

  **AWS CLI comando:**

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

  Il comando di esempio seguente riavvia le istanze Amazon Elastic Compute Cloud (Amazon EC2) che appartengono al gruppo di destinazione della finestra di manutenzione con ID e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE.

  ```
  aws ssm register-task-with-maintenance-window \
      --window-id "mw-0c50858d01EXAMPLE" \
      --targets Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE \
      --task-arn "AWS-RestartEC2Instance" \
      --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole \
      --task-type AUTOMATION \
      --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" \
      --priority 0 --max-concurrency 10 --max-errors 5 --name "My-Restart-EC2-Instances-Automation-Task" \
      --description "Automation task to restart EC2 instances"
  ```

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

  ```
  aws ssm register-task-with-maintenance-window ^
      --window-id "mw-0c50858d01EXAMPLE" ^
      --targets Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE ^
      --task-arn "AWS-RestartEC2Instance" ^
      --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole ^
      --task-type AUTOMATION ^
      --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" ^
      --priority 0 --max-concurrency 10 --max-errors 5 --name "My-Restart-EC2-Instances-Automation-Task" ^
      --description "Automation task to restart EC2 instances"
  ```

------

  Per ulteriori informazioni sull'utilizzo di pseudoparametri per le attività della finestra di manutenzione, consulta [Utilizzo degli pseudo parametri durante la registrazione delle attività della finestra di manutenzione](maintenance-window-tasks-pseudo-parameters.md) e [Esempi di registrazione dei task](mw-cli-register-tasks-examples.md#task-examples).

## Messaggi di errore: «Le attività della finestra di manutenzione senza obiettivi non supportano MaxConcurrency valori» e «Le attività della finestra di manutenzione senza obiettivi non supportano MaxErrors valori»
<a name="maxconcurrency-maxerrors-not-supported"></a>

**Problema:** quando si registra un'attività di tipo Run Command, è necessario specificare almeno una destinazione su cui eseguire l'attività. Per altri tipi di attività (automazione e AWS Step Functions), a seconda della natura dell'attività, gli obiettivi sono facoltativi. AWS Lambda Le opzioni `MaxConcurrency` (il numero di risorse su cui eseguire un'attività contemporaneamente) e`MaxErrors` (il numero di errori per l'esecuzione dell'attività sulle risorse di destinazione prima che l'attività abbia esito negativo) non sono obbligatorie o supportate per le attività della finestra di manutenzione che non specificano le destinazioni. Il sistema genera questi messaggi di errore se vengono specificati valori per una di queste opzioni quando non viene specificata alcuna destinazione dell'attività.

**Soluzione**: se si riceve uno di questi errori, rimuovere i valori per la concorrenza e la soglia di errore prima di continuare a registrare o aggiornare l'attività della finestra di manutenzione.

Per ulteriori informazioni sull'esecuzione di attività che non specificano destinazioni, consulta [Registrazione delle attività della finestra di manutenzione senza destinazioni](maintenance-windows-targetless-tasks.md) nella *Guida per l'utente di AWS Systems Manager *.

# AWS Systems Manager Quick Setup
<a name="systems-manager-quick-setup"></a>

UtilizzaQuick Setup, uno strumento per configurare rapidamente i servizi e le funzionalità di Amazon Web Services usati di frequente con le best practice consigliate. AWS Systems ManagerQuick Setupsemplifica la configurazione dei servizi, incluso Systems Manager, automatizzando le attività comuni o consigliate. Queste attività includono, ad esempio, la creazione di ruoli di profilo di istanza richiesti AWS Identity and Access Management (IAM) e l'impostazione di best practice operative, come la scansione periodica delle patch e la raccolta dell'inventario. L'uso di Quick Setup non prevede alcun costo. Tuttavia, i costi possono essere addebitati in base al tipo di servizi impostato e ai limiti di utilizzo senza costi per i servizi utilizzati per configurare il servizio. Per cominciare a utilizzare Quick Setup, apri la [console di Systems Manager](https://console.aws.amazon.com/systems-manager/quick-setup). Nel pannello di navigazione, scegli **Quick Setup**.

**Nota**  
Se sei stato indirizzato a Quick Setup per aiutarti a configurare le istanze da gestire con Systems Manager, completa la procedura in [Configura la gestione host Amazon EC2 tramite Quick Setup](quick-setup-host-management.md).

## Quali sono i vantaggi di Quick Setup?
<a name="quick-setup-features"></a>

Alcuni vantaggi di Quick Setup sono i seguenti:
+ **Semplificare la configurazione dei servizi e**

  Quick Setupillustra la configurazione delle best practice operative e distribuisce automaticamente tali configurazioni. Il pannello di controllo Quick Setup consente di visualizzare una visualizzazione in tempo reale dello stato di distribuzione della configurazione. 
+ **Distribuire automaticamente le configurazioni su più account**

  È possibile utilizzarlo Quick Setup in modo individuale Account AWS o multiplo Account AWS e Regioni AWS mediante l'integrazione con. AWS Organizations Utilizzo diQuick Setupin più account consente di garantire che l'organizzazione mantenga configurazioni coerenti.
+ **Eliminare la deviazione della configurazione**

  La deriva della configurazione si verifica ogni volta che un utente apporta modifiche a un servizio o a una funzionalità in conflitto con le selezioni effettuate tramiteQuick Setup.Quick Setupverifica periodicamente la deriva della configurazione e tenta di correggerla.

## A chi è consigliato l'uso di Quick Setup?
<a name="quick-setup-audience"></a>

Quick Setup è particolarmente utile per i clienti che hanno già una certa esperienza con i servizi e le funzionalità che stanno configurando e che desiderano semplificare il processo di configurazione. Se non conosci il servizio con Servizio AWS cui stai configurandoQuick Setup, ti consigliamo di saperne di più sul servizio. Prima di creare una configurazione con Quick Setup, esamina il contenuto della Guida per l'utente pertinente.

## Disponibilità di in Quick Setup Regioni AWS
<a name="quick-setup-getting-started-regions"></a>

Di seguito Regioni AWS, puoi utilizzare tutti i tipi di Quick Setup configurazione per un'intera organizzazione, come configurato in AWS Organizations, o solo per gli account e le regioni dell'organizzazione scelti. È possibile anche utilizzare Quick Setup con un solo account in tali Regioni.
+ Stati Uniti orientali (Ohio)
+ Stati Uniti orientali (Virginia settentrionale)
+ Stati Uniti occidentali (California settentrionale)
+ Stati Uniti occidentali (Oregon)
+ Asia Pacifico (Mumbai)
+ Asia Pacifico (Seoul)
+ Asia Pacifico (Singapore)
+ Asia Pacifico (Sydney)
+ Asia Pacifico (Tokyo)
+ Canada (Centrale)
+ Europa (Francoforte)
+ Europa (Stoccolma)
+ Europa (Irlanda)
+ Europa (Londra)
+ Europa (Parigi)
+ Sud America (San Paolo)

Nelle seguenti Regioni, per i singoli account è disponibile solo il tipo di configurazione [Gestione host](quick-setup-host-management.md):
+ Europa (Milano)
+ Asia Pacifico (Hong Kong)
+ Medio Oriente (Bahrein)
+ Cina (Pechino)
+ Cina (Ningxia)
+ AWS GovCloud (Stati Uniti orientali)
+ AWS GovCloud (Stati Uniti occidentali)

 Per avere un elenco di tutte le Regioni supportate per Systems Manager, consulta la colonna **Regione** in [Endpoint del servizio Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) nella *Riferimenti generali di Amazon Web Services*.

# Nozioni di base su Quick Setup
<a name="quick-setup-getting-started"></a>

Usa le informazioni contenute in questo argomento per prepararti all'uso di Quick Setup.

**Topics**
+ [Ruoli e autorizzazioni IAM per l'onboarding di Quick Setup](#quick-setup-getting-started-iam)
+ [Onboarding manuale per lavorare con l'API di Quick Setup in modo programmatico](#quick-setup-api-manual-onboarding)

## Ruoli e autorizzazioni IAM per l'onboarding di Quick Setup
<a name="quick-setup-getting-started-iam"></a>

Quick Setup ha lanciato una nuova esperienza di console e una nuova API. Ora puoi interagire con questa API utilizzando la console, AWS CLI CloudFormation, e SDKs. Se accedi alla nuova esperienza, le configurazioni esistenti vengono ricreate utilizzando la nuova API. A seconda del numero di configurazioni esistenti nell'account, questo processo richiede alcuni minuti.

Per utilizzare la nuova console Quick Setup, è necessario disporre delle autorizzazioni per le operazioni seguenti:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm-quicksetup:*",
                "cloudformation:DescribeStackSetOperation",
                "cloudformation:ListStacks",
                "cloudformation:DescribeStacks",
                "cloudformation:DescribeStackResources",
                "cloudformation:ListStackSetOperations",
                "cloudformation:ListStackInstances",
                "cloudformation:DescribeStackSet",
                "cloudformation:ListStackSets",
                "cloudformation:DescribeStackInstance",
                "cloudformation:DescribeOrganizationsAccess",
                "cloudformation:ActivateOrganizationsAccess",
                "cloudformation:GetTemplate",
                "cloudformation:ListStackSetOperationResults",
                "cloudformation:DescribeStackEvents",
                "cloudformation:UntagResource",
                "ec2:DescribeInstances",
                "ssm:DescribeAutomationExecutions",
                "ssm:GetAutomationExecution",
                "ssm:ListAssociations",
                "ssm:DescribeAssociation",
                "ssm:GetDocument",
                "ssm:ListDocuments",
                "ssm:DescribeDocument",
                "ssm:ListResourceDataSync",
                "ssm:DescribePatchBaselines",
                "ssm:GetPatchBaseline",
                "ssm:DescribeMaintenanceWindows",
                "ssm:DescribeMaintenanceWindowTasks",
                "ssm:GetOpsSummary",
                "organizations:DeregisterDelegatedAdministrator",
                "organizations:DescribeAccount",
                "organizations:DescribeOrganization",
                "organizations:ListDelegatedAdministrators",
                "organizations:ListRoots",
                "organizations:ListParents",
                "organizations:ListOrganizationalUnitsForParent",
                "organizations:DescribeOrganizationalUnit",
                "organizations:ListAWSServiceAccessForOrganization",
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "resource-groups:ListGroups",
                "iam:ListRoles",
                "iam:ListRolePolicies",
                "iam:GetRole",
                "iam:CreatePolicy",
                "organizations:RegisterDelegatedAdministrator",
                "organizations:EnableAWSServiceAccess",
                "cloudformation:TagResource"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:RollbackStack",
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DeleteStack"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:*:stack/StackSet-AWS-QuickSetup-*",
                "arn:aws:cloudformation:*:*:stack/AWS-QuickSetup-*",
                "arn:aws:cloudformation:*:*:type/resource/*",
                "arn:aws:cloudformation:*:*:stack/StackSet-SSMQuickSetup"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStackSet",
                "cloudformation:UpdateStackSet",
                "cloudformation:DeleteStackSet",
                "cloudformation:DeleteStackInstances",
                "cloudformation:CreateStackInstances",
                "cloudformation:StopStackSetOperation"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:*:stackset/AWS-QuickSetup-*",
                "arn:aws:cloudformation:*:*:stackset/SSMQuickSetup",
                "arn:aws:cloudformation:*:*:type/resource/*",
                "arn:aws:cloudformation:*:*:stackset-target/AWS-QuickSetup-*:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:AttachRolePolicy",
                "iam:DetachRolePolicy",
                "iam:GetRolePolicy",
                "iam:PutRolePolicy"
            ],
            "Resource": [
                "arn:aws:iam::*:role/AWS-QuickSetup-*",
                "arn:aws:iam::*:role/service-role/AWS-QuickSetup-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/AWS-QuickSetup-*",
            "Condition": {
                "StringEquals": {
	            "iam:PassedToService": [
	                "ssm-quicksetup.amazonaws.com",
	                "cloudformation.amazonaws.com"
	            ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DeleteAssociation",
                "ssm:CreateAssociation",
                "ssm:StartAssociationsOnce"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ssm:StartAutomationExecution",
            "Resource": [
                "arn:aws:ssm:*:*:document/AWS-EnableExplorer",
                "arn:aws:ssm:*:*:automation-execution/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetOpsSummary",
                "ssm:CreateResourceDataSync",
                "ssm:UpdateResourceDataSync"
            ],
            "Resource": "arn:aws:ssm:*:*:resource-data-sync/AWS-QuickSetup-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceLinkedRole"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": [
                        "accountdiscovery.ssm.amazonaws.com",
                        "ssm.amazonaws.com",
                        "ssm-quicksetup.amazonaws.com",
                        "stacksets.cloudformation.amazonaws.com"
                    ]
                }
            },
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateServiceLinkedRole"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/stacksets.cloudformation.amazonaws.com/AWSServiceRoleForCloudFormationStackSetsOrgAdmin"
        }
    ]
}
```

------

Per limitare gli utenti alle autorizzazioni di sola lettura, consenti solo le operazioni `ssm-quicksetup:List*` e `ssm-quicksetup:Get*` relative all'API di Quick Setup.

Durante l'onboarding, Quick Setup crea i seguenti ruoli AWS Identity and Access Management (IAM) per tuo conto:
+ `AWS-QuickSetup-LocalExecutionRole`: concede le autorizzazioni CloudFormation per utilizzare qualsiasi modello, escluso il modello di policy di patch, e per creare le risorse necessarie.
+ `AWS-QuickSetup-LocalAdministrationRole`— Concede le autorizzazioni di assunzione. AWS CloudFormation `AWS-QuickSetup-LocalExecutionRole`
+ `AWS-QuickSetup-PatchPolicy-LocalExecutionRole`— Concede le autorizzazioni per AWS CloudFormation utilizzare il modello di policy di patch e creare le risorse necessarie.
+ `AWS-QuickSetup-PatchPolicy-LocalAdministrationRole`— Concede le autorizzazioni ad assumere. AWS CloudFormation `AWS-QuickSetup-PatchPolicy-LocalExecutionRole`

Se stai creando un account di gestione, l'account con cui crei un'organizzazione, crea Quick Setup anche i seguenti ruoli per tuo conto AWS Organizations:
+ `AWS-QuickSetup-SSM-RoleForEnablingExplorer`: concede le autorizzazioni al runbook Automation `AWS-EnableExplorer`. Il `AWS-EnableExplorer` runbook configuraExplorer, uno strumento di Systems Manager, per visualizzare informazioni per più Account AWS e. Regioni AWS
+ `AWSServiceRoleForAmazonSSM`— Un ruolo collegato al servizio che garantisce l'accesso alle AWS risorse gestite e utilizzate da Systems Manager.
+ `AWSServiceRoleForAmazonSSM_AccountDiscovery`— Un ruolo collegato al servizio che concede a Systems Manager le autorizzazioni per effettuare chiamate per Servizi AWS rilevare Account AWS informazioni durante la sincronizzazione dei dati. Per ulteriori informazioni, consulta [Utilizzo dei ruoli per raccogliere Account AWS informazioni per OpsCenter e Explorer](using-service-linked-roles-service-action-2.md).

Quando si esegue l'onboarding di un account di gestione, Quick Setup consente l'accesso affidabile tra le configurazioni AWS Organizations e CloudFormation l'implementazione all'interno dell'organizzazione. Quick Setup Per abilitare l'accesso attendibile, l'account di gestione deve disporre delle autorizzazioni di amministratore. Dopo l'onboarding, non sono più necessarie le autorizzazioni di amministratore. Per ulteriori informazioni, consulta [Attivazione dell'accesso attendibile con Organizations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html).

*Per informazioni sui tipi di AWS Organizations account, consulta la [AWS Organizations terminologia e i concetti](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) nella Guida per l'utente.AWS Organizations *

**Nota**  
Quick Setuputilizza CloudFormation StackSets per distribuire le configurazioni in tutte Account AWS le regioni. Se il numero di account di destinazione moltiplicato per il numero di regioni supera 10.000, la configurazione non viene implementata. Ti consigliamo di esaminare il tuo caso d'uso e di creare configurazioni che utilizzino un minor numero di obiettivi per soddisfare la crescita della tua organizzazione. Le istanze di stack non vengono implementate nell'account di gestione dell'organizzazione. Per maggiori informazioni, consulta [Considerazioni sulla creazione di un set di stack con autorizzazioni gestite dal servizio](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-getting-started-create.html?icmpid=docs_cfn_console#stacksets-orgs-considerations). 

## Onboarding manuale per lavorare con l'API di Quick Setup in modo programmatico
<a name="quick-setup-api-manual-onboarding"></a>

Quando utilizzi la console per lavorare con Quick Setup, il servizio gestisce le fasi di onboarding per te. Se prevedi di utilizzare SDKs o AWS CLI utilizzare l'Quick SetupAPI, puoi comunque utilizzare la console per completare le fasi di onboarding al posto tuo, in modo da non doverle eseguire manualmente. Tuttavia, alcuni clienti necessitano di completare le fasi di onboarding su Quick Setup in modo programmatico, senza interagire con la console. Se questo metodo si adatta al proprio caso d'uso, è necessario completare le fasi seguenti. Tutti questi passaggi devono essere completati dal tuo account di AWS Organizations gestione.

**Per completare l'onboarding manuale per Quick Setup**

1. Attiva l'accesso affidabile per CloudFormation with Organizations. Ciò fornisce all'account di gestione le autorizzazioni necessarie per creare e gestire StackSets l'organizzazione. Puoi utilizzare CloudFormation l'azione `ActivateOrganizationsAccess` API per completare questo passaggio. Per ulteriori informazioni, consulta [ActivateOrganizationsAccess](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateOrganizationsAccess.html) nella *documentazione di riferimento dell’API AWS CloudFormation *.

1. Abilita l'integrazione di Systems Manager con Organizations. Ciò consente a Systems Manager di creare un ruolo collegato ai servizi in tutti gli account dell'organizzazione. Inoltre, consente a Systems Manager di eseguire operazioni per conto dell'utente all'interno dell'organizzazione e dei relativi account. Puoi utilizzare AWS Organizations l'azione `EnableAWSServiceAccess` API per completare questo passaggio. Il servizio principale per Systems Manager è`ssm.amazonaws.com`. Per ulteriori informazioni, vedere [Enable AWSService Access](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html) nel *riferimento AWS Organizations API*.

1. Creare il ruolo IAM richiesto per Explorer. Ciò consente a Quick Setup di creare pannelli di controllo per le configurazioni in modo da poter visualizzare gli stati di implementazione e associazione. Crea un ruolo IAM e collega la policy gestita `AWSSystemsManagerEnableExplorerExecutionPolicy`. Modificare la policy di attendibilità affinché il ruolo corrisponda a quanto segue. Sostituisci ognuna *account ID* con le tue informazioni.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "ssm.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "aws:SourceAccount": "111122223333"
                   },
                   "ArnLike": {
                       "aws:SourceArn": "arn:*:ssm:*:111122223333:automation-execution/*"
                   }
               }
           }
       ]
   }
   ```

------

1. Aggiorna l'impostazione del servizio Quick Setup per Explorer. È possibile utilizzare l'azione API `UpdateServiceSettings` di Quick Setup per completare questo passaggio. Specifica l'ARN per il ruolo IAM creato nel passaggio precedente per il parametro di richiesta `ExplorerEnablingRoleArn`. Per ulteriori informazioni, consulta [UpdateServiceSettings](https://docs.aws.amazon.com/quick-setup/latest/APIReference/API_UpdateServiceSettings.html) nella *documentazione di riferimento dell’API Quick Setup*.

1. Crea i ruoli IAM richiesti CloudFormation StackSets da utilizzare. È necessario creare un ruolo di *esecuzione* e un ruolo di *amministrazione*.

   1. Creare il ruolo di esecuzione. Al ruolo di esecuzione va associata almeno una delle politiche gestite, `AWSQuickSetupDeploymentRolePolicy` o `AWSQuickSetupPatchPolicyDeploymentRolePolicy`. Se stai creando solo configurazioni di policy di patch, è possibile utilizzare la policy gestita `AWSQuickSetupPatchPolicyDeploymentRolePolicy`. Tutte le altre configurazioni utilizzano la policy `AWSQuickSetupDeploymentRolePolicy`. Modificare la policy di attendibilità affinché il ruolo corrisponda a quanto segue. Sostituisci ogni *account ID* *administration role name* mano con le tue informazioni.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/administration role name"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. Crea il ruolo di amministrazione. È necessario che la policy autorizzata corrisponda a quanto segue. Sostituisci ogni *account ID* e *execution role name* con le tue informazioni.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Action": [
                      "sts:AssumeRole"
                  ],
                  "Resource": "arn:*:iam::111122223333:role/execution role name",
                  "Effect": "Allow"
              }
          ]
      }
      ```

------

      Modificare la policy di attendibilità affinché il ruolo corrisponda a quanto segue. Sostituisci ciascuno *account ID* con le tue informazioni.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "cloudformation.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceAccount": "111122223333"
                      },
                      "ArnLike": {
                          "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:stackset/AWS-QuickSetup-*"
                      }
                  }
              }
          ]
      }
      ```

------

# Configurazione per Assume Role for Systems Manager
<a name="quick-setup-assume-role"></a>

## Per creare un ruolo secondario per Systems Manager Quick Setup:
<a name="create-assume-role"></a>

Systems Manager Quick Setup richiede un ruolo che consenta a Systems Manager di eseguire azioni in modo sicuro nell'account. Questo ruolo concede a Systems Manager le autorizzazioni necessarie per eseguire comandi sulle istanze e configurare EC2 istanze, ruoli IAM e altre risorse di Systems Manager per conto dell'utente.

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. **Nel riquadro di navigazione, scegli **Policies, quindi Crea policy****

1. Aggiungi la `SsmOnboardingInlinePolicy` policy utilizzando il codice JSON riportato di seguito. (Questa policy abilita le azioni necessarie per associare le autorizzazioni del profilo di istanza alle istanze specificate. Ad esempio, consente la creazione di profili di istanza e la loro associazione alle istanze). EC2 

1. Una volta completato, nel riquadro di navigazione, scegli **Ruoli**, quindi scegli **Crea** ruolo.

1. Per il **tipo di entità attendibile**, mantienilo come predefinito (servizio).

1. In **Use case**, scegli **Systems Manager**, quindi scegli **Avanti**.

1. Nella pagina **Aggiungi autorizzazioni**:

1. Aggiungi la politica `SsmOnboardingInlinePolicy`

1. Seleziona **Next** (Successivo).

1. Per **Nome ruolo**, inserisci un nome descrittivo (ad esempio,`AmazonSSMRoleForAutomationAssumeQuickSetup`).

1. (Facoltativo) Aggiungi tag per identificare e organizzare il ruolo.

1. Scegli **Crea ruolo**.

**Importante**  
Il ruolo deve includere una relazione di fiducia con`ssm.amazonaws.com`. Questo viene configurato automaticamente quando si seleziona Systems Manager come servizio nel passaggio 4.

Dopo aver creato il ruolo, è possibile selezionarlo durante la configurazione di Quick Setup. Il ruolo consente a Systems Manager di gestire EC2 istanze, ruoli IAM e altre risorse di Systems Manager ed eseguire comandi per conto dell'utente, mantenendo al contempo la sicurezza attraverso autorizzazioni specifiche e limitate.

## Policy di autorizzazione
<a name="permissions-policies"></a>

**`SsmOnboardingInlinePolicy`**  
La seguente politica definisce le autorizzazioni per la configurazione rapida di Systems Manager:

```
{
    "Version": "2012-10-17" 		 	 	 ,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateInstanceProfile",
                "iam:ListInstanceProfilesForRole",
                "ec2:DescribeIamInstanceProfileAssociations",
                "iam:GetInstanceProfile",
                "iam:AddRoleToInstanceProfile"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AssociateIamInstanceProfile"
            ],
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "Null": {
                    "ec2:InstanceProfile": "true"
                },
                "ArnLike": {
                    "ec2:NewInstanceProfile": "arn:aws:iam::*:instance-profile/[INSTANCE_PROFILE_ROLE_NAME]"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/[INSTANCE_PROFILE_ROLE_NAME]",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ec2.amazonaws.com"
                }
            }
        }
    ]
        }
```

**Relazioni di trust**  
*Questo viene aggiunto automaticamente tramite i passaggi precedenti*

```
{
    "Version": "2012-10-17" 		 	 	 ,
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ssm.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
     ]
        }
```

# Utilizzare un amministratore delegato per Quick Setup
<a name="quick-setup-delegated-administrator"></a>

Dopo aver registrato un account amministratore delegato perQuick Setup, gli utenti con le autorizzazioni appropriate in quell'account possono creare, aggiornare, visualizzare ed eliminare i gestori di configurazione destinati alle unità organizzative all'interno della struttura. AWS Organizations Questo account amministratore delegato può anche organizzare i gestori di configurazione creati precedentemente dall'account di gestione dell'organizzazione.

Solo l'account di gestione di un'organizzazione è in grado di registrare un account nell'organizzazione come amministratore delegato. Quando si registra un account come amministratore delegato perQuick Setup, questo account diventa automaticamente amministratore delegato anche per AWS CloudFormation StackSets Systems Manager Explorer, poiché questi servizi sono necessari per distribuire e monitorare le configurazioni. Quick Setup

**Nota**  
Al momento, il tipo di configurazione della policy di patch non è supportato dall'amministratore delegato per Quick Setup. Le configurazioni delle policy di patch per un'organizzazione devono essere create e gestite nell'account di gestione dell'organizzazione. Per ulteriori informazioni, consulta [Creazione di una policy di patch](quick-setup-patch-manager.md#create-patch-policy).

I seguenti argomenti descrivono come registrare e annullare la registrazione di un amministratore delegato per Quick Setup.

**Topics**
+ [Registrazione di un amministratore delegato per Quick Setup](quick-setup-register-delegated-administrator.md)
+ [Annullare la registrazione di un amministratore delegato per Quick Setup](quick-setup-deregister-delegated-administrator.md)

# Registrazione di un amministratore delegato per Quick Setup
<a name="quick-setup-register-delegated-administrator"></a>

Per registrare un amministratore delegato per Quick Setup, attenersi alla procedura descritta di seguito.

**Per registrare un amministratore delegato per Quick Setup**

1. Accedi al tuo account AWS Organizations di gestione.

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 **Quick Setup**.

1. Seleziona **Impostazioni**.

1. Nella sezione **Amministratore delegato per Quick Setup**, verifica di aver configurato le opzioni di accesso al servizio e al ruolo collegato al servizio necessarie. Se necessario, scegli i pulsanti **Crea ruolo** e **Abilitazione dell'accesso** per configurare queste opzioni.

1. Per **Account ID**, inserisci l' Account AWS ID. Questo account deve essere un account membro in AWS Organizations.

1. Scegliere **Registra amministratore delegato**.

# Annullare la registrazione di un amministratore delegato per Quick Setup
<a name="quick-setup-deregister-delegated-administrator"></a>

Utilizzare la procedura seguente per annullare la registrazione di un amministratore delegato per Quick Setup.

**Per annullare la registrazione di un amministratore delegato di Quick Setup**

1. Accedi al tuo account AWS Organizations di gestione.

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 **Quick Setup**.

1. Seleziona **Impostazioni**.

1. Nella sezione **Amministratore delegato per Quick Setup**, scegli **Annulla registrazione** dal menu a discesa delle **Operazioni**.

1. Seleziona **Conferma**.

# Scopri la terminologia e i dettagli di Quick Setup
<a name="quick-setup-using"></a>

Quick Setup, uno strumento in AWS Systems Manager, visualizza i risultati di tutti i gestori di configurazione che hai creato Regioni AWS nella tabella **Gestori di configurazione** nella Quick Setup home page. In questa pagina, è possibile utilizzare **View details** (Visualizza dettagli) per visualizzare i dettagli di ciascuna configurazione, eliminare le configurazioni dal menu a discesa **Actions** (Operazioni) o utilizzare **Create** (Crea) per creare configurazioni. La tabella **Gestori di configurazione** contiene le informazioni seguenti:
+ **Nome**: il nome del gestore di configurazione, se fornito al momento della creazione.
+ **Tipo di configurazione**: il tipo di configurazione scelto durante la creazione della configurazione. 
+ **Versione**: la versione del tipo di configurazione attualmente distribuita.
+ **Unità organizzative**: visualizza le unità organizzative (OUs) in cui viene distribuita la configurazione se si sceglie un set **personalizzato** di obiettivi. Le unità organizzative e le destinazioni personalizzate sono disponibili solo per l'account di gestione dell'organizzazione. L'account di gestione è l'account utilizzato per creare un'organizzazione in AWS Organizations.
+ **Tipo di implementazione**: indica se l'implementazione si applica all'intera organizzazione (`Organizational`) o solo al tuo account (`Local`).
+ **Regioni**: le Regioni in cui viene implementata la configurazione, se scegli una serie di destinazioni **Personalizzate** o destinazioni all'interno dell'**Account corrente**. 
+ **Stato di distribuzione: lo stato** di distribuzione indica se l'istanza target o stack è stata distribuita AWS CloudFormation correttamente. Le istanze di destinazione o di stack contengono le opzioni di configurazione scelte durante la creazione della configurazione.
+ **Association status** (Stato associazione): lo stato dell'associazione è lo stato di tutte le associazioni create dalla configurazione. Tutte le associazioni per tutte le destinazioni devono essere eseguite correttamente, altrimenti lo stato è **Failed** (Non riuscito).

  Quick Setup crea ed esegue un'associazione di State Manager per ogni destinazione di configurazione. State Manager è uno strumento di AWS Systems Manager.

Per visualizzare le configurazioni implementate nella regione attualmente esplorata, seleziona la scheda **Configurazioni.**

## Dettagli di configurazione
<a name="quick-setup-details"></a>

Nella pagina **Configuration details** (Dettagli configurazione) vengono visualizzate informazioni sull'implementazione della configurazione e sulle relative associazioni. Da questa pagina è possibile modificare le opzioni di configurazione, aggiornare le destinazioni o eliminare la configurazione. È possibile anche visualizzare i dettagli dell'implementazione di ciascuna configurazione per ottenere ulteriori informazioni sulle associazioni. 

A seconda del tipo di configurazione, vengono visualizzati uno o più dei seguenti grafici di stato:

**Stato dell'implementazione della configurazione**  
Visualizza il numero di implementazioni riuscite, non riuscite o in sospeso. Le implementazioni si verificano negli account e nelle regioni di destinazione specificati che contengono i nodi interessati dalla configurazione. 

**Stato dell'associazione della configurazione**  
Visualizza il numero di associazioni State Manager riuscite, non riuscite o in sospeso. Quick Setup crea un'associazione in ogni implementazione per le opzioni di configurazione selezionate.

**Stato di configurazione**  
Visualizza il numero di operazioni eseguite in base al tipo di configurazione e il relativo stato corrente. 

**Conformità delle risorse**  
Visualizza il numero di risorse conformi alla policy specificata per la configurazione.

Nella tabella **Dettagli di configurazione** vengono visualizzate informazioni sull'implementazione della configurazione. È possibile visualizzare ulteriori dettagli su ogni implementazione selezionando l'implementazione e scegliendo **View details** (Visualizza dettagli). Nella pagina dei dettagli di ciascuna implementazione vengono visualizzate le associazioni implementate sui nodi di quella implementazione.

## Modifica ed eliminazione della configurazione
<a name="quick-setup-edit-delete"></a>

È possibile modificare le opzioni di una configurazione dalla pagina **Configuration details** (Dettagli configurazione) scegliendo **Actions** (Operazioni) e poi **Edit configuration options** (Modifica opzioni di configurazione). Quando si aggiungono nuove opzioni alla configurazione, Quick Setup esegue le implementazioni e crea nuove associazioni. Quando si rimuovono opzioni da una configurazione, Quick Setup esegue le implementazioni e rimuove tutte le associazioni correlate.

**Nota**  
È possibile modificare le configurazioni di Quick Setup per il proprio account in qualsiasi momento. Per modificare la configurazione di una **Organizzazione**, **Stato configurazione** deve essere **Riuscito** o **Non riuscito**. 

**Puoi anche aggiornare gli obiettivi inclusi nelle **configurazioni scegliendo Azioni** e **Aggiungi OUs, Aggiungi** **regioni** OUs, **Rimuovi o Rimuovi** regioni.** Se il tuo account non è configurato come account di gestione o hai creato la configurazione solo per l'account corrente, non puoi aggiornare le unità organizzative di destinazione (OUs). La rimozione di una regione o di un'unità organizzativa rimuove le associazioni da tali regioni o OUs. 

Periodicamente, Quick Setup rilascia nuove versioni di configurazioni. È possibile selezionare l'opzione **Aggiorna configurazione** per aggiornare la configurazione alla versione più recente.

Per eliminare una configurazione da Quick Setup, selezionala, quindi seleziona **Actions** (Operazioni) e poi **Delete configuration** (Elimina configurazione). In alternativa, è possibile eliminare la configurazione dalla pagina dei **dettagli di configurazione** nel menu a discesa **Azioni** e quindi **eliminare la configurazione**. Quick Setupquindi ti chiede di **rimuovere tutto OUs e le regioni**, il completamento potrebbe richiedere del tempo. L'eliminazione di una configurazione elimina anche tutte le associazioni correlate. Questo processo di eliminazione in due fasi rimuove tutte le risorse implementate da tutti gli account e le regioni e quindi elimina la configurazione.

## Conformità di configurazione
<a name="quick-setup-compliance"></a>

È possibile verificare se le istanze sono conformi alle associazioni create dalle configurazioni sia in Explorer sia in Conformità, entrambi strumenti di AWS Systems Manager. Per ulteriori informazioni sulla conformità, consulta [Scopri i dettagli sulla conformità](compliance-about.md). Per ulteriori informazioni sulla visualizzazione della conformità in Explorer, consulta [AWS Systems Manager Explorer](Explorer.md).

# Utilizzo dell'API Quick Setup per gestire configurazioni e implementazioni
<a name="quick-setup-api"></a>

Puoi utilizzare l'API fornita da Quick Setup per creare e gestire configurazioni e distribuzioni utilizzando l'SDK AWS CLI o il tuo SDK preferito. Puoi anche utilizzarla CloudFormation per creare una risorsa di gestione della configurazione che distribuisce le configurazioni. Utilizzando l'API, si creano gestori di configurazione che implementino le *definizioni* di configurazione. Le definizioni di configurazione contengono tutte le informazioni necessarie per implementare un particolare tipo di configurazione. Per ulteriori informazioni sull'utilizzo dell'API Quick Setup, consulta la [Documentazione di riferimento sulla configurazione rapida API](https://docs.aws.amazon.com/quick-setup/latest/APIReference/).

Gli esempi seguenti mostrano come creare gestori di configurazione utilizzando and. AWS CLI CloudFormation

------
#### [ AWS CLI ]

```
aws ssm-quicksetup create-configuration-manager \
--name configuration manager name \
--description Description of your configuration manager
--configuration-definitions JSON string containing configuration defintion
```

Di seguito è riportato un esempio di stringa JSON contenente una definizione di configurazione per la policy di patch.

```
'{"Type":"AWSQuickSetupType-PatchPolicy","LocalDeploymentAdministrationRoleArn":"arn:aws:iam::123456789012:role/AWS-QuickSetup-StackSet-Local-AdministrationRole","LocalDeploymentExecutionRoleName":"AWS-QuickSetup-StackSet-Local-ExecutionRole","Parameters":{"ConfigurationOptionsInstallNextInterval":"true","ConfigurationOptionsInstallValue":"cron(0 2 ? * SAT#1 *)","ConfigurationOptionsPatchOperation":"ScanAndInstall","ConfigurationOptionsScanNextInterval":"false","ConfigurationOptionsScanValue":"cron(0 1 * * ? *)","HasDeletedBaseline":"false","IsPolicyAttachAllowed":"true","OutputBucketRegion":"","OutputLogEnableS3":"false","OutputS3BucketName":"","OutputS3KeyPrefix":"","PatchBaselineRegion":"us-east-1","PatchBaselineUseDefault":"custom","PatchPolicyName":"dev-patch-policy","RateControlConcurrency":"5","RateControlErrorThreshold":"0%","RebootOption":"RebootIfNeeded","ResourceGroupName":"","SelectedPatchBaselines":"{\"ALMA_LINUX\":{\"value\":\"arn:aws:ssm:us-east-1:123456789012:patchbaseline/pb-0cb0c4966f86b059b\",\"label\":\"AWS-AlmaLinuxDefaultPatchBaseline\",\"description\":\"Default Patch Baseline for Alma Linux Provided by AWS.\",\"disabled\":false},\"AMAZON_LINUX_2\":{\"value\":\"arn:aws:ssm:us-east-1:123456789012:patchbaseline/pb-0be8c61cde3be63f3\",\"label\":\"AWS-AmazonLinux2DefaultPatchBaseline\",\"description\":\"Baseline containing all Security and Bugfix updates approved for Amazon Linux 2 instances\",\"disabled\":false},\"AMAZON_LINUX_2023\":{\"value\":\"arn:aws:ssm:us-east-1:123456789012:patchbaseline/pb-05c9c9bf778d4c4d0\",\"label\":\"AWS-AmazonLinux2023DefaultPatchBaseline\",\"description\":\"Default Patch Baseline for Amazon Linux 2023 Provided by AWS.\",\"disabled\":false},\"DEBIAN\":{\"value\":\"arn:aws:ssm:us-east-1:123456789012:patchbaseline/pb-09a5f8eb62bde80b1\",\"label\":\"AWS-DebianDefaultPatchBaseline\",\"description\":\"Default Patch Baseline for Debian Provided by AWS.\",\"disabled\":false},\"MACOS\":{\"value\":\"arn:aws:ssm:us-east-1:123456789012:patchbaseline/pb-0ee4f94581368c0d4\",\"label\":\"AWS-MacOSDefaultPatchBaseline\",\"description\":\"Default Patch Baseline for MacOS Provided by AWS.\",\"disabled\":false},\"ORACLE_LINUX\":{\"value\":\"arn:aws:ssm:us-east-1:123456789012:patchbaseline/pb-06bff38e95fe85c02\",\"label\":\"AWS-OracleLinuxDefaultPatchBaseline\",\"description\":\"Default Patch Baseline for Oracle Linux Server Provided by AWS.\",\"disabled\":false},\"REDHAT_ENTERPRISE_LINUX\":{\"value\":\"arn:aws:ssm:us-east-1:123456789012:patchbaseline/pb-0cbb3a633de00f07c\",\"label\":\"AWS-RedHatDefaultPatchBaseline\",\"description\":\"Default Patch Baseline for Redhat Enterprise Linux Provided by AWS.\",\"disabled\":false},\"ROCKY_LINUX\":{\"value\":\"arn:aws:ssm:us-east-1:123456789012:patchbaseline/pb-03ec98bc512aa3ac0\",\"label\":\"AWS-RockyLinuxDefaultPatchBaseline\",\"description\":\"Default Patch Baseline for Rocky Linux Provided by AWS.\",\"disabled\":false},\"UBUNTU\":{\"value\":\"pb-06e3563bd35503f2b\",\"label\":\"custom-UbuntuServer-Blog-Baseline\",\"description\":\"Default Patch Baseline for Ubuntu Provided by AWS.\",\"disabled\":false},\"WINDOWS\":{\"value\":\"pb-016889927b2bb8542\",\"label\":\"custom-WindowsServer-Blog-Baseline\",\"disabled\":false}}","TargetInstances":"","TargetOrganizationalUnits":"ou-9utf-example","TargetRegions":"us-east-1,us-east-2","TargetTagKey":"Patch","TargetTagValue":"true","TargetType":"Tags"}}' \
```

------
#### [ CloudFormation ]

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
SSMQuickSetupTestConfigurationManager:
Type: "AWS::SSMQuickSetup::ConfigurationManager"
Properties:
    Name: "MyQuickSetup"
    Description: "Test configuration manager"
    ConfigurationDefinitions:
    - Type: "AWSQuickSetupType-CFGRecording"
      Parameters:
        TargetAccounts:
            Ref: AWS::AccountId
        TargetRegions:
            Ref: AWS::Region
        LocalDeploymentAdministrationRoleArn: !Sub "arn:aws:iam::${AWS::AccountId}:role/AWS-QuickSetup-StackSet-ContractTest-AdministrationRole"
        LocalDeploymentExecutionRoleName: "AWS-QuickSetup-StackSet-ContractTest-ExecutionRole"
    Tags:
        foo1: "bar1"
```

------

# Tipi di configurazioni Quick Setup supportati
<a name="quick-setup-config-types"></a>

**Tipi di configurazioni supportati**  
Quick Setupillustra la configurazione delle best practice operative per diversi Systems Manager e altri Servizi AWS e la distribuzione automatica di tali configurazioni. Il pannello di controllo Quick Setup consente di visualizzare una visualizzazione in tempo reale dello stato di distribuzione della configurazione. 

È possibile Quick Setup utilizzarlo singolarmente Account AWS o in più regioni Account AWS integrandosi con. AWS Organizations Utilizzo diQuick Setupin più account consente di garantire che l'organizzazione mantenga configurazioni coerenti.

Quick Setup fornisce supporto per i seguenti tipi di configurazione.
+ [Configura la gestione host Amazon EC2 tramite Quick Setup](quick-setup-host-management.md)
+ [Imposta la configurazione predefinita della gestione host per un'organizzazione utilizzando Quick Setup](quick-setup-default-host-management-configuration.md)
+ [Crea un registratore di configurazione AWS Config utilizzando Quick Setup](quick-setup-config.md)
+ [Implementa il AWS Config pacchetto di conformità utilizzando Quick Setup](quick-setup-cpack.md)
+ [Configura l'applicazione di patch per le istanze in un'organizzazione utilizzando una policy di patch di Quick Setup](quick-setup-patch-manager.md)
+ [Configurazione dell'organizzazione di Change Manager](change-manager-organization-setup.md)
+ [Configurazione di DevOps Guru utilizzando Quick Setup](quick-setup-devops.md)
+ [Implementa i pacchetti Distributor tramite Quick Setup](quick-setup-distributor.md)
+ [Arresta e avvia automaticamente le istanze EC2 in base a una pianificazione utilizzando Quick Setup](quick-setup-scheduler.md)
+ [Configurazione dell'organizzazione di OpsCenter](OpsCenter-quick-setup-cross-account.md)
+ [Configura Esploratore di risorse AWS usando Quick Setup](Resource-explorer-quick-setup.md)

# Configura la gestione host Amazon EC2 tramite Quick Setup
<a name="quick-setup-host-management"></a>

UsaQuick Setup, uno strumento per configurare rapidamente i ruoli di sicurezza richiesti e gli strumenti Systems Manager di uso comune sulle tue istanze Amazon Elastic Compute Cloud (Amazon EC2). AWS Systems Manager Puoi utilizzarlo Quick Setup in un singolo account o su più account e integrandosi Regioni AWS con. AWS Organizations Questi strumenti consentono di gestire e monitorare lo stato delle istanze fornendo al contempo le autorizzazioni minime necessarie per iniziare. 

Se non hai familiarità con i servizi e le funzionalità di Systems Manager, consigliamo di consultare la *Guida per l'utente di AWS Systems Manager *prima di creare una configurazione con Quick Setup. Per ulteriori informazioni su Systems Manager, consulta la Guida per l'utente di [Che cos'è AWS Systems Manager?](what-is-systems-manager.md).

**Importante**  
Quick Setup potrebbe non essere lo strumento giusto da utilizzare per la gestione di EC2 se si applica una delle seguenti condizioni:  
Stai cercando di creare un'istanza EC2 per la prima volta per provare AWS le funzionalità.
Sei ancora alle prime armi con la gestione delle istanze EC2.
Consigliamo invece di esplorare il seguente contenuto:   
[Nozioni di base su Amazon EC2](https://aws.amazon.com/ec2/getting-started)
[Avvio di un'istanza tramite la nuova procedura guidata di avvio dell'istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) nella *Guida per l'utente di Amazon EC2*
[Tutorial: nozioni di base sulle istanze Linux di Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html) nella *Guida per l'utente di Amazon EC2*
Se hai già familiarità con la gestione delle istanze EC2 e desideri semplificare la configurazione e la gestione per più istanze EC2, utilizza Quick Setup. A prescindere che la tua organizzazione disponga di decine, migliaia o milioni di istanze EC2, utilizza la seguente procedura Quick Setup per configurare più opzioni contemporaneamente.

**Nota**  
Questo tipo di configurazione consente di impostare più opzioni per un'intera organizzazione definita in AWS Organizations, solo per alcuni account e regioni organizzativi o per un singolo account. Una di queste opzioni consiste nel verificare la presenza di aggiornamenti e applicarli all'SSM Agent ogni due settimane. Se sei un amministratore dell'organizzazione, è possibile anche scegliere di aggiornare *tutte* le istanze EC2 della tua organizzazione con aggiornamenti dell'agente ogni due settimane utilizzando il tipo di configurazione di gestione host predefinita. Per informazioni, consulta [Imposta la configurazione predefinita della gestione host per un'organizzazione utilizzando Quick Setup](quick-setup-default-host-management-configuration.md).

## Configurazione delle opzioni di gestione host per le istanze EC2
<a name="host-management-configuration"></a>

Per configurare la gestione dell'host, esegui le seguenti attività nella AWS Systems Manager Quick Setup console.

**Per aprire la pagina di configurazione di gestione host**

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 **Quick Setup**.

1. Nella scheda **Gestione host**, scegli **Crea**.
**Suggerimento**  
Se hai già una o più configurazioni nel tuo account, scegli prima la scheda **Libreria** o il pulsante **Crea** nella sezione **Configurazioni** per visualizzare le schede.

**Per configurare le opzioni di gestione host di Systems Manager**
+ Per configurare la funzionalità di Systems Manager, nella sezione **Opzioni di configurazione**, scegli le opzioni nel gruppo **Systems Manager** che desideri abilitare per la configurazione:

     
**Aggiorna l'agente Systems Manager (SSM) ogni due settimane**  
Consente a Systems Manager di verificare ogni due settimane la presenza di una nuova versione dell'agente. Se è presente una nuova versione, Systems Manager aggiorna automaticamente l'agente sul nodo gestito alla versione più recente rilasciata. Quick Setup non installa l'agente sulle istanze su cui non è già presente. Per informazioni su quali AMIs hanno SSM Agent preinstallato, consulta [Trova AMIs con SSM Agent preinstallato](ami-preinstalled-agent.md).  
Ti invitiamo a scegliere questa opzione per assicurarti che i tuoi nodi eseguano sempre la maggior parte delle up-to-date versioni diSSM Agent. Per ulteriori informazioni su SSM Agent, incluse quelle su come installare manualmente l'agente, consulta [Utilizzo di SSM Agent](ssm-agent.md).  
**Raccolta dei dati di inventario dalle istanze ogni 30 minuti**  
Abilita Quick Setup per configurare la raccolta dei seguenti tipi di metadati:  
  + **AWS componenti**: driver EC2, agenti, versioni e altro ancora.
  + **Applicazioni**: nomi delle applicazioni, editori, versioni e altro.
  + **Dettagli del nodo**: nome del sistema, nome dei sistemi operativi, versione del sistema operativo, ultimo avvio, DNS, dominio, gruppo di lavoro, architettura del sistema operativo e altro.
  + **Configurazione di rete**: indirizzo IP, indirizzo MAC, DNS, gateway, maschera di sottorete e altro. 
  + **Servizi**: nome, nome visualizzato, stato, servizi dipendenti, tipo di servizio, tipo di avvio e altro (solo nodi Windows Server).
  + **Ruoli Windows**: nome, nome visualizzato, percorso, tipo di funzionalità, stato installato e altro (solo nodi Windows Server).
  + **Aggiornamenti di Windows**: ID hotfix, installato da, data di installazione e altro (solo nodi Windows Server).
Per ulteriori informazioni su Inventory, uno strumento in AWS Systems Manager, consulta[AWS Systems Manager Inventory](systems-manager-inventory.md).  
Il completamento dell'opzione **Raccolta Inventory** può richiedere fino a 10 minuti, anche se sono stati selezionati solo pochi nodi.  
**Scansione giornaliera delle istanze per rilevare patch mancanti**  
Abilita Patch Manager, uno strumento di Systems Manager, per scansionare i nodi quotidianamente e generare un rapporto nella pagina **Conformità**. Il report mostra il numero di nodi conformi alla patch secondo la *baseline delle patch predefinita*. Il report include un elenco di ciascun nodo e il relativo stato di conformità.   
Per informazioni sulle operazioni di applicazione di patch e le baseline delle patch, consulta [AWS Systems Manager Patch Manager](patch-manager.md).   
Per informazioni sulla conformità delle patch, consulta la pagina [Compliance](https://console.aws.amazon.com/systems-manager/compliance) (Conformità) di Systems Manager.  
Per informazioni sull'applicazione di patch ai nodi gestiti in più account e regioni con un'unica configurazione, consulta [Configurazioni delle policy di patch in Quick Setup](patch-manager-policies.md) e [Configura l'applicazione di patch per le istanze in un'organizzazione utilizzando una policy di patch di Quick Setup](quick-setup-patch-manager.md).  
Systems Manager supporta diversi metodi di scansione dei nodi gestiti al fine di verificare la conformità delle patch. Se implementi più metodi alla volta, le informazioni sulla conformità delle patch visualizzate rappresentano sempre il risultato della scansione più recente. I risultati delle scansioni precedenti vengono sovrascritti. Se i metodi di scansione utilizzano baseline delle patch diverse, con diverse regole di approvazione, le informazioni sulla conformità delle patch possono cambiare in modo imprevisto. Per ulteriori informazioni, consulta [Identificazione dell'esecuzione che ha creato i dati di conformità delle patch](patch-manager-compliance-data-overwrites.md).

**Per configurare le opzioni di gestione degli CloudWatch host di Amazon**
+ Per configurare CloudWatch la funzionalità, nella sezione **Opzioni di configurazione**, scegli le opzioni nel CloudWatch gruppo **Amazon** che desideri abilitare per la tua configurazione:

     
**Installa e configura l' CloudWatch agente**  
Installa la configurazione di base dell' CloudWatch agente unificato sulle tue istanze Amazon EC2. L'agente raccoglie metriche e file di registro dalle tue istanze per Amazon. CloudWatch Queste informazioni sono consolidate in modo da poter determinare rapidamente lo stato delle istanze. Per ulteriori informazioni sulla configurazione di base dell' CloudWatch agente, consulta i set di metrici [predefiniti CloudWatch dell'agente](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html#cloudwatch-agent-preset-metrics). Potrebbero essere addebiti costi aggiuntivi. Per ulteriori informazioni, consulta i [ CloudWatchprezzi di Amazon](https://aws.amazon.com/cloudwatch/pricing/).  
**Aggiorna l' CloudWatch agente una volta ogni 30 giorni**  
Consente a Systems Manager di verificare ogni 30 giorni la presenza di una nuova versione dell' CloudWatch agente. Se è presente una nuova versione, Systems Manager aggiorna l'agente sull'istanza. Ti consigliamo di scegliere questa opzione per assicurarti che le tue istanze eseguano sempre la maggior parte delle up-to-date versioni dell' CloudWatch agente.

**Per configurare le opzioni di gestione host dell'agente di avvio di Amazon EC2**
+ Per configurare la funzionalità dell'agente di avvio di Amazon EC2, nella sezione **Opzioni di configurazione**, scegli le opzioni nel gruppo **Agente di avvio di Amazon EC2** che desideri abilitare per la configurazione:

     
**Aggiorna l'agente di avvio EC2 una volta ogni 30 giorni**  
Consenti a Systems Manager di verificare ogni 30 giorni la presenza di una nuova versione dell'agente di avvio installato sull'istanza. Se è presente una nuova versione, Systems Manager aggiorna l'agente sull'istanza. Ti consigliamo di scegliere questa opzione per assicurarti che le tue istanze eseguano sempre la up-to-date versione più recente del Launch Agent applicabile. Per le istanze Windows di Amazon EC2, questa opzione supporta EC2Launch, EC2Launch v2 ed EC2Config. Per le istanze Linux di Amazon EC2, questa opzione supporta `cloud-init`. Per le istanze Mac di Amazon EC2, questa opzione supporta. `ec2-macos-init` Quick Setupnon supporta l'aggiornamento degli agenti di lancio installati su sistemi operativi non supportati dall'agente di lancio o su. AL2023  
Per ulteriori informazioni su questi agenti di inizializzazione, consulta i seguenti argomenti:  
  +  [Configura un'istanza di Windows utilizzando EC2 Launch v2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch-v2.html) 
  +  [Configura un'istanza Windows utilizzando Launch EC2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html) 
  +  [Configurare un'istanza di Windows utilizzando il EC2 servizio Config](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2config-service.html) 
  +  [Documentazione cloud-init](https://cloudinit.readthedocs.io/en/22.2.2/index.html) 
  +  [ec2-macos-init](https://github.com/aws/ec2-macos-init) 

**Per selezionare le istanze EC2 da aggiornare in base alla configurazione di gestione host**
+ Nella sezione **Targets** (Destinazioni), scegli il metodo per determinare gli account e le regioni in cui deve essere implementata la configurazione:
**Nota**  
Non è possibile creare più configurazioni di gestione host Quick Setup che hanno come destinazione la stessa Regione AWS.

------
#### [ Entire organization ]

  La configurazione viene distribuita a tutte le unità organizzative (OUs) e Regioni AWS all'interno dell'organizzazione.

**Nota**  
La**Intero organizzazione**È disponibile solo se nella configurazione della gestione host è presente un account di gestione dell'organizzazione.

------
#### [ Custom ]

  1. Nella OUs sezione **Target**, seleziona il OUs luogo in cui desideri implementare questa configurazione di gestione dell'host.

  1. Nella sezione **Regioni di destinazione**, seleziona le regioni in cui desideri implementare la configurazione della gestione host.

------
#### [ Current account ]

  Scegli una delle opzioni della regione e segui i passaggi corrispondenti.

   

**Regione attuale**  
Scegli come indirizzare solo le istanze nella regione corrente:  
  + **Tutte le istanze**: la configurazione di gestione host si rivolge automaticamente a tutti gli EC2 nella regione corrente.
  + **Tag**: scegli **Aggiungi** e inserisci la chiave e il valore opzionale che vengono aggiunti alle istanze da destinare.
  + **Gruppo di risorse**: per **Gruppo di risorse**, seleziona un gruppo di risorse esistente che contenga le istanze EC2 da destinare.
  + **Manuale**: nella sezione **Istanze**, seleziona la casella di controllo di ogni istanza EC2 da destinare.

**Scegliere le regioni**  
Scegli come indirizzare le istanze nella regione specificata scegliendo una delle seguenti opzioni:  
  + **Tutte le istanze**: tutte le istanze nelle regioni specificate sono destinate.
  + **Tag**: scegli **Aggiungi** e inserisci la chiave e il valore facoltativi che sono stati aggiunti alle istanze da destinare.
Nella sezione **Regioni di destinazione**, seleziona le regioni in cui desideri implementare la configurazione della gestione host.

------

**Come specificare un'opzione di profilo dell'istanza**
+ ***Solo intere organizzazioni** e destinazioni **personalizzate.***

  Nella sezione **Opzioni del profilo dell'istanza**, scegliere se aggiungere i criteri IAM richiesti ai profili dell'istanza esistenti collegati alle istanze oppure consentire a Quick Setup di creare i criteri IAM e i profili dell'istanza con le autorizzazioni necessarie per la configurazione scelta.

Dopo aver specificato tutte le scelte di configurazione, scegli **Crea**.

# Imposta la configurazione predefinita della gestione host per un'organizzazione utilizzando Quick Setup
<a name="quick-setup-default-host-management-configuration"></a>

Con Quick Setup uno strumento in AWS Systems Manager, puoi attivare la configurazione predefinita di gestione degli host per tutti gli account e le regioni che sono stati aggiunti alla tua organizzazione in. AWS Organizations Ciò garantisce che l'SSM Agent sia sempre aggiornato su tutte le istanze Amazon Elastic Compute Cloud (EC2) dell'organizzazione e che possa connettersi a Systems Manager.

**Prima di iniziare**  
Prima di abilitare questa impostazione, verifica che i seguenti requisiti siano soddisfatti.
+ L'ultima versione di SSM Agent è già installata su tutte le istanze EC2 da gestire nell'organizzazione.
+ Le istanze EC2 da gestire utilizzano Instance Metadata Service versione 2 (). IMDSv2
+ Hai effettuato l'accesso all'account di gestione della tua organizzazione, come specificato in AWS Organizations, utilizzando un'identità AWS Identity and Access Management (IAM) (utente, ruolo o gruppo) con autorizzazioni di amministratore.

**Uso del ruolo di gestione delle istanze EC2 predefinito**  
La configurazione di gestione host predefinita utilizza l'impostazione del servizio `default-ec2-instance-management-role` per Systems Manager. Si tratta di un ruolo con autorizzazioni che desideri rendere disponibili a tutti gli account dell'organizzazione per consentire la comunicazione tra l'istanza SSM Agent e il servizio Systems Manager nel cloud.

Se hai già impostato questo ruolo utilizzando il comando della CLI [https://docs.aws.amazon.com/cli/latest/reference/ssm/update-service-setting.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/update-service-setting.html), la configurazione di gestione host predefinita utilizza tale ruolo. Se non hai ancora impostato questo ruolo, Quick Setup lo creerà e lo applicherà per tuo conto. 

Per verificare se questo ruolo è già stato specificato per la tua organizzazione, utilizza il comando [https://docs.aws.amazon.com/cli/latest/reference/ssm/get-service-setting.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-service-setting.html).

## Abilitazione degli aggiornamenti automatici dell'SSM Agent ogni due settimane
<a name="dhmc-enable-automatic-updates"></a>

Utilizza la procedura seguente per abilitare l'opzione di configurazione predefinita della gestione dell'host per l'intera AWS Organizations organizzazione.

**Abilitazione degli aggiornamenti automatici dell'SSM Agent ogni due settimane**

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 **Quick Setup**.

1. Nella scheda **Configurazione di gestione host predefinita**, scegli **Crea**.
**Suggerimento**  
Se disponi già di una o più configurazioni nel tuo account, scegli prima la scheda **Libreria** o il pulsante **Crea** nella sezione **Configurazioni** per visualizzare le schede.

1. Nella sezione **Opzioni di configurazione**, seleziona **Abilita gli aggiornamenti automatici di SSM Agent ogni due settimane**.

1. Scegli **Crea**

# Crea un registratore di configurazione AWS Config utilizzando Quick Setup
<a name="quick-setup-config"></a>

ConQuick Setup, uno strumento in AWS Systems Manager, puoi creare rapidamente un registratore di configurazione basato su. AWS Config Utilizza il registratore della configurazione per rilevare le modifiche alle configurazioni delle risorse e acquisire tali modifiche come elementi di configurazione. Se non lo conosci AWS Config, ti consigliamo di saperne di più sul servizio esaminando il contenuto della *Guida per gli AWS Config sviluppatori* prima di creare una configurazione con. Quick Setup Per ulteriori informazioni su AWS Config, consulta [What is AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) nella *Guida per gli AWS Config sviluppatori*.

Per impostazione predefinita, il registratore di configurazione registra tutte le risorse supportate nel file Regione AWS where AWS Config is running. È possibile personalizzare la configurazione in modo che vengano registrati solo i tipi di risorse specificati. Per ulteriori informazioni, consultate [Selezione dei AWS Config record di risorse](https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html) nella *Guida per gli AWS Config sviluppatori*.

Ti vengono addebitati i costi di utilizzo del servizio quando AWS Config inizi a registrare le configurazioni. Per informazioni sui prezzi, consulta [Prezzi di AWS Config](https://aws.amazon.com/config/pricing/).

**Nota**  
Se hai già creato un registratore di configurazione, Quick Setup non interrompe la registrazione né apporta modifiche ai tipi di risorse che stai già registrando. Se scegli di registrare altri tipi di risorse utilizzando Quick Setup, il servizio li aggiunge ai gruppi di registratori esistenti. Eliminazione delQuick Setup **Registrazione di Config**Il tipo di configurazione non interrompe il registratore di configurazione. Le modifiche continuano a essere registrate e vengono applicate le tariffe di utilizzo del servizio fino a quando non si arresta il registratore di configurazione. Per ulteriori informazioni sulla gestione del registratore di configurazione, consulta.[Gestione del registratore della configurazione](https://docs.aws.amazon.com/config/latest/developerguide/stop-start-recorder.html)nella*AWS Config Guida per gli sviluppatori*.

Per configurare AWS Config la registrazione, esegui le seguenti attività nella AWS Systems Manager console.

**Per configurare AWS Config la registrazione con Quick Setup**

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 **Quick Setup**.

1. Nella scheda **Registrazione di Config**, scegli **Crea**.
**Suggerimento**  
Se hai già una o più configurazioni nel tuo account, scegli prima la scheda **Libreria** o il pulsante **Crea** nella sezione **Configurazioni** per visualizzare le schede.

1. Nella sezione **Opzioni di configurazione**, procedi come segue:

   1. Per **Scegli i tipi di AWS risorse da registrare**, specifica se registrare tutte le risorse supportate o solo i tipi di risorse scelti.

   1. Con **Impostazione di consegna**, è possibile specificare se creare un nuovo bucket Amazon Simple Storage Service (Amazon S3) o scegliere un bucket esistente a cui inviare snapshot di configurazione.

   1. Per **le opzioni di notifica**, scegli l'opzione di notifica che preferisci. AWS Config utilizza Amazon Simple Notification Service (Amazon SNS) per informarti su eventi AWS Config importanti relativi alle tue risorse. Se scegli l'opzione **Usa argomenti SNS esistenti**, devi fornire l' Account AWS ID e il nome dell'argomento Amazon SNS esistente nell'account che desideri utilizzare. Se si sceglie come target più Regioni AWS, i nomi degli argomenti devono essere identici in ogni regione.

1. Nella **Pianificazione**, scegliere la frequenza con cui si desidera che Quick Setup corregga le modifiche apportate alle risorse diverse dalla configurazione. La**Default**viene eseguita una volta. Se non vuoiQuick Setupper correggere le modifiche apportate alle risorse diverse dalla configurazione, scegliere**Disabilita correzione**UNDER**Personalizza**.

1. Nella sezione **Targets** (Destinazioni), è possibile scegliere una delle seguenti opzioni per identificare gli account e le regioni per la registrazione.
**Nota**  
Se lavori con un unico account, le opzioni per lavorare con organizzazioni e unità organizzative (OUs) non sono disponibili. Puoi scegliere se applicare questa configurazione Regioni AWS a tutti gli utenti del tuo account o solo alle regioni selezionate.
   + **Entire organization** (Tutta l'organizzazione): tutti gli account e le regioni dell'organizzazione.
   + **Personalizzato**: solo le regioni OUs e le regioni specificate.
     + Nella OUs sezione **Target**, seleziona il OUs punto in cui desideri consentire la registrazione. 
     + Nella sezione **Target Regions** (Regioni target), è possibile selezionare le regioni in cui desideri autorizzare la registrazione. 
   + **Current account** (Account corrente): vengono scelte come destinazione solo le regioni specificate nell'account a cui si è attualmente connessi. Seleziona una delle seguenti opzioni:
     + **Current Region** (Regione corrente): vengono scelti come destinazione solo i nodi gestiti nella regione selezionata nella console. 
     + **Choose Regions** (Scelta delle Regioni): scegli le singole regioni a cui applicare la configurazione di registrazione.

1. Scegli **Create** (Crea).

# Implementa il AWS Config pacchetto di conformità utilizzando Quick Setup
<a name="quick-setup-cpack"></a>

Un pacchetto di conformità è una raccolta di regole e azioni correttive AWS Config . Con Quick Setup, è possibile distribuire un pacchetto di conformità come singola entità in un account e uno Regione AWS attraverso un’organizzazione in AWS Organizations. Ciò consente di gestire la conformità alla configurazione delle AWS risorse su larga scala, dalla definizione delle politiche al controllo e alla reportistica aggregata, utilizzando un framework e un modello di packaging comuni. 

Per distribuire i pacchetti di conformità, esegui le seguenti attività nella console. AWS Systems Manager Quick Setup

**Nota**  
È necessario abilitare AWS Config la registrazione prima di distribuire questa configurazione. Per ulteriori informazioni, consulta[Pacchetti di conformità](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html)nella*AWS Config Guida per gli sviluppatori*.

**Per distribuire i pacchetti di conformità conQuick Setup**

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 **Quick Setup**.

1. Nella scheda **Pacchetti di conformità**, scegli **Crea**.
**Suggerimento**  
Se hai già una o più configurazioni nel tuo account, scegli prima la scheda **Libreria** o il pulsante **Crea** nella sezione **Configurazioni** per visualizzare le schede.

1. Nella sezione **Scegli i pacchetti di conformità**, scegli i pacchetti di conformità che desideri implementare.

1. Nella **Pianificazione**, scegliere la frequenza con cui si desidera che Quick Setup corregga le modifiche apportate alle risorse diverse dalla configurazione. La**Default**viene eseguita una volta. Se non vuoi Quick Setup per correggere le modifiche apportate alle risorse diverse dalla configurazione, scegli **Disabilitato** sotto **Personalizza**.

1. Nella sezione **Target**, scegli se distribuire i pacchetti di conformità all'intera organizzazione, a parte Regioni AWS o all'account a cui hai attualmente effettuato l'accesso.

   Se si sceglie**Intero organizzazione**Continuare con la fase 8.

   Se si sceglie**Personalizza**Continuare con la fase 7.

1. Nella**Regioni target**selezionare le caselle di controllo delle Regioni in cui si desidera distribuire i pacchetti di conformità.

1. Scegli **Create** (Crea).

# Configura l'applicazione di patch per le istanze in un'organizzazione utilizzando una policy di patch di Quick Setup
<a name="quick-setup-patch-manager"></a>

Con uno strumento integrato Quick Setup AWS Systems Manager, puoi creare policy di patch basate su. Patch Manager Una policy di patch definisce la pianificazione e baseline da utilizzare quando si applicano automaticamente le patch alle istanze Amazon Elastic Compute Cloud (Amazon EC2) e ad altri nodi gestiti. Con una singola configurazione delle policy di patch, è possibile definire l'applicazione di patch per tutti gli account in tutte le Regioni AWS dell'organizzazione, per Regioni e account selezionati o per una singola coppia account-Regione. Per ulteriori informazioni sulle policy di patch, consulta [Configurazioni delle policy di patch in Quick Setup](patch-manager-policies.md).

**Prerequisito**  
Per definire una policy di patch per un nodo tramite Quick Setup, il nodo deve essere un *nodo gestito*. Per ulteriori informazioni sulla gestione dei nodi, consulta la pagina [Configurazione della console unificata di Systems Manager per un'organizzazione](systems-manager-setting-up-organizations.md).

**Importante**  
**Metodi di scansione della conformità delle patch**: Systems Manager supporta diversi metodi di scansione dei nodi gestiti al fine di verificare la conformità delle patch. Se implementi più metodi alla volta, le informazioni sulla conformità delle patch visualizzate rappresentano sempre il risultato della scansione più recente. I risultati delle scansioni precedenti vengono sovrascritti. Se i metodi di scansione utilizzano baseline delle patch diverse, con diverse regole di approvazione, le informazioni sulla conformità delle patch possono cambiare in modo imprevisto. Per ulteriori informazioni, consulta [Identificazione dell'esecuzione che ha creato i dati di conformità delle patch](patch-manager-compliance-data-overwrites.md).  
**Stato di conformità dell'associazione e policy di patch**: lo stato di applicazione di patch per un nodo gestito soggetto a una policy Quick Setup di patch corrisponde allo stato dell'esecuzione dell'associazione State Manager per quel nodo. Quando lo stato di esecuzione dell'associazione è `Compliant`, anche lo stato di applicazione di patch per il nodo gestito viene contrassegnato come `Compliant`. Quando lo stato di esecuzione dell'associazione è `Non-Compliant`, anche lo stato di applicazione di patch per il nodo gestito viene contrassegnato come `Non-Compliant`. 

## Regioni supportate per le configurazioni delle policy di patch
<a name="patch-policies-supported-regions"></a>

Le configurazioni delle policy di patch in Quick Setup sono attualmente supportate nelle seguenti regioni:
+ Stati Uniti orientali (Ohio) (us-east-2)
+ Stati Uniti orientali (Virginia settentrionale) (us-east-1)
+ Stati Uniti occidentali (California settentrionale) (us-west-1)
+ Stati Uniti occidentali (Oregon) (us-west-2)
+ Asia Pacifico (Mumbai) (ap-south-1)
+ Asia Pacifico (Seoul) (ap-northeast-2)
+ Asia Pacifico (Singapore) (ap-southeast-1)
+ Asia Pacifico (Sydney) (ap-southeast-2)
+ Asia Pacifico (Tokyo) (ap-northeast-1)
+ Canada (Centrale) (ca-central-1)
+ Europa (Francoforte) (eu-central-1)
+ Europa (Irlanda) (eu-west-1)
+ Europa (Londra) (eu-west-2)
+ Europa (Parigi) (eu-west-3)
+ Europa (Stoccolma) (eu-north-1)
+ Sud America (San Paolo) (sa-east-1)

## Autorizzazioni per il bucket S3 con policy di patch
<a name="patch-policy-s3-bucket-permissions"></a>

Quando crei una policy di patch, Quick Setup crea un bucket Amazon S3 che contiene un file denominato `baseline_overrides.json`. Questo file memorizza le informazioni sulle baseline delle patch che hai specificato per la tua policy di patch.

Il nome del bucket S3 segue il formato `aws-quicksetup-patchpolicy-account-id-quick-setup-configuration-id`. 

Ad esempio: `aws-quicksetup-patchpolicy-123456789012-abcde`

Se stai creando una policy di patch per un'organizzazione, il bucket viene creato nell'account di gestione dell'organizzazione. 

Esistono due casi d'uso in cui è necessario fornire ad altre AWS risorse l'autorizzazione ad accedere a questo bucket S3 utilizzando le policy AWS Identity and Access Management (IAM):
+ [Caso 1: utilizza il tuo profilo dell'istanza o il tuo ruolo di servizio con i tuoi nodi gestiti anziché uno fornito da Quick Setup](#patch-policy-instance-profile-service-role)
+ [Caso 2: utilizzo degli endpoint VPC per la connessione a Systems Manager](#patch-policy-vpc)

La policy di autorizzazione necessaria in entrambi i casi si trova nella sezione in basso, [Autorizzazioni relative alle policy per i bucket S3 di Quick Setup](#patch-policy-bucket-permissions).

### Caso 1: utilizza il tuo profilo dell'istanza o il tuo ruolo di servizio con i tuoi nodi gestiti anziché uno fornito da Quick Setup
<a name="patch-policy-instance-profile-service-role"></a>

Le configurazioni delle policy di patch includono un’opzione **Aggiungi le policy IAM richieste ai profili dell'istanza esistenti collegati alle tue istanze**. 

Se non scegli questa opzione ma desideri applicare che Quick Setup applichi le patch ai nodi gestiti utilizzando questa policy di patch, devi assicurarti che siano implementate le seguenti regole:
+ La policy gestita IAM `AmazonSSMManagedInstanceCore` deve essere collegata al [profilo dell'istanza IAM](setup-instance-permissions.md) o al [ruolo di servizio IAM](hybrid-multicloud-service-role.md) utilizzato per fornire le autorizzazioni Systems Manager ai nodi gestiti.
+ È necessario aggiungere le autorizzazioni per accedere al bucket di policy della patch come policy in linea per il profilo dell'istanza IAM o il ruolo di servizio IAM. È possibile fornire l'accesso con caratteri jolly a tutti i bucket `aws-quicksetup-patchpolicy` o solo al bucket specifico creato per la tua organizzazione o il tuo account, come mostrato negli esempi di codice precedenti.
+ È necessario etichettare il profilo dell'istanza IAM o il ruolo di servizio IAM con la seguente coppia chiave-valore.

  `Key: QSConfigId-quick-setup-configuration-id, Value: quick-setup-configuration-id`

  *quick-setup-configuration-id*rappresenta il valore del parametro applicato allo AWS CloudFormation stack utilizzato per creare la configurazione della policy di patch. Per recuperare questo ID, procedi come segue:

  1. Apri la CloudFormation console in [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

  1. Seleziona il nome dello stack utilizzato per creare la policy di patch. Il nome è in un formato come `StackSet-AWS-QuickSetup-PatchPolicy-LA-q4bkg-52cd2f06-d0f9-499e-9818-d887cEXAMPLE`.

  1. Scegli la scheda **Parametri**.

  1. **Nell'elenco **Parametri**, nella colonna **Chiave, individua l'ID della chiave**. QSConfiguration** Nella colonna **Valore** relativa alla riga corrispondente, individua l'ID di configurazione, ad esempio `abcde`.

     In questo esempio, per applicare il tag al profilo dell'istanza o al ruolo di servizio, la chiave è `QSConfigId-abcde` e il valore è `abcde`.

Per informazioni sull'aggiunta di tag a un ruolo IAM, consulta [Tagging IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_roles.html#id_tags_roles_procs-console) e [Managing tags on instance profiles (AWS CLI o AWS API)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_instance-profiles.html#id_tags_instance-profile_procs-cli-api) nella *IAM User Guide*.

### Caso 2: utilizzo degli endpoint VPC per la connessione a Systems Manager
<a name="patch-policy-vpc"></a>

Se utilizzi endpoint VPC per connetterti a Systems Manager, la policy di endpoint VPC per S3 deve consentire l'accesso al bucket S3 della policy di patch di Quick Setup.

Per informazioni sull'aggiunta di autorizzazioni a una policy di endpoint VPC per S3, consulta [Controllo dell'accesso da endpoint VPC con policy di bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html) nella *Guida per l’utente di Amazon S3*.

### Autorizzazioni relative alle policy per i bucket S3 di Quick Setup
<a name="patch-policy-bucket-permissions"></a>

È possibile fornire l'accesso con caratteri jolly a tutti i bucket `aws-quicksetup-patchpolicy` o solo al bucket specifico creato per la tua organizzazione o il tuo account. Per fornire le autorizzazioni necessarie per i due casi descritti di seguito, utilizza uno dei due formati.

------
#### [ All patch policy buckets ]

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessToAllPatchPolicyRelatedBuckets",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::aws-quicksetup-patchpolicy-*"
    }
  ]
}
```

------

------
#### [ Specific patch policy bucket ]

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AccessToMyPatchPolicyRelatedBucket",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::aws-quicksetup-patchpolicy-111122223333-quick-setup-configuration-id"
    }
  ]
}
```

------

**Nota**  
Dopo aver creato la configurazione della policy di patch, è possibile individuare il nome completo del tuo bucket nella console S3. Ad esempio: `aws-quicksetup-patchpolicy-123456789012-abcde`

------

## Linea di base casuale delle patch IDs nelle operazioni relative alle policy relative alle patch
<a name="qs-patch-baselines-and-compliance"></a>

Le operazioni di applicazione di patch per le policy di patch utilizzano il parametro `BaselineOverride` contenuto nel documento `AWS-RunPatchBaseline` SSM Command. 

Quando utilizzi `AWS-RunPatchBaseline` per applicare le patch *al di fuori* di una policy di patch, è possibile utilizzare `BaselineOverride` per specificare un elenco di baseline delle patch da utilizzare durante l'operazione che sono diverse dai valori predefiniti specificati. È possibile creare questo elenco in un file denominato `baseline_overrides.json` e aggiungerlo manualmente a un bucket Amazon S3 di tua proprietà, come spiegato in [Utilizzo del BaselineOverride parametro](patch-manager-baselineoverride-parameter.md).

Per le operazioni di applicazione di patch basate su policy di patch, tuttavia, Systems Manager crea automaticamente un bucket S3 e vi aggiunge un file `baseline_overrides.json`. Quindi, ogni volta che Quick Setup esegue un'operazione di applicazione di patch (utilizzando lo strumento Run Command), il sistema genera un ID casuale per ogni baseline delle patch. Questo ID è diverso per ogni operazione di applicazione di patch basata su una policy di patch e la baseline delle patch che rappresenta non è memorizzata o accessibile all'utente nel suo account. 

Di conseguenza, non vedrai l'ID della baseline delle patch selezionata nella configurazione nei log di applicazione di patch. Ciò vale sia per le linee di base delle patch AWS gestite che per le baseline di patch personalizzate che potresti aver selezionato. L'ID di base riportato nel log è invece quello generato per la specifica operazione di applicazione di patch.

Inoltre, se tenti di visualizzare i dettagli in Patch Manager relativi a una baseline delle patch generata con un ID casuale, il sistema segnala che la baseline delle patch non esiste. Questo comportamento è previsto e può essere ignorato.

## Creazione di una policy di patch
<a name="create-patch-policy"></a>

Per creare una policy di patch, segui la procedura seguente nella console di Systems Manager.

**Per creare una policy di patch con Quick Setup**

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

   Se stai configurando l'applicazione di patch per un'organizzazione, assicurati di aver effettuato l'accesso al relativo account di gestione. Non è possibile configurare la policy utilizzando l'account amministratore delegato o un account membro.

1. Nel pannello di navigazione, scegli **Quick Setup**.

1. Nella scheda **Patch Manager** (Gestore patch), scegli **Create** (Crea).
**Suggerimento**  
Se hai già una o più configurazioni nel tuo account, scegli prima la scheda **Libreria** o il pulsante **Crea** nella sezione **Configurazioni** per visualizzare le schede.

1. In **Configuration name** (Nome configurazione), immetti un nome per identificare la policy di patch.

1. Nella sezione **Scanning and installation** (Scansione e installazione), in **Patch operation** (Operazione di patch), scegli se la policy di patch deve eseguire l'operazione **Scan** (Scansione) o **Scan and install** (Esegui scansione e installa) sulle patch delle destinazioni specificate.

1. In **Pianificazione della scansione**, scegli **Utilizza le impostazioni predefinite consigliate** o **Pianificazione di scansione personalizzata**. La pianificazione predefinita della scansione eseguirà l'analisi delle destinazioni ogni giorno alle 01:00 UTC.
   + Se scegli **Pianificazione di scansione personalizzata**, seleziona **Frequenza di scansione**.
   + Se scegli **Daily** (Giornaliero), inserisci l'ora, in UTC, in cui desideri scansionare le destinazioni. 
   + Se scegli **Espressione Cron personalizzata**, inserisci la pianificazione come **Espressione Cron** (). Per ulteriori informazioni sulla formattazione delle espressioni CRON per Systems Manager, consulta [Riferimento: espressioni Cron e della frequenza per Systems Manager](reference-cron-and-rate-expressions.md).

     Inoltre, seleziona **Wait to scan targets until first CRON interval** (Attendi per analizzare le destinazioni fino al primo intervallo CRON). Per impostazione predefinita, Patch Manager esegue immediatamente la scansione dei nodi non appena diventano destinazioni.

1. Se scegli **Scansione e installazione** (Esegui scansione e installa), seleziona la **Installation schedule** (Pianificazione dell'installazione) da utilizzare durante l'installazione delle patch per le destinazioni specificate. Se scegli **Use recommended defaults** (Usa le impostazioni predefinite consigliate), Patch Manager esegue l'installazione settimanale delle patch la domenica alle 02:00 UTC.
   + Se scegli **Custom install schedule** (Pianificazione dell'installazione personalizzata), seleziona la **Installation Frequency** (Frequenza di installazione).
   + Se scegli **Daily** (Giornaliero), inserisci l'ora, in UTC, in cui desideri installare gli aggiornamenti nelle destinazioni.
   + Se scegli **Custom CRON Expression** (Espressione CRON personalizzata), inserisci la pianificazione come **CRON expression** (Espressione CRON). Per ulteriori informazioni sulla formattazione delle espressioni CRON per Systems Manager, consulta [Riferimento: espressioni Cron e della frequenza per Systems Manager](reference-cron-and-rate-expressions.md).

     Inoltre, deseleziona **Wait to install updates until first CRON interval** (Attendi per installare gli aggiornamenti fino al primo intervallo CRON) per installare immediatamente gli aggiornamenti sui nodi non appena diventano destinazioni. Per impostazione predefinita, Patch Manager attende il primo intervallo CRON per installare gli aggiornamenti.
   + Scegli **Reboot if needed** (Riavvia se necessario) per riavviare i nodi dopo l'installazione della patch. L'operazione di riavvio è consigliata, ma può causare problemi di disponibilità.

1. Nella sezione **Baseline delle patch**, scegli le baseline delle patch da utilizzare per la scansione e l'aggiornamento delle destinazioni. 

   Per impostazione predefinita, Patch Manager utilizza le baseline delle patch predefinite. Per ulteriori informazioni, consulta [Baseline predefinite](patch-manager-predefined-and-custom-patch-baselines.md#patch-manager-baselines-pre-defined).

   Se scegli **Custom patch baseline**, modifica la patch baseline selezionata per i sistemi operativi per i quali non desideri utilizzare una baseline di patch predefinita AWS .
**Nota**  
Quando utilizzi endpoint VPC per connetterti a Systems Manager, assicurati che la policy degli endpoint VPC per S3 consenta l'accesso a questo bucket S3. Per ulteriori informazioni, consulta [Autorizzazioni per il bucket S3 con policy di patch](#patch-policy-s3-bucket-permissions). 
**Importante**  
Quando utilizzi una [configurazione della policy di patch](patch-manager-policies.md) in Quick Setup, gli aggiornamenti apportati alle baseline delle patch personalizzate vengono sincronizzati con Quick Setup una volta ogni ora.   
Quando si elimina una baseline delle patch personalizzata a cui si fa riferimento in una policy di patch, viene visualizzato un banner nella pagina **Dettagli di configurazione** di Quick Setup relativa alla policy di patch. Il banner informa che la policy di patch fa riferimento a una baseline delle patch che non esiste più, di conseguenza le successive operazioni di applicazione di patch avranno esito negativo. In questo caso, torna alla pagina **Configurazioni** di Quick Setup, seleziona la configurazione Patch Manager e scegli **Operazioni**, **Modifica configurazione**. Il nome della baseline delle patch eliminata viene evidenziato ed è necessario selezionare una nuova baseline delle patch per il sistema operativo interessato.

1. (Facoltativo) Nella sezione **Archiviazione di log delle applicazioni di patch**, seleziona **Scrivi output nel bucket S3** per archiviare i log delle operazioni di applicazione di patch in un bucket Amazon S3. 
**Nota**  
Se stai configurando una policy di patch per un'organizzazione, l'account di gestione dell'organizzazione deve disporre almeno di autorizzazioni di sola lettura per questo bucket. Tutte le unità organizzative incluse nella policy devono disporre dell'accesso in scrittura al bucket. Per informazioni sulla concessione dell'accesso al bucket a diversi account, consulta [Esempio 2: il proprietario del bucket concede autorizzazioni per il bucket multi-account](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html) nella *Guida per l'utente di Amazon Simple Storage Service*.

1. Scegli **Sfoglia S3** per selezionare il bucket in cui desideri archiviare l'output del log delle patch. L'account di gestione deve disporre dell'accesso in lettura a questo bucket. Tutti gli account e le destinazioni non gestionali configurati nella sezione **Targets** (Destinazioni) devono disporre dell'accesso in scrittura al bucket S3 fornito per la registrazione.

1. Nella sezione **Targets** (Destinazioni), scegli una delle seguenti opzioni per identificare gli account e le regioni interessate da questa operazione della policy di patch.
**Nota**  
Se lavorate con un unico account, le opzioni per lavorare con organizzazioni e unità organizzative (OUs) non sono disponibili. È possibile decidere di applicare questa configurazione a tutte le Regioni AWS dell'account o solo alle Regioni selezionate.  
Quando viene precedentemente specificata una regione di residenza per l'account senza aver effettuato l'onboarding alla nuova esperienza della console Quick Setup, non sarà possibile escludere tale regione dalla configurazione dei **Targets** (Destinazioni).
   + **Entire organization** (Tutta l'organizzazione): tutti gli account e le regioni dell'organizzazione.
   + **Personalizzato**: solo le aree OUs e le regioni specificate.
     + Nella OUs sezione **Target**, seleziona il OUs punto in cui desideri impostare la politica delle patch. 
     + Nella sezione **Target Regions** (Regioni target), seleziona le regioni in cui desideri applicare la policy di patch. 
   + **Current account** (Account corrente): vengono scelte come destinazione solo le regioni specificate nell'account a cui si è attualmente connessi. Seleziona una delle seguenti opzioni:
     + **Current Region** (Regione corrente): vengono scelti come destinazione solo i nodi gestiti nella regione selezionata nella console. 
     + **Choose Regions** (Scelta delle Regioni): scegli le singole regioni a cui applicare la policy di patch.

1. In **Choose how you want to target instances** (Scegli come vorresti indirizzare le istanze), scegli una delle opzioni seguenti per identificare i nodi a cui applicare la patch: 
   + **Tutti i nodi gestiti**: tutti i nodi gestiti nelle regioni selezionate OUs e nelle regioni.
   + **Specify the resource group** (Specifica il gruppo di risorse): scegli il nome di un gruppo di risorse dall'elenco per indirizzare le risorse associate.
**Nota**  
Attualmente, la selezione dei gruppi di risorse è supportata solo per le configurazioni di account singoli. Per applicare patch alle risorse in più account, scegli un'opzione di destinazione diversa.
   + **Specify a node tag** (Specifica il tag nodo): l'applicazione di patch si applica solo ai nodi contrassegnati con la coppia chiave-valore specificata in tutti gli account e le regioni di destinazione. 
   + **Manual** (Manuale): scegli manualmente i nodi gestiti tra tutti gli account e le regioni specificati da un elenco.
**Nota**  
Al momento, questa opzione supporta solo istanze Amazon EC2. Puoi aggiungere un massimo di 25 istanze manualmente in una configurazione di policy di patch.

1. Nella sezione **Rate control** (Controllo velocità) esegui le operazioni seguenti:
   + In **Concurrency** (Simultaneità), inserisci un numero o una percentuale di nodi su cui eseguire contemporaneamente la policy di patch.
   + In **Error threshold** (Soglia di errore), inserisci il numero o la percentuale di nodi in cui è possibile che si verifichi un errore prima che la policy di patch abbia esito negativo.

1. (Facoltativo) Seleziona la casella di controllo **Aggiungi policy IAM richieste ai profili dell'istanza esistenti collegati alle istanze**.

   Questa selezione applica le policy IAM create da questa configurazione di Quick Setup ai nodi a cui è già associato un profilo dell'istanza (istanze EC2) o un ruolo di servizio (nodi attivati da sistemi ibridi). Questa selezione è consigliata quando i nodi gestiti dispongono già di un profilo dell'istanza o di un ruolo di servizio associato, ma non contengono tutte le autorizzazioni necessarie per l'utilizzo di Systems Manager.

   La selezione è valida per i nodi gestiti creati successivamente negli account e nelle regioni a cui si applica questa configurazione della policy di patch.
**Importante**  
Se non selezioni questa casella di controllo ma desideri che Quick Setup applichi le patch ai nodi gestiti utilizzando questa policy di patch, devi procedere come segue:  
Aggiungi le autorizzazioni al [profilo dell’istanza IAM](setup-instance-permissions.md) o al [ruolo di servizio IAM](hybrid-multicloud-service-role.md) per accedere al bucket S3 creato per la policy di patch  
Assegna un tag al profilo dell'istanza IAM o al ruolo di servizio IAM con una coppia chiave-valore specifica.  
Per informazioni, consulta [Caso 1: utilizza il tuo profilo dell'istanza o il tuo ruolo di servizio con i tuoi nodi gestiti anziché uno fornito da Quick Setup](#patch-policy-instance-profile-service-role).

1. Scegli **Create** (Crea).

   Per esaminare lo stato di applicazione di patch dopo la loro creazione, accedi alla configurazione dalla pagina [https://console.aws.amazon.com/systems-manager/quick-setup](https://console.aws.amazon.com/systems-manager/quick-setup).

# Configurazione di DevOps Guru utilizzando Quick Setup
<a name="quick-setup-devops"></a>

È possibile configurare rapidamente le opzioni di DevOps Guru utilizzandoQuick Setup. Amazon DevOps Guru è un servizio basato su Machine Learning (ML) che semplifica il miglioramento delle prestazioni operative e della disponibilità di un'applicazione. DevOps Guru rileva comportamenti diversi dai normali schemi operativi in modo da poter identificare i problemi operativi molto prima che abbiano un impatto sui clienti. DevOps Guru acquisisce automaticamente i dati operativi dalle applicazioni AWS e fornisce un unico pannello di controllo per visualizzare i problemi nei dati operativi. È possibile iniziare a utilizzare DevOps Guru per migliorare la disponibilità e l'affidabilità delle applicazioni senza alcuna esperienza di configurazione manuale o di machine learning.

Configurazione di DevOps Guru con Quick Setup è disponibile nelle seguenti Regioni AWS:
+ Stati Uniti orientali (Virginia settentrionale)
+ Stati Uniti orientali (Ohio)
+ US West (Oregon)
+ Europa (Francoforte)
+ Europa (Irlanda)
+ Europa (Stoccolma)
+ Asia Pacifico (Singapore)
+ Asia Pacifico (Sydney)
+ Asia Pacifico (Tokyo)

Per informazioni sui prezzi, consulta[Prezzi Amazon DevOps Guru](https://aws.amazon.com/devops-guru/pricing/).

Per configurare DevOps Guru, esegui queste attività nellaAWS Systems Manager Quick SetupConsole.

**Per configurare DevOps Guru conQuick Setup**

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

1. Nel pannello di navigazione, scegli **Quick Setup**.

1. Nel scheda **DevOps Guru**, scegli **Crea**.
**Suggerimento**  
Se hai già una o più configurazioni nel tuo account, scegli prima la scheda **Libreria** o il pulsante **Crea** nella sezione **Configurazioni** per visualizzare le schede.

1. Nella**Opzioni di configurazione**, scegliere la sezioneAWSTipi di risorse che desideri analizzare e preferenze di notifica.

   Se non selezioni **Analisi di tutte le risorseAWS in tutti gli account della mia organizzazione**, è possibile scegliere AWS da analizzare in seguito nella console DevOps Guru. DevOps Guru analizza diversiAWSTipi di risorse (ad esempio, bucket Amazon Simple Storage Service (Amazon S3) e istanze Amazon Elastic Compute Cloud (Amazon EC2)), suddivise in due gruppi di prezzi. Paghi per ilAWSore risorsa analizzate, per ogni risorsa attiva. Una risorsa è attiva solo se produce metriche, eventi o voci di registro entro un'ora. La tariffa che ti viene addebitata per unAWSTipo di risorsa dipende dal gruppo di prezzi.

   Se si seleziona l'opzione**Abilita notifiche SNS**, viene creato un argomento Amazon Simple Notification Service (Amazon SNS) in ogniAccount AWSNelle unità organizzative (OU) di destinazione con la configurazione. DevOps Guru utilizza questo argomento per notificare all'utente eventi DevOps Guru importanti, ad esempio, la creazione di una nuova panoramica. Se non si attiva questa opzione, è possibile aggiungere un argomento più avanti nella console DevOps Guru.

   Se si seleziona l'opzione**Abilitazione diAWS Systems ManagerOpsItems**, verranno creati elementi di lavoro operativi (OpsItems) per gli eventi Amazon EventBridge correlati e gli allarmi Amazon CloudWatch.

1. Nella**Pianificazione**, scegliere la frequenza con cui si desideraQuick Setupper correggere le modifiche apportate alle risorse che differiscono dalla configurazione. La**Default**viene eseguita una volta. Se non vuoiQuick Setupper correggere le modifiche apportate alle risorse diverse dalla configurazione, scegliere**Disabilitato**UNDER**Personalizza**.

1. Nella**Targets**, scegliere se consentire a DevOps Guru di analizzare le risorse in alcune unità organizzative o l'account a cui si è attualmente connessi.

   Se si sceglie **Custom** (Personalizza), continuare con la fase 8.

   Se si sceglie **Current account** (Account corrente), continuare con la fase 9.

1. Nella**Ou di destinazione**e**Regioni target**, selezionare le caselle di controllo delle unità organizzative e delle regioni in cui si desidera utilizzare DevOps Guru.

1. Scegli le regioni in cui vuoi usare DevOps Guru nell'account corrente.

1. Scegli **Create (Crea)**.

# Implementa i pacchetti Distributor tramite Quick Setup
<a name="quick-setup-distributor"></a>

Distributorè uno strumento in AWS Systems Manager. ADistributorè una raccolta di software o di asset installabili che possono essere distribuiti come una singola entità. ConQuick Setup, è possibile distribuire un Distributor pacchetto in un'azienda Regione AWS o Account AWS all'interno di un'organizzazione in AWS Organizations. Attualmente, è possibile distribuire solo l'agente EC2 Launch v2, il pacchetto di utilità Amazon Elastic File System (Amazon EFS) e CloudWatch l'agente Amazon. Quick Setup Per ulteriori informazioni su Distributor, consultare [AWS Systems Manager Distributor](distributor.md).

Per distribuire Distributor i pacchetti, esegui le seguenti attività nella console. AWS Systems Manager Quick Setup

**Per distribuireDistributorPacchetti conQuick Setup**

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 **Quick Setup**.

1. Nella scheda **Distributore**, scegli **Crea**.
**Suggerimento**  
Se hai già una o più configurazioni nel tuo account, scegli prima la scheda **Libreria** o il pulsante **Crea** nella sezione **Configurazioni** per visualizzare le schede.

1. Nella**Opzioni di configurazione**, selezionare il pacchetto che si desidera distribuire.

1. Nella sezione **Target**, scegli se distribuire il pacchetto all'intera organizzazione, ad alcune unità organizzative (OUs) o all'account a cui hai attualmente effettuato l'accesso.

   Se si sceglie**Intero organizzazione**Continuare con la fase 8.

   Se scegli **Personalizza**, continua con la fase 7.

1. Nella OUs sezione **Target**, seleziona le caselle di controllo delle aree OUs e delle regioni in cui desideri distribuire il pacchetto.

1. Scegli **Create** (Crea).

# Arresta e avvia automaticamente le istanze EC2 in base a una pianificazione utilizzando Quick Setup
<a name="quick-setup-scheduler"></a>

Con uno strumento Quick Setup AWS Systems Manager, puoi configurare Resource Scheduler per automatizzare l'avvio e l'arresto delle istanze Amazon Elastic Compute Cloud (Amazon EC2).

Questa configurazione di Quick Setup consente di ridurre i costi operativi avviando e interrompendo le istanze in base alla pianificazione specificata. Ciò consente di evitare costi superflui per l'esecuzione di istanze, quando non sono necessarie. 

Ad esempio, attualmente potresti lasciare le tue istanze costantemente in esecuzione, anche se vengono utilizzate solo 10 ore al giorno per 5 giorni alla settimana. È possibile invece pianificare l'interruzione delle istanze ogni giorno dopo l'orario lavorativo, con un risparmio del 70% dal momento che il tempo di esecuzione si riduce da 168 ore a 50 ore. L'uso di Quick Setup non prevede alcun costo. Tuttavia, i costi possono essere addebitati in base alle risorse configurate e ai limiti di utilizzo senza costi per i servizi utilizzati per configurare il servizio.

Utilizzando Resource Scheduler, puoi scegliere di interrompere e avviare automaticamente le istanze su più Regioni AWS istanze e in base a una pianificazione da te definita. Account AWS La configurazione di Quick Setup è destinata alle istanze Amazon EC2 che utilizzano la chiave tag e il valore specificati. Solo le istanze con un tag corrispondente al valore specificato nella configurazione vengono interrotte o avviate da Pianificatore risorse. Tieni presente che se i volumi Amazon EBS collegati all'istanza sono crittografati, devi aggiungere le autorizzazioni richieste per la AWS KMS chiave al ruolo IAM affinché Resource Scheduler avvii l'istanza.

**Numero massimo di istanze per configurazione**  
Una configurazione singola supporta la pianificazione di un massimo di 5.000 istanze per Regione. Se necessiti di più di 5.000 istanze in una determinata Regione, devi creare più configurazioni. Assegna di conseguenza i tag alle istanze, in modo che ogni configurazione gestisca fino a 5.000 istanze. Durante la creazione di molteplici configurazioni di Quick Setup nel Pianificatore risorse, devi specificare valori di chiave di tag diversi. Ad esempio, una configurazione può utilizzare la chiave tag `Environment` con il valore `Production`, mentre un'altra utilizza `Environment` e `Development`.

**Comportamenti di pianificazione**  
I seguenti punti descrivono determinati comportamenti delle configurazioni di pianificazione:
+ Pianificatore risorse avvia le istanze contrassegnate solo se si trovano nello stato `Stopped`. Allo stesso modo, le istanze vengono interrotte solo se si trovano nello stato `running`. Pianificatore risorse opera su un modello basato su eventi e avvia o arresta le istanze solo nei momenti specificati. Si supponga, ad esempio, di creare una pianificazione che avvia le istanze alle ore 09:00. Pianificatore risorse avvia tutte le istanze associate al tag specificato che si trovano nello stato `Stopped` alle 09:00. Se le istanze vengono interrotte manualmente in un secondo momento, Pianificatore risorse non le riavvierà per mantenere lo stato `Running`. Analogamente, se un'istanza viene avviata manualmente dopo essere stata interrotta in base alla pianificazione, Pianificatore risorse non interromperà nuovamente l'istanza.
+ Se crei una pianificazione con un'ora di inizio successiva alle 24 ore rispetto all'ora di fine, la funzione Pianificazione risorse presuppone che le istanze vengano eseguite durante la notte. Si supponga, ad esempio, di creare una pianificazione che avvia le istanze alle 21:00 e le interrompe alle 07:00. Pianificatore risorse avvia tutte le istanze associate al tag specificato che si trovano nello stato `Stopped` alle 21:00 e le interrompe alle 07:00 del giorno successivo. Per gli orari notturni, l'ora di inizio si applica ai giorni selezionati per la pianificazione. Tuttavia, l'orario di interruzione si applica al giorno successivo alla pianificazione.
+ Quando crei una configurazione di pianificazione, lo stato corrente delle istanze potrebbe essere modificato per soddisfare i requisiti della pianificazione.

  Ad esempio, supponiamo che oggi sia mercoledì e che tu specifichi una pianificazione per l'inizio delle istanze gestite alle 9:00 e l'interruzione alle 17:00 *solo* il martedì e il giovedì. Poiché l'ora corrente non rientra negli orari prescritti per l'esecuzione delle istanze, queste verranno interrotte dopo la creazione della configurazione. Le istanze non verranno rieseguite fino alla successiva ora prescritta, le 9:00 di giovedì. 

  Se le istanze sono attualmente in uno stato `Stopped` e si specifica una pianificazione in base alla quale verranno eseguite all'ora corrente, Pianificazione risorse le avvia dopo la creazione della configurazione.

Quando elimini la configurazione, le istanze non vengono più interrotte e avviate secondo la pianificazione precedentemente definita. In rari casi, le istanze potrebbero non interrompersi o avviarsi correttamente a causa di errori nelle operazioni API.

Per configurare la pianificazione per le istanze Amazon EC2, esegui le seguenti attività nella console. AWS Systems Manager Quick Setup

**Per configurare la pianificazione delle istanze con Quick Setup**

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 **Quick Setup**.

1. Nella scheda **Pianificazione risorse**, scegli **Crea**.
**Suggerimento**  
Se hai già una o più configurazioni nel tuo account, scegli prima la scheda **Libreria** o il pulsante **Crea** nella sezione **Configurazioni** per visualizzare le schede.

1. Nella sezione **Instance tag** (Tag dell'istanza), specifica la chiave tag e il valore applicati alle istanze da associare alla pianificazione.

1. Nella sezione **Schedule options** (Opzioni di pianificazione), specifica il fuso orario, i giorni e gli orari in cui desideri avviare e interrompere le istanze.

1. Nella sezione **Obiettivi**, scegli se impostare la pianificazione per un gruppo **personalizzato** di unità organizzative (OUs) o per l'**account corrente** a cui hai effettuato l'accesso:
   + **Personalizzato**: nella OUs sezione **Target**, seleziona il OUs punto in cui desideri impostare la pianificazione. Successivamente, nella sezione **Target Regions** (Regioni target), seleziona le regioni in cui desideri configurare la pianificazione.
   + **Account corrente**: seleziona **Regione corrente** o **Scelta delle Regioni**. Se hai selezionato **Choose Regions** (Scelta delle Regioni), scegli le **Target Regions** (Regioni target) in cui desideri configurare la pianificazione.

1. Verifica le informazioni relative alla pianificazione nella sezione **Summary** (Riepilogo).

1. Scegli **Create** (Crea).

# Configura Esploratore di risorse AWS usando Quick Setup
<a name="Resource-explorer-quick-setup"></a>

Con uno strumento integrato Quick Setup AWS Systems Manager, puoi configurare rapidamente la ricerca e l'individuazione di risorse Esploratore di risorse AWS all'interno della tua Account AWS o dell'intera AWS organizzazione. Puoi cercare le tue risorse utilizzando metadati come nomi, tag e IDs. Esploratore di risorse AWS *fornisce risposte rapide alle query di ricerca utilizzando gli indici.* Resource Explorer crea e gestisce indici utilizzando una varietà di fonti di dati per raccogliere informazioni sulle risorse nel tuo Account AWS. 

Quick Setup per Resource Explorer automatizza il processo di configurazione dell'indice. [Per ulteriori informazioni su Esploratore di risorse AWS, consulta What is? Esploratore di risorse AWS](https://docs.aws.amazon.com/resource-explorer/latest/userguide/welcome.html) nella Guida Esploratore di risorse AWS per l'utente.

Durante Quick Setup, Resource Explorer esegue le seguenti operazioni: 
+ Crea un indice Regione AWS in ogni tuo Account AWS.
+ Aggiorna l'indice nella regione specificata come indice di aggregazione per l'account.
+ Crea una vista predefinita nella regione dell'indice di aggregazione. Questa vista non ha filtri, quindi restituisce tutte le risorse trovate nell'indice.

**Autorizzazioni minime**

Per eseguire le fasi della seguente procedura, è necessario avere le seguenti autorizzazioni:
+ **Azione**: `resource-explorer-2:*` – **Risorsa**: nessuna risorsa specifica (`*`)
+ **Azione**: `iam:CreateServiceLinkedRole` – **Risorsa**: nessuna risorsa specifica (`*`)

**Per configurare Resource Explorer**

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 **Quick Setup**.

1. Nella scheda **Resource Explorer**, scegli **Crea**.

1. Nella sezione **Regione dell'indice di aggregazione**, scegli la regione in cui desideri contenere **l'indice di aggregazione**. È necessario selezionare la regione appropriata per la posizione geografica degli utenti.

1. (Facoltativo) Seleziona la casella di controllo **Sostituisci gli indici di aggregazione esistenti in regioni diverse da quella selezionata sopra**. 

1. Nella sezione **Obiettivi**, scegli l'**organizzazione** di destinazione o **le unità organizzative specifiche (OUs)** contenenti le risorse che desideri scoprire. 

1. Nella sezione **Regioni**, scegli quali **regioni** includere nella configurazione. 

1. Rivedi il riepilogo della configurazione e scegli **Create** (Crea). 

Nella pagina **Resource Explorer**, è possibile monitorare lo stato della configurazione.

# Risultati della risoluzione dei problemi di Quick Setup
<a name="quick-setup-results-troubleshooting"></a>

Utilizza le informazioni seguenti per risolvere i problemi relativi a Quick Setup, uno strumento di AWS Systems Manager. Questo argomento include attività specifiche per risolvere i problemi in base al tipo di problema di Quick Setup.

**Problema: implementazione non riuscita**  
Una distribuzione fallisce se lo CloudFormation stack set non è riuscito durante la creazione. Per esaminare un errore di implementazione, segui la seguente procedura:

1. Passare alla [console AWS CloudFormation](https://console.aws.amazon.com/cloudformation). 

1. Scegli lo stack creato dalla configurazione di Quick Setup. **Stack name** (Nome stack) include `QuickSetup` seguito dal tipo di configurazione scelto, ad esempio `SSMHostMgmt`. 
**Nota**  
CloudFormation a volte elimina le distribuzioni dello stack non riuscite. Se lo stack non è disponibile nella tabella **Stacks** (Stack), scegli **Deleted** (Eliminato) dall'elenco dei filtri.

1. Controlla **Status** (Stato) e **Status reason** (Motivo dello stato). Per ulteriori informazioni sugli stati dello stack, consulta [Codici di stato dello stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html#cfn-console-view-stack-data-resources-status-codes) nella *Guida per l'utente di AWS CloudFormation *. 

1. Per individuare il passaggio esatto non riuscito, controlla la scheda **Events** (Eventi) e rivedi lo **Status** (Stato) di ciascun evento. 

1. Consulta la sezione [Risoluzione dei problemi](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html) nella *Guida per l'utente di AWS CloudFormation *.

1. Se non riesci a risolvere l'errore di distribuzione utilizzando la procedura di CloudFormation risoluzione dei problemi, elimina la configurazione e riconfigurala.

**Problema: associazione non riuscita**  
Se una delle associazioni ha riportato un errore durante la configurazione, nella tabella **Configuration details** (Dettagli configurazione) della pagina **Configuration details** (Dettagli configurazione) della configurazione in **Configuration status** (Stato configurazione) sarà visualizzato **Failed** (Non riuscito). Segui la seguente procedura per risolvere i problemi di un'associazione non riuscita.

1. Nella tabella **Configuration details** (Dettagli configurazione), scegli la configurazione non riuscita e quindi seleziona **View Details** (Visualizza dettagli).

1. Copia l'**Association name** (Nome associazione).

1. Vai a **State Manager** e incolla il nome dell'associazione nel campo di ricerca. 

1. Scegliere l'associazione, quindi scegliere la scheda **Execution history** (Cronologia esecuzione).

1. In **Execution ID (ID esecuzione)**, scegliere l'esecuzione dell'associazione non riuscita.

1. La pagina **Association execution targets (Target di esecuzione dell'associazione)** elenca tutti i nodi in cui è stata eseguita l'associazione. Scegliere il pulsante **Output** per un'esecuzione che non è stata eseguita.

1. Nella pagina **Output**, scegliere **Step - Output (Fase - Output)** per visualizzare il messaggio di errore per tale fase nell'esecuzione del comando. Ogni fase può visualizzare un messaggio di errore diverso. Esamina i messaggi di errore per tutte le fasi per risolvere il problema.
Se la visualizzazione dell'output della fase non aiuta a risolvere il problema, è possibile provare a ricreare l'associazione. Per ricreare l'associazione, elimina prima quella non riuscita in State Manager. Dopo aver eliminato l'associazione, modifica la configurazione e scegli l'opzione eliminata, quindi seleziona **Update** (Aggiorna).  
Per esaminare le associazioni con stato **Failed** (Non riuscito) per la configurazione di una **Organization** (Organizzazione), è necessario accedere all'account con l'associazione non riuscita e utilizzare la seguente procedura di associazione non riuscita descritta in precedenza. La**ID associazione**non è un collegamento ipertestuale all'account di destinazione quando si visualizzano i risultati dall'account di gestione.

**Problema: stato di deviazione**  
Quando si visualizza la pagina dei dettagli di una configurazione, è possibile visualizzare lo stato di deviazione di ciascuna implementazione. La deviazione della configurazione si verifica ogni volta che un utente apporta modifiche a un servizio o a funzionalità in conflitto con le selezioni effettuate tramite Quick Setup. Se un'associazione viene modificata dopo la configurazione iniziale, nella tabella viene visualizzata un'icona di avviso che indica il numero di elementi che sono stati deviati. È possibile determinare cosa ha causato la deviazione passando il mouse sull'icona. 
Quando un'associazione viene eliminata in State Manager, le implementazioni correlate visualizzano un avviso di deviazione. Per risolvere questo problema, modifica la configurazione e scegli l'opzione che è stata rimossa quando l'associazione è stata eliminata. Scegli **Update** (Aggiorna) e attendi il completamento dell'implementazione.