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
Cette référence décrit les actions Automation que vous pouvez spécifier dans un runbook Automation. Automation est une fonctionnalité de 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.
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 AWS Identity and Access Management (IAM), le rôle de service doit être configuré avec l'autorisation d'appeler ces services. Cette exigence s'applique à tous les runbooks Automation d'AWS (runbooks AWS-*
) tels que les runbooks AWS-ConfigureS3BucketLogging
, AWS-CreateDynamoDBBackup
et AWS-RestartEC2Instance
, par exemple. Cette exigence s'applique également à tous les runbooks Automation personnalisés que vous créez qui appellent d'autres Services AWS à l'aide d'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.
Rubriques
- Propriétés partagées par toutes les actions
- aws:approve - Suspendre une automatisation pour approbation manuelle
- aws:assertAwsResourceProperty— Affirme un état de AWS ressource ou un état d'événement
- aws:branch – exécuter les étapes d'automatisation conditionnelle
- aws:changeInstanceState - Modifier ou affirmer le statut de l'instance
- aws:copyImage - Copier ou chiffrer une Amazon Machine Image
- aws:createImage – supprimer une Amazon Machine Image
- aws:createStack— Crée une AWS CloudFormation pile
- aws:createTags - Créer des balises pour des ressources AWS
- aws:deleteImage - Supprimer une Amazon Machine Image
- aws:deleteStack – supprime une pile AWS CloudFormation
- aws:executeAutomation - Exécuter une autre automatisation
- aws:executeAwsApi— Appelez et exécutez AWS API des opérations
- aws:executeScript - Exécuter un script
- aws:executeStateMachine – exécuter une machine d'état AWS Step Functions
- aws:invokeWebhook : appeler une intégration de webhook Automation
- aws:invokeLambdaFunction – appeler une fonction AWS Lambda
- aws:loop : itérer les étapes d’une automatisation
- aws:pause - Suspendre une automatisation
- aws:runCommand - Exécuter une commande sur une instance gérée
- aws:runInstances – lancer une instance Amazon EC2
- aws:sleep - Retarder une automatisation
- aws:updateVariable : met à jour la valeur d’une variable runbook
- aws:waitForAwsResourceProperty - Attendre sur une propriété de ressource AWS
- Variables système Automation
Propriétés partagées par toutes les actions
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
-
Informations que vous fournissez pour décrire l'objectif d'un runbook ou d'une étape.
Type : chaîne
Obligatoire : non
- name
-
Identifiant qui doit être unique pour tous les noms d'étape dans le runbook.
Type : chaîne
Modèle autorisé : [a-zA-Z0-9_]+$
Obligatoire : oui
- action
-
Nom de l'action que l'étape doit exécuter. aws:runCommand - Exécuter une commande sur une instance gérée 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
-
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 : entier
Obligatoire : non
- timeoutSeconds
-
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 : entier
Obligatoire : non
- onFailure
-
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 : Annuler | Continuer | étape :
nom_étape
Obligatoire : non
- onCancel
-
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 | step:
step_name
(Annuler | étape:nom_étape)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
-
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 : booléen
Valeurs valides : true | false
Obligatoire : non
- nextStep
-
Spécifie l'étape de l'automatisation à traiter immédiatement après la fin d'une étape.
Type : chaîne
Obligatoire : non
- isCritical
-
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 surContinue
dans une étape, la valeur par défaut est FAUX. Sinon, la valeur par défaut de cette option est true.Type : booléen
Valeurs valides : true | false
Obligatoire : non
- inputs
-
Propriétés spécifiques à l'action.
Type : carte
Obligatoire : oui
Exemple
--- 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 }}"