

• Le AWS Systems Manager CloudWatch tableau de bord ne sera plus disponible après le 30 avril 2026. Les clients peuvent continuer à utiliser CloudWatch la console Amazon pour consulter, créer et gérer leurs CloudWatch tableaux de bord Amazon, comme ils le font aujourd'hui. Pour plus d'informations, consultez la [documentation Amazon CloudWatch Dashboard](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Référence sur les actions Systems Manager Automation
<a name="automation-actions"></a>

Cette référence décrit les actions Automation que vous pouvez spécifier dans un runbook Automation. Automation est un outil d’ AWS Systems Manager. Ces actions ne peuvent pas être utilisées dans d'autres types de documents Systems Manager (SSM). Pour de plus amples informations sur les plug-ins pour d'autres types de documents SSM, veuillez consulter [Référence de plug-in de document Command](documents-command-ssm-plugin-reference.md).

Systems Manager Automation exécute les étapes définies dans les runbooks Automation. Chaque étape est associée à une action spécifique. L'action détermine les entrées, le comportement et les sorties de l'étape. Les étapes sont définies dans la section `mainSteps` de votre runbook.

Vous n'avez pas besoin de spécifier les sorties d'une action ou d'une étape. Les sorties sont prédéterminées par l'action associée à l'étape. Lorsque vous spécifiez des entrées d'étape dans vos runbooks, vous pouvez référencer une ou plusieurs sorties d'une étape précédente. Par exemple, vous pouvez rendre la sortie d'`aws:runInstances` disponible pour une action `aws:runCommand` suivante. Vous pouvez également référencer des sorties d'étapes précédentes dans la section `Output` du runbook. 

**Important**  
Si vous exécutez un flux de travail d'automatisation qui appelle d'autres services à l'aide d'un rôle de service Gestion des identités et des accès AWS (IAM), le rôle de service doit être configuré avec l'autorisation d'appeler ces services. Cette exigence s'applique à tous les runbooks AWS Automation (`AWS-*`runbooks) tels que, et `AWS-RestartEC2Instance` runbooks `AWS-ConfigureS3BucketLogging``AWS-CreateDynamoDBBackup`, pour n'en nommer que quelques-uns. Cette exigence s'applique également à tous les runbooks d'automatisation personnalisés que vous créez et qui invoquent d'autres services Services AWS en utilisant des actions qui appellent d'autres services. Par exemple, si vous utilisez les actions `aws:executeAwsApi`, `aws:createStack` ou `aws:copyImage`, vous devez configurer le rôle de service avec l'autorisation d'appeler ces services. Vous pouvez octroyer des autorisations à d'autres Services AWS en ajoutant une politique IAM en ligne au rôle. Pour de plus amples informations, veuillez consulter [(Facultatif) Ajoutez une politique d'automatisation en ligne ou une politique gérée par le client pour invoquer d'autres Services AWS](automation-setup-iam.md#add-inline-policy).

**Topics**
+ [Propriétés partagées par toutes les actions](#automation-common)
+ [`aws:approve` - Suspendre une automatisation pour approbation manuelle](automation-action-approve.md)
+ [`aws:assertAwsResourceProperty`— Affirme un état de AWS ressource ou un état d'événement](automation-action-assertAwsResourceProperty.md)
+ [`aws:branch` – exécuter les étapes d'automatisation conditionnelle](automation-action-branch.md)
+ [`aws:changeInstanceState` - Modifier ou affirmer le statut de l'instance](automation-action-changestate.md)
+ [`aws:copyImage` - Copier ou chiffrer une Amazon Machine Image](automation-action-copyimage.md)
+ [`aws:createImage` – supprimer une Amazon Machine Image](automation-action-create.md)
+ [`aws:createStack`— Crée une CloudFormation pile](automation-action-createstack.md)
+ [`aws:createTags`— Crée des tags pour les AWS ressources](automation-action-createtag.md)
+ [`aws:deleteImage` - Supprimer une Amazon Machine Image](automation-action-delete.md)
+ [`aws:deleteStack`— Supprime une CloudFormation pile](automation-action-deletestack.md)
+ [`aws:executeAutomation` - Exécuter une autre automatisation](automation-action-executeAutomation.md)
+ [`aws:executeAwsApi`— Appelez et exécutez des opérations AWS d'API](automation-action-executeAwsApi.md)
+ [`aws:executeScript` - Exécuter un script](automation-action-executeScript.md)
+ [`aws:executeStateMachine`— Lance une machine à AWS Step Functions états](automation-action-executeStateMachine.md)
+ [`aws:invokeWebhook` : appeler une intégration de webhook Automation](invoke-webhook.md)
+ [`aws:invokeLambdaFunction`— Invoque une AWS Lambda fonction](automation-action-lamb.md)
+ [`aws:loop` : itérer les étapes d’une automatisation](automation-action-loop.md)
+ [`aws:pause` - Suspendre une automatisation](automation-action-pause.md)
+ [`aws:runCommand` - Exécuter une commande sur une instance gérée](automation-action-runcommand.md)
+ [`aws:runInstances` – lancer une instance Amazon EC2](automation-action-runinstance.md)
+ [`aws:sleep` - Retarder une automatisation](automation-action-sleep.md)
+ [`aws:updateVariable` : met à jour la valeur d’une variable runbook](automation-action-update-variable.md)
+ [`aws:waitForAwsResourceProperty`— Attendre sur une propriété AWS de ressource](automation-action-waitForAwsResourceProperty.md)
+ [Variables système Automation](automation-variables.md)

## Propriétés partagées par toutes les actions
<a name="automation-common"></a>

Les propriétés communes sont des paramètres ou des options qui se trouvent dans toutes les actions. Certaines options définissent le comportement d'une étape, par exemple, le temps d'attente pour qu'une étape se termine et ce qu'il faut faire en cas d'échec de l'étape. Les propriétés suivantes sont communes à toutes les actions.

[description](#descriptProp)  
Informations que vous fournissez pour décrire l'objectif d'un runbook ou d'une étape.  
Type : chaîne  
Obligatoire : non

[name](#nameProp)  
Identifiant qui doit être unique pour tous les noms d'étape dans le runbook.  
Type : Chaîne  
Modèle autorisé : [a-zA-Z0-9\$1]\$1\$1  
Obligatoire : oui

[action](#actProp)  
Nom de l'action que l'étape doit exécuter. [`aws:runCommand` - Exécuter une commande sur une instance gérée](automation-action-runcommand.md) est un exemple d'action que vous pouvez spécifier ici. Ce document fournit des informations détaillées sur toutes les actions disponibles.  
Type : Chaîne  
Obligatoire : oui

[maxAttempts](#maxProp)  
Nombre de fois où l'étape doit être réessayée en cas de défaillance. Si la valeur est supérieure à 1, l'étape n'est pas considérée comme ayant échoué tant que toutes les tentatives n'ont pas échoué. La valeur par défaut est 1.  
Type : Integer  
Obligatoire : non

[timeoutSeconds](#timeProp)  
Valeur du délai d'exécution de l'étape. Si le délai est expiré et que la valeur de `maxAttempts` est supérieure à 1, alors l'étape n'est pas considérée comme ayant expiré tant que toutes les tentatives n'ont pas été effectuées.  
Type : Integer  
Obligatoire : non

[onFailure](#failProp)  
Indique si l'automatisation doit être arrêtée, poursuivie ou changer d'étape en cas d'échec. La valeur par défaut de cette option est abort.  
Type : Chaîne  
Valeurs valides : Abandonner \$1 Continuer \$1 Étape : *step\$1name*  
Obligatoire : non

[onCancel](#canProp)  
Indique quelle étape l'automatisation doit atteindre si un utilisateur annule l'automatisation. Automation exécute le flux d'annulation pendant un maximum de deux minutes.  
Type : Chaîne  
Valeurs valides : Abort \$1 étape : *step\$1name*  
Obligatoire : non  
La propriété `onCancel` ne prend pas en charge le déplacement vers les actions suivantes :  
+ `aws:approve`
+ `aws:copyImage`
+ `aws:createImage`
+ `aws:createStack`
+ `aws:createTags`
+ `aws:loop`
+ `aws:pause`
+ `aws:runInstances`
+ `aws:sleep`

[isEnd](#endProp)  
Cette option arrête une exécution d'automatisation à la fin d'une étape spécifique. L'automatisation s'arrête si l'étape a échoué ou réussi. La valeur par défaut est false.  
Type : Boolean  
Valeurs valides : true \$1 false  
Obligatoire : non

[nextStep](#nextProp)  
Spécifie l'étape de l'automatisation à traiter immédiatement après la fin d'une étape.  
Type : chaîne  
Obligatoire : non

[isCritical](#critProp)  
Désigne une étape comme étant critique pour la réussite de l'exécution d'Automation. Si une étape portant cette désignation échoue, Automation signale l'état final de l'automatisation comme Échouée. Cette propriété est évaluée uniquement si vous la définissez explicitement dans votre étape. Si la propriété `onFailure` est définie sur `Continue` dans une étape, la valeur par défaut est FAUX. Sinon, la valeur par défaut de cette option est true.  
Type : Boolean  
Valeurs valides : true \$1 false  
Obligatoire : non

[inputs](#inProp)  
Propriétés spécifiques à l'action.  
Type : carte  
Obligatoire : oui

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