

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

# 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 }}"
```