

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

# AWS Systems Manager outils de gestion du changement
<a name="systems-manager-actions-and-change"></a>

AWS Systems Manager fournit les outils suivants pour apporter des modifications à vos AWS ressources.

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

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

L'automatisation, un outil AWS Systems Manager, simplifie les tâches courantes de maintenance, de déploiement et de correction pour Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS), Amazon Redshift, Amazon Simple Storage Service (Amazon S3) et Services AWS bien d'autres encore. Pour vos premiers pas dans l’automatisaton, ouvrez [Systems Manager console](https://console.aws.amazon.com/systems-manager/automation). Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation). 

Automation vous aide à créer des solutions automatisées pour déployer, configurer et gérer des ressources AWS à grande échelle. Avec Automation, vous disposez d'un contrôle granulaire sur la simultanéité de vos automatisations. Cela signifie que vous pouvez spécifier le nombre de ressources à cibler simultanément et le nombre d'erreurs pouvant se produire avant l'arrêt d'une automatisation. 

Pour vous aider à démarrer avec Automation, AWS développe et gère plusieurs runbooks prédéfinis. Selon votre cas d'utilisation, vous pouvez utiliser ces runbooks prédéfinis qui effectuent diverses tâches ou créer vos propres runbooks personnalisés qui pourraient mieux répondre à vos besoins. Pour contrôler la progression et le statut de vos automatisations, vous pouvez utiliser la console Systems Manager Automation ou l'outil de ligne de commande de votre choix. L'automatisation s'intègre également EventBridge à Amazon pour vous aider à créer une architecture axée sur les événements à grande échelle.

**Note**  
Pour les clients qui utilisent Systems Manager Automation pour la première fois depuis le 14 août 2025, l’offre gratuite Automation n’est pas disponible. Pour les clients qui utilisent déjà Automation, l’offre gratuite du service prend fin le 31 décembre 2025. Pour plus d’informations sur les coûts de service actuels, consultez [Tarification AWS Systems Manager](https://aws.amazon.com/systems-manager/pricing/).

## Comment mon organisation peut-elle tirer parti d'Automation ?
<a name="automation-benefits"></a>

Automation offre les avantages suivants :
+ **Prise en charge des scripting dans le contenu des runbooks**

  À l'aide de `aws:executeScript` cette action, vous pouvez exécuter du Python personnalisé et des PowerShell fonctions directement à partir de vos runbooks. Cela vous offre une plus grande flexibilité dans la création de vos runbooks personnalisés, car vous pouvez effectuer diverses tâches que d'autres actions d'Automation ne prennent pas en charge. Vous avez également un meilleur contrôle sur la logique du runbook. Pour voir un exemple d'utilisation de cette action et en quoi elle peut aider à améliorer une solution automatisée existante, consultez [Création de runbooks Automation](automation-authoring-runbooks.md).
+  **Exécutez des automatisations sur plusieurs sites Comptes AWS et Régions AWS à partir d'un emplacement centralisé** 

  Les administrateurs peuvent exécuter des automatisations sur les ressources de plusieurs comptes et régions à partir de la console Systems Manager.
+  **Amélioration de la sécurité opérationnelle** 

  Les administrateurs disposent d'un emplacement central pour accorder et révoquer l'accès aux runbooks. En utilisant uniquement des politiques Gestion des identités et des accès AWS (IAM), vous pouvez contrôler quels utilisateurs ou groupes de votre organisation peuvent utiliser Automation et à quels runbooks ils peuvent accéder.
+  **Automatiser des tâches informatiques courantes** 

  L'automatisation des tâches courantes peut aider à améliorer l'efficacité opérationnelle, à appliquer les normes organisationnelles et à réduire les erreurs des opérateurs. Par exemple, vous pouvez utiliser le `AWS-UpdateCloudFormationStackWithApproval` runbook pour mettre à jour les ressources déployées à l'aide d'un AWS CloudFormation modèle. La mise à jour applique un nouveau modèle. Vous pouvez configurer Automation pour demander l'approbation par un ou plusieurs utilisateurs avant le début de la mise à jour.
+  **Exécutez simultanément des tâches perturbatrices en toute sécurité** 

  Automation inclut des fonctionnalités, telles que les contrôles de débit, qui vous permettent de contrôler le déploiement d'une automatisation dans votre flotte en spécifiant une valeur de simultanéité et un seuil d'erreur. Pour plus d'informations sur l'utilisation des contrôles du débit, consultez [Exécuter des opérations automatisées à grande échelle](running-automations-scale.md).
+ **Rationaliser les tâches complexes**

  Automation fournit des runbooks prédéfinis qui rationalisent les tâches complexes et chronophages telles que la création d'Amazon Machine Images (AMIs) finales. Par exemple, vous pouvez utiliser les runbooks `AWS-UpdateLinuxAmi` et `AWS-UpdateWindowsAmi` pour créer des AMIs finales à partir d'une source AMI. À l'aide de ces runbooks, vous pouvez exécuter des scripts personnalisés avant et après l'application des mises à jour. Vous pouvez également inclure ou exclure l'installation de packages logiciels spécifiques. Pour des exemples d'utilisation de ces runbooks, consultez [Didacticiels](automation-tutorials.md).
+ **Définir les contraintes pour les entrées**

  Vous pouvez définir des contraintes dans des runbooks personnalisés pour limiter les valeurs qu'Automation acceptera pour un paramètre d'entrée particulier. Par exemple, `allowedPattern` n'acceptera que les valeurs d'un paramètre d'entrée correspondant à l'expression régulière que vous définissez. Si vous spécifiez `allowedValues` pour un paramètre d'entrée, seules les valeurs que vous avez spécifiées dans le runbook sont acceptées.
+  **Résultat de l'action d'automatisation des journaux vers Amazon CloudWatch Logs** 

  Pour répondre aux exigences opérationnelles ou de sécurité de votre organisation, il vous faudra peut-être fournir un registre des scripts exécutés pendant un runbook. Avec CloudWatch Logs, vous pouvez surveiller, stocker et accéder à des fichiers journaux provenant de différents types de fichiers Services AWS. Vous pouvez envoyer le résultat de l'`aws:executeScript`action à un groupe de CloudWatch journaux journaux à des fins de débogage et de résolution des problèmes. Les données de journal peuvent être envoyées à votre groupe de journaux avec ou sans AWS KMS chiffrement à l'aide de votre clé KMS. Pour de plus amples informations, veuillez consulter [Résultat de l'action d'automatisation de la CloudWatch journalisation avec journaux](automation-action-logging.md).
+  ** EventBridge Intégration avec Amazon** 

  L'automatisation est prise en charge en tant que type de *cible* dans EventBridge les règles Amazon. Cela signifie que vous pouvez déclencher des runbooks à l'aide d'événements. Pour plus d’informations, consultez [Surveillance des événements de Systems Manager avec Amazon EventBridge](monitoring-eventbridge-events.md) et [Référence : modèles et types d' EventBridge événements Amazon pour Systems Manager](reference-eventbridge-events.md).
+ **Partager les bonnes pratiques organisationnelles**

  Vous pouvez définir les bonnes pratiques pour la gestion des ressources, les tâches opérationnelles et autres dans les runbooks que vous partagez entre les comptes et les régions.

## À qui est destiné Automation ?
<a name="automation-who"></a>
+ Tout AWS client qui souhaite améliorer son efficacité opérationnelle à grande échelle, réduire les erreurs associées aux interventions manuelles et réduire le temps nécessaire à la résolution des problèmes courants.
+ Experts en infrastructure qui souhaitent automatiser les tâches de déploiement et de configuration.
+ Les administrateurs qui souhaitent résoudre de manière fiable les problèmes courants, améliorer l'efficacité du dépannage et réduire les opérations répétitives.
+ Les utilisateurs qui souhaitent automatiser une tâche qu'ils exécutent normalement manuellement.

## Qu'est-ce qu'une automatisation ?
<a name="what-is-an-automation"></a>

Une *automatisation* se compose de toutes les tâches définies dans un runbook et exécutées par le service Automation. Automation utilise les composants suivants pour exécuter des automatisations.


****  

| Concept | Détails | 
| --- | --- | 
|  Runbook Automation  |  Un manuel d'automatisation de Systems Manager définit l'automatisation (les actions que Systems Manager exécute sur vos nœuds et AWS ressources gérés). Automation inclut plusieurs runbooks prédéfinis que vous pouvez utiliser afin d'effectuer des tâches courantes, telles que le redémarrage d'une ou plusieurs instances Amazon EC2 ou la création d'une Amazon Machine Image (AMI). Vous pouvez également créer vos propres runbooks. Les runbooks utilisent YAML ou JSON et incluent les étapes et paramètres que vous spécifiez. Les étapes sont exécutées par ordre séquentiel. Pour de plus amples informations, veuillez consulter [Créer vos propres runbooks](automation-documents.md). Les runbooks sont des documents Systems Manager du type `Automation`, par opposition aux documents `Command`, `Policy` ou `Session`. Les runbooks prennent en charge la version de schéma 0.3. Les documents de commande utilisent la version de schéma 1.2, 2.0, ou 2.2. Les documents de politique utilisent la version de schéma 2.0 ou ultérieure.  | 
|  Action Automation  |  L'automatisation définie dans un runbook comprend une ou plusieurs étapes. 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. Automation prend en charge 20 types d'action différents. Pour plus d'informations, consultez le [Référence sur les actions Systems Manager Automation](automation-actions.md).  | 
|  Quota d'automatisations  |  Chacun Compte AWS peut exécuter 100 automatisations simultanément. Cela inclut les automatisations enfants (automatisations démarrées par une autre automatisation) et les automatisations de contrôle de débit. Si vous tentez d'en exécuter davantage, Systems Manager ajoute les automatisations supplémentaires à une file d'attente et affiche le statut Pending (En attente). Ce quota peut être ajusté à l'aide de la simultanéité adaptative. Pour plus d’informations, veuillez consulter [Permettre à Automation de s'adapter à vos besoins de simultanéité](adaptive-concurrency.md). Pour plus d’informations sur l’exécution d’automatisations, veuillez consulter [Exécuter une opération automatisée grâce à Systems Manager Automation](running-simple-automations.md).  | 
|  Quota de mise d'automatisations en file d'attente  |  Si vous tentez d'exécuter simultanément un nombre d'automatisations supérieur à la limite définie, les automatisations suivantes sont ajoutées à une file d'attente. Chaque Compte AWS peut mettre 5 000 automatisations en file d'attente. Dès qu'une automatisation est terminée (ou a atteint un état terminal), la première automatisation dans la file d'attente commence.  | 
|  Quota d'automatisations de contrôle de débit  |  Chacun Compte AWS peut exécuter 25 automatisations de contrôle de débit simultanément. Si vous tentez d'exécuter simultanément un nombre d'automatisations de contrôle de débit supérieur à la limite définie, Systems Manager ajoute les automatisations de contrôle de débit suivantes à une file d'attente et affiche le statut « En attente ». Pour de plus amples informations sur l'exécution d'automatisations de contrôle de débit, veuillez consulter [Exécuter des opérations automatisées à grande échelle](running-automations-scale.md).  | 
|  Quota de file d'attente d'automatisations de contrôle de débit  |  Si vous tentez d'exécuter simultanément un nombre d'automatisations de contrôle de débit supérieur à la limite définie, les automatisations suivantes sont ajoutées à une file d'attente. Chacun Compte AWS peut mettre en file d'attente 1 000 automatisations de contrôle de débit. Dès qu'une automatisation est terminée (ou a atteint un état terminal), la première automatisation dans la file d'attente commence.  | 

**Topics**
+ [Comment mon organisation peut-elle tirer parti d'Automation ?](#automation-benefits)
+ [À qui est destiné Automation ?](#automation-who)
+ [Qu'est-ce qu'une automatisation ?](#what-is-an-automation)
+ [Configuration d'Automation](automation-setup.md)
+ [Exécuter une opération automatisée grâce à Systems Manager Automation](running-simple-automations.md)
+ [Réexécution d’exécutions d’automatisation](automation-rerun-executions.md)
+ [Exécuter une automatisation qui nécessite des approbations](running-automations-require-approvals.md)
+ [Exécuter des opérations automatisées à grande échelle](running-automations-scale.md)
+ [Exécution d'automatisations dans plusieurs Régions AWS comptes](running-automations-multiple-accounts-regions.md)
+ [Exécutez des automatisations en fonction des événements EventBridge](running-automations-event-bridge.md)
+ [Exécuter une automatisation étape par étape](automation-working-executing-manually.md)
+ [Exécution des automatisations avec les associations State Manager](scheduling-automations-state-manager-associations.md)
+ [Planifier des automatisations avec des fenêtres de maintenance](scheduling-automations-maintenance-windows.md)
+ [Référence sur les actions Systems Manager Automation](automation-actions.md)
+ [Créer vos propres runbooks](automation-documents.md)
+ [Référence du dossier d’exploitation Systems Manager Automation](automation-documents-reference.md)
+ [Didacticiels](automation-tutorials.md)
+ [En savoir plus sur les statuts renvoyés par Systems Manager Automation](automation-statuses.md)
+ [Résolution des problèmes liés à Systems Manager Automation](automation-troubleshooting.md)

# Configuration d'Automation
<a name="automation-setup"></a>

Pour configurer Automation, un outil intégré AWS Systems Manager, vous devez vérifier l'accès des utilisateurs au service Automation et configurer les rôles en fonction de la situation afin que le service puisse effectuer des actions sur vos ressources. Nous vous recommandons également d'activer le mode de simultanéité adaptative dans vos préférences d'Automation. La simultanéité adaptative ajuste automatiquement votre quota d'automatisation pour répondre à vos besoins. Pour de plus amples informations, veuillez consulter [Permettre à Automation de s'adapter à vos besoins de simultanéité](adaptive-concurrency.md).

Pour garantir un accès approprié à AWS Systems Manager Automation, passez en revue les exigences relatives aux rôles d'utilisateur et de service suivantes.

## Vérification de l'accès utilisateur aux runbooks
<a name="automation-setup-user-access"></a>

Vérifiez que vous avez l'autorisation d'utiliser des runbooks. Si votre utilisateur, groupe ou rôle dispose des autorisations d'administrateur, vous avez accès à Systems Manager Automation. Si vous ne disposez pas des autorisations d'administrateur, un administrateur doit vous les donner en affectant la politique gérée `AmazonSSMFullAccess` ou une politique dotée d'autorisations de même type à votre utilisateur, groupe ou rôle.

**Important**  
La politique IAM `AmazonSSMFullAccess` octroie des autorisations pour les actions Systems Manager. Toutefois, certains runbooks nécessitent des autorisations pour d'autres services, tels que le runbook `AWS-ReleaseElasticIP`, qui nécessite des autorisations IAM pour `ec2:ReleaseAddress`. Par conséquent, vous devez passer en revue les actions effectuées dans un runbook pour vous assurer que votre utilisateur, groupe ou rôle dispose des autorisations nécessaires pour effectuer les actions incluses dans le runbook.

## Configuration d'un accès à un rôle de service (rôle de responsable) pour les automatisations
<a name="automation-setup-configure-role"></a>

Les automatisations peuvent être lancées dans le contexte d'un rôle de service (ou *rôle de responsable*). Cela permet au service d'effectuer des actions en votre nom. Si vous ne spécifiez pas de rôle de responsable, Automation utilise le contexte de l'utilisateur qui a appelé l'automatisation.

Cependant, les situations suivantes nécessitent que vous spécifiiez un rôle du service pour Automation :
+ Lorsque vous souhaitez restreindre les autorisations d'un utilisateur sur une ressource tout en souhaitant que l'utilisateur puisse exécuter une automatisation nécessitant des autorisations supérieurs. Dans ce scénario, vous pouvez créer un rôle de service avec des autorisations supérieures et autoriser l'utilisateur à exécuter l'automatisation.
+ Lorsque vous créez une association Systems Manager State Managerqui exécute un runbook.
+ Lorsque vous prévoyez que la durée d'exécution de certaines opérations dépasse 12 heures.
+ Lorsque vous exécutez un runbook n'appartenant pas à Amazon qui utilise l'`aws:executeScript`action pour appeler une opération d' AWS API ou pour agir sur une AWS ressource. Pour plus d'informations, consultez [Autorisations pour l'utilisation de runbooks](automation-document-script-considerations.md#script-permissions).

Si vous avez besoin de créer un rôle de service pour Automation, vous pouvez utiliser l'une des méthodes suivantes.

**Topics**
+ [Vérification de l'accès utilisateur aux runbooks](#automation-setup-user-access)
+ [Configuration d'un accès à un rôle de service (rôle de responsable) pour les automatisations](#automation-setup-configure-role)
+ [Créez des rôles de service pour l'automatisation en utilisant CloudFormation](automation-setup-cloudformation.md)
+ [Créer les rôles de service pour l’automatisation à l’aide de la console](automation-setup-iam.md)
+ [Exemples de configuration de politiques basées sur l'identité](automation-setup-identity-based-policies.md)
+ [Permettre à Automation de s'adapter à vos besoins de simultanéité](adaptive-concurrency.md)
+ [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md)
+ [Mise en place de restrictions des modifications dans Automation](automation-change-calendar-integration.md)

# Créez des rôles de service pour l'automatisation en utilisant CloudFormation
<a name="automation-setup-cloudformation"></a>

Vous pouvez créer un rôle de service pour Automation, un outil dans AWS Systems Manager, à partir d'un AWS CloudFormation modèle. Après avoir créé le rôle de service, vous pouvez spécifier le rôle de service dans les runbooks à l'aide du paramètre `AutomationAssumeRole`.

## Créez le rôle de service à l'aide de CloudFormation
<a name="create-iam-service-role"></a>

Utilisez la procédure suivante pour créer le rôle Gestion des identités et des accès AWS (IAM) requis pour Systems Manager Automation à l'aide CloudFormation de.

**Pour créer le rôle IAM requis**

1. Téléchargez et décompressez le fichier [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). Ce fichier inclut le fichier `AWS-SystemsManager-AutomationServiceRole.yaml` CloudFormation modèle.

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Sélectionnez **Create Stack** (Créer une pile).

1. Dans la section **Spécifier un modèle**, sélectionnez **Charger un modèle de fichier**.

1. Choisissez **Parcourir**, puis choisissez le fichier `AWS-SystemsManager-AutomationServiceRole.yaml` CloudFormation modèle.

1. Sélectionnez **Suivant**.

1. Dans la section **Spécifier les détails**, entrez un nom dans le champ **Nom de la pile**. 

1. Sur la page **Configurer les options de pile**, vous n'avez pas besoin d'effectuer de sélections. Choisissez **Suivant**.

1. Sur la page de **révision**, faites défiler la page vers le bas et choisissez l'option **Je reconnais que cela CloudFormation pourrait créer des ressources IAM**.

1. Choisissez **Créer**.

CloudFormation affiche l'état de **CREATE\$1IN\$1PROGRESS** pendant environ trois minutes. Le statut devient **CREATE\$1COMPLETE** une fois que la pile a été créée et que vos rôles sont prêts à être utilisés.

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

## Copier les informations de rôle pour Automation
<a name="copy-iam-role-info"></a>

Utilisez la procédure suivante pour copier les informations relatives au rôle de service d'automatisation depuis la CloudFormation console. Vous devez spécifier ces rôles lorsque vous utilisez un runbook.

**Note**  
Vous n'avez pas besoin de copier les informations du rôle en utilisant cette procédure si vous exécutez les runbooks `AWS-UpdateLinuxAmi` ou `AWS-UpdateWindowsAmi`. Ces runbooks possèdent déjà les rôles requis spécifiés comme valeurs par défaut. Ces rôles spécifiés dans ces runbooks utilisant des politiques gérées IAM. 

**Pour copier les noms de rôle**

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Sélectionnez le **Nom de la pile** d'automatisation que vous avez créé lors de la procédure précédente.

1. Sélectionnez l'onglet **Ressources**.

1. Choisissez le lien **Physical ID** pour **AutomationServiceRole**. La console IAM ouvre un récapitulatif du rôle de service Automation.

1. Copiez l'Amazon Resource Name (ARN) en regard de **l'ARN de rôle**. L'ARN est similaire à ce qui suit : `arn:aws:iam::12345678:role/AutomationServiceRole`

1. Collez l'ARN dans un fichier texte à utiliser ultérieurement.

La configuration du rôle de service pour Automation est terminée. Vous pouvez désormais utiliser l'ARN du rôle de service Automation dans vos runbooks.

# Créer les rôles de service pour l’automatisation à l’aide de la console
<a name="automation-setup-iam"></a>

Si vous devez créer un rôle de service pour Automation, un outil AWS Systems Manager, effectuez les tâches suivantes. Pour plus d'informations sur le moment où un rôle de service est requis pour Automation, consultez [Configuration d'Automation](automation-setup.md).

**Topics**
+ [Tâche 1 : Création d'un rôle de service pour Automation](#create-service-role)
+ [Tâche 2 : associer la PassRole politique iam : à votre rôle d'automatisation](#attach-passrole-policy)

## Tâche 1 : Création d'un rôle de service pour Automation
<a name="create-service-role"></a>

Utilisez la procédure suivante pour créer un rôle de service (ou *endosser un rôle*) pour Systems Manager Automation.

**Note**  
Vous pouvez également utiliser ce rôle dans des runbooks, notamment le runbook `AWS-CreateManagedLinuxInstance`. L'utilisation de ce rôle, ou de l'Amazon Resource Name (ARN) d'un rôle Gestion des identités et des accès AWS (IAM), dans les runbooks permet à Automation d'effectuer des actions dans votre environnement, telles que le lancement de nouvelles instances et des actions en votre nom.

**Pour créer un rôle IAM et autoriser Automation à l'endosser**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, sélectionnez **Rôles**, puis **Créer un rôle**.

1. Sous **Select type of trusted entity**, sélectionnez **AWS service**.

1. Dans la section **Choisir un cas d'utilisation** sélectionnez **Systems Manager**, puis sélectionnez **Suivant : Autorisations**.

1. Sur la page de **politique d'autorisation jointe**, recherchez la politique **Amazon SSMAutomation Role**, choisissez-la, puis choisissez **Next : Review**. 

1. Sur la page **Review (Vérification)**, saisissez un nom dans la zone **Role name (Nom du rôle)**, puis saisissez une description.

1. Sélectionnez **Créer un rôle**. Le système vous renvoie à la page **Rôles**.

1. Sur la page **Rôles**, sélectionnez le rôle que vous venez de créer pour ouvrir la page **Récapitulatif**. Notez le **Nom du rôle** et l'**ARN de rôle**. Vous spécifierez l'ARN du rôle lorsque vous associerez la PassRole politique **iam :** à votre compte IAM lors de la procédure suivante. Vous pouvez également spécifier le nom du rôle et l'ARN dans des runbooks.

**Note**  
La `AmazonSSMAutomationRole` politique attribue l'autorisation du rôle Automation à un sous-ensemble de AWS Lambda fonctions de votre compte. Ces fonctions commencent par « Automation ». Si vous avez l'intention d'utiliser Automation avec des fonctions Lambda, l'ARN Lambda doit utiliser le format suivant :  
`"arn:aws:lambda:*:*:function:Automation*"`  
**Si vous avez des fonctions Lambda existantes qui ARNs n'utilisent pas ce format, vous devez également associer une politique Lambda supplémentaire à votre rôle d'automatisation, telle que la politique de rôle. AWSLambda** La politique ou le rôle supplémentaire doit fournir un accès plus large aux fonctions Lambda au sein du Compte AWS.

Après avoir créé votre fonction du service, nous vous recommandons de modifier la politique d'approbation afin d'éviter le problème de député confus entre services. Le *problème de député confus* est un problème de sécurité dans lequel une entité qui n'est pas autorisée à effectuer une action peut contraindre une entité plus privilégiée à le faire. En AWS, l'usurpation d'identité interservices peut entraîner un problème de confusion chez les adjoints. L’usurpation d’identité entre services peut se produire lorsqu’un service (le *service appelant*) appelle un autre service (le *service appelé*). Le service appelant peut être manipulé et ses autorisations utilisées pour agir sur les ressources d’un autre client auxquelles on ne serait pas autorisé à accéder autrement. Pour éviter cela, AWS fournit des outils qui vous aident à protéger vos données pour tous les services auprès des principaux fournisseurs de services qui ont obtenu l'accès aux ressources de votre compte. 

Nous vous recommandons d'utiliser les clés de contexte de condition globale [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) et [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) dans les politiques de ressources pour limiter les autorisations à la ressource octroyées par Automation à un autre service. Si la valeur `aws:SourceArn` ne contient pas l'ID de compte, tel qu'un ARN de compartiment Amazon S3, vous devez utiliser les deux clés de contexte de condition globale pour limiter les autorisations. Si vous utilisez les deux clés de contexte de condition globale et que la valeur `aws:SourceArn` contient l'ID de compte, la valeur `aws:SourceAccount` et le compte dans la valeur `aws:SourceArn` doivent utiliser le même ID de compte lorsqu'ils sont utilisés dans la même instruction de politique. Utilisez `aws:SourceArn` si vous souhaitez qu'une seule ressource soit associée à l'accès entre services. Utilisez `aws:SourceAccount` si vous souhaitez autoriser l’association d’une ressource de ce compte à l’utilisation interservices. La valeur de `aws:SourceArn` doit être l'ARN pour les exécutions d'automatisation. Si vous ne connaissez pas l'ARN complet de la ressource ou si vous spécifiez plusieurs ressources, utilisez la clé de contexte de condition globale `aws:SourceArn` avec des caractères génériques (`*`) pour les parties inconnues de l'ARN. Par exemple, `arn:aws:ssm:*:123456789012:automation-execution/*`. 

L'exemple suivant montre comment utiliser les clés de contexte de condition globale `aws:SourceArn` et `aws:SourceAccount` pour Automation afin d'éviter le problème du député confus.

------
#### [ 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/*"
        }
      }
    }
  ]
}
```

------

**Pour modifier la politique d'approbation du rôle**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, sélectionnez **Rôles**.

1. Dans la liste des rôles de votre compte, sélectionnez le nom de votre rôle de service Automation.

1. Sélectionnez l'onglet **Relations d'approbation**, puis **Modifier la relation d'approbation**.

1. Modifiez la politique d'approbation à l'aide des clés de contexte de condition globale `aws:SourceArn` et `aws:SourceAccount` pour Automation afin d'éviter tout problème de député confus.

1. Pour enregistrer vos modifications, sélectionnez **Update Trust Policy** (Mettre à jour la politique d'approbation).

### (Facultatif) Ajoutez une politique d'automatisation en ligne ou une politique gérée par le client pour invoquer d'autres Services AWS
<a name="add-inline-policy"></a>

Si vous exécutez une automatisation qui Services AWS en appelle d'autres à l'aide d'un rôle de service 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 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`, pour n'en citer que quelques-unes, vous devez configurer le rôle de service avec l'autorisation d'appeler ces services. Vous pouvez accorder des autorisations à d'autres Services AWS personnes en ajoutant au rôle une politique en ligne IAM ou une politique gérée par le client. 

**Pour intégrer une politique en ligne à un rôle de service (console IAM)**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le panneau de navigation, sélectionnez **Rôles**.

1. Dans la liste, sélectionnez le nom du rôle que vous souhaitez modifier.

1. Sélectionnez l'onglet **Autorisations**.

1. Dans le menu déroulant **Ajouter des autorisations**, choisissez **Joindre des politiques** ou **Créer une politique en ligne**.

1. Si vous choisissez **Joindre des politiques**, cochez la case située à côté de la politique que vous souhaitez ajouter et choisissez **Ajouter des autorisations**.

1. Si vous choisissez **Créer une politique en ligne**, sélectionnez l'onglet **JSON**.

1. Entrez un document de politique JSON pour le que Services AWS vous souhaitez invoquer. Voici deux exemples de document de politique JSON.

   **Amazon S3 PutObject et GetObject exemple**

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

****  

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

------

   **Amazon EC2 et exemple CreateSnapshot DescribeSnapShots**

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

****  

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

------

   Pour obtenir des détails sur la terminologie IAM, veuillez consulter la [Référence de politique JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) dans le *Guide de l'utilisateur IAM*.

1. Lorsque vous avez terminé, sélectionnez **Review policy (Examiner une politique)**. Le programme de [validation de politique](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) signale les éventuelles erreurs de syntaxe.

1. Sur la page **Review policy (Examiner une politique)**, saisissez un **Name (Nom)** pour la politique que vous êtes en train de créer. Vérifiez le **récapitulatif** de politique pour voir les autorisations accordées par votre politique. Sélectionnez ensuite **Créer une politique** pour enregistrer votre travail.

1. Une fois que vous avez créé une politique en ligne, elle est automatiquement intégrée à votre rôle.

## Tâche 2 : associer la PassRole politique iam : à votre rôle d'automatisation
<a name="attach-passrole-policy"></a>

Utilisez la procédure suivante pour attacher la politique `iam:PassRole` à votre rôle de service Automation. Cela permet au service Automation de transmettre le rôle à d’autres services ou outils de Systems Manager lors de l’exécution d’automatisations.

**Pour associer la PassRole politique iam : à votre rôle d'automatisation**

1. Dans la page **Récapitulatif** du rôle que vous venez de créer, sélectionnez l'onglet **Autorisations**.

1. Sélectionnez **Ajouter une politique en ligne**.

1. Dans la page **Créer une politique**, sélectionnez l'onglet **Éditeur visuel**.

1. Sélectionnez **Service**, puis sélectionnez **IAM**.

1. Sélectionnez **Sélectionner des actions**.

1. Dans la zone de texte **Actions de filtrage****PassRole**, tapez, puis choisissez l'**PassRole**option.

1. Sélectionnez **Ressources**. Vérifiez que **Spécifique** est sélectionné, puis sélectionnez **Add ARN** (Ajouter l'ARN).

1. Dans le champ **Specify ARN for role (Spécifier l'ARN du rôle)**, collez l'ARN du rôle Automation que vous avez copié à la fin de la tâche 1. Le système remplit automatiquement les champs **Compte** et **Role name with path (Nom du rôle avec chemin d'accès)**.
**Note**  
Si vous souhaitez que le rôle de service Automation attache un rôle de profil d'instance IAM à une instance EC2, vous devez ajouter l'ARN du rôle de profil d'instance IAM. Cela permet au rôle de service Automation de transmettre le rôle de profil d'instance IAM à l'instance EC2 cible.

1. Choisissez **Ajouter**.

1. Sélectionnez **Review policy (Examiner une politique)**.

1. Sur la page **Review Policy** (Examiner une politique), saisissez un nom, puis sélectionnez **Create Policy (Créer une politique)**.

# Exemples de configuration de politiques basées sur l'identité
<a name="automation-setup-identity-based-policies"></a>

Les sections suivantes fournissent des exemples de politiques basées sur l'identité IAM pour AWS Systems Manager le service Automation. *Pour plus d'informations sur la création d'une politique basée sur l'identité IAM à l'aide de ces exemples de documents de politique JSON, consultez la section [Création de politiques IAM dans le guide de l'utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor).*

**Note**  
Tous les exemples contiennent un compte fictif. IDs L'ID de compte ne doit pas être spécifié dans le nom de ressource Amazon (ARN) pour les documents publics AWS détenus.

 **Exemples** 
+  [Exemple 1 : Autoriser un utilisateur à exécuter un document d'automatisation et à visualiser l'exécution de l'automatisation](#automation-setup-identity-based-policies-example-1) 
+  [Exemple 2 : Autoriser un utilisateur à exécuter une version spécifique d'un document d'automatisation](#automation-setup-identity-based-policies-example-2) 
+  [Exemple 3 : Autoriser un utilisateur à exécuter des documents d'automatisation avec une balise spécifique](#automation-setup-identity-based-policies-example-3) 
+  [Exemple 4 : Autoriser un utilisateur à exécuter un document d'automatisation lorsqu'un paramètre de balise spécifique est fourni pour l'exécution de l'automatisation](#automation-setup-identity-based-policies-example-4) 

## Exemple 1 : Autoriser un utilisateur à exécuter un document d'automatisation et à visualiser l'exécution de l'automatisation
<a name="automation-setup-identity-based-policies-example-1"></a>

L'exemple de politique IAM qui suit autorise un utilisateur à effectuer les opérations suivantes :
+ Exécutez le document d'automatisation spécifié dans la politique. Le nom du document est défini par l'entrée suivante.

  ```
  arn:aws:ssm:*:111122223333:document/{{DocumentName}}
  ```
+ Arrêtez et envoyez des signaux à une exécution automatisée.
+ Afficher les détails de l'exécution de l'automatisation une fois celle-ci démarrée.

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

------

## Exemple 2 : Autoriser un utilisateur à exécuter une version spécifique d'un document d'automatisation
<a name="automation-setup-identity-based-policies-example-2"></a>

L'exemple de politique IAM suivant permet à un utilisateur d'exécuter une version spécifique d'un document d'automatisation :
+ Le nom du document d'automatisation est déterminé par l'entrée suivante.

  ```
  arn:aws:ssm:*:111122223333:document/{{DocumentName}}
  ```
+ La version du document d'automatisation est déterminée par l'entrée suivante.

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

------

## Exemple 3 : Autoriser un utilisateur à exécuter des documents d'automatisation avec une balise spécifique
<a name="automation-setup-identity-based-policies-example-3"></a>

L'exemple de politique IAM suivant permet à un utilisateur d'exécuter n'importe quel document d'automatisation doté d'une balise spécifique :
+ Le nom du document d'automatisation est déterminé par l'entrée suivante.

  ```
  arn:aws:ssm:*:111122223333:document/{{DocumentName}}
  ```
+ La balise du document d'automatisation est déterminée par l'entrée suivante.

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

------

## Exemple 4 : Autoriser un utilisateur à exécuter un document d'automatisation lorsqu'un paramètre de balise spécifique est fourni pour l'exécution de l'automatisation
<a name="automation-setup-identity-based-policies-example-4"></a>

L'exemple de politique IAM suivant accorde à un utilisateur l'autorisation d'exécuter des documents d'automatisation lorsqu'un paramètre de balise spécifique est fourni pour l'exécution de l'automatisation :
+ Exécutez le document d'automatisation spécifié dans la politique. Le nom du document est défini par l'entrée suivante.

  ```
  arn:aws:ssm:*:111122223333:document/{{DocumentName}}
  ```
+ Doit fournir un paramètre de balise spécifique pour l'exécution de l'automatisation. Le paramètre de balise pour la ressource d'exécution de l'automatisation est déterminé par l'entrée suivante.

  ```
  "aws:ResourceTag/stage": "production"
  ```
+ Arrêtez et envoyez des signaux aux exécutions automatisées dotées de la balise spécifiée.
+ Afficher les détails des exécutions automatisées associées à la balise spécifiée.
+ Ajoutez le tag spécifié aux ressources 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/*"
            ]
        }
    ]
}
```

------

# Permettre à Automation de s'adapter à vos besoins de simultanéité
<a name="adaptive-concurrency"></a>

Par défaut, Automation vous permet d'exécuter jusqu'à 100 automatisations simultanées à la fois. Automation fournit également un paramètre facultatif que vous pouvez utiliser pour ajuster automatiquement votre quota d'automatisation de la simultanéité. Avec ce paramètre, votre quota d'automatisation de la simultanéité peut prendre en charge jusqu'à 500 automatisations simultanées, en fonction des ressources disponibles. 

**Note**  
Si votre automatisation appelle des opérations d'API, une mise à l'échelle adaptative à vos cibles peut entraîner des exceptions de limitation. Si des exceptions de limitation récurrentes se produisent lors de l'exécution d'automatisations alors que la simultanéité adaptative est activée, vous devrez peut-être demander des augmentations de quota pour l'opération d'API, si possible.

**Pour activer la simultanéité adaptative à l'aide du AWS Management Console**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Sélectionnez l'onglet **Préférences**, puis **Modifier**.

1. Cochez la case en regard de l'option **Enable adaptive concurrency** (Activer la simultanéité adaptative).

1. Choisissez **Enregistrer**.

**Pour activer la simultanéité adaptative à l’aide de la ligne de commande**
+ Ouvrez le AWS CLI ou les outils pour Windows PowerShell et exécutez la commande suivante pour activer la simultanéité adaptative pour votre compte dans la région requérante.

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

------

# Configuration des nouvelles tentatives automatiques pour les opérations limitées
<a name="automation-throttling-retry"></a>

Le nombre d’exécutions d’automatisation simultanées pour chaque compte est limité. Toute tentative d’exécution simultanée de plusieurs automatisations depuis un même compte peut entraîner des problèmes de limitation. Vous pouvez utiliser la fonctionnalité de limitation automatique des nouvelles tentatives pour configurer le comportement des nouvelles tentatives pour les étapes d’automatisation limitées.

La limitation automatique des nouvelles tentatives pour les actions d’automatisation fournit un environnement d’exécution plus résilient pour les opérations à grande échelle. La fonctionnalité de limitation des nouvelles tentatives prend en charge toutes les [actions d’automatisation](automation-actions.md), à l’exception de `aws:executeScript`.

Le paramètre de limitation des nouvelles tentatives fonctionne en complément de la propriété d’étape `maxAttempts` existante. Lorsque les deux sont configurés, le système tente d’abord de limiter les nouvelles tentatives dans le délai spécifié, puis applique le paramètre `maxAttempts` si l’étape échoue toujours.

**Pour configurer la régulation, réessayez à l'aide du AWS Management Console**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Sélectionnez l'onglet **Préférences**, puis **Modifier**.

1. Dans le champ **Limite de limitation des nouvelles tentatives**, entrez une valeur comprise entre 0 et 3600 secondes. Cela indique la durée maximale pendant laquelle le système effectue des nouvelles tentatives pour une étape limitée.

1. Choisissez **Enregistrer**.

**Configurer la limitation des nouvelles tentatives à l’aide de la ligne de commande**
+ Ouvrez le AWS CLI ou les outils pour Windows PowerShell et exécutez la commande suivante pour configurer la limitation des nouvelles tentatives pour votre compte dans la région requérante.

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

------

# Mise en place de restrictions des modifications dans Automation
<a name="automation-change-calendar-integration"></a>

Par défaut, Automation vous permet d'utiliser des runbooks sans contraintes de date ni d'heure. En intégrant Automation àChange Calendar, vous pouvez implémenter des contrôles de modification pour toutes les automatisations de votre Compte AWS. Avec ce paramètre, les principaux Gestion des identités et des accès AWS  (IAM) de votre compte ne peuvent exécuter des automatisations que durant les périodes autorisées par votre calendrier des modifications. Pour plus d'informations sur l'utilisation avec Change Calendar, consultez [Utilisation de l’option Change Calendar](systems-manager-change-calendar-working.md).

**Pour activer les commandes de modification (console), procédez comme suit :**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Sélectionnez l'onglet **Préférences**, puis **Modifier**.

1. Cochez la case située à côté de l'option **Activer l'intégration de Change Calendar**.

1. Dans la liste déroulante **Choisir un calendrier des modifications**, choisissez le calendrier des modifications que vous souhaitez qu'Automation suive.

1. Choisissez **Enregistrer**.

# Exécuter une opération automatisée grâce à Systems Manager Automation
<a name="running-simple-automations"></a>

Lorsque vous exécutez une automatisation, celle-ci est exécutée par défaut dans le cas de l'utilisateur qui a lancé l'exécution. Cela signifie, par exemple, que si votre utilisateur dispose d'autorisations d'administration, l'automatisation est exécutée avec les autorisations d'administrateur et un accès total aux ressources configurées par l'automatisation. Pour des raisons de sécurité, nous vous recommandons d'exécuter l'automatisation en utilisant un rôle de service IAM, connu dans ce cas sous le nom de rôle d'*assumer*, configuré avec la politique gérée Amazon SSMAutomation Role. Afin d'utiliser différents runbooks, vous devrez peut-être ajouter des politiques IAM supplémentaires à votre rôle d'utilisateur. L'utilisation d'un rôle de service IAM pour exécuter une automatisation est nommée *administration déléguée*.

Lorsque vous utilisez un rôle de service, l'automatisation peut être exécuté sur les ressources AWS , mais l'utilisateur qui a exécuté l'automatisation dispose d'un accès restreint (ou nul) à ces ressources. Par exemple, vous pouvez configurer un rôle de service et l'utiliser avec Automation afin de redémarrer une ou plusieurs instances Amazon Elastic Compute Cloud (Amazon EC2). Automation est un outil de AWS Systems Manager. L'automatisation redémarre les instances, mais le rôle de service n'autorise pas l'utilisateur à accéder à ces instances.

Vous pouvez spécifier un rôle de service lorsque vous exécutez une automatisation, ou vous pouvez créer des runbooks personnalisés et spécifier le rôle de service directement dans le runbook. Si vous spécifiez un rôle de service au moment de l'exécution ou dans un runbook, le service est alors exécuté dans le contexte du rôle de service spécifié. Si vous ne spécifiez aucun rôle de service, le système crée une session temporaire dans le contexte de l'utilisateur et exécute l'automatisation.

**Note**  
Vous devez spécifier un rôle de service pour l'automatisation qui sera probablement exécutée pendant plus de 12 heures. Si vous lancez une exécution d'automatisation de longue durée dans le contexte d'un utilisateur, la session temporaire de ce dernier expire après 12 heures.

L'administration déléguée garantit un niveau de sécurité élevé et le contrôle de vos ressources AWS . Il permet également une expérience d'audit améliorée parce que des actions sont effectuées par rapport à vos ressources par un rôle de service central au lieu de plusieurs comptes IAM.

**Avant de commencer**  
Avant d'effectuer les procédures suivantes, vous devez créer le rôle de service IAM et configurer une relation de confiance pour Automation, un outil dans AWS Systems Manager. Pour de plus amples informations, veuillez consulter [Tâche 1 : Création d'un rôle de service pour Automation](automation-setup-iam.md#create-service-role).

La procédure suivante décrit la méthode d'utilisation de la console Systems Manager afin d'exécuter une simple automatisation.

## Exécution d'une automatisation simple (console)
<a name="simple-console"></a>

La procédure suivante décrit comment utiliser la console Systems Manager pour exécuter une simple automatisation.

**Pour exécuter une automatisation simple**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Automation** (Automatisation), puis **Execute automation** (Exécuter l'automatisation).

1. Dans la liste **Automation document** (Document Automation), sélectionnez un runbook. Sélectionnez une ou plusieurs options dans le panneau **Document categories (Catégories de documents)** pour filtrer les documents SSM en fonction de leur but. Pour afficher un runbook vous appartenant, sélectionnez l'onglet **Owned by me (M'appartenant)**. Pour afficher un runbook partagé avec votre compte, sélectionnez l'onglet **Shared with me (Partagé avec moi)**. Pour afficher tous les runbooks, sélectionnez l'onglet **All documents (Tous les documents)**.
**Note**  
Vous pouvez consulter les informations sur un runbook en sélectionnant son nom.

1. Dans la section **Document details (Détails du document)**, vérifiez que l'option **Document version (Version de document)** correspond à la version que vous souhaitez exécuter. Le système inclut les options de version suivantes : 
   + **Version par défaut lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et qu’une nouvelle version par défaut est attribuée.
   + **Dernière version lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et que vous souhaitez exécuter la dernière version mise à jour.
   + **1 (Par défaut)** : sélectionnez cette option pour exécuter la première version du document, qui est la version par défaut.

1. Choisissez **Suivant**.

1. Dans la section **Execution Mode (Mode d'exécution)**, sélectionnez **Simple execution (Exécution simple)**.

1. Dans la section **Input parameters (Paramètres d'entrée)**, spécifiez les entrées obligatoires. Vous pouvez éventuellement choisir un rôle de service IAM dans la **AutomationAssumeRole**liste.

1. (Facultatif) Choisissez une CloudWatch alarme à appliquer à votre automatisation à des fins de surveillance. Pour associer une CloudWatch alarme à votre automatisation, le principal IAM qui lance l'automatisation doit être autorisé à effectuer l'`iam:createServiceLinkedRole`action. Pour plus d'informations sur les CloudWatch alarmes, consultez la section [Utilisation des CloudWatch alarmes Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html). Notez que l'activation de votre alarme arrête l'automatisation. Si vous l'utilisez AWS CloudTrail, vous verrez l'appel d'API dans votre historique. 

1. Sélectionnez **Execute (Exécuter)**. 

La console affiche le statut de l'automatisation. Si l'exécution de l'automatisation échoue, consultez [Résolution des problèmes liés à Systems Manager Automation](automation-troubleshooting.md).

Une fois l’exécution d’automatisation terminée, vous pouvez la réexécuter avec des paramètres identiques ou modifiés. Pour de plus amples informations, veuillez consulter [Réexécution d’exécutions d’automatisation](automation-rerun-executions.md).

## Exécution d'une automatisation simple (ligne de commande)
<a name="simple-cli"></a>

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ou Windows) ou Outils AWS pour PowerShell comment exécuter une automatisation simple.

**Pour exécuter une automatisation simple**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Exécutez la commande suivante pour démarrer une automatisation simple. Remplacez chaque *example resource placeholder* par vos propres informations.

------
#### [ 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
   ```

------

   Voici un exemple d'utilisation du runbook `AWS-RestartEC2Instance` pour redémarrer l'instance EC2 spécifiée.

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

------

   Le système retourne des informations telles que les suivantes.

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

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

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

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

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

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

------

1. Exécutez la commande suivante pour récupérer le statut de l'automatisation.

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

------

   Le système retourne des informations telles que les suivantes.

------
#### [ 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                     : {}
   ```

------

# Réexécution d’exécutions d’automatisation
<a name="automation-rerun-executions"></a>

Vous pouvez réexécuter des exécutions AWS Systems Manager automatisées pour répéter des tâches avec des paramètres identiques ou modifiés. La fonctionnalité de réexécution vous permet de répliquer efficacement les exécutions d’automatisation sans recréer manuellement les configurations d’automatisation, ce qui réduit les frais opérationnels et les erreurs de configuration potentielles.

Lorsque vous réexécutez une exécution automatique, Systems Manager conserve les paramètres d'exécution d'origine, les CloudWatch alarmes Amazon et les balises de l'exécution précédente. Le système crée une nouvelle exécution avec un nouvel identifiant d’exécution et des horodatages mis à jour. Vous pouvez réexécuter n’importe quel type d’exécution d’automatisation, y compris les exécutions simples, les exécutions de contrôle de débit, les exécutions inter-comptes et inter-régions et les exécutions manuelles.

## Réexécuter une exécution d’automatisation (console)
<a name="rerun-console"></a>

La procédure suivante décrit comment utiliser la console Systems Manager pour réexécuter une automatisation.

**Réexécuter une exécution d’automatisation depuis la page d’accueil de l’automatisation**

Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Dans la liste des exécutions, sélectionnez l’exécution que vous souhaitez exécuter de nouveau.

1. Choisissez **Réexécuter l’exécution**.

1. Sur la page du **Exécuter le document d’automatisation**, passez en revue les paramètres prédéfinis, le mode d’exécution et la configuration cible depuis l’exécution initiale.

1. (Facultatif) Modifiez les paramètres, les cibles ou paramètres nécessaires pour votre réexécution.

1. Choisissez **Exécuter** pour démarrer la réexécution avec un nouvel ID d’exécution.

**Réexécuter une exécution d’automatisation depuis la page des détails de l’exécution**

Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Choisissez l’ID d’exécution de l’automatisation que vous souhaitez exécuter de nouveau.

1. Sur la page des détails de l’exécution, choisissez **Réexécuter l’exécution**.

1. Sur la page du **Exécuter le document d’automatisation**, passez en revue les paramètres prédéfinis, le mode d’exécution et la configuration cible depuis l’exécution initiale.

1. (Facultatif) Modifiez les paramètres, les cibles ou paramètres nécessaires pour votre réexécution.

1. Choisissez **Exécuter** pour démarrer la réexécution avec un nouvel ID d’exécution.

**Copier une exécution d’automatisation vers une nouvelle exécution**

Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Choisissez l’ID d’exécution de l’automatisation que vous souhaitez copier.

1. Sur la page des détails de l’exécution, choisissez **Actions**, puis **Copier vers une nouvelle**.

1. Sur la page du **Exécuter le document d’automatisation**, passez en revue les paramètres prédéfinis, le mode d’exécution et la configuration cible depuis l’exécution initiale.

1. (Facultatif) Modifiez les paramètres, les cibles ou paramètres nécessaires pour votre nouvelle exécution.

1. Sélectionnez **Exécuter** pour lancer la nouvelle exécution.

# Exécuter une automatisation qui nécessite des approbations
<a name="running-automations-require-approvals"></a>

Les procédures suivantes décrivent comment utiliser la AWS Systems Manager console et AWS Command Line Interface (AWS CLI) pour exécuter une automatisation avec des approbations en utilisant une exécution simple. L'automatisation utilise l'action Automation `aws:approve`, qui interrompt temporairement l'automatisation jusqu'à ce que les principaux désignés approuvent ou refusent l'action. Le flux de travail Automation s'exécute dans le contexte de l'utilisateur actuel. Cela signifie que vous n'avez pas besoin de configurer d'autorisations IAM supplémentaires tant que vous avez le droit d'utiliser le runbook et les actions qu'il appelle. Si vous disposez des autorisations d'administrateur dans IAM, vous pouvez exécuter ce runbook.

**Avant de commencer**  
En plus des entrées standard requises par le runbook, l'action `aws:approve` nécessite les deux paramètres suivants : 
+ Une liste d'approbateurs. La liste des approbateurs doit contenir au moins un approbateur sous la forme d'un nom d'utilisateur ou d'un ARN d'utilisateur. Si plusieurs approbateurs sont fournis, un nombre minimum d'approbations correspondant doit également être spécifié dans le runbook. 
+ ARN de rubrique Amazon Simple Notification Service (Amazon SNS). Le nom de la rubrique Amazon SNS doit commencer par `Automation`.

Cette procédure suppose que vous ayez déjà créé une rubrique Amazon SNS, ce qui est nécessaire pour diffuser la demande d'approbation. Pour plus d'informations, consultez [Créer une rubrique](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html#CreateTopic) dans le *Guide du développeur d'Amazon Simple Notification Service*.

## Exécution d'une automatisation avec des approbateurs (console)
<a name="approval-console"></a>

**Pour exécuter une automatisation avec des approbateurs**

La procédure suivante décrit comment utiliser la console Systems Manager pour exécuter une simple automatisation avec des approbateurs.

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Automation** (Automatisation), puis **Execute automation** (Exécuter l'automatisation).

1. Dans la liste **Automation document** (Document Automation), sélectionnez un runbook. Sélectionnez une ou plusieurs options dans le panneau **Document categories (Catégories de documents)** pour filtrer les documents SSM en fonction de leur but. Pour afficher un runbook vous appartenant, sélectionnez l'onglet **Owned by me (M'appartenant)**. Pour afficher un runbook partagé avec votre compte, sélectionnez l'onglet **Shared with me (Partagé avec moi)**. Pour afficher tous les runbooks, sélectionnez l'onglet **All documents (Tous les documents)**.
**Note**  
Vous pouvez consulter les informations sur un runbook en sélectionnant son nom.

1. Dans la section **Document details (Détails du document)**, vérifiez que l'option **Document version (Version de document)** correspond à la version que vous souhaitez exécuter. Le système inclut les options de version suivantes : 
   + **Version par défaut lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et qu’une nouvelle version par défaut est attribuée.
   + **Dernière version lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et que vous souhaitez exécuter la dernière version mise à jour.
   + **1 (Par défaut)** : sélectionnez cette option pour exécuter la première version du document, qui est la version par défaut.

1. Choisissez **Suivant**.

1. Sur la page **Execute automation document (Exécuter le document Automation)**, sélectionnez **Simple execution (Exécution simple)**.

1. Dans la section **Paramètres d'entrée**, spécifiez les paramètres d'entrée obligatoires.

   Par exemple, si vous avez choisi le `AWS-StartEC2InstanceWithApproval` runbook, vous devez spécifier ou choisir une instance IDs pour le **InstanceId**paramètre. 

1. Dans la section **Approbateurs**, spécifiez les noms d'utilisateur ou les utilisateurs ARNs des approbateurs pour l'action d'automatisation.

1. Dans la section **SNSTopicARN**, spécifiez l'ARN de la rubrique SNS à utiliser pour envoyer une notification d'approbation. Le nom de la rubrique SNS doit commencer par **Automation**.

1. Vous pouvez éventuellement choisir un rôle de service IAM dans la **AutomationAssumeRole**liste. Si vous ciblez plus de 100 comptes et régions, vous devez spécifier le `AWS-SystemsManager-AutomationAdministrationRole`.

1. Sélectionnez **Execute automation (Exécuter l'automatisation)**. 

L'approbateur spécifié reçoit une notification Amazon SNS avec des détails pour approuver ou rejeter l'automatisation. Cette action d'approbation est valide pendant 7 jours à compter de la date d'émission et peut être émise à l'aide de la console Systems Manager ou du AWS Command Line Interface (AWS CLI).

Si vous choisissez d'approuver l'automatisation, l'automatisation continue d'exécuter les étapes incluses dans le runbook spécifié. La console affiche le statut de l'automatisation. Si l'exécution de l'automatisation échoue, consultez [Résolution des problèmes liés à Systems Manager Automation](automation-troubleshooting.md).

**Pour approuver ou rejeter une automatisation**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Automation**, puis sélectionnez l'automatisation qui a été exécuté au cours de la procédure précédente.

1. Sélectionnez **Actions** puis **Approve/Deny (Approuver/Refuser)**.

1. Sélectionnez d'**Approuver** ou de **Refuser** et, le cas échéant, saisissez un commentaire.

1. Sélectionnez **Submit (Envoyer)**.

## Exécution d'une automatisation avec des approbateurs (ligne de commande)
<a name="approval-cli"></a>

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ou Windows) ou comment Outils AWS pour PowerShell exécuter une automatisation avec des approbateurs.

**Pour exécuter une automatisation avec des approbateurs**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Exécutez la commande suivante pour lancer une automatisation avec des approbateurs. Remplacez chaque *example resource placeholder* par vos propres informations. Dans la section Document name (Nom du document), spécifiez un runbook qui inclut l'action Automation, `aws:approve`.

   Pour`Approvers`, spécifiez les noms d'utilisateur ou les utilisateurs ARNs des approbateurs pour l'action. Pour `SNSTopic`, spécifiez l'ARN de la rubrique SNS à utiliser pour envoyer la notification d'approbation. Le nom de la rubrique Amazon SNS doit commencer par `Automation`.
**Note**  
Le nom exact des valeurs de paramètres pour les approbateurs et la rubrique SNS dépendent des valeurs spécifiées dans le runbook que vous sélectionnez. 

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

------

   Le système retourne des informations telles que les suivantes.

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

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

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

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

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

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

------

**Pour approuver une automatisation**
+ Exécutez la commande suivante pour approuver une automatisation. Remplacez chaque *example resource placeholder* par vos propres informations.

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

------

  Il n'y a pas de sortie si la commande réussit.

**Pour refuser une automatisation**
+ Exécutez la commande suivante pour refuser une automatisation. Remplacez chaque *example resource placeholder* par vos propres informations.

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

------

  Il n'y a pas de sortie si la commande réussit.

# Exécuter des opérations automatisées à grande échelle
<a name="running-automations-scale"></a>

Avec AWS Systems Manager Automation, vous pouvez exécuter des automatisations sur un parc de AWS ressources en utilisant des *cibles*. De plus, vous pouvez contrôler le déploiement de l'automatisation dans l'ensemble de la flotte en spécifiant une valeur de simultanéité et un seuil d'erreurs. Les fonctions de simultanéité et de seuil d'erreurs sont appelées collectivement *contrôles du débit*. La valeur de simultanéité détermine le nombre de ressources autorisées à exécuter l'automatisation simultanément. Automation fournit également un mode de simultanéité adaptative auquel vous pouvez vous inscrire. La simultanéité adaptative met automatiquement à l'échelle votre quota d'automatisation en passant de 100 automatisations exécutées simultanément à 500. Le seuil d'erreurs détermine le nombre d'automatisations qui peuvent échouer jusqu'à ce que Systems Manager cesse d'envoyer l'automatisation à d'autres ressources.

Pour de plus amples informations sur la simultanéité et les seuils d'erreurs, consultez [Automatisations de contrôle à grande échelle](running-automations-scale-controls.md). Pour de plus amples informations sur les cibles, consultez [Mappage des cibles pour une automatisation](running-automations-map-targets.md).

Les procédures suivantes décrivent comment activer la simultanéité adaptative et exécuter une automatisation avec des cibles et des contrôles de taux à l'aide de la console Systems Manager et l' AWS Command Line Interface (AWS CLI).

## Exécution d'une automatisation avec des cibles et des contrôles du débit (console)
<a name="scale-console"></a>

La procédure suivante décrit comment utiliser la console Systems Manager pour exécuter une automatisation avec des cibles et des contrôles du débit.

**Pour exécuter une automatisation avec des cibles et des contrôles du débit**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Automation** (Automatisation), puis **Execute automation** (Exécuter l'automatisation).

1. Dans la liste **Automation document** (Document Automation), sélectionnez un runbook. Sélectionnez une ou plusieurs options dans le panneau **Document categories (Catégories de documents)** pour filtrer les documents SSM en fonction de leur but. Pour afficher un runbook vous appartenant, sélectionnez l'onglet **Owned by me (M'appartenant)**. Pour afficher un runbook partagé avec votre compte, sélectionnez l'onglet **Shared with me (Partagé avec moi)**. Pour afficher tous les runbooks, sélectionnez l'onglet **All documents (Tous les documents)**.
**Note**  
Vous pouvez consulter les informations sur un runbook en sélectionnant son nom.

1. Dans la section **Document details (Détails du document)**, vérifiez que l'option **Document version (Version de document)** correspond à la version que vous souhaitez exécuter. Le système inclut les options de version suivantes : 
   + **Version par défaut lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et qu’une nouvelle version par défaut est attribuée.
   + **Dernière version lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et que vous souhaitez exécuter la dernière version mise à jour.
   + **1 (Par défaut)** : sélectionnez cette option pour exécuter la première version du document, qui est la version par défaut.

1. Choisissez **Suivant**.

1. Dans la section **Execution Mode (Mode d'exécution)**, sélectionnez **Rate Control (Contrôle du débit)**. Vous devez utiliser ce mode ou **Multi-account and Region (Compte et région multiples)** si vous souhaitez utiliser des cibles et des contrôles du débit.

1. Dans la section **Targets** (Cibles), sélectionnez la façon dont vous souhaitez cibler les ressources AWS où vous souhaitez exécuter l'automatisation. Ces options sont obligatoires.

   1. Utilisez la liste **Parameter (Paramètre)** pour choisir un paramètre. Les éléments de la liste **Parameter (Paramètre)** sont déterminés par les paramètres du runbook Automation que vous avez sélectionnés au début de cette procédure. En choisissant un paramètre, vous définissez le type de ressource sur lequel le flux de travail d'automatisation s'exécutera. 

   1. Utilisez la liste **Targets (Cibles)** pour choisir la façon dont vous souhaitez cibler les ressources.

      1. Si vous choisissez de cibler des ressources à l'aide de valeurs de paramètre, saisissez la valeur de paramètre du paramètre que vous avez choisi, dans la section **Input parameters (Paramètres d'entrée)**.

      1. Si vous avez choisi de cibler les ressources à l'aide de Groupes de ressources AWS, choisissez le nom du groupe dans la liste des **groupes de ressources**.

      1. Si vous choisissez de cibler des ressources à l'aide de balises, entrez la clé de balise et (éventuellement) la valeur de balise dans les champs fournis. Choisissez **Ajouter**.

      1. Si vous souhaitez exécuter un runbook d'automatisation sur toutes les instances de la version actuelle Compte AWS Région AWS, sélectionnez **Toutes les instances**.

1. Dans la section **Input parameters (Paramètres d'entrée)**, spécifiez les entrées obligatoires. Vous pouvez éventuellement choisir un rôle de service IAM dans la **AutomationAssumeRole**liste.
**Note**  
Vous pourriez ne pas avoir besoin de choisir certaines options dans la section **Paramètres d'entrée**. Cela est dû au fait que vous avez ciblé des ressources à l'aide de balises ou d'un groupe de ressources. Par exemple, si vous avez choisi le `AWS-RestartEC2Instance` runbook, vous n'avez pas besoin de spécifier ou de choisir une instance IDs dans la section **Paramètres d'entrée**. L'exécution d'Automation localise les instances à redémarrer en utilisant les balises ou le groupe de ressources que vous avez spécifiés.

1. Utilisez les options de la section **Contrôle du débit** pour limiter le nombre de AWS ressources pouvant exécuter l'automatisation au sein de chaque paire compte-région. 

   Dans la section **Simultanéité**, sélectionnez une option : 
   + Sélectionnez **targets (cibles)** pour entrer un nombre absolu de cibles pouvant exécuter le flux de travail Automation simultanément.
   + Sélectionnez **percentage (pourcentage)** pour indiquer un pourcentage de l'ensemble de cibles pouvant exécuter le flux de travail Automation simultanément.

1. Dans la section **Error threshold (Seuil d'erreurs)**, sélectionnez une option :
   + Sélectionnez **erreurs** pour indiquer un nombre absolu d'erreurs autorisées avant qu'Automation ne cesse d'envoyer le flux de travail à d'autres ressources.
   + Sélectionnez **pourcentage** pour indiquer un pourcentage d'erreurs autorisées avant qu'Automation ne cesse d'envoyer le flux de travail à d'autres ressources.

1. (Facultatif) Choisissez une CloudWatch alarme à appliquer à votre automatisation à des fins de surveillance. Pour associer une CloudWatch alarme à votre automatisation, le principal IAM qui lance l'automatisation doit être autorisé à effectuer l'`iam:createServiceLinkedRole`action. Pour plus d'informations sur les CloudWatch alarmes, consultez la section [Utilisation des CloudWatch alarmes Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html). Notez que l'activation de votre alarme arrête l'automatisation. Si vous l'utilisez AWS CloudTrail, vous verrez l'appel d'API dans votre historique.

1. Sélectionnez **Execute (Exécuter)**. 

Pour afficher les automatisations démarrées par votre automatisation du contrôle de débit, dans le panneau de navigation, sélectionnez Automation (Automatisation), puis **Show child automations (Afficher les automatisations enfants)**.

Une fois l’exécution d’automatisation terminée, vous pouvez la réexécuter avec des paramètres identiques ou modifiés. Pour de plus amples informations, veuillez consulter [Réexécution d’exécutions d’automatisation](automation-rerun-executions.md).

## Exécution d'une automatisation avec des cibles et des contrôles du débit (ligne de commande)
<a name="scale-cli"></a>

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ou Windows) ou comment Outils AWS pour PowerShell exécuter une automatisation avec des cibles et des contrôles de débit.

**Pour exécuter une automatisation avec des cibles et des contrôles du débit**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Exécutez la commande suivante pour afficher une liste de documents.

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

   ```
   aws ssm list-documents
   ```

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

   ```
   aws ssm list-documents
   ```

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

   ```
   Get-SSMDocumentList
   ```

------

   Notez le nom du runbook à utiliser.

1. Exécutez la commande suivante pour afficher les détails relatifs au runbook. Remplacez le *runbook name* par le nom du runbook dont vous souhaitez consulter les détails. Notez un nom de paramètre (par exemple, `InstanceId`) que vous souhaitez utiliser pour l'option `--target-parameter-name`. Ce paramètre détermine le type de ressource sur lequel l'automatisation s'exécute.

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

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

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

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

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

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

------

1. Créez une commande qui utilise les options de cibles et de contrôle du débit que vous souhaitez exécuter. Remplacez chaque *example resource placeholder* par vos propres informations.

   *Ciblage à l'aide de balises*

------
#### [ 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%"
   ```

------

   *Ciblage à l'aide des valeurs de paramètre*

------
#### [ 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%"
   ```

------

   *Ciblage à l'aide Groupes de ressources AWS*

------
#### [ 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%"
   ```

------

   *Cibler toutes les instances Amazon EC2 dans les versions actuelles et Compte AWS Région 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%"
   ```

------

   La commande renvoie un ID d'exécution. Copiez cet ID dans le Presse-papiers. Vous pouvez utiliser cet ID pour afficher l'état de l'automatisation.

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

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

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

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

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

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

------

1. Pour afficher l'automatisation, exécutez la commande suivante. Remplacez chaque *automation execution ID* par vos propres informations.

------
#### [ 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. Pour afficher les détails de la progression de l'automatisation, exécutez la commande suivante. Remplacez chaque *automation execution ID* par vos propres informations.

------
#### [ 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
   ```

------

   Le système retourne des informations telles que les suivantes.

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

------
**Note**  
Vous pouvez aussi surveiller le statut de l'automatisation dans la console. Dans la liste **Automation executions (Exécutions Automation)**, sélectionnez l'exécution que vous venez juste d'exécuter, puis sélectionnez l'onglet **Execution Steps (Étapes d'exécution)**. Cet onglet affiche le statut des actions de l'automatisation.

# Mappage des cibles pour une automatisation
<a name="running-automations-map-targets"></a>

Utilisez le paramètre `Targets` afin de définir rapidement quelles ressources de votre flotte peuvent exécuter une automatisation. Par exemple, si vous souhaitez exécuter une automatisation qui redémarre vos instances gérées, au lieu de choisir manuellement des dizaines d'ID d'instance dans la console ou de les saisir dans une commande, vous pouvez cibler ces instances en spécifiant des balises Amazon Elastic Compute Cloud (Amazon EC2) avec le paramètre `Targets`.

Lorsque vous exécutez une automatisation qui utilise une cible, AWS Systems Manager crée une automatisation auxiliaire pour chaque cible. Par exemple, si vous ciblez les volumes Amazon Elastic Block Store (Amazon EBS) en spécifiant des balises, et que ces balises se résolvent en 100 volumes Amazon EBS, puis Systems Manager crée 100 automatisations enfants. L'automatisation parent est terminée lorsque toutes les automatisations enfants atteignent un état final.

**Note**  
Toutes les valeurs `input parameters` que vous spécifiez au moment de l'exécution (dans la section **Input Parameters (Paramètres d'entrée)** de la console ou à l'aide de l'option `parameters` de l'interface de ligne de commande) sont automatiquement traitées par toutes les automatisations.

Pour cibler des ressources pour une automatisation, vous pouvez utiliser des balises, des groupes de ressources et des valeurs des paramètres. De plus, vous pouvez utiliser l'option `TargetMaps` pour cibler plusieurs valeurs de paramètre à l'aide de l'interface de ligne de commande ou d'un fichier. La section suivante décrit chacune de ces options de ciblage en détail.

## Ciblage d'une balise
<a name="target-tags"></a>

Vous pouvez spécifier une seule balise comme cible d'une automatisation. De nombreuses ressources AWS prennent en charge les balises, par exemple les instances Amazon Elastic Compute Cloud (Amazon EC2) et Amazon Relational Database Service (Amazon RDS), les volumes et instantanés Amazon Elastic Block Store (Amazon EBS), les Resource Groups et les compartiments Amazon Simple Storage Service (Amazon S3). Vous pouvez automatiser rapidement vos AWS ressources en ciblant un tag. Une balise est une paire clé-valeur, telle que Operating\$1System:Linux (Système\$1Exploitation:Linux) ou Department:Finance (Service:Finances). Si vous affectez un nom spécifique à une ressource, vous pouvez également utiliser le mot « Nom » en tant que clé et le nom de la ressource comme valeur.

Lorsque vous spécifiez une balise en tant que cible d'une automatisation, vous pouvez également spécifier un paramètre cible. Le paramètre cible utilise l'option `TargetParameterName`. En choisissant un paramètre cible, vous définissez le type de ressource sur lequel automatisation s'exécute. Le paramètre cible que vous spécifiez avec la balise doit être un paramètre valide défini dans le runbook. Par exemple, si vous souhaitez cibler des dizaines d'instances EC2 avec des balises, sélectionnez le paramètre cible `InstanceId`. En choisissant ce paramètre, vous définissez les *instances* comme type de ressource pour l'automatisation. Lors de la création d'un runbook personnalisé, vous devez définir le **type de cible** sur `/AWS::EC2::Instance`, de sorte que seules les instances soient utilisées. Dans le cas contraire, toutes les ressources portant la même balise seront ciblées. Lorsque vous ciblez des instances avec une balise, les instances résiliées peuvent être incluses.

La capture d'écran suivante utilise le runnbook `AWS-DetachEBSVolume`. Le paramètre cible logique est `VolumeId`.

![\[Utilisation d'une balise comme cibles pour une automatisation de Systems Manager\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/automation-rate-control-tags-1-new.png)


Le runbook `AWS-DetachEBSVolume` inclut également une propriété spéciale appelée **Target type (Type de cible)**, qui est définie sur `/AWS::EC2::Volume`. En d'autres termes, si la paire balise-clé `Finance:TestEnv` renvoie différents types de ressources (par exemple, des instances EC2, des volumes Amazon EBS, des instantanés Amazon EBS), seuls les volumes Amazon EBS sont utilisés.

**Important**  
Les noms de paramètre cible sont sensibles à la casse. Si vous exécutez des automatisations en utilisant le AWS Command Line Interface (AWS CLI) ou AWS Tools for Windows PowerShell, vous devez saisir le nom du paramètre cible exactement tel qu'il est défini dans le runbook. Dans le cas contraire, le système renvoie une erreur `InvalidAutomationExecutionParametersException`. Vous pouvez utiliser l'opération [DescribeDocument](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeDocument.html)API pour consulter des informations sur les paramètres cibles disponibles dans un runbook spécifique. Voici un exemple de commande AWS CLI qui fournit des informations sur le document `AWS-DeleteSnapshot`.  

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

Voici quelques exemples de AWS CLI commandes qui ciblent les ressources à l'aide d'une balise.

**Exemple 1 : ciblage d'une balise à l'aide d'une paire clé-valeur pour redémarrer les instances Amazon EC2**

Cet exemple redémarre toutes les instances Amazon EC2 étiquetées avec la clé Department et *la valeur de*. *HumanResources* Le paramètre cible utilise le *InstanceId*paramètre du runbook. L'exemple utilise un paramètre supplémentaire pour exécuter Automation à l'aide d'un rôle de service Automation (également appelé *rôle responsable*).

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

**Exemple 2 : ciblage d'une balise à l'aide d'une paire clé-valeur pour supprimer les instantanés Amazon EBS**

L'exemple suivant utilise le runbook `AWS-DeleteSnapshot` pour supprimer tous les instantanés avec la clé *Name (Nom)* et la valeur *January2018Backups*. Le paramètre cible utilise le *VolumeId*paramètre.

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

## Ciblage Groupes de ressources AWS
<a name="target-resource-groups"></a>

Vous pouvez spécifier un seul groupe de AWS ressources comme cible d'une automatisation. Systems Manager crée une automatisation enfant pour chaque objet du groupe de ressources cible.

Supposons, par exemple, que l'un de vos Resource Groups s'appelle PatchedAMIs. Ce groupe de ressources inclut une liste de 25 Amazon Machine Images (AMIs) Windows auxquelles des correctifs sont appliqués régulièrement. Si vous exécutez une automatisation qui utilise le runbook `AWS-CreateManagedWindowsInstance` et ciblez ce groupe de ressources, Systems Manager crée une automatisation enfant pour chacun des 25 AMIs. Cela signifie qu'en ciblant le groupe de AMIs ressources patché, l'automatisation crée 25 instances à partir d'une liste de correctifsAMIs. L'automatisation parent se termine lorsque toutes les automatisations enfants arrivent au terme du traitement ou atteignent un état final.

La AWS CLI commande suivante s'applique à l'exemple de Patch AMIs Resource Group. La commande prend le *AmiId*paramètre de l'`--target-parameter-name`option. Cette commande n'inclut pas d'autres paramètres pour définir le type d'instance à créer à partir de chaque AMI. Le runbook `AWS-CreateManagedWindowsInstance` renvoie par défaut au type d'instance t2.medium. Dans ce cas, la commande créerait donc 25 instances Amazon EC2 t2.medium pour Windows Server.

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

L'exemple de console suivant utilise un groupe de ressources appelé t2-micro-instances.

![\[Cibler un groupe AWS de ressources à l'aide d'une automatisation de Systems Manager\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/automation-rate-control-resource-groups-new.png)


## Ciblage des paramètres de valeur
<a name="target-parameter-values"></a>

Vous pouvez également cibler une valeur de paramètre. Saisissez `ParameterValues` comme clé, puis la valeur de ressource spécifique où vous voulez que l'automatisation soit exécutée. Si vous spécifiez plusieurs valeurs, Systems Manager exécute une automatisation sur chaque valeur spécifiée.

Par exemple, supposons que le runbook comporte un paramètre **InstanceID**. Si vous ciblez les valeurs du paramètre **InstanceID** lorsque vous exécutez l'automatisation, Systems Manager exécute une automatisation enfant pour chaque valeur d'ID d'instance spécifiée. L'automatisation parent se termine lorsque l'automatisation a exécuté chaque instance spécifiée ou si l'exécution échoue. Vous pouvez cibler un maximum de 50 valeurs de paramètre.

L'exemple suivant utilise le runbook `AWS-CreateImage`. Le nom du paramètre cible spécifié est *InstanceId*. Les principales utilisations *ParameterValues*. Les valeurs sont deux instances Amazon EC2. IDs Cette commande crée une automatisation pour chaque instance, ce qui génère une AMI à partir de chaque instance. 

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

**Note**  
`AutomationAssumeRole` n'est pas un paramètre valide. Ne sélectionnez pas cet élément lors de l'exécution d'automatisation qui ciblent une valeur de paramètre.

### Ciblage des mappages de valeurs des paramètres
<a name="target-maps"></a>

L'option `TargetMaps` élargit votre capacité à cibler `ParameterValues`. Vous pouvez entrer une liste de valeurs de paramètres en utilisant `TargetMaps` au niveau de la ligne de commande. Vous pouvez spécifier un maximum de 50 valeurs de paramètre dans la ligne de commande. Si vous souhaitez exécuter des commandes qui spécifient plus de 50 valeurs de paramètres, vous pouvez saisir ces valeurs dans un fichier JSON. Vous pouvez ensuite appeler ce fichier à partir de la ligne de commande.

**Note**  
L'option `TargetMaps` n'est pas prise en charge dans la console.

Utilisez le format suivant pour spécifier plusieurs valeurs de paramètre en utilisant l'option `TargetMaps` dans une commande. Remplacez chaque *example resource placeholder* par vos propres informations.

```
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”
```

Si vous souhaitez saisir plus de 50 valeurs de paramètres pour l'option `TargetMaps`, spécifiez les valeurs dans un fichier à l'aide du format JSON suivant. L'utilisation d'un fichier JSON améliore également la lisibilité lorsque vous devez fournir plusieurs valeurs de paramètre.

```
[

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

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

]
```

Enregistrez le fichier avec l'extension de fichier .json. Vous pouvez appeler le fichier en utilisant la commande suivante. Remplacez chaque *example resource placeholder* par vos propres informations.

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

Vous pouvez également télécharger le fichier à partir d'un compartiment Amazon Simple Storage Service (Amazon S3), dans la mesure où vous avez l'autorisation de lire les données de ce compartiment. Utilisez le format de commande suivant. Remplacez chaque *example resource placeholder* par vos propres informations.

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

Voici un exemple de scénario qui peut vous aider à comprendre l'option `TargetMaps`. Dans ce scénario, un utilisateur souhaite créer des instances Amazon EC2 de différents types à partir d'AMIs distinctes. Pour exécuter cette tâche, l'utilisateur crée un runbook nommé AMI\$1Testing. Ce runbook définit deux paramètres d'entrée : `instanceType` et `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'utilisateur spécifie ensuite les valeurs de paramètres cibles suivantes dans un fichier nommé `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'utilisateur peut exécuter l'automatisation et créer les cinq instances EC2 définies dans `AMI_instance_types.json` en exécutant la commande suivante.

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

## Ciblage de toutes les instances Amazon EC2
<a name="target-all-instances"></a>

Vous pouvez exécuter une automatisation sur toutes les instances Amazon EC2 actuelles Compte AWS en Région AWS choisissant **Toutes les instances** dans la liste **des cibles**. **Par exemple, si vous souhaitez redémarrer toutes les instances Amazon EC2, les vôtres Compte AWS et les instances actuelles Région AWS, vous pouvez choisir le `AWS-RestartEC2Instance` runbook, puis **toutes les instances** dans la liste des cibles.**

![\[Ciblage de toutes les instances Amazon EC2 d'un runbook\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/automation-rate-control-target-all-instances.png)


Après que vous avez choisi **All instances (Toutes les instances)**, Systems Manager remplit le champ **Instance** avec un astérisque (\$1) et empêche la modification de ce champ (qui est alors grisé). Systems Manager rend également le **InstanceId**champ du champ **Paramètres d'entrée** indisponible pour les modifications. Rendre ces champs indisponibles pour empêcher leur modification est le comportement attendu si vous choisissez de cibler toutes les instances.

# Automatisations de contrôle à grande échelle
<a name="running-automations-scale-controls"></a>

Vous pouvez contrôler le déploiement d'une automatisation sur un parc de AWS ressources en spécifiant une valeur de simultanéité et un seuil d'erreur. La simultanéité et le seuil d'erreurs sont appelés collectivement *contrôles du débit*.

**Concurrency**  
Utilisez Concurrency (Simultanéité) pour spécifier combien de ressources sont autorisées à exécuter une automatisation simultanément. Elle permet de limiter l'impact sur vos ressources ou les temps d'arrêt lors du traitement d'une automatisation. Vous pouvez spécifier un nombre absolu de ressources (par exemple, 20) ou un pourcentage de l'ensemble de la cible (par exemple, 10 %).

Le système de mise en file d'attente transmet l'automatisation à une seule ressource et attend la fin de l'appel initial avant d'envoyer l'automatisation à deux autres ressources. Le système envoie de façon exponentielle l'automatisation à chaque fois plus de ressources jusqu'à ce que la valeur de simultanéité soit atteinte.

**Seuils d'erreurs**  
Utilisez un seuil d'erreur pour spécifier le nombre d'automatisations autorisées à échouer avant de AWS Systems Manager cesser de les envoyer à d'autres ressources. Vous pouvez spécifier un nombre absolu d'erreurs, par exemple 10, ou un pourcentage de l'ensemble de la cible, par exemple 10 %.

Par exemple, si vous spécifiez un nombre absolu de trois erreurs, le système cesse d'envoyer l'exécution de l'automatisation à la réception de la quatrième erreur. Si vous spécifiez 0, le système cesse d'exécuter l'automatisation à des cibles supplémentaires une fois que le premier résultat d'erreur est renvoyé.

De même, si vous envoyez une automatisation à 50 instances et que vous définissez le seuil d'erreurs sur la valeur 10 %, le système arrête d'envoyer la commande aux instances supplémentaires à la réception de la cinquième erreur. Les appels qui exécutent déjà une automatisation quand un seuil d'erreurs est atteint sont autorisés à se terminer, mais certaines de ces automatisations peuvent également échouer. Pour vous assurer qu'il n'y aura pas plus d'erreurs que le nombre spécifié pour le seuil d'erreurs, définissez la valeur **Concurrency** sur 1 afin que les automatisations s'exécutent une à une. 

# Exécution d'automatisations dans plusieurs Régions AWS comptes
<a name="running-automations-multiple-accounts-regions"></a>

Vous pouvez exécuter AWS Systems Manager des automatisations sur plusieurs Régions AWS Comptes AWS et/ou unités AWS Organizations organisationnelles (OUs) à partir d'un compte central. Automation est un outil d’ AWS Systems Manager. Exécuter des automatisations dans plusieurs régions et comptes ou OUs réduire le temps nécessaire à l'administration de vos AWS ressources tout en renforçant la sécurité de votre environnement informatique.

Par exemple, vous pouvez effectuer les opérations suivantes à l'aide de runbooks Automation :
+ Implémentation des correctifs ainsi que des mises à jour de sécurité de manière centralisée.
+ Correction des écarts de conformité des configurations de VPC ou des politiques de compartiment Amazon S3.
+ Gestion des ressources, telles que des instances Amazon Elastic Compute Cloud (Amazon EC2) EC2 à grande échelle.

Le graphique suivant illustre un exemple d'utilisateur exécutant le runbook `AWS-RestartEC2Instances` dans plusieurs régions et comptes à partir d'un compte central. L'automatisation localise les instances à l'aide des balises définies dans les régions et les comptes ciblés.

![\[Illustration présentant l'exécution de Systems Manager Automation dans plusieurs régions et comptes.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/automation-multi-region-and-multi-account.png)


**Choisissez un compte central pour Automation**  
Si vous souhaitez exécuter des automatisations OUs, le compte central doit être autorisé à répertorier tous les comptes du OUs. Cette exécution n'est possible qu'à partir d'un compte administrateur délégué ou du compte de gestion de l'organisation. Nous vous recommandons de suivre les AWS Organizations meilleures pratiques et d'utiliser un compte d'administrateur délégué. Pour plus d'informations sur les AWS Organizations meilleures pratiques, consultez la section [Meilleures pratiques relatives au compte de gestion](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_best-practices_mgmt-acct.html) dans le *Guide de AWS Organizations l'utilisateur*. Pour créer un compte d'administrateur délégué pour Systems Manager, vous pouvez utiliser la `register-delegated-administrator` commande avec le AWS CLI comme indiqué dans l'exemple suivant.

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

Si vous souhaitez exécuter des automatisations sur plusieurs comptes non gérés par AWS Organizations, nous vous recommandons de créer un compte dédié à la gestion de l'automatisation. L'exécution de toutes les automatisations inter-comptes à partir d'un compte dédié simplifie la gestion des autorisations IAM, les efforts de dépannage et crée une couche de séparation entre les opérations et l'administration. Cette approche est également recommandée si vous utilisez des comptes individuels AWS Organizations, mais que vous souhaitez les cibler uniquement OUs.

**Le fonctionnement de l'exécution des automatisations**  
Exécutez des automatisations sur plusieurs régions et comptes ou OUs procédez comme suit :

1. Connectez-vous au compte que vous souhaitez configurer en tant que compte central de l'automatisation.

1. Utilisez le [Configuration des autorisations du compte de gestion pour l'exécution d'automatisations entre plusieurs régions et plusieurs comptes](#setup-management-account-iam-roles) procédure décrite dans cette rubrique afin de créer le second role IAM:
   + `AWS-SystemsManager-AutomationAdministrationRole`- Ce rôle donne à l'utilisateur l'autorisation d'exécuter des automatisations sur plusieurs comptes et OUs.
   + `AWS-SystemsManager-AutomationExecutionRole` - Ce rôle donne à l'utilisateur l'autorisation d'exécuter des automatisations dans plusieurs comptes et unités organisationnelles.

1. Choisissez le runbook, les régions et les comptes ou l' OUs endroit où vous souhaitez exécuter l'automatisation.
**Note**  
Assurez-vous que l'unité d'organisation cible contient les comptes souhaités. Si vous sélectionnez un runbook personnalisé, il doit être partagé avec tous les comptes cibles. Pour obtenir des informations sur le partage des runbooks, consultez [Partage de documents SSM](documents-ssm-sharing.md). Pour obtenir des informations sur l'utilisation de runbooks partagés, consultez [Utilisation de documents SSM partagés](documents-ssm-sharing.md#using-shared-documents).

1. Exécutez l'automatisation.

1. Utilisez les opérations [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), et [DescribeAutomationExecutions](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeAutomationExecutions.html)API depuis la AWS Systems Manager console ou AWS CLI pour suivre la progression de l'automatisation. La sortie des étapes de l'automatisation dans votre compte principal sera l'`AutomationExecutionId` des automations enfants. Pour afficher la sortie des automatisations enfants créées dans vos comptes cibles, spécifiez bien le compte, la région et `AutomationExecutionId` correspondants, dans votre demande.

## Configuration des autorisations du compte de gestion pour l'exécution d'automatisations entre plusieurs régions et plusieurs comptes
<a name="setup-management-account-iam-roles"></a>

Utilisez la procédure suivante pour créer les rôles IAM requis pour l'exécution de Systems Manager Automation dans plusieurs régions et plusieurs comptes avec AWS CloudFormation. Cette procédure décrit la création du rôle `AWS-SystemsManager-AutomationAdministrationRole`. Créez uniquement ce rôle dans le compte central d'automatisation. Cette procédure décrit également la création du rôle `AWS-SystemsManager-AutomationExecutionRole`. Vous devez créer ce rôle dans *chaque* compte que vous souhaitez cibler pour exécuter les automatisations dans plusieurs régions et plusieurs comptes. Nous vous recommandons CloudFormation StackSets de l'utiliser pour créer le `AWS-SystemsManager-AutomationExecutionRole` rôle dans les comptes que vous souhaitez cibler afin d'exécuter des automatisations multirégionales et multicomptes.

**Pour créer le rôle d'administration IAM requis pour les automatisations multirégionales et multicomptes en utilisant CloudFormation**

1. Téléchargez et compressez le [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).

   -ou-

   Si vos comptes sont gérés par 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).

   Ces fichiers contiennent respectivement les fichiers `AWS-SystemsManager-AutomationAdministrationRole.yaml` et les fichiers `AWS-SystemsManager-AutomationAdministrationRole (org).yaml` CloudFormation modèles.

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Sélectionnez **Créer une pile**.

1. Dans la section **Specify template (Spécifier un modèle)**, sélectionnez **Upload a template (Charger un modèle)**.

1. Choisissez **Choisir un fichier**, puis choisissez le fichier `AWS-SystemsManager-AutomationAdministrationRole.yaml` ou le `AWS-SystemsManager-AutomationAdministrationRole (org).yaml` CloudFormation modèle, en fonction de votre sélection à l'étape 1.

1. Choisissez **Suivant**.

1. Dans la section **Spécifier les détails**, entrez un nom dans le champ **Nom de la pile**. 

1. Choisissez **Suivant**.

1. Sur la page **Configure stack options (Configurer les options de pile)**, saisissez des valeurs pour les options que vous souhaitez utiliser. Choisissez **Suivant**.

1. Sur la page de **révision**, faites défiler la page vers le bas et choisissez l'option **Je reconnais que cela CloudFormation pourrait créer des ressources IAM avec des noms personnalisés**.

1. Sélectionnez **Créer la pile**.

CloudFormation affiche l'état de **CREATE\$1IN\$1PROGRESS** pendant environ trois minutes. Le statut passe à **CREATE\$1COMPLETE**.

Répétez la procédure suivante dans *chaque* compte que vous souhaitez cibler pour exécuter les automatisations multi-régions et multi-comptes.

**Pour créer le rôle d'automatisation IAM requis pour les automatisations multirégionales et multicomptes en utilisant CloudFormation**

1. Téléchargez [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).

   -or

   Si vos comptes sont gérés par 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).

   Ces fichiers contiennent respectivement les fichiers de modèle CloudFormation `AWS-SystemsManager-AutomationExecutionRole.yaml` et `AWS-SystemsManager-AutomationExecutionRole (org).yaml`.

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Sélectionnez **Créer une pile**.

1. Dans la section **Specify template (Spécifier un modèle)**, sélectionnez **Upload a template (Charger un modèle)**.

1. Choisissez **Choisir un fichier**, puis choisissez le fichier `AWS-SystemsManager-AutomationExecutionRole.yaml` ou le `AWS-SystemsManager-AutomationExecutionRole (org).yaml` CloudFormation modèle, en fonction de votre sélection à l'étape 1.

1. Choisissez **Suivant**.

1. Dans la section **Spécifier les détails**, entrez un nom dans le champ **Nom de la pile**. 

1. Dans la section **Paramètres**, dans le **AdminAccountId**champ, entrez l'ID du compte Automation Central.

1. Si vous configurez ce rôle pour un AWS Organizations environnement, la section contient un autre champ appelé **OrganizationID**. Entrez l'ID de votre AWS organisation.

1. Choisissez **Suivant**.

1. Sur la page **Configure stack options (Configurer les options de pile)**, saisissez des valeurs pour les options que vous souhaitez utiliser. Choisissez **Suivant**.

1. Sur la page de **révision**, faites défiler la page vers le bas et choisissez l'option **Je reconnais que cela CloudFormation pourrait créer des ressources IAM avec des noms personnalisés**.

1. Sélectionnez **Créer la pile**.

CloudFormation affiche l'état de **CREATE\$1IN\$1PROGRESS** pendant environ trois minutes. Le statut passe à **CREATE\$1COMPLETE**.

## Exécuter une automatisation dans plusieurs comptes et régions (console)
<a name="multiple-console"></a>

La procédure suivante décrit comment utiliser la console Systems Manager pour exécuter une automatisation dans plusieurs régions et comptes à partir du compte de gestion Automation.

**Avant de commencer**  
Avant d'exécuter la procédure suivante, notez les informations suivantes :
+ L'utilisateur ou le rôle que vous utilisez pour exécuter Automation dans plusieurs régions ou plusieurs comptes doit disposer de l'autorisation `iam:PassRole` pour le rôle `AWS-SystemsManager-AutomationAdministrationRole`.
+ Compte AWS IDs ou à l' OUs endroit où vous souhaitez exécuter l'automatisation.
+ [Régions prises en charge par Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) où vous souhaitez exécuter l'automatisation.
+ La clé de balise et la valeur de balise ou le nom du groupe de ressources, où vous souhaitez exécuter l'automatisation.

**Pour exécuter une automatisation dans plusieurs comptes et régions**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Automation** (Automatisation), puis **Execute automation** (Exécuter l'automatisation).

1. Dans la liste **Automation document** (Document Automation), sélectionnez un runbook. Sélectionnez une ou plusieurs options dans le panneau **Document categories (Catégories de documents)** pour filtrer les documents SSM en fonction de leur but. Pour afficher un runbook vous appartenant, sélectionnez l'onglet **Owned by me (M'appartenant)**. Pour afficher un runbook partagé avec votre compte, sélectionnez l'onglet **Shared with me (Partagé avec moi)**. Pour afficher tous les runbooks, sélectionnez l'onglet **All documents (Tous les documents)**.
**Note**  
Vous pouvez consulter les informations sur un runbook en sélectionnant son nom.

1. Dans la section **Document details (Détails du document)**, vérifiez que l'option **Document version (Version de document)** correspond à la version que vous souhaitez exécuter. Le système inclut les options de version suivantes : 
   + **Version par défaut lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et qu’une nouvelle version par défaut est attribuée.
   + **Dernière version lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et que vous souhaitez exécuter la dernière version mise à jour.
   + **1 (Par défaut)** : sélectionnez cette option pour exécuter la première version du document, qui est la version par défaut.

1. Choisissez **Suivant**.

1. Sur la page **Execute automation document (Exécuter le document d'Automation) **, sélectionnez **Multi-account and Region (Compte et région multiples)**.

1. Dans la section **Comptes et régions cibles**, utilisez le champ **Comptes, unités organisationnelles (OUs) et racines** pour spécifier les différentes unités Comptes AWS ou unités AWS organisationnelles (OUs) dans lesquelles vous souhaitez exécuter l'automatisation. Séparez plusieurs comptes ou OUs utilisez une virgule. 

   1. (Facultatif) Cochez la OUs case **Inclure l'enfant** pour inclure toutes les unités organisationnelles enfants dans les unités organisationnelles spécifiées OUs.

   1. (Facultatif) Dans le champ **Exclure les comptes et les unités organisationnelles (OUs)**, entrez une liste séparée par des virgules des comptes IDs et des unités d'organisation IDs que vous souhaitez exclure des entités étendues saisies ci-dessus.

1. Utilisez la liste **Régions** pour choisir une ou plusieurs régions dans lesquelles vous souhaitez exécuter l’automatisation.

1. Utilisez les options **Multi-Region and account rate control (Plusieurs régions et contrôle du débit du compte)** pour restreindre l'exécution d'automatisations à un nombre limité de comptes qui s'exécutent dans un nombre limité de régions. Ces options ne limitent pas le nombre de ressources AWS qui peuvent exécuter les automatisations. 

   1. Dans la section **Location (account-Region pair) concurrency (Simultanéité de l'emplacement [paire compte/région])**, sélectionnez une option pour restreindre le nombre d'automatisations qui peuvent s'exécuter dans plusieurs comptes et régions en même temps. Par exemple, si vous choisissez d'exécuter une automatisation en cinq (5) Comptes AWS, qui se trouvent dans quatre (4) Régions AWS, Systems Manager exécute les automatisations dans un total de 20 paires compte-région. Vous pouvez utiliser cette option pour spécifier un nombre absolu, tel que **2**, de manière à ce que l'automatisation s'exécute uniquement dans 2 paires compte-région en même temps. Vous pouvez également spécifier un pourcentage de paires compte-région qui peuvent s'exécuter en même temps. Par exemple, avec 20 paires compte-région, si vous spécifiez 20 %, l'automatisation s'exécute simultanément dans un maximum de 5 paires compte-région. 
      + Sélectionnez **targets (cibles)** pour saisir un nombre absolu de paires compte-région pouvant exécuter l'automatisation simultanément.
      + Sélectionnez **percentage (pourcentage)** pour saisir un pourcentage du nombre total de paires compte-région pouvant exécuter l'automatisation simultanément.

   1. Dans la section **Error threshold (Seuil d'erreurs)**, sélectionnez une option :
      + Sélectionnez **errors (erreurs)** pour indiquer un nombre absolu d'erreurs autorisées avant qu'Automation ne cesse d'envoyer l'automatisation à d'autres ressources.
      + Sélectionnez **percentage (pourcentage)** pour indiquer un pourcentage d'erreurs autorisées avant qu'Automation ne cesse d'envoyer l'automatisation à d'autres ressources.

1. Dans la section **Targets** (Cibles), sélectionnez la façon dont vous souhaitez cibler les ressources AWS où vous souhaitez exécuter l'automatisation. Ces options sont obligatoires.

   1. Utilisez la liste **Parameter (Paramètre)** pour choisir un paramètre. Les éléments de la liste **Parameter (Paramètre)** sont déterminés par les paramètres du runbook Automation que vous avez sélectionnés au début de cette procédure. En choisissant un paramètre, vous définissez le type de ressource sur lequel le flux de travail d'automatisation s'exécutera. 

   1. Utilisez la liste **Targets (Cibles)** pour choisir la façon dont vous souhaitez cibler les ressources.

      1. Si vous choisissez de cibler des ressources à l'aide de valeurs de paramètre, saisissez la valeur de paramètre du paramètre que vous avez choisi, dans la section **Input parameters (Paramètres d'entrée)**.

      1. Si vous avez choisi de cibler les ressources en utilisant Groupes de ressources AWS, choisissez le nom du groupe dans la liste des **groupes de ressources**.

      1. Si vous choisissez de cibler des ressources à l'aide de balises, entrez la clé de balise et (éventuellement) la valeur de balise dans les champs fournis. Choisissez **Ajouter**.

      1. Si vous souhaitez exécuter un runbook d'automatisation sur toutes les instances de la version actuelle Compte AWS Région AWS, sélectionnez **Toutes les instances**.

1. Dans la section **Input parameters (Paramètres d'entrée)**, spécifiez les entrées obligatoires. Choisissez le rôle de service `AWS-SystemsManager-AutomationAdministrationRole` IAM dans la **AutomationAssumeRole**liste.
**Note**  
Vous pourriez ne pas avoir besoin de choisir certaines options dans la section **Paramètres d'entrée**. Cela est dû au fait que vous avez ciblé des ressources dans plusieurs régions et comptes à l'aide de balises ou d'un groupe de ressources. Par exemple, si vous avez choisi le `AWS-RestartEC2Instance` runbook, vous n'avez pas besoin de spécifier ou de choisir une instance IDs dans la section **Paramètres d'entrée**. L'automatisation localise les instances à redémarrer en utilisant les balises que vous avez spécifiées. 

1. (Facultatif) Choisissez une CloudWatch alarme à appliquer à votre automatisation à des fins de surveillance. Pour associer une CloudWatch alarme à votre automatisation, le principal IAM qui lance l'automatisation doit être autorisé à effectuer l'`iam:createServiceLinkedRole`action. Pour plus d'informations sur les CloudWatch alarmes, consultez la section [Utilisation des CloudWatch alarmes Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html). Veuillez noter que l'activation de votre alarme entraîne l'annulation de l'automatisation et l'exécution des étapes `OnCancel` définies. Si vous l'utilisez AWS CloudTrail, vous verrez l'appel d'API dans votre historique.

1. Utilisez les options de la section **Contrôle du débit** pour limiter le nombre de AWS ressources pouvant exécuter l'automatisation au sein de chaque paire compte-région. 

   Dans la section **Simultanéité**, sélectionnez une option : 
   + Sélectionnez **targets (cibles)** pour entrer un nombre absolu de cibles pouvant exécuter le flux de travail Automation simultanément.
   + Sélectionnez **percentage (pourcentage)** pour indiquer un pourcentage de l'ensemble de cibles pouvant exécuter le flux de travail Automation simultanément.

1. Dans la section **Error threshold (Seuil d'erreurs)**, sélectionnez une option :
   + Sélectionnez **erreurs** pour indiquer un nombre absolu d'erreurs autorisées avant qu'Automation ne cesse d'envoyer le flux de travail à d'autres ressources.
   + Sélectionnez **pourcentage** pour indiquer un pourcentage d'erreurs autorisées avant qu'Automation ne cesse d'envoyer le flux de travail à d'autres ressources.

1. Sélectionnez **Execute (Exécuter)**.

Une fois l’exécution d’automatisation terminée, vous pouvez la réexécuter avec des paramètres identiques ou modifiés. Pour de plus amples informations, veuillez consulter [Réexécution d’exécutions d’automatisation](automation-rerun-executions.md).

## Exécuter une automatisation dans plusieurs comptes et régions (ligne de commande)
<a name="multiple-cli"></a>

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ou Windows) ou exécuter une automatisation dans plusieurs régions et comptes Outils AWS pour PowerShell à partir du compte de gestion Automation.

**Avant de commencer**  
Avant d'exécuter la procédure suivante, notez les informations suivantes :
+ Compte AWS IDs ou à l' OUs endroit où vous souhaitez exécuter l'automatisation.
+ [Régions prises en charge par Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) où vous souhaitez exécuter l'automatisation.
+ La clé de balise et la valeur de balise ou le nom du groupe de ressources, où vous souhaitez exécuter l'automatisation.

**Pour exécuter une automatisation dans plusieurs comptes et régions**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Utilisez le format suivant pour créer une commande permettant d'exécuter une automatisation dans plusieurs régions et comptes. Remplacez chaque *example resource placeholder* par vos propres informations.

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

------

**Exemple : exécution d’une automatisation dans plusieurs régions et comptes**  
Les exemples suivants montrent comment utiliser AWS CLI et exécuter des automatisations dans plusieurs comptes et régions PowerShell à l'aide d'une seule commande.

   **Exemple 1** : Cet exemple redémarre les instances EC2 dans trois régions de l'ensemble AWS Organizations d'une organisation. Pour ce faire, il faut cibler l'identifiant racine de l'organisation et inclure l'enfant 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}
   ```

------

   **Exemple 2** : cet exemple redémarre des instances EC2 spécifiques dans différents comptes et régions.
**Note**  
L'`TargetLocationMaxConcurrency`option est disponible à l'aide des AWS CLI touches et 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"]
           })
   ```

------

   **Exemple 3** : Cet exemple montre comment spécifier plusieurs régions Comptes AWS et régions où l'automatisation doit s'exécuter à l'aide de l'`--target-locations-url`option. La valeur de cette option doit être un fichier JSON dans une [URL Amazon S3 présignée](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html) accessible au public.
**Note**  
`--target-locations-url`est disponible lorsque vous utilisez le AWS CLI et 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"
   ```

------

   Exemple de contenu pour le fichier 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"
    }
   ]
   ```

   **Exemple 4** : Cet exemple redémarre les instances EC2 dans les `987654321098` comptes `123456789012` et, situés dans les régions `us-east-2` et`us-west-1`. Les instances doivent être balisées avec la valeur de paire de clés de balise `Env-PROD`.

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

------

   **Exemple 5** : Cet exemple redémarre les instances EC2 dans les `987654321098` comptes `123456789012` et situés dans la `eu-central-1` région. Les instances doivent être membres du groupe de `prod-instances` AWS ressources.

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

------

   **Exemple 6** : Cet exemple redémarre les instances EC2 dans l'unité `ou-1a2b3c-4d5e6c` AWS organisationnelle (UO). Les instances sont situées dans les régions `us-west-1` et `us-west-2`. Les instances doivent être membres du groupe de `WebServices` AWS ressources.

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

------

   Le système renvoie des informations similaires à ce qui suit :

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

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

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

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

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

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

------

1. Exécutez la commande suivante pour afficher des informations détaillées relatives à l'automatisation. Remplacez *automation execution ID* par vos propres informations.

------
#### [ 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. Exécutez la commande suivante pour afficher des informations détaillées relatives à l'automatisation.

------
#### [ 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
   ```

------
**Note**  
Vous pouvez aussi surveiller le statut de l'automatisation dans la console. Dans la liste **Automation executions (Exécutions Automation)**, sélectionnez l'exécution que vous venez juste d'exécuter, puis sélectionnez l'onglet **Execution Steps (Étapes d'exécution)**. Cet onglet affiche le statut des actions de l'automatisation.

**Plus d'informations**  
[Correctif centralisé à plusieurs comptes et plusieurs régions avec AWS Systems Manager Automation](https://aws.amazon.com/blogs/mt/centralized-multi-account-and-multi-region-patching-with-aws-systems-manager-automation/)

# Exécutez des automatisations en fonction des événements EventBridge
<a name="running-automations-event-bridge"></a>

Vous pouvez démarrer une automatisation en spécifiant un runbook comme cible d'un EventBridge événement Amazon. Vous pouvez démarrer des automatisations selon un programme ou lorsqu'un événement de système AWS spécifique se produit. Supposons, par exemple, que vous créiez un runbook nommé *BootStrapInstances*qui installe le logiciel sur une instance au démarrage de celle-ci. Pour spécifier le *BootStrapInstances*runbook (et l'automatisation correspondante) comme cible d'un EventBridge événement, vous devez d'abord créer une nouvelle EventBridge règle. (Voici un exemple de règle : **Nom de service**: EC2, **Type d'événement**: Notification de modification d'état d'instance EC2, **État(s) spécifique(s)**: en cours exécution, **Toute instance**.) Vous devez ensuite utiliser les procédures suivantes pour spécifier le *BootStrapInstances*runbook comme cible de l'événement à l'aide de la EventBridge console et AWS Command Line Interface (AWS CLI). Lors du démarrage d'une nouvelle instance, le système exécute l'automatisation et installe le logiciel.

Pour plus d'informations sur la création de runbooks, consultez [Créer vos propres runbooks](automation-documents.md).

## Création d'un EventBridge événement utilisant un runbook (console)
<a name="automation-cwe-target-console"></a>

Utilisez la procédure suivante pour configurer un runbook comme cible d'un EventBridge événement.

**Pour configurer un runbook en tant que cible d'une règle d' EventBridge événement**

1. Ouvrez la EventBridge console Amazon à l'adresse [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Dans le panneau de navigation, choisissez **Rules**.

1. Choisissez **Créer une règle**.

1. Saisissez un nom et une description pour la règle.

   Une règle ne peut pas avoir le même nom qu'une autre règle de la même région et sur le même bus d'événement.

1. Pour **Event bus** (Bus d'événement), sélectionnez le bus d'événement que vous souhaitez associer à cette règle. Si vous souhaitez que cette règle réponde aux événements correspondants qui proviennent des vôtres Compte AWS, sélectionnez **par défaut**. Lorsqu'un événement Service AWS de votre compte est émis, il est toujours redirigé vers le bus d'événements par défaut de votre compte.

1. Choisissez comment la règle est déclenchée.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/running-automations-event-bridge.html)

1. Choisissez **Suivant**.

1. Pour **Types de cibles**, choisissez **service AWS **.

1. Pour **Select a target** (Sélectionner une cible), choisissez **Systems Manager Automation**. 

1. Pour **Document**, sélectionnez un runbook à utiliser lorsque votre cible est appelée.

1. Dans la section **Configure automation parameter(s)** (Configurer le(s) paramètre(s) d'automatisation), conservez les valeurs de paramètre par défaut (si disponibles) ou saisissez vos propres valeurs. 
**Note**  
Pour créer une cible, vous devez spécifier une valeur pour chaque paramètre requis. Si vous ne le faites pas, le système crée la règle mais elle ne s'exécute pas.

1. Pour de nombreux types de cibles, EventBridge nécessite des autorisations pour envoyer des événements à la cible. Dans ces cas, EventBridge vous pouvez créer le rôle IAM nécessaire à l'exécution de votre règle. Effectuez l’une des actions suivantes :
   + Pour créer un rôle IAM automatiquement, sélectionnez **Create a new role for this specific resource**.
   + Pour utiliser un rôle IAM que vous avez créé précédemment, choisissez **Use existing role** (Utiliser un rôle existant) et sélectionnez le rôle existant dans la liste déroulante. Notez que vous devrez peut-être mettre à jour la politique de confiance pour inclure EventBridge votre rôle IAM. Voici un exemple :

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

****  

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

------

1. Choisissez **Suivant**.

1. (Facultatif) Saisissez une ou plusieurs balises pour la règle. Pour plus d'informations, consultez la section [Marquage de vos EventBridge ressources Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-tagging.html) dans le *guide de l' EventBridge utilisateur Amazon*.

1. Choisissez **Suivant**.

1. Consultez les détails de la règle et choisissez **Create rule** (Créer une règle).

## Création d'un EventBridge événement utilisant un runbook (ligne de commande)
<a name="automation-cwe-target-commandline"></a>

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ou Windows) ou comment Outils AWS pour PowerShell créer une règle d' EventBridge événement et configurer un runbook comme cible.

**Pour configurer un runbook en tant que cible d'une règle d' EventBridge événement**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Créez une commande pour spécifier une nouvelle règle EventBridge d'événement. Remplacez chaque *example resource placeholder* par vos propres informations.

   *Déclencheurs basés sur un calendrier*

------
#### [ 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'exemple suivant crée une règle d' EventBridge événement qui commence tous les jours à 9 h 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 * * ? *)"
   ```

------

   *Déclencheurs basés sur un événement*

------
#### [ 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'exemple suivant crée une règle d' EventBridge événement qui démarre lorsqu'une instance EC2 de la région change d'état.

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

------

   La commande renvoie les détails de la nouvelle EventBridge règle de la même manière que ci-dessous.

------
#### [ 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. Créez une commande pour spécifier un runbook comme cible de la règle d' EventBridge événement que vous avez créée à l'étape 2. Remplacez chaque *example resource placeholder* par vos propres informations.

------
#### [ 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'exemple suivant crée une cible d' EventBridge événement qui démarre l'ID d'instance spécifié à l'aide du runbook`AWS-StartEC2Instance`.

------
#### [ 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
   ```

------

   Le système retourne des informations telles que les suivantes.

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

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

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

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

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

   Il n'y a aucune sortie si la commande aboutit pour PowerShell.

------

# Exécuter une automatisation étape par étape
<a name="automation-working-executing-manually"></a>

Les procédures suivantes décrivent comment utiliser la AWS Systems Manager console et AWS Command Line Interface (AWS CLI) pour exécuter une automatisation en mode d'exécution manuelle. En utilisant le mode d'exécution manuelle, l'automatisation démarre dans un état *Waiting (En attente)* et s'arrête dans un état *Waiting (En attente)*. Ceci vous permet de contrôler quand l'automatisation se poursuit, ce qui est utile si vous avez besoin de lire le résultat d'une étape avant de continuer.

Le flux de travail Automation s'exécute dans le contexte de l'utilisateur actuel. Cela signifie que vous n'avez pas besoin de configurer d'autorisations IAM supplémentaires tant que vous avez le droit d'utiliser le runbook et les actions qu'il appelle. Si vous disposez des autorisations d'administrateur dans IAM, vous pouvez exécuter cette automatisation.

## Exécution d'une automatisation étape par étape (console)
<a name="automation-working-executing-manually-console"></a>

La procédure suivante montre comment utiliser la console Systems Manager pour exécuter manuellement une automatisation étape par étape.

**Pour exécuter une automatisation étape par étape**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Automation** (Automatisation), puis **Execute automation** (Exécuter l'automatisation).

1. Dans la liste **Automation document** (Document Automation), sélectionnez un runbook. Sélectionnez une ou plusieurs options dans le panneau **Document categories (Catégories de documents)** pour filtrer les documents SSM en fonction de leur but. Pour afficher un runbook vous appartenant, sélectionnez l'onglet **Owned by me (M'appartenant)**. Pour afficher un runbook partagé avec votre compte, sélectionnez l'onglet **Shared with me (Partagé avec moi)**. Pour afficher tous les runbooks, sélectionnez l'onglet **All documents (Tous les documents)**.
**Note**  
Vous pouvez consulter les informations sur un runbook en sélectionnant son nom.

1. Dans la section **Document details (Détails du document)**, vérifiez que l'option **Document version (Version de document)** correspond à la version que vous souhaitez exécuter. Le système inclut les options de version suivantes : 
   + **Version par défaut lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et qu’une nouvelle version par défaut est attribuée.
   + **Dernière version lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et que vous souhaitez exécuter la dernière version mise à jour.
   + **1 (Par défaut)** : sélectionnez cette option pour exécuter la première version du document, qui est la version par défaut.

1. Choisissez **Suivant**.

1. Dans la section **Execution Mode (Mode d'exécution)**, sélectionnez **Manual execution (Exécution manuelle)**.

1. Dans la section **Input parameters (Paramètres d'entrée)**, spécifiez les entrées obligatoires. Vous pouvez éventuellement choisir un rôle de service IAM dans la **AutomationAssumeRole**liste.

1. Sélectionnez **Execute (Exécuter)**. 

1. Sélectionnez **Execute this step (Exécuter cette étape)** lorsque vous êtes prêt à commencer à la première étape de l'automatisation. L'automatisation démarre avec l'étape une et s'interrompt avant d'exécuter toutes les étapes suivantes spécifiées dans le runbook que vous avez choisies à l'étape 3 de cette procédure. Si le runbook possède plusieurs étapes, vous devez sélectionner **Execute this step (Exécuter cette étape)** pour chaque étape afin que l'automatisation continue. Chaque fois que vous sélectionnez **Execute this step (Exécuter cette étape)** l'action s'exécute.
**Note**  
La console affiche le statut de l'automatisation. Si l'automatisation ne parvient pas à exécuter une étape, consultez [Résolution des problèmes liés à Systems Manager Automation](automation-troubleshooting.md).

1. Une fois que vous avez terminé toutes les étapes spécifiées dans le runbook, sélectionnez **Complete and view results (Terminer et afficher les résultats)** pour terminer l'automatisation et afficher les résultats.

Une fois l’exécution d’automatisation terminée, vous pouvez la réexécuter avec des paramètres identiques ou modifiés. Pour de plus amples informations, veuillez consulter [Réexécution d’exécutions d’automatisation](automation-rerun-executions.md).

## Exécution d'une automatisation étape par étape (ligne de commande)
<a name="automation-working-executing-manually-commandline"></a>

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ou Windows) ou comment Outils AWS pour PowerShell exécuter manuellement une automatisation étape par étape. macOS

**Pour exécuter une automatisation étape par étape**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Exécutez la commande suivante pour démarrer une automatisation manuelle. Remplacez chaque *example resource placeholder* par vos propres informations.

------
#### [ 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
   ```

------

   Voici un exemple d'utilisation du runbook `AWS-RestartEC2Instance` pour redémarrer l'instance EC2 spécifiée.

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

------

   Le système retourne des informations telles que les suivantes.

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

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

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

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

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

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

------

1. Exécutez la commande suivante lorsque vous êtes prêt à démarrer la première étape de l'automatisation. Remplacez chaque *example resource placeholder* par vos propres informations. L'automatisation démarre avec l'étape une et s'interrompt avant d'exécuter toutes les étapes suivantes spécifiées dans le runbook que vous avez choisies à l'étape 1 de cette procédure. Si le runbook comporte plusieurs étapes, vous devez exécuter la commande suivante pour chaque étape pour que l'automatisation continue.

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

------

   Il n'y a pas de sortie si la commande réussit.

1. Exécutez la commande suivante pour récupérer le statut de chaque exécution d'étape dans l'automatisation.

------
#### [ 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
   ```

------

   Le système retourne des informations telles que les suivantes.

------
#### [ 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. Exécutez la commande suivante pour terminer l'automatisation une fois que toutes les étapes spécifiées dans le runbook choisi sont terminées. Remplacez chaque *example resource placeholder* par vos propres informations.

------
#### [ 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
   ```

------

   Il n'y a pas de sortie si la commande réussit.

# Exécution des automatisations avec les associations State Manager
<a name="scheduling-automations-state-manager-associations"></a>

Vous pouvez démarrer une automatisation en créant une association State Manager avec un dossier d’exploitation. State Manager est un outil d’ AWS Systems Manager. En créant une State Manager association avec un runbook, vous pouvez cibler différents types de AWS ressources. Par exemple, vous pouvez créer des associations qui imposent l'état souhaité à une AWS ressource, notamment les suivantes :
+ Attachez un rôle Systems Manager à des instances Amazon Elastic Compute Cloud (Amazon EC2) pour en faire des *Instances gérées*.
+ Appliquer les règles d'entrée et de sortie souhaitées pour un groupe de sécurité.
+ Créez ou supprimez des sauvegardes Amazon DynamoDB.
+ Créez ou supprimez des instantanés Amazon Elastic Block Store (Amazon EBS).
+ Désactivez les autorisations de lecture et d'écriture sur des compartiments Amazon Simple Storage Service (Amazon S3).
+ Démarrez, redémarrez ou arrêtez des instances gérées et des instances Amazon Relational Database Service (Amazon RDS).
+ Appliquez des correctifs à des AMIs Linux, macOS et Windows.

Utilisez les procédures suivantes pour créer une State Manager association qui exécute une automatisation à l'aide de la AWS Systems Manager console et AWS Command Line Interface (AWS CLI). Pour obtenir des informations générales sur les associations et des informations sur la création d’une association utilisant un document `Command` SSM ou un document `Policy`, consultez [Création d'associations](state-manager-associations-creating.md).

**Avant de commencer**  
Tenez compte des informations importantes suivantes avant d'exécuter des automatisations à l'aide de State Manager :
+ Avant de pouvoir créer une association qui exécute un dossier d’exploitation, vérifiez que vous avez configuré les autorisations pour Automation, un outil d’ AWS Systems Manager. Pour de plus amples informations, veuillez consulter [Configuration d'Automation](automation-setup.md).
+ Les associations State Manager qui exécutent des runbooks contribuent au nombre maximal d'automatisations exécutées simultanément dans votre Compte AWS. Vous pouvez avoir un maximum de 100 automatisations simultanées en cours d'exécution à la fois. Pour plus d'informations, veuillez consulter la rubrique [Quotas de service Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm) dans la *Référence générale d'Amazon Web Services*.
+ Lors de l'exécution d'une automatisation, State Manager ne journalise pas les opérations d'API initiées par l'automatisation dans AWS CloudTrail.
+ Systems Manager crée automatiquement un rôle lié au service afin que State Manager ait l'autorisation d'appeler des opérations d'API Systems Manager Automation. Si vous le souhaitez, vous pouvez créer vous-même le rôle lié au service en exécutant la commande suivante depuis le AWS CLI ou. Outils AWS pour 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
  ```

------

  Pour plus d'informations sur les rôles liés à un service, consultez [Utilisation des rôles liés aux services pour Systems Manager](using-service-linked-roles.md).

## Création d'une association qui exécute une automatisation (console)
<a name="create-automation-association-console"></a>

La procédure suivante décrit comment utiliser la console Systems Manager pour créer une association State Manager qui exécute une automatisation.

**Pour créer une association State Manager qui exécute une automatisation**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **State Manager**, puis **Créer une association**.

1. Dans le champ **Nom**, spécifiez un nom. Cette action est facultative, mais recommandée.

1. Dans la liste **Document**, sélectionnez un runbook. Utilisez la barre de recherche pour filtrer les runbooks **Document type : Equal : Automation (Type de document : égal : Automation)**. Pour afficher plus de runbooks, utilisez les nombres à droite de la barre de recherche. 
**Note**  
Vous pouvez consulter les informations sur un runbook en sélectionnant son nom.

1. Sélectionnez **Simple execution (Exécution simple)** pour exécuter l'instance d'Automation sur une ou plusieurs cibles en spécifiant les ID de ressource pour ces cibles. Choisissez **Rate control** pour exécuter l'automatisation sur un parc de AWS ressources en spécifiant une option de ciblage telle que des balises ou Groupes de ressources AWS. Vous pouvez également contrôler l'opération de l'automatisation à travers vos ressources en spécifiant la simultanéité et les seuils d'erreur.

   Si vous avez choisi **Rate Control (Contrôle du débit)**, la section **Targets (Cibles)** apparaît.

1. Dans la section **Targets (Cibles)**, sélectionnez une méthode pour cibler des ressources.

   1. (Facultatif) Dans la liste **Parameter (Paramètre)**, sélectionnez un paramètre. Les éléments de la liste **Parameter (Paramètre)** sont déterminés par les paramètres du runbook que vous avez sélectionnés au début de cette procédure. En choisissant un paramètre, vous définissez le type de ressource sur lequel l'automatisation s'exécute. 

   1. (Facultatif) Dans la liste **Targets (Cibles)**, sélectionnez une méthode pour cibler les ressources.
      + **Resource Group (Groupe de ressources)** : sélectionnez le nom du groupe dans la liste **Resource Group (Groupe de ressources)**. Pour plus d'informations sur le ciblage Groupes de ressources AWS dans les runbooks, consultez[Ciblage Groupes de ressources AWS](running-automations-map-targets.md#target-resource-groups).
      + **Balises** : entrez la clé de balise et la valeur de balise (le cas échéant) dans les champs fournis. Choisissez **Ajouter**. Pour de plus amples informations sur le ciblage des balises dans les runbooks, consultez [Ciblage d'une balise](running-automations-map-targets.md#target-tags).
      + **Parameter Values (Valeurs des paramètres)** : entrez les valeurs dans la section **Paramètres d'entrée**. Si vous spécifiez plusieurs valeurs, Systems Manager exécute une automatisation sur chaque valeur spécifiée.

        Par exemple, supposons que le runbook comporte un paramètre **InstanceID**. Si vous ciblez les valeurs du paramètre **InstanceID** lorsque vous exécutez l'automatisation, Systems Manager exécute une automatisation enfant pour chaque valeur d'ID d'instance spécifiée. L'automatisation parent se termine lorsque l'automatisation a exécuté chaque instance spécifiée ou si l'exécution échoue. Vous pouvez cibler un maximum de 50 valeurs de paramètre. Pour de plus amples informations sur le ciblage des valeurs de paramètres dans les runbooks, consultez [Ciblage des paramètres de valeur](running-automations-map-targets.md#target-parameter-values).

1. Dans la section **Paramètres d'entrée**, spécifiez les paramètres d'entrée obligatoires.

   Si vous choisissez de cibler les ressources en utilisant des balises ou un groupe de ressources, certaines options de la section **Paramètres d'entrée** n'ont pas besoin d'être définies. Par exemple, si vous avez choisi le `AWS-RestartEC2Instance` runbook et que vous avez choisi de cibler les instances à l'aide de balises, vous n'avez pas besoin de spécifier ou de choisir une instance IDs dans la section **Paramètres d'entrée**. L'automatisation localise les instances à redémarrer en utilisant les balises que vous avez spécifiées. 
**Important**  
Vous devez spécifier un ARN de rôle dans le **AutomationAssumeRole**champ. State Managerutilise le rôle assume pour appeler Services AWS spécifié dans le runbook et exécuter des associations d'automatisation en votre nom.

1. Dans la section **Spécifier le programme**, sélectionnez **On Schedule (Activé)** si vous voulez exécuter l'association à intervalles réguliers. Si vous sélectionnez cette option, utilisez les options fournies pour créer le calendrier à l'aide des expressions Cron ou Rate. Pour de plus amples informations sur les expressions de type Cron et Rate pour State Manager, consultez [Expressions cron et rate pour les associations](reference-cron-and-rate-expressions.md#reference-cron-and-rate-expressions-association). 
**Note**  
Les expressions Rate sont le mécanisme de planification préféré pour les associations State Manager qui exécutent des runbooks. Les expressions Rate permettent plus de flexibilité pour exécuter des associations dans le cas où vous avez atteint le nombre maximal d'automatisations s'exécutant simultanément. Avec un programme Rate, Systems Manager peut réessayer l'automatisation peu de temps après avoir reçu une notification indiquant que les automatisations simultanées ont atteint leur maximum et ont été limitées.

   Sélectionnez **No schedule (Aucun programme)** si vous souhaitez exécuter l'association à un moment donné. 

1. (Facultatif) Dans la section **Contrôle du débit**, choisissez les options de **simultanéité** et de **seuil d'erreur** pour contrôler le déploiement de l'automatisation sur l'ensemble de vos AWS ressources.

   1. Dans la section **Simultanéité**, sélectionnez une option : 
      + Sélectionnez **targets (cibles)** pour entrer un nombre absolu de cibles pouvant exécuter l'automatisation simultanément.
      + Sélectionnez **percentage (pourcentage)** pour indiquer un pourcentage de l'ensemble de cibles pouvant exécuter l'automatisation simultanément.

   1. Dans la section **Error threshold (Seuil d'erreurs)**, sélectionnez une option :
      + Sélectionnez **errors (erreurs)** pour indiquer un nombre absolu d'erreurs autorisées avant qu'Automation ne cesse d'envoyer l'automatisation à d'autres ressources.
      + Sélectionnez **percentage (pourcentage)** pour indiquer un pourcentage d'erreurs autorisées avant qu'Automation ne cesse d'envoyer l'automatisation à d'autres ressources.

   Pour de plus amples informations sur l'utilisation des cibles et du contrôle du débit avec Automation, consultez [Exécuter des opérations automatisées à grande échelle](running-automations-scale.md).

1. Sélectionnez **Create Association (Créer une association)**. 
**Important**  
Lorsque vous créez une association, l'association s'exécute immédiatement les cibles spécifiées. L'association s'exécute ensuite en fonction de l'expression cron ou rate que vous avez choisie. Si vous sélectionnez **No schedule (Aucune planification)**, l'association n'est pas exécutée à nouveau.

## Création d'une association qui exécute une automatisation (ligne de commande)
<a name="create-automation-association-cli"></a>

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ouWindows Server) ou comment Outils AWS pour PowerShell créer une State Manager association qui exécute une automatisation.

**Avant de commencer**  
Avant d’effectuer la procédure suivante, assurez-vous d’avoir créé un rôle de service IAM contenant les autorisations nécessaires au dossier d’exploitation, et configuré une relation de confiance pour Automation, un outil d’ AWS Systems Manager. Pour de plus amples informations, veuillez consulter [Tâche 1 : Création d'un rôle de service pour Automation](automation-setup-iam.md#create-service-role).

**Pour créer une association qui exécute une automatisation**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Exécutez la commande suivante pour afficher une liste de documents.

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

   ```
   aws ssm list-documents
   ```

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

   ```
   aws ssm list-documents
   ```

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

   ```
   Get-SSMDocumentList
   ```

------

   Notez le nom du runbook que vous souhaitez utiliser pour l'association.

1. Exécutez la commande suivante pour afficher les détails relatifs au runbook. Dans la commande suivante, remplacez *runbook name* par vos propres informations.

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

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

   Notez un nom de paramètre (par exemple, `InstanceId`) que vous souhaitez utiliser pour l'option `--automation-target-parameter-name`. Ce paramètre détermine le type de ressource sur lequel l'automatisation s'exécute.

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

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

   Notez un nom de paramètre (par exemple, `InstanceId`) que vous souhaitez utiliser pour l'option `--automation-target-parameter-name`. Ce paramètre détermine le type de ressource sur lequel l'automatisation s'exécute.

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

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

   Notez un nom de paramètre (par exemple, `InstanceId`) que vous souhaitez utiliser pour l'option `AutomationTargetParameterName`. Ce paramètre détermine le type de ressource sur lequel l'automatisation s'exécute.

------

1. Créez une commande qui exécute une automatisation à l'aide d'une association State Manager. Remplacez chaque *example resource placeholder* par vos propres informations.

   *Ciblage à l'aide de balises*

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

**Note**  
Si vous créez une association à l'aide du AWS CLI, utilisez le `--targets` paramètre pour cibler les instances de l'association. N'utilisez pas le paramètre `--instance-id`. Le paramètre `--instance-id` est un paramètre hérité. 

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

**Note**  
Si vous créez une association à l'aide du AWS CLI, utilisez le `--targets` paramètre pour cibler les instances de l'association. N'utilisez pas le paramètre `--instance-id`. Le paramètre `--instance-id` est un paramètre hérité. 

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

**Note**  
Si vous créez une association à l'aide du Outils AWS pour PowerShell, utilisez le `Target` paramètre pour cibler les instances de l'association. N'utilisez pas le paramètre `InstanceId`. Le paramètre `InstanceId` est un paramètre hérité. 

------

   *Ciblage à l'aide des valeurs de paramètre*

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

------

   *Ciblage à l'aide Groupes de ressources AWS*

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

------

   *Ciblage de comptes et de régions multiples*

------
#### [ 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"]
   ```

------

   La commande renvoie des détails pour la nouvelle association similaires à ce qui suit.

------
#### [ 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 :
   ```

------

**Note**  
Si vous utilisez des balises pour créer une association sur une ou plusieurs instances cibles, puis que vous supprimez les balises d'une instance, cette instance n'exécute plus l'association. L'instance est dissociée du document State Manager. 

## Résolution des problèmes liés à l'exécution des automatisations par des associations State Manager
<a name="troubleshooting-automation-associations"></a>

Systems Manager Automation impose une limite de 100 automatisations simultanées et 1 000 automatisations en file d'attente par compte et par région. Si une State Manager association utilisant un runbook affiche le statut **Echec** et un état détaillé de **AutomationExecutionLimitExceeded**, votre automatisation a peut-être atteint la limite. Par conséquent, Systems Manager limite les automatisations. Pour résoudre ce problème, procédez comme suit :
+ Utilisez un taux différent ou une expression cron différente pour votre association. Par exemple, si l'exécution de l'association est prévue toutes les 30 minutes, alors modifiez l'expression de telle sorte qu'elle s'exécute toutes les heures ou toutes les deux heures.
+ Supprimez les automatisations existantes dotées d'un statut **Pending (En suspens)**. En supprimant ces automatisations, vous désactivez la file d'attente actuelle.

# Planifier des automatisations avec des fenêtres de maintenance
<a name="scheduling-automations-maintenance-windows"></a>

Vous pouvez démarrer une automatisation en configurant un runbook en tant que tâche enregistrée pour une fenêtre de maintenance. Si le runbook est enregistré en tant que tâche enregistrée, la fenêtre de maintenance exécute l'automatisation au cours de la période de maintenance planifiée. 

Par exemple, supposons que vous créiez un runbook nommé `CreateAMI` qui crée une Amazon Machine Image (AMI) d'instances enregistrées comme cibles dans la fenêtre de maintenance. Pour spécifier le runbook `CreateAMI` (ainsi que l'automatisation correspondante) en tant que tâche enregistrée d'une fenêtre de maintenance, vous devez d'abord créer une fenêtre de maintenance et enregistrer des cibles. Vous utilisez ensuite la procédure suivante afin de spécifier le document `CreateAMI` en tant que tâche enregistrée dans la fenêtre de maintenance. Lorsque la fenêtre de maintenance démarre au cours de la période planifiée, le système exécute l'automatisation et crée une AMI de cibles enregistrées.

Pour plus d'informations sur la création de runbooks Automation, consultez [Créer vos propres runbooks](automation-documents.md). Automation est un outil d’ AWS Systems Manager.

Utilisez les procédures suivantes pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance à l'aide de la AWS Systems Manager console, AWS Command Line Interface (AWS CLI) ou AWS Tools for Windows PowerShell.

## Enregistrement d'une automatisation dans une fenêtre de maintenance (console)
<a name="register-automation-task-maintenance-window-console"></a>

La procédure suivante décrit comment utiliser la console Systems Manager pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance.

**Avant de commencer**  
Avant d'exécuter la procédure suivante, vous devez créer une fenêtre de maintenance et enregistrer au moins une cible. Pour de plus amples informations, consultez les procédures suivantes. 
+ [Création d’une fenêtre de maintenance à l’aide de la console](sysman-maintenance-create-mw.md).
+ [Affectation de cibles à une fenêtre de maintenance à l’aide de la console](sysman-maintenance-assign-targets.md)

**Pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Maintenance Windows**, puis sélectionnez la fenêtre de maintenance avec laquelle vous souhaitez enregistrer une tâche Automation.

1. Sélectionnez **Actions**. Ensuite, sélectionnez **Register Automation task (Enregistrer la tâche d'automatisation)** pour exécuter une automatisation sur les cibles à l'aide d'un runbook.

1. Pour **Name (Nom)**, entrez le nom de la tâche.

1. Pour **Description**, entrez une description.

1. Pour **Document**, sélectionnez le runbook qui définit les tâches à exécuter.

1. Pour **Document version (Version du document)**, sélectionnez la version du runbook à utiliser.

1. Pour **Task priority (Priorité de tâche)**, sélectionnez une priorité. `1` est la priorité la plus élevée. Les tâches d'une fenêtre de maintenance sont planifiées par ordre de priorité. Les tâches qui ont la même priorité sont planifiées en parallèle.

1. Dans la section **Targets (Cibles)**, si le runbook que vous avez choisi est celui qui exécute les tâches sur les ressources, identifiez les cibles sur lesquelles vous voulez exécuter cette automatisation en spécifiant des balises ou en sélectionnant des instances manuellement.
**Note**  
Si vous voulez transmettre les ressources par l'intermédiaire de paramètres d'entrée au lieu de cibles, il est inutile de spécifier une cible de fenêtre de maintenance.  
Dans la plupart des cas, il est inutile de spécifier explicitement une cible pour une tâche d'automatisation. Par exemple, supposons que vous créiez une tâche de type Automation pour mettre à jour une Amazon Machine Image (AMI) pour Linux à l'aide du runbook `AWS-UpdateLinuxAmi`. Lorsque la tâche s'exécute, l'AMI est mise à jour avec les derniers packages de distribution Linux et les logiciels Amazon disponibles. Ces mises à jour sont déjà installées sur les nouvelles instances créées à partir de l'AMI. Comme l'ID de l'AMI à mettre à jour est spécifié dans les paramètres d'entrée du runbook, il est inutile de spécifier à nouveau une cible dans la tâche de la fenêtre de maintenance.

   Pour obtenir des informations sur les tâches de la fenêtre de maintenance qui n'ont pas besoin de cibles, consultez [Enregistrement de tâches de fenêtre de maintenance sans cibles](maintenance-windows-targetless-tasks.md).

1. (Facultatif) Pour **Contrôle du débit** :
**Note**  
Si la tâche que vous exécutez ne spécifie pas de cibles, il est inutile de spécifier des contrôles de débit.
   + Pour **Concurrency (Simultanéité)**, spécifiez un nombre ou un pourcentage de cibles sur lesquelles exécuter l'automatisation en même temps.

     Si vous avez sélectionné des cibles en choisissant des paires clé-valeur de balises, et que vous n'êtes pas sûr de la quantité de cibles utilisant les balises sélectionnées, limitez alors le nombre d'automatisations qui peuvent s'exécuter en même temps en spécifiant un pourcentage.

     Lorsque la fenêtre de maintenance s'exécute, une nouvelle automatisation est initiée par cible. Il existe une limite de 100 automatisations simultanées par Compte AWS. Si vous spécifiez un taux de simultanéité supérieur à 100, les automatisations simultanées supérieures à 100 sont automatiquement ajoutées à la file d'attente de l'automatisation. Pour plus d'informations, veuillez consulter la rubrique [Quotas de service Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm) dans la *Référence générale d'Amazon Web Services*. 
   + Pour **Error threshold (Seuil d'erreurs)**, spécifiez quand arrêter l'exécution de l'automatisation sur d'autres cibles après son échec sur un nombre ou un pourcentage de cibles. Par exemple, si vous spécifiez trois erreurs, puis que Systems Manager arrête l'exécution de l'automatisation, alors la quatrième erreur est reçue. Les cibles traitant toujours l'automatisation pourraient également envoyer des erreurs.

1. Dans la section **Input Parameters (Paramètres d'entrée)**, spécifiez les paramètres du runbook. Pour les runbooks, le système fournit automatiquement certaines des valeurs. Vous pouvez conserver ou remplacer ces valeurs.
**Important**  
Pour les runbooks, vous pouvez éventuellement spécifier un rôle responsable Automation. Si vous ne spécifiez pas de rôle pour ce paramètre, l'automatisation endosse le rôle de service de fenêtre de maintenance que vous avez choisi à l'étape 11. Vous devez donc vous assurer que le rôle de service de fenêtre de maintenance que vous choisissez dispose des autorisations Gestion des identités et des accès AWS (IAM) appropriées pour effectuer les actions définies dans le runbook.   
Par exemple, le rôle lié à un service pour Systems Manager ne dispose pas de l'autorisation IAM `ec2:CreateSnapshot`, ce qui est nécessaire pour exécuter le runbook `AWS-CopySnapshot`. Dans ce scénario, vous devez utiliser un rôle de service de fenêtre de maintenance personnalisé ou spécifier un rôle responsable Automation qui dispose des autorisations `ec2:CreateSnapshot`. Pour plus d'informations, consultez [Configuration d'Automation](automation-setup.md).

1. Dans la zone **IAM service role** (Fonction du service),choisissez un rôle pour fournir les autorisations permettant à Systems Manager de lancer l'automatisation.

   Pour créer une fonction du service personnalisée pour les tâches de fenêtre de maintenance, consultez la rubrique [Configuration de Maintenance Windows](setting-up-maintenance-windows.md).

1. Sélectionnez **Enregistrer la tâche d'automatisation**.

## Enregistrement d'une automatisation dans une fenêtre de maintenance (ligne de commande)
<a name="register-automation-task-maintenance-window-cli"></a>

La procédure suivante décrit comment utiliser AWS CLI (sous Linux ouWindows Server) ou comment Outils AWS pour PowerShell configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance.

**Avant de commencer**  
Avant d'exécuter la procédure suivante, vous devez créer une fenêtre de maintenance et enregistrer au moins une cible. Pour de plus amples informations, consultez les procédures suivantes.
+ [Étape 1 : Créez la fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-create-mw.md).
+ [Étape 2 : Enregistrez un nœud cible dans la fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-targets.md)

**Pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Créez une commande pour configurer une automatisation en tant que tâche enregistrée pour une fenêtre de maintenance. Remplacez chaque *example resource placeholder* par vos propres informations.

------
#### [ 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
   ```

**Note**  
Si vous configurez une automatisation en tant que tâche enregistrée à l'aide du paramètre AWS CLI, utilisez le `--Task-Invocation-Parameters` paramètre pour spécifier les paramètres à transmettre à une tâche lors de son exécution. N'utilisez pas le paramètre `--Task-Parameters`. Le paramètre `--Task-Parameters` est un paramètre hérité.  
Pour les tâches de la fenêtre de maintenance qui n'ont pas de cible spécifiée, vous ne pouvez pas fournir de valeurs pour `--max-errors` et `--max-concurrency`. Au lieu de cela, le système insère une valeur d'espace réservé de `1`, qui peut être rapportée dans la réponse à des commandes telles que [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) et [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). Ces valeurs n'affectent pas l'exécution de votre tâche et peuvent être ignorées.  
Pour obtenir des informations sur les tâches de la fenêtre de maintenance qui n'ont pas besoin de cibles, consultez [Enregistrement de tâches de fenêtre de maintenance sans cibles](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
   ```

**Note**  
Si vous configurez une automatisation en tant que tâche enregistrée à l'aide du paramètre AWS CLI, utilisez le `--task-invocation-parameters` paramètre pour spécifier les paramètres à transmettre à une tâche lors de son exécution. N'utilisez pas le paramètre `--task-parameters`. Le paramètre `--task-parameters` est un paramètre hérité.  
Pour les tâches de la fenêtre de maintenance qui n'ont pas de cible spécifiée, vous ne pouvez pas fournir de valeurs pour `--max-errors` et `--max-concurrency`. Au lieu de cela, le système insère une valeur d'espace réservé de `1`, qui peut être rapportée dans la réponse à des commandes telles que [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) et [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). Ces valeurs n'affectent pas l'exécution de votre tâche et peuvent être ignorées.  
Pour obtenir des informations sur les tâches de la fenêtre de maintenance qui n'ont pas besoin de cibles, consultez [Enregistrement de tâches de fenêtre de maintenance sans cibles](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
   ```

**Note**  
Si vous configurez une automatisation en tant que tâche enregistrée à l'aide du paramètre Outils AWS pour PowerShell, utilisez le `-Automation_Parameter` paramètre pour spécifier les paramètres à transmettre à une tâche lors de son exécution. N'utilisez pas le paramètre `-TaskParameters`. Le paramètre `-TaskParameters` est un paramètre hérité.  
Pour les tâches de la fenêtre de maintenance qui n'ont pas de cible spécifiée, vous ne pouvez pas fournir de valeurs pour `-MaxError` et `-MaxConcurrency`. Au lieu de cela, le système insère une valeur d'espace réservé de 1, qui peut être rapportée dans la réponse à des commandes telles que `Get-SSMMaintenanceWindowTaskList` et `Get-SSMMaintenanceWindowTask`. Ces valeurs n'affectent pas l'exécution de votre tâche et peuvent être ignorées.  
Pour obtenir des informations sur les tâches de la fenêtre de maintenance qui n'ont pas besoin de cibles, consultez [Enregistrement de tâches de fenêtre de maintenance sans cibles](maintenance-windows-targetless-tasks.md).

------

   L'exemple suivant configure une automatisation en tant que tâche enregistrée dans une fenêtre de maintenance avec la priorité 1. Il montre également que les options `--targets`, `--max-errors` et `--max-concurrency` peuvent être omises pour une tâche de fenêtre de maintenance sans cible. L'automatisation utilise le runbook `AWS-StartEC2Instance` et l'automatisation spécifiée endosse le rôle de démarrage des instances EC2 enregistrées en tant que cibles dans la fenêtre de maintenance. La fenêtre de maintenance exécute l'automatisation simultanément sur 5 instances maximum à chaque instant. En outre, la tâche enregistrée cesse d'être exécutée sur des instances supplémentaires pour un intervalle particulier si le nombre d'erreurs dépasse 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
   ```

------

   La commande renvoie des détails similaires à ce qui suit pour la nouvelle tâche enregistrée.

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

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

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

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

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

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

------

1. Pour afficher la tâche enregistrée, exécutez la commande suivante. Remplacez *maintenance windows ID* par vos propres informations.

------
#### [ 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
   ```

------

   Le système retourne des informations telles que les suivantes.

------
#### [ 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
   ```

------

# 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 : String  
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 : String  
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 : entier  
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 : entier  
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 : String  
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 : String  
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 : booléen  
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 : booléen  
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 }}"
```

# `aws:approve` - Suspendre une automatisation pour approbation manuelle
<a name="automation-action-approve"></a>

Interrompt temporairement une automatisation jusqu'à ce que les principaux désignés aient approuvé ou rejeté l'action. Une fois le nombre d'approbations requises atteint, l'automatisation reprend. Vous pouvez insérer l'étape d'approbation n'importe où dans la section `mainSteps` de votre runbook. 

**Note**  
Cette action ne prend pas en charge les automations multi-comptes et régionales. Le délai d'attente par défaut pour cette action est de 7 jours (604 800 secondes) et la valeur maximale est de 30 jours (2 592 000 secondes). Vous pouvez limiter ou étendre le délai d'attente en spécifiant le paramètre `timeoutSeconds` pour une étape `aws:approve`.

Dans l'exemple suivant, l'action `aws:approve` interrompt temporairement l'automatisation jusqu'à ce qu'un approbateur accepte ou rejette l'automatisation. Après approbation, l'automatisation exécute une PowerShell commande simple. 

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

------

Vous pouvez approuver ou refuser des automatisations en attente d'approbation dans la console.

**Pour approuver ou rejeter des automatisations en attente**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Sélectionnez l'option en regard d'un flux de travail Automation avec le statut **En attente**.  
![\[Accès à la page Approve/Deny Automatisation\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/automation-approve-action-aws.png)

1. Sélectionnez **Approve/Deny** (Approuver/Refuser).

1. Vérifiez les détails de l'automatisation.

1. Sélectionnez **Approuver** ou **Refuser**, saisissez un commentaire facultatif, puis sélectionnez **Soumettre**.

**Exemple d’entrée**

------
#### [ 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  
La rubrique Amazon Resource Name (ARN d'un Amazon Simple Notification Service (Amazon SNS) pour les approbations Automation. Lorsque vous spécifiez une étape `aws:approve` dans un runbook, Automation envoie un message à cette rubrique, permettant aux principaux de savoir qu'ils doivent approuver ou rejeter une étape d'automatisation. Le titre de la rubrique Amazon SNS doit avoir un préfixe contenant « Automation ».  
Type : chaîne  
Obligatoire : non

Message  
Les informations que vous souhaitez inclure dans la rubrique Amazon SNS lorsque la requête d'approbation est envoyée. Le message peut contenir un nombre maximum de 4 096 caractères.   
Type : chaîne  
Obligatoire : non

MinRequiredApprovals  
Le nombre minimum d'approbations requises pour que l'automatisation reprenne. Si vous ne spécifiez aucune valeur, le système en établit une par défaut. La valeur de ce paramètre doit être un nombre positif. La valeur de ce paramètre ne peut pas dépasser le nombre d'approbateurs défini par le paramètre `Approvers`.   
Type : Integer  
Obligatoire : non

Approbateurs  
Liste des principaux AWS authentifiés qui sont en mesure d'approuver ou de rejeter l'action. Le nombre maximum d'approbateurs est de 10. Vous pouvez spécifier des principaux à l'aide des formats suivants :  
+ Un nom d'utilisateur
+ Un ARN d'utilisateur
+ Un ARN de rôle IAM
+ Un ARN de rôle de responsable IAM
Type : StringList  
Obligatoire : oui

EnhancedApprovals  
Cette entrée n’est utilisée que pour les modèles Change Manager. Une liste de principaux authentifiés AWS qui sont en mesure d’approuver ou de rejeter l’action, le type de principal IAM et le nombre minimum d’approbateurs. Voici un exemple :  

```
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
```
Type : StringList  
Obligatoire : oui

**Sortie**

ApprovalStatus  
L'état d'approbation de l'étape. L'état peut avoir les valeurs suivantes : Approuvé, Rejeté ou En attente. En attente signifie qu'Automation attend la saisie des approbateurs.  
Type : Chaîne

ApproverDecisions  
Une carte JSON incluant la décision d'approbation de chaque approbateur.  
Type : MapList

# `aws:assertAwsResourceProperty`— Affirme un état de AWS ressource ou un état d'événement
<a name="automation-action-assertAwsResourceProperty"></a>

L'action `aws:assertAwsResourceProperty` vous permet d'imposer un état de ressource ou d'événement spécifique pour une étape d'automatisation.

**Note**  
L’action `aws:assertAwsResourceProperty` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

Pour plus d'exemples sur l'utilisation de cette action, veuillez consulter la rubrique [Exemples supplémentaires de runbook](automation-document-examples.md).

**Input**  
Les entrées sont définies par l'opération d'API que vous sélectionnez. 

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

------

Service  
L'espace de Service AWS noms qui contient l'opération d'API que vous souhaitez exécuter. Par exemple, l'espace de noms pour Systems Manager est `ssm`. L'espace de noms pour Amazon EC2 est `ec2`. Vous pouvez voir la liste des espaces de noms Service AWS pris en charge dans la section [Available Services](https://docs.aws.amazon.com/cli/latest/reference/#available-services) (Services disponibles) de la *Référence AWS CLI Command*.  
Type : Chaîne  
Obligatoire : oui

Api  
Le nom de l'opération d'API que vous voulez exécuter. Vous pouvez afficher les opérations d'API (également appelées méthodes) en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les opérations d'API (méthodes) pour Amazon Relational Database Service (Amazon RDS) sont répertoriées à la page suivante : [Méthodes pour Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html).  
Type : Chaîne  
Obligatoire : oui

Entrées d'opérations d'API  
Une ou plusieurs entrées d'opérations d'API. Vous pouvez afficher les entrées disponibles (également appelées paramètres) en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les méthodes pour Amazon RDS sont répertoriées sur la page suivante : [Méthodes Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). ****Choisissez la méthode [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) et faites défiler la page vers le bas pour voir les paramètres disponibles, tels que l'**DBInstanceidentifiant**, le nom et les valeurs.**** Utilisez le format suivant pour spécifier plusieurs entrées.  

```
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"
}
```
Type : déterminé par l'opération d'API choisie  
Obligatoire : oui

PropertySelector  
Le JSONPath vers un attribut spécifique dans l'objet de réponse. Vous pouvez afficher les objets de réponse en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les méthodes pour Amazon RDS sont répertoriées sur la page suivante : [Méthodes Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). **Choisissez la méthode [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) et faites défiler la page jusqu'à la section Structure de réponse.** **DBInstances**est répertorié en tant qu'objet de réponse.  
Type : Chaîne  
Obligatoire : oui

DesiredValues  
État attendu ou état à partir duquel l'automatisation se poursuit. Si vous spécifiez une valeur booléenne, vous devez utiliser une majuscule, comme True ou False.  
Type : StringList  
Obligatoire : oui

# `aws:branch` – exécuter les étapes d'automatisation conditionnelle
<a name="automation-action-branch"></a>

L'action `aws:branch` vous permet de créer une automatisation dynamique qui évalue plusieurs options en une seule étape, puis passe à une autre étape dans le runbook en fonction des résultats de cette évaluation. 

Lorsque vous spécifiez l'action `aws:branch` pour une étape, vous définissez des `Choices` que l'automatisation doit évaluer. Les `Choices` peuvent se baser sur une valeur que vous avez spécifiée dans la section `Parameters` du runbook ou sur une valeur dynamique générée comme sortie à partir de l'étape précédente. L'automatisation évalue chaque choix à l'aide d'une expression booléenne. Si le premier choix est true, l'automatisation passe à l'étape désignée pour ce choix. Si le premier choix est false, l'automatisation évalue le choix suivant. L'automatisation continue d'évaluer chaque choix jusqu'à ce qu'il traite un choix défini sur true. L'automatisation accède ensuite à l'étape désignée correspondant au choix défini sur true.

Si aucun des choix n'est true, l'automatisation vérifie si l'étape contient une valeur `default`. La valeur par défaut définit une étape à laquelle l'automatisation doit passer si aucun des choix n'est défini sur true. Si aucune valeur `default` n'est spécifiée pour l'étape, l'automatisation traite l'étape suivante du runbook.

L'action `aws:branch` prend en charge les évaluations de choix complexes à l'aide d'une combinaison d'opérateurs `And`, `Not` et `Or`. Pour de plus amples informations sur l'utilisation d'`aws:branch`, y compris des exemples de runbooks et des exemples utilisant différents opérateurs, veuillez consulter [Utilisation d'instructions conditionnelles dans les runbooks](automation-branch-condition.md).

**Input**  
Spécifiez un ou plusieurs `Choices` dans une étape. Les `Choices` peuvent se baser sur une valeur que vous avez spécifiée dans la section `Parameters` du runbook ou sur une valeur dynamique générée comme sortie à partir de l'étape précédente. Voici un exemple de fichier YAML qui évalue un paramètre.

```
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
```

Voici un exemple de fichier YAML qui évalue la sortie d'une étape précédente.

```
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
```

Choix  
Une ou plusieurs expressions qu'Automation doit évaluer pour déterminer l'étape suivante à traiter. L'évaluation des choix repose sur une expression booléenne. Chaque choix doit définir les options suivantes :  
+ **NextStep**: étape suivante du runbook à traiter si le choix indiqué est vrai.
+ **Variable** : spécifiez le nom d'un paramètre qui est défini dans la section `Parameters` du runbook. Vous pouvez également spécifier un objet de sortie d'une étape précédente dans le runbook. Pour de plus amples informations sur la création de variables pour `aws:branch`, veuillez consulter [À propos de la création de la variable de sortie](automation-branch-condition.md#branch-action-output).
+ **Opération** : critères utilisés pour évaluer le choix. L'action `aws:branch` prend en charge les opérations suivantes :

**Opérations de chaîne**
  + StringEquals
  + EqualsIgnoreCase
  + StartsWith
  + EndsWith
  + Contains

**Opérations numériques**
  + NumericEquals
  + NumericGreater
  + NumericLesser
  + NumericGreaterOrEquals
  + NumericLesser
  + NumericLesserOrEquals

**Opération booléenne**
  + BooleanEquals
**Important**  
Lorsque vous créez un runbook, le système valide chaque opération dans le runbook. Si une opération n'est pas prise en charge, le système renvoie une erreur lorsque vous tentez de créer le runbook.

Par défaut  
Nom d'une étape à laquelle l'automatisation doit passer si aucun des `Choices` n'est true.  
Type : chaîne  
Obligatoire : non

**Note**  
L'action `aws:branch` prend en charge les opérateurs `And`, `Or` et `Not`. Pour obtenir des exemples `aws:branch` qui utilisent des opérateurs, veuillez consulter [Utilisation d'instructions conditionnelles dans les runbooks](automation-branch-condition.md).

# `aws:changeInstanceState` - Modifier ou affirmer le statut de l'instance
<a name="automation-action-changestate"></a>

Modifie ou affirme l'état de l'instance.

Cette action peut être utilisée en mode déclaration (n'exécute pas l'API pour modifier l'état, mais vérifie que l'instance affiche l'état souhaité.) Pour utiliser le mode assert, définissez le paramètre `CheckStateOnly` sur true. Ce mode est utile lorsque vous exécutez la commande Sysprep sous Windows Server, une commande asynchrone qui peut être exécutée en arrière-plan pendant longtemps. Vous pouvez veiller à ce que l'instance soit arrêtée avant de créer une Amazon Machine Image (AMI).

**Note**  
La valeur de délai d'expiration par défaut pour cette action est de 3600 secondes (une heure). Vous pouvez limiter ou étendre le délai d'attente en spécifiant le paramètre `timeoutSeconds` pour une étape `aws:changeInstanceState`.

**Note**  
L’action `aws:changeInstanceState` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Entrée**

------
#### [ 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  
Les IDs instances.  
Type : StringList  
Obligatoire : oui

CheckStateOnly  
Si la valeur est false, définit l'état de l'instance sur l'état souhaité. Si la valeur est true, déclare l'état souhaité à l'aide de l'interrogation.  
Valeur par défaut : `false`  
Type : booléen  
Obligatoire : non

DesiredState  
État souhaité. Lorsqu'elle est définie sur `running`, cette action attend que l'état Amazon EC2 indique `Running`, que le statut d'instance soit `OK` et que le statut système corresponde à `OK` avant de se terminer.  
Type : Chaîne  
Valeurs valides : `running` \$1 `stopped` \$1 `terminated`  
Obligatoire : oui

Force  
Si ce paramètre est défini, il oblige les instances à s'arrêter. Les instances n'ont pas la possibilité de vider les caches du système de fichiers ou les métadonnées du système de fichiers. Si vous utilisez cette option, vous devez effectuer un contrôle du système de fichiers et des procédures de réparation. Cette option n'est pas recommandée pour les instances EC2 pour Windows Server.  
Type : booléen  
Obligatoire : non

AdditionalInfo  
Instances réservées.  
Type : chaîne  
Obligatoire : non

**Output**  
Aucune

# `aws:copyImage` - Copier ou chiffrer une Amazon Machine Image
<a name="automation-action-copyimage"></a>

Copie un Amazon Machine Image (AMI) à partir de n'importe quel élément Région AWS dans la région actuelle. Cette action peut également chiffrer la nouvelle AMI.

**Note**  
L’action `aws:copyImage` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Input**  
Cette action prend en charge la plupart des paramètres `CopyImage`. Pour de plus amples informations, veuillez consulter [CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopyImage.html).

L'exemple suivant crée une copie d'une AMI dans la région de Séoul (`SourceImageID`: ami-0fe10819. `SourceRegion`: ap-northeast-2). La nouvelle AMI est copiée dans la région dans laquelle vous avez lancé l'action d'automatisation. L'AMI copiée sera chiffrée, car l'indicateur `Encrypted` facultatif est défini sur `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  
Région dans laquelle l'AMI source existe actuellement.  
Type : Chaîne  
Obligatoire : oui

SourceImageId  
ID d'AMI à copier à partir de la région source.  
Type : Chaîne  
Obligatoire : oui

ImageName  
Nom de la nouvelle image.  
Type : Chaîne  
Obligatoire : oui

ImageDescription  
Description de l'image cible.  
Type : chaîne  
Obligatoire : non

Encrypted  
Chiffrement de l'AMI cible.  
Type : booléen  
Obligatoire : non

KmsKeyId  
Nom complet de la ressource Amazon (ARN) AWS KMS key à utiliser lors du chiffrement des instantanés d'une image lors d'une opération de copie. Pour de plus amples informations, veuillez consulter [CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/api_copyimage.html).  
Type : chaîne  
Obligatoire : non

ClientToken  
Identifiant unique, sensible à la casse, que vous devez fournir afin de garantir l'idempotence de la demande. Pour de plus amples informations, veuillez consulter [CopyImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/api_copyimage.html).  
Type : chaîne  
Obligatoire : nonOutput

ImageId  
ID de l'image copiée.

ImageState  
État de l'image copiée.  
Valeurs valides : `available` \$1 `pending` \$1 `failed`

# `aws:createImage` – supprimer une Amazon Machine Image
<a name="automation-action-create"></a>

Crée une Amazon Machine Image (AMI) depuis une instance qui est soit en cours d’exécution, soit en cours d’arrêt, soit arrêtée, et demande à ce que le `ImageState` soit `available`.

**Note**  
L’action `aws:createImage` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Input**  
Cette action prend en charge les paramètres `CreateImage` suivants. Pour de plus amples informations, veuillez consulter [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 de l’instance.  
Type : Chaîne  
Obligatoire : oui

ImageName  
Nom de l'image.  
Type : Chaîne  
Obligatoire : oui

ImageDescription  
Description de l'image.  
Type : chaîne  
Obligatoire : non

NoReboot  
Littéral booléen.  
Par défaut, Amazon Elastic Compute Cloud (Amazon EC2) tente d'arrêter et redémarrer l'instance avant de créer l'image. Si l'option **No Reboot (Pas de redémarrage)** est définie sur `true`, Amazon EC2 n'arrête pas l'instance avant de créer l'image. Une fois cette option utilisée, l'intégrité du système de fichiers sur l'image créée ne peut pas être garantie.   
Si vous ne souhaitez pas que l'instance s'exécute après avoir créé une instance AMI à partir de celle-ci, utilisez d'abord l'[`aws:changeInstanceState` - Modifier ou affirmer le statut de l'instance](automation-action-changestate.md)action pour arrêter l'instance, puis utilisez cette `aws:createImage` action avec l'**NoReboot**option définie sur`true`.  
Type : booléen  
Obligatoire : non

BlockDeviceMappings  
Périphériques de stockage en mode bloc pour l'instance.  
Type: carte (map)  
Obligatoire : nonOutput

ImageId  
ID de l'image nouvellement créée.  
Type : Chaîne

ImageState  
État actuel de l'image. Si l'état est disponible, l'image est enregistrée avec succès et peut être utilisée pour lancer une instance.  
Type : Chaîne

# `aws:createStack`— Crée une CloudFormation pile
<a name="automation-action-createstack"></a>

Crée une AWS CloudFormation pile à partir d'un modèle.

**Note**  
L’action `aws:createStack` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

Pour plus d'informations sur la création de CloudFormation piles, consultez la référence [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html)de l'*AWS CloudFormation API*. 

**Entrée**

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

------

Fonctionnalités  
Une liste de valeurs que vous avez spécifiées auparavant CloudFormation peut créer certaines piles. Certains modèles de pile incluent des ressources qui peuvent affecter les autorisations de votre Compte AWS. Pour ces piles, vous devez explicitement reconnaître leurs capacités en spécifiant ce paramètre.   
Les valeurs valides sont `CAPABILITY_IAM`, `CAPABILITY_NAMED_IAM` et `CAPABILITY_AUTO_EXPAND`.   
**CAPABILITY\$1IAM et CAPABILITY\$1NAMED\$1IAM**  
Si vous disposez de ressources IAM, vous pouvez spécifier l’une ou l’autre de ces capacités. Si vous disposez de ressources IAM avec des noms personnalisés, vous devez spécifier `CAPABILITY_NAMED_IAM`. Si vous ne spécifiez pas ce paramètre, cette action renvoie une erreur `InsufficientCapabilities`. Les ressources suivantes exigent que vous spécifiiez `CAPABILITY_IAM` ou `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)
Si votre modèle de pile contient ces ressources, nous vous recommandons de vérifier toutes les autorisations qui y sont associées et de les modifier, si nécessaire.   
Pour plus d'informations, voir [Reconnaissance des ressources IAM dans les CloudFormation modèles](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html#capabilities).   
**CAPABILITY\$1AUTO\$1EXPAND**  
Certains modèles contiennent des macros. Les macros effectuent un traitement personnalisé sur les modèles ; cela peut inclure des actions simples telles que des find-and-replace opérations ou des transformations étendues de modèles entiers. De ce fait, les utilisateurs créent généralement un jeu de modifications à partir du modèle traité, afin de pouvoir examiner les modifications résultant des macros avant de créer réellement la pile. Si votre modèle de pile contient une ou plusieurs macros et que vous choisissez de créer une pile directement à partir du modèle traité, sans examiner au préalable les modifications qui en résultent dans un jeu de modifications, vous devez reconnaître cette fonctionnalité. 
Pour plus d'informations, consultez la section [Utilisation de AWS CloudFormation macros pour effectuer un traitement personnalisé sur des modèles](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html) dans le *Guide de AWS CloudFormation l'utilisateur*.  
Type : tableau de chaînes  
Valeurs valides : `CAPABILITY_IAM | CAPABILITY_NAMED_IAM | CAPABILITY_AUTO_EXPAND`  
Obligatoire : non

ClientRequestToken  
Identifiant unique pour cette CreateStack demande. Spécifiez ce jeton si vous définissez maxAttempts dans cette étape sur une valeur supérieure à 1. En spécifiant ce jeton CloudFormation , vous savez que vous n'essayez pas de créer une nouvelle pile portant le même nom.  
Type : chaîne  
Obligatoire : non  
Contraintes de longueur : longueur minimale de 1 caractère. Longueur maximale de 128.  
Modèle : [a-zA-Z0-9][-a-zA-Z0-9]\$1

DisableRollback  
Définir sur `true` pour désactiver la restauration de la pile si la création de pile a échoué.  
Conditionnel : Vous pouvez spécifier le paramètre `DisableRollback` ou le paramètre `OnFailure`, mais pas les deux.   
Valeur par défaut : `false`  
Type : booléen  
Obligatoire : non

Notification ARNs  
 ARNs Rubrique Amazon Simple Notification Service (Amazon SNS) consacrée à la publication d'événements liés à la pile. [Vous pouvez accéder à la rubrique SNS à ARNs l'aide de la console https://console.aws.amazon.com/sns/ Amazon SNS, v3/home.](https://console.aws.amazon.com/sns/v3/home)   
Type : tableau de chaînes  
Membres du tableau : Nombre maximum de 5 éléments.  
Obligatoire : non

OnFailure  
Détermine l'action à mener si la création de pile a échoué. Vous devez spécifier `DO_NOTHING`, `ROLLBACK` ou `DELETE`.  
Conditionnel : Vous pouvez spécifier le paramètre `OnFailure` ou le paramètre `DisableRollback`, mais pas les deux.   
Valeur par défaut : `ROLLBACK`  
Type : chaîne  
Valeurs valides :` DO_NOTHING | ROLLBACK | DELETE`  
Obligatoire : non

Parameters  
Une liste de structures `Parameter` qui spécifie les paramètres d'entrée pour la pile. Pour plus d'informations, consultez le type de données [Paramètre](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html).   
Type : tableau d'objets [Paramètre](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Parameter.html)   
Obligatoire : non

ResourceTypes  
Les types de ressource du modèle avec lesquels vous avez l'autorisation de travailler pour cette action de création de pile. Par exemple : `AWS::EC2::Instance`, `AWS::EC2::*` ou `Custom::MyCustomInstance`. Utilisez la syntaxe suivante pour décrire les types de ressource du modèle.  
+ Pour toutes les AWS ressources :

  ```
  AWS::*
  ```
+ Pour toutes les ressources personnalisées :

  ```
  Custom::*
  ```
+ Pour une ressource personnalisée spécifique :

  ```
  Custom::logical_ID
  ```
+ Pour toutes les ressources d'un Service AWS spécifique :

  ```
  AWS::service_name::*
  ```
+ Pour une AWS ressource spécifique :

  ```
  AWS::service_name::resource_logical_ID
  ```
Si la liste de types de ressources n'inclut pas la ressource que vous êtes en train de créer, la création de pile échoue. Par défaut, CloudFormation accorde des autorisations à tous les types de ressources. IAM utilise ce paramètre pour les clés de condition CloudFormation spécifiques dans les politiques IAM. Pour plus d'informations, consultez la section [Contrôle de l'accès avec Gestion des identités et des accès AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html).   
Type : tableau de chaînes  
Contraintes de longueur : longueur minimale de 1 caractère. Longueur maximale de 256.  
Obligatoire : non

RoleARN  
Le nom de ressource Amazon (ARN) d'un rôle IAM CloudFormation censé créer la pile. CloudFormation utilise les informations d'identification du rôle pour passer des appels en votre nom. CloudFormation utilise toujours ce rôle pour toutes les futures opérations sur la pile. Tant que les utilisateurs ont l'autorisation d'opérer sur la pile, CloudFormation utilise ce rôle même si les utilisateurs n'ont pas l'autorisation de le transmettre. Vérifiez que le rôle accorde le plus faible nombre de privilèges.   
Si vous ne spécifiez aucune valeur, CloudFormation utilise le rôle précédemment associé à la pile. Si aucun rôle n'est disponible, CloudFormation utilise une session temporaire générée à partir de vos informations d'identification utilisateur.   
Type : Chaîne  
Contraintes de longueur : longueur minimale de 20. Longueur maximale de 2048.  
Obligatoire : non

StackName  
Le nom associé à la pile. Le nom doit être unique dans la région dans laquelle vous créez la pile.  
Un nom de pile ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d’union. Il doit commencer par un caractère alphabétique et ne doit pas dépasser 128 caractères. 
Type : Chaîne  
Obligatoire : oui

StackPolicyBody  
Structure contenant le corps de la politique de pile. Pour plus d’informations, consultez [Empêchement des mises à jour des ressources de la pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html).  
Conditionnel : Vous pouvez spécifier le paramètre `StackPolicyBody` ou le paramètre `StackPolicyURL`, mais pas les deux.   
Type : Chaîne  
Contraintes de longueur : longueur minimum de 1. Longueur maximale de 16384.  
Obligatoire : non

StackPolicyURL  
Emplacement d'un fichier contenant la politique de pile. L'URL doit pointer vers une politique située dans un compartiment S3 de la même région que la pile. La taille maximum autorisée pour la politique de pile est 16 Ko.  
Conditionnel : Vous pouvez spécifier le paramètre `StackPolicyBody` ou le paramètre `StackPolicyURL`, mais pas les deux.   
Type : Chaîne  
Contraintes de longueur : longueur minimum de 1. Longueur maximale de 1350.  
Obligatoire : non

Étiquettes  
Paires clé-valeur à associer à cette pile. CloudFormation propage également ces balises aux ressources créées dans la pile. Vous pouvez spécifier un nombre maximum de 10 balises.   
Type : tableau d'objets [Balise](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Tag.html)   
Obligatoire : non

TemplateBody  
Structure contenant le corps du modèle avec une longueur minimale de 1 octet et une longueur maximale de 51 200 octets. Pour plus d'informations, consultez [Anatomie du modèle](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html).   
Conditionnel : Vous pouvez spécifier le paramètre `TemplateBody` ou le paramètre `TemplateURL`, mais pas les deux.   
Type : Chaîne  
Contraintes de longueur : longueur minimum de 1.  
Obligatoire : non

TemplateURL  
Emplacement d'un fichier contenant le corps du modèle. L'URL doit pointer vers un modèle situé dans un compartiment S3. La taille maximum autorisée pour le modèle est 460 800 Ko. Pour plus d'informations, consultez [Anatomie du modèle](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html).   
Conditionnel : Vous pouvez spécifier le paramètre `TemplateBody` ou le paramètre `TemplateURL`, mais pas les deux.   
Type : Chaîne  
Contraintes de longueur : Longueur minimum de 1. Longueur maximale de 1024.  
Obligatoire : non

TimeoutInMinutes  
La durée qui peut s'écouler avant que l'état de la pile ne devienne `CREATE_FAILED`. Si `DisableRollback` n'est pas défini ou est défini sur `false`, la pile sera annulée.   
Type : entier  
Plage valide : Valeur minimum de 1.  
Obligatoire : non

## Sorties
<a name="automation-action-createstack-output"></a>

StackId  
Identifiant unique de la pile.  
Type : Chaîne

StackStatus  
Statut actuel de la pile.  
Type : Chaîne  
Valeurs valides : `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`  
Obligatoire : oui

StackStatusReason  
Message d'échec ou de succès associé au statut de la pile.  
Type : chaîne  
Obligatoire : non  
Pour de plus amples informations, veuillez consulter [CreateStack](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html).

## Considérations sur la sécurité
<a name="automation-action-createstack-security"></a>

Avant de pouvoir utiliser l'action `aws:createStack`, vous devez attribuer la politique suivante au rôle responsable Automation IAM. Pour de plus amples informations sur le rôle de responsable, veuillez consulter [Tâche 1 : Création d'un rôle de service pour Automation](automation-setup-iam.md#create-service-role). 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "sqs:*",
            "cloudformation:CreateStack",
            "cloudformation:DescribeStacks"
         ],
         "Resource":"*"
      }
   ]
}
```

------

# `aws:createTags`— Crée des tags pour les AWS ressources
<a name="automation-action-createtag"></a>

Crée de nouvelles balises pour les instances Amazon Elastic Compute Cloud (Amazon EC2) ou les instances AWS Systems Manager gérées.

**Note**  
L’action `aws:createTags` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Input**  
Cette action prend en charge la plupart des paramètres `CreateTags` d'Amazon EC2 et `AddTagsToResource` de Systems Manager. Pour plus d’informations, consultez [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/api_createtags.html) et [AddTagsToResource](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/api_addtagstoresource.html).

L'exemple suivant montre comment baliser une Amazon Machine Image (AMI) et une instance comme étant des ressources de production pour un service particulier.

------
#### [ 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 des ressources qui doivent être balisées. Si le type de ressources n'est pas « EC2 », ce champ peut uniquement contenir un seul élément.  
Type : Liste de chaînes  
Obligatoire : oui

Étiquettes  
Balises à associer aux ressources.  
Type : Liste des mappages  
Obligatoire : oui

ResourceType  
Type des ressources qui doivent être balisées. Si le type n'est pas indiqué, la valeur par défaut « EC2 » est utilisée.  
Type : chaîne  
Obligatoire : non  
Valeurs Valides: `EC2` \$1 `ManagedInstance` \$1 `MaintenanceWindow` \$1 `Parameter`

**Output**  
Aucune

# `aws:deleteImage` - Supprimer une Amazon Machine Image
<a name="automation-action-delete"></a>

Supprime l'Amazon Machine Image (AMI) spécifiée et tous les instantanés associés.

**Note**  
L’action `aws:deleteImage` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Input**  
Cette action prend en charge un seul paramètre. Pour plus d'informations, consultez la documentation relative à [DeregisterImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeregisterImage.html)et [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 de l'image à supprimer.  
Type : Chaîne  
Obligatoire : oui

**Output**  
Aucune

# `aws:deleteStack`— Supprime une CloudFormation pile
<a name="automation-action-deletestack"></a>

Supprime toute AWS CloudFormation pile.

**Note**  
L’action `aws:deleteStack` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Entrée**

------
#### [ 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  
Identifiant unique de cette règle `DeleteStack`. Spécifiez ce jeton si vous prévoyez de réessayer les demandes afin CloudFormation de savoir que vous n'essayez pas de supprimer une pile portant le même nom. Vous pouvez réessayer les requêtes `DeleteStack` pour vérifier que CloudFormation les a reçues.  
Type : Chaîne  
Contraintes de longueur : Longueur minimum de 1. Longueur maximale de 128.  
Modèle : [a-zA-Z][-a-zA-Z0-9]\$1  
Obligatoire : non

RetainResources.membre.n  
Cette entrée s'applique uniquement aux piles qui ont un statut `DELETE_FAILED`. Liste des ressources logiques IDs pour les ressources que vous souhaitez conserver. Lors de la suppression, CloudFormation supprime la pile, mais ne supprime pas les ressources conservées.  
La conservation des ressources s'avère utile lorsque vous ne pouvez pas supprimer une ressource, telle qu'un compartiment S3 non vide, mais que vous voulez supprimer la pile.  
Type : tableau de chaînes  
Obligatoire : non

RoleARN  
Le nom de ressource Amazon (ARN) d'un rôle Gestion des identités et des accès AWS (IAM) CloudFormation censé créer la pile. CloudFormation utilise les informations d'identification du rôle pour passer des appels en votre nom. CloudFormation utilise toujours ce rôle pour toutes les futures opérations sur la pile. Tant que les utilisateurs sont autorisés à opérer sur la pile, CloudFormation utilise ce rôle même s'ils n'ont pas l'autorisation de le transmettre. Vérifiez que le rôle accorde le plus faible nombre de privilèges.   
Si vous ne spécifiez aucune valeur, CloudFormation utilise le rôle précédemment associé à la pile. Si aucun rôle n'est disponible, CloudFormation utilise une session temporaire générée à partir de vos informations d'identification utilisateur.   
Type : Chaîne  
Contraintes de longueur : longueur minimale de 20. Longueur maximale de 2048.  
Obligatoire : non

StackName  
Le nom ou l'ID de la pile unique auquel la pile est associée.  
Type : Chaîne  
Obligatoire : oui

## Considérations sur la sécurité
<a name="automation-action-deletestack-security"></a>

Avant de pouvoir utiliser l'action `aws:deleteStack`, vous devez attribuer la politique suivante au rôle responsable Automation IAM. Pour de plus amples informations sur le rôle de responsable, veuillez consulter [Tâche 1 : Création d'un rôle de service pour Automation](automation-setup-iam.md#create-service-role). 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "sqs:*",
            "cloudformation:DeleteStack",
            "cloudformation:DescribeStacks"
         ],
         "Resource":"*"
      }
   ]
}
```

------

# `aws:executeAutomation` - Exécuter une autre automatisation
<a name="automation-action-executeAutomation"></a>

Exécute une automatisation secondaire en appelant un runbook secondaire. Par cette action, vous pouvez créer des runbooks pour vos opérations les plus courantes et vous y référer durant une automatisation. Cette action peut simplifier vos runbooks en supprimant la nécessité de dupliquer les étapes sur les runbooks similaires.

L'automatisation secondaire s'exécute dans le cadre de l'utilisateur qui a lancé l'automatisation principale. Cela signifie que l'automatisation secondaire utilise le même rôle ou utilisateur Gestion des identités et des accès AWS (IAM) que l'utilisateur qui a lancé la première automatisation.

**Important**  
Si vous spécifiez les paramètres d'une automatisation secondaire qui utilise un rôle de responsable (un rôle ayant recours à la politique iam:passRole), l'utilisateur ou le rôle qui a lancé l'automatisation principale doit donc avoir l'autorisation de transférer ce rôle de responsable dans l'automatisation secondaire. Pour de plus amples informations sur la configuration d'un rôle de responsable pour l'automatisation, consultez [Créer les rôles de service pour l’automatisation à l’aide de la console](automation-setup-iam.md).

**Entrée**

------
#### [ 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  
Le nom du runbook secondaire à exécuter pendant cette étape. Pour les runbooks identiques Compte AWS, spécifiez le nom du runbook. Pour les runbooks partagés depuis un autre Compte AWS, spécifiez le nom de ressource Amazon (ARN) du runbook. Pour obtenir des informations sur l'utilisation de runbooks partagés, consultez [Utilisation de documents SSM partagés](documents-ssm-sharing.md#using-shared-documents).  
Type : Chaîne  
Obligatoire : oui

DocumentVersion  
La version du runbook secondaire à exécuter. Si elle n'est pas spécifiée, Automation exécute la version du runbook par défaut.  
Type : chaîne  
Obligatoire : non

MaxConcurrency  
Nombre maximum de cibles pour lesquelles cette tâche peut être exécutée en parallèle. Vous pouvez spécifier un nombre tel que 10 ou un pourcentage tel que 10 %.  
Type : chaîne  
Obligatoire : non

MaxErrors  
Nombre d'erreurs autorisées avant que le système ne cesse d'exécuter l'automatisation sur des cibles supplémentaires. Vous pouvez spécifier un nombre absolu d'erreurs, par exemple 10, ou un pourcentage de l'ensemble de la cible, par exemple 10 %. Par exemple, si vous spécifiez 3, le système cesse d'envoyer l'exécution de l'automatisation à la réception de la quatrième erreur. Si vous spécifiez 0, le système cesse d'exécuter l'automatisation à des cibles supplémentaires une fois que le premier résultat d'erreur est renvoyé. Si vous exécutez une automatisation sur 50 ressources et que vous définissez `MaxErrors` sur 10 %, le système cesse d'exécuter l'automatisation sur des cibles supplémentaires à réception de la sixième erreur.  
Les automatisations qui sont déjà en cours d'exécution quand le seuil `MaxErrors` est atteint sont autorisées à se terminer, mais certaines de ces automatisations peuvent également échouer. Si vous devez vous assurer que le nombre d'échecs d'automatisations ne dépassera pas la valeur `MaxErrors` spécifiée, définissez `MaxConcurrency` sur 1 de sorte que les automatisations s'exécutent une à la fois.  
Type : chaîne  
Obligatoire : non

RuntimeParameters  
Paramètres requis pour le runbook secondaire. Le mappage utilise le format suivant : \$1"parameter1" : "value1", "parameter2" : "value2" \$1  
Type: carte (map)  
Obligatoire : non

Étiquettes  
Métadonnées facultatives que vous affectez à une ressource. Vous pouvez spécifier cinq balises maximum pour une automatisation.  
Type : MapList  
Obligatoire : non

TargetLocations  
Un emplacement est une combinaison de Régions AWS et/ou de l' Comptes AWS endroit où vous souhaitez exécuter l'automatisation. Vous devez spécifier un nombre minimum de 1 élément et un nombre maximum de 100 éléments. Lorsque vous spécifiez une valeur pour ce paramètre, les sorties ne sont pas renvoyées à l’automatisation parent. Si nécessaire, vous devez effectuer des appels ultérieurs aux opérations d’API pour récupérer le résultat des automatisations enfants.  
Type : MapList  
Obligatoire : non

TargetMaps  
Une liste de mappages clé-valeur des paramètres du document aux ressources cibles. Il n'est pas possible de spécifier `Targets` et `TargetMaps` ensemble.   
Type : MapList  
Obligatoire : non

TargetParameterName  
Le nom du paramètre utilisé comme ressource cible pour l'automatisation à débit contrôlé. Requis uniquement si vous spécifiez `Targets`.  
Type : chaîne  
Obligatoire : non

Targets  
Une liste de mappages clé-valeur aux ressources cibles. Requis uniquement si vous spécifiez `TargetParameterName`.  
Type : MapList  
Obligatoire : nonOutput

Output  
La sortie générée par l'automatisation secondaire. Vous pouvez référencer la sortie en utilisant le format suivant : *Secondary\$1Automation\$1Step\$1Name* .Output  
Type : StringList  
Voici un exemple :  

```
- 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  
L'ID de l'automatisation secondaire.  
Type : Chaîne

Statut  
Le statut de l'automatisation secondaire.  
Type : Chaîne

# `aws:executeAwsApi`— Appelez et exécutez des opérations AWS d'API
<a name="automation-action-executeAwsApi"></a>

Appelle et exécute des opérations d' AWS API. La plupart des opérations d'API sont prises en charge, bien que toutes n'aient pas été testées. Les opérations de l'API de streaming, telles que l'[GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)opération, ne sont pas prises en charge. Si vous n’êtes pas sûr qu’une opération d’API que vous voulez utiliser est une opération de streaming, consultez la documentation [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) pour le service afin de déterminer si une API nécessite des entrées ou des sorties en streaming. Nous mettons régulièrement à jour la version Boto3 utilisée par cette action. Cependant, après la sortie d'une nouvelle version de Boto3, quelques semaines peuvent être nécessaires pour que les modifications soient prises en compte dans cette action. Chaque action `aws:executeAwsApi` peut être exécutée jusqu'à une durée maximale de 25 secondes. Pour plus d'exemples sur l'utilisation de cette action, veuillez consulter la rubrique [Exemples supplémentaires de runbook](automation-document-examples.md).

**Note**  
L’action `aws:executeAwsApi` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Inputs**  
Les entrées sont définies par l'opération d'API que vous sélectionnez. 

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

------

Service  
L'espace de Service AWS noms qui contient l'opération d'API que vous souhaitez exécuter. Vous pouvez consulter la liste des Service AWS espaces de noms pris en charge dans les [services disponibles](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) du AWS SDK pour Python (Boto3). L'espace de noms se trouve dans la section **Client** . Par exemple, l'espace de noms pour Systems Manager est `ssm`. L'espace de noms pour Amazon Elastic Compute Cloud (Amazon EC2) est `ec2`.  
Type : Chaîne  
Obligatoire : oui

Api  
Le nom de l'opération d'API que vous voulez exécuter. Vous pouvez afficher les opérations d'API (également appelées méthodes) en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les opérations d'API (méthodes) pour Amazon Relational Database Service (Amazon RDS) sont répertoriées à la page suivante : [Méthodes pour Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html).  
Type : Chaîne  
Obligatoire : oui

Entrées d'opérations d'API  
Une ou plusieurs entrées d'opérations d'API. Vous pouvez afficher les entrées disponibles (également appelées paramètres) en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les méthodes pour Amazon RDS sont répertoriées sur la page suivante : [Méthodes Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). ****Choisissez la méthode [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) et faites défiler la page vers le bas pour voir les paramètres disponibles, tels que l'**DBInstanceidentifiant**, le nom et les valeurs.****  

```
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"
}
```
Type : déterminé par l'opération d'API choisie  
Obligatoire : oui

**Sorties**  
Les sorties sont spécifiées par l'utilisateur en fonction de la réponse de l'opération d'API choisie.

Nom  
Nom de la sortie.  
Type : Chaîne  
Obligatoire : oui

Selector  
Le JSONPath vers un attribut spécifique dans l'objet de réponse. Vous pouvez afficher les objets de réponse en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les méthodes pour Amazon RDS sont répertoriées sur la page suivante : [Méthodes Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). **Choisissez la méthode [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) et faites défiler la page jusqu'à la section Structure de réponse.** **DBInstances**est répertorié en tant qu'objet de réponse.  
Type : entier, booléen, chaîne de caractères StringList, ou StringMap MapList  
Obligatoire : oui

Type  
Type de données de l'élément de réponse.  
Type : variable  
Obligatoire : oui

# `aws:executeScript` - Exécuter un script
<a name="automation-action-executeScript"></a>

Exécute le Python ou le PowerShell script fourni à l'aide du runtime et du gestionnaire spécifiés. Chaque action `aws:executeScript` peut être exécutée jusqu'à une durée maximale de 600 secondes (10 minutes). Vous pouvez limiter le délai d'attente en spécifiant le paramètre `timeoutSeconds` pour une étape `aws:executeScript`.

Utilisez les instructions de retour dans votre fonction pour ajouter des sorties à votre charge utile de sortie. Pour des exemples de définition de sorties pour votre action `aws:executeScript`, consultez [Exemple 2 : runbook scripté](automation-authoring-runbooks-scripted-example.md). Vous pouvez également envoyer le résultat des `aws:executeScript` actions de vos runbooks vers le groupe de CloudWatch journaux Amazon Logs que vous spécifiez. Pour de plus amples informations, veuillez consulter [Résultat de l'action d'automatisation de la CloudWatch journalisation avec journaux](automation-action-logging.md).

Si vous souhaitez envoyer le résultat des `aws:executeScript` actions vers CloudWatch Logs, ou si les scripts que vous spécifiez pour les `aws:executeScript` actions appellent des opérations d' AWS API, un rôle de service Gestion des identités et des accès AWS (IAM) (ou un rôle assumé) est toujours requis pour exécuter le runbook.

**Note**  
L’action `aws:executeScript` ne prend pas en charge la limitation des nouvelles tentatives. Si votre script effectue des appels AWS d'API susceptibles d'être limités, vous devez implémenter votre propre logique de nouvelle tentative dans le code de votre script.

L'`aws:executeScript`action contient les modules PowerShell Core préinstallés suivants :
+ Microsoft. PowerShell.Hôte
+ Microsoft. PowerShell. Gestion
+ Microsoft. PowerShell.Sécurité
+ Microsoft. PowerShell.Utilitaire
+ PackageManagement
+ PowerShellGet

Pour utiliser des modules PowerShell Core qui ne sont pas préinstallés, votre script doit installer le module avec l'`-Force`indicateur, comme indiqué dans la commande suivante. Le module `AWSPowerShell.NetCore` n'est pas pris en charge. *ModuleName*Remplacez-le par le module que vous souhaitez installer.

```
Install-Module ModuleName -Force
```

Pour utiliser les applets de commande PowerShell Core dans votre script, nous vous recommandons d'utiliser les `AWS.Tools` modules, comme indiqué dans les commandes suivantes. Remplacez chaque *example resource placeholder* par vos propres informations.
+ cmdlets Amazon S3.

  ```
  Install-Module AWS.Tools.S3 -Force
  Get-S3Bucket -BucketName amzn-s3-demo-bucket
  ```
+ cmdlets Amazon EC2.

  ```
  Install-Module AWS.Tools.EC2 -Force
  Get-EC2InstanceStatus -InstanceId instance-id
  ```
+ Applets de AWS Tools for Windows PowerShell commande communs ou indépendants du service.

  ```
  Install-Module AWS.Tools.Common -Force
  Get-AWSRegion
  ```

Si votre script initialise de nouveaux objets en plus d'utiliser les applets de commande PowerShell Core, vous devez également importer le module comme indiqué dans la commande suivante.

```
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
```

Pour des exemples d'installation et d'importation de `AWS.Tools` modules, ainsi que d'utilisation d'applets de commande PowerShell Core dans des runbooks, consultez. [Expérience de conception visuelle pour les runbooks d’Automatisation](automation-visual-designer.md)

**Input**  
Fournissez les informations requises pour exécuter votre script. Remplacez chaque *example resource placeholder* par vos propres informations.

**Note**  
La pièce jointe d'un script Python peut être un fichier .py ou .zip contenant le script. PowerShell les scripts doivent être stockés dans des fichiers .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"
    }
}
```

------

Environnement d’exécution  
Langage d'exécution à utiliser pour exécuter le script fourni. `aws:executeScript`prend en charge les environnements d'exécution décrits dans le tableau suivant.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/automation-action-executeScript.html)
Type : Chaîne  
Obligatoire : oui  
Pour les environnements d’exécution Python, l’environnement fournit 512 Mo de mémoire et 512 Mo d’espace disque. Pour les environnements PowerShell d'exécution, l'environnement fournit 1024 Mo de mémoire et 512 Mo d'espace disque.

Handler (Gestionnaire)  
Le nom de votre fonction. Vous devez vous assurer que la fonction définie dans le gestionnaire possède deux paramètres, `events` et `context`. Le PowerShell moteur d'exécution ne prend pas en charge ce paramètre.  
Type : Chaîne  
Obligatoire : Oui (Python) \$1 Non pris en charge (PowerShell)

InputPayload  
Objet JSON ou YAML qui sera transmis au premier paramètre du gestionnaire. Il peut être utilisé pour transmettre des données d'entrée au script.  
Type : chaîne  
Obligatoire : non  

```
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  
Script incorporé que vous souhaitez exécuter pendant l'automatisation.  
Type : Chaîne  
Obligatoire : Non (Python) \$1 Oui (PowerShell)

Réseau de transit par passerelle  
Nom d'un fichier de script autonome ou .zip pouvant être appelé par l'action. Indiquez la même valeur que le `Name` du fichier de pièce jointe du document que vous indiquez dans le paramètre de requête `Attachments`. Pour plus d'informations, consultez [Pièces jointes](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateDocument.html#systemsmanager-CreateDocument-request-Attachments) dans *AWS Systems Manager la référence API *. Le fournissement d'un script à l'aide d'une pièce jointe nécessite également la définition d'une section `files` dans les éléments de niveau supérieur de votre runbook. Pour de plus amples informations, veuillez consulter [Version de schéma 0.3](documents-schemas-features.md#automation-doc-syntax-examples).  
Pour appeler un fichier pour Python, utilisez le format `filename.method_name` dans `Handler`.   
La pièce jointe d'un script Python peut être un fichier .py ou .zip contenant le script. PowerShell les scripts doivent être stockés dans des fichiers .zip.
Lorsque vous incluez des bibliothèques Python dans votre pièce jointe, nous vous recommandons d'ajouter un fichier `__init__.py` vide dans chaque répertoire de module. Cela vous permet d'importer les modules de la bibliothèque de votre pièce jointe dans le contenu de votre script. Par exemple : `from library import module`  
Type : chaîne  
Obligatoire : nonOutput

Charge utile  
Représentation JSON de l'objet renvoyé par votre fonction. Jusqu'à 100 Ko sont renvoyés. La génération d'une liste permet le renvoi d'un maximum de 100 éléments.

## Utiliser des attachements avec aws:executeScript
<a name="automation-action-executeScript-attachments"></a>

Les attachements constituent un moyen puissant d’empaqueter et de réutiliser des scripts complexes, des modules multiples et des dépendances externes dans le cadre de vos actions `aws:executeScript`. Utilisez des attachements lorsque vous devez :
+ Package de plusieurs modules ou PowerShell scripts Python ensemble.
+ Réutiliser la même logique de script sur plusieurs dossiers d’exploitation.
+ Inclure des bibliothèques ou des dépendances externes dans vos scripts.
+ Garder la définition de votre dossier d’exploitation propre en séparant les logiques de script complexes.
+ Partager des packages de scripts entre des équipes ou des flux de travail d’automatisation.

### Structure d’empaquetage des attachements
<a name="automation-action-executeScript-attachment-structure"></a>

Vous pouvez attacher des fichiers uniques ou des packages zip contenant plusieurs fichiers. La structure dépend de votre cas d’utilisation :

**Attachement d’un seul fichier**  
Pour les scripts simples, vous pouvez joindre un seul `.py` fichier (Python) ou un `.zip` fichier contenant un seul PowerShell script.

**Packages multimodules**  
Pour une automatisation complexe nécessitant plusieurs modules, créez un package zip avec la structure recommandée suivante :

```
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
```

**Important**  
Pour les packages Python, vous devez inclure un fichier `__init__.py` vide dans chaque répertoire contenant des modules Python. Cela vous permet d’importer des modules en utilisant la syntaxe d’importation standard de Python, comme `from utils import helper_functions`.

**PowerShell structure du package**  
PowerShell les pièces jointes doivent être regroupées dans des fichiers zip dont la structure est la suivante :

```
my-powershell-package.zip
├── Main.ps1                  # Entry point script
├── Modules/
│   ├── HelperFunctions.ps1   # Utility functions
│   └── AWSOperations.ps1     # AWS-specific operations
└── Config/
    └── Settings.ps1          # Configuration settings
```

### Créer des dossiers d’exploitation avec des attachements
<a name="automation-action-executeScript-attachment-workflow"></a>

Pour créer des dossiers d’exploitation utilisant des attachements, procédez comme suit :

1. **Charger votre attachement sur Amazon S3**

   Chargez votre fichier de script ou votre package zip dans un compartiment S3 auquel votre rôle d’automatisation peut accéder. Notez l’URI S3 pour l’utiliser lors de l’étape suivante.

   ```
   aws s3 cp my-automation-package.zip s3://my-automation-bucket/scripts/
   ```

1. **Calculer la somme de contrôle de l’attachement**

   Calculez la somme de contrôle SHA-256 de votre fichier d’attachement à des fins de vérification de sécurité :

   ```
   # Linux/macOS
   shasum -a 256 my-automation-package.zip
   
   # Windows PowerShell
   Get-FileHash -Algorithm SHA256 my-automation-package.zip
   ```

1. **Définir la section des fichiers dans votre dossier d’exploitation**

   Ajoutez une section `files` au niveau supérieur de votre dossier d’exploitation pour référencer votre attachement :

   ```
   files:
     my-automation-package.zip:
       checksums:
         sha256: "your-calculated-checksum-here"
   ```

1. **Référencer l’attachement dans votre étape executeScript**

   Utilisez le paramètre `Attachment` pour référencer le fichier que vous avez chargé :

   ```
   - name: runMyScript
     action: aws:executeScript
     inputs:
       Runtime: python3.11
       Handler: main.process_data
       Attachment: my-automation-package.zip
       InputPayload:
         inputData: "{{InputParameter}}"
   ```

## Exemples d’attachement aws:executeScript
<a name="automation-action-executeScript-examples"></a>

Les exemples suivants illustrent les différentes manières d’utiliser les attachements avec l’action `aws:executeScript`.

### Exemple 1 : attachement d’un seul fichier
<a name="automation-action-executeScript-single-file-example"></a>

Cet exemple montre comment utiliser un seul fichier Python en tant qu’attachement pour traiter les données d’une instance EC2.

**Fichier d’attachement : process\$1instance.py**  
Créez un fichier Python avec le contenu suivant :

```
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
```

**Dossier d’exploitation complet**  
Voici le dossier d’exploitation complet qui utilise l’attachement unique :

```
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
```

### Exemple 2 : package multimodule
<a name="automation-action-executeScript-multi-module-example"></a>

Cet exemple illustre l’utilisation d’un package zip contenant plusieurs modules Python pour des opérations de compartiment S3 complexes.

**Structure du package**  
Créez un package zip avec la structure suivante :

```
s3-operations.zip
├── main.py
├── utils/
│   ├── __init__.py
│   ├── s3_helper.py
│   └── validation.py
└── config/
    ├── __init__.py
    └── settings.py
```

**main.py (point d’entrée)**  
Le script principal qui orchestre les opérations :

```
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
```

## Résolution des attachements aws:executeScript
<a name="automation-action-executeScript-troubleshooting"></a>

Suivez ces instructions pour résoudre les problèmes courants liés aux attachements `aws:executeScript` :

**Erreurs d’importation de module**  
Si vous recevez des erreurs d’importation lors de l’utilisation de packages multimodules :
+ Assurez-vous d’avoir inclus un fichier `__init__.py` vide dans chaque répertoire contenant des modules Python.
+ Vérifiez que vos instructions d’importation correspondent à la structure réelle de fichiers et de répertoires de votre package zip.
+ Utilisez les importations relatives (par exemple `from .utils import helper`) ou absolues (par exemple `from utils import helper`) de manière cohérente.

**Erreurs d’attachement introuvable**  
Si votre automatisation ne trouve pas l’attachement :
+ Vérifiez que la valeur du paramètre `Attachment` correspond exactement à la clé de votre section `files`.
+ Vérifiez que le chemin de votre compartiment S3 et le nom de fichier sont corrects dans la section `files`.
+ Assurez-vous que votre rôle d’automatisation a l’autorisation `s3:GetObject` pour l’emplacement S3 de l’attachement.
+ Vérifiez que le checksum de votre dossier d’exploitation correspond au checksum réel du fichier.

**Erreurs de fonction de gestionnaire**  
Si vous recevez des erreurs liées au gestionnaire :
+ Pour Python : utilisez le format `filename.function_name` dans le paramètre `Handler` (par exemple `main.process_data`).
+ Assurez-vous que votre fonction de gestionnaire accepte exactement deux paramètres : `events` et `context`.
+ Pour PowerShell : ne spécifiez aucun `Handler` paramètre ; le script s'exécute directement.

**Échecs d’exécution de script**  
Si votre script échoue lors de son exécution :
+ Consultez l’historique d’exécution de l’automatisation pour obtenir des messages d’erreur détaillés et des traces de pile.
+ Utilisez `print()` les instructions (Python) ou `Write-Information` (PowerShell) pour ajouter une sortie de débogage.
+ Vérifiez que toutes les AWS autorisations requises sont accordées à votre rôle d'automatisation.
+ Testez la logique de votre script localement avant de l’empaqueter sous forme d’attachement.

**Codes de sortie et gestion des erreurs**  
Pour gérer correctement les erreurs et renvoyer les codes de sortie :
+ Pour Python : utilisez `raise Exception("error message")` pour indiquer l’échec du script.
+ Dans PowerShell : utilisez `throw "error message"` ou `Write-Error` pour indiquer une défaillance.
+ Retournez des données structurées à partir de vos fonctions pour fournir des success/failure informations détaillées.
+ Utilisez des blocs try-catch pour gérer les exceptions avec élégance et fournir des messages d’erreur significatifs.

# `aws:executeStateMachine`— Lance une machine à AWS Step Functions états
<a name="automation-action-executeStateMachine"></a>

Exécute une machine à AWS Step Functions états.

**Note**  
L’action `aws:executeStateMachine` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Entrée**

Cette action prend en charge la plupart des paramètres du fonctionnement de l'[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)API Step Functions.

**Autorisations requises Gestion des identités et des accès AWS (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  
L'Amazon Resource Name (ARN) de la machine d'état Step Functions.  
Type : Chaîne  
Obligatoire : oui

name  
Nom de l'exécution.  
Type : chaîne  
Obligatoire : non

input  
Chaîne qui contient les données d'entrée JSON pour l'exécution.  
Type : chaîne  
Obligatoire : non

**Sorties**  
Les sorties suivantes sont prédéfinies pour cette action.

executionArn  
ARN de l'exécution.  
Type : Chaîne

input  
Chaîne qui contient les données d'entrée JSON de l'exécution. Les contraintes de longueur s'appliquent à la taille de la charge utile et sont exprimées en octets dans l'encodage UTF-8.  
Type : Chaîne

name  
Nom de l'exécution.  
Type : Chaîne

output  
Données de sortie JSON de l'exécution. Les contraintes de longueur s'appliquent à la taille de la charge utile et sont exprimées en octets dans l'encodage UTF-8.  
Type : Chaîne

startDate  
Date de début de l'exécution.  
Type : Chaîne

stateMachineArn  
ARN de la machine d'état exécutée.  
Type : Chaîne

status  
Statut actuel de l'exécution.  
Type : Chaîne

stopDate  
Si l'exécution est déjà terminée, date à laquelle l'exécution s'est arrêtée.  
Type : Chaîne

# `aws:invokeWebhook` : appeler une intégration de webhook Automation
<a name="invoke-webhook"></a>

Appelle l'intégration du webhook Automation spécifiée. Pour plus d'informations sur la création d'intégrations Automation, consultez [Création d'intégrations webhook pour Automation](creating-webhook-integrations.md).

**Note**  
L’action `aws:invokeWebhook` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Note**  
Pour exécuter l'action `aws:invokeWebhook`, votre rôle d'utilisateur ou de service doit autoriser les actions suivantes :  
SMS : GetParameter
kms:Decrypt
L'autorisation pour l'`Decrypt`opération AWS Key Management Service (AWS KMS) n'est requise que si vous utilisez une clé gérée par le client pour chiffrer le paramètre de votre intégration.

**Input**  
Fournissez les informations relatives à l'intégration d'Automation que vous souhaitez appeler.

------
#### [ YAML ]

```
action: "aws:invokeWebhook"
inputs: 
 IntegrationName: "exampleIntegration"
 Body: "Request body"
```

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

```
{
    "action": "aws:invokeWebhook",
    "inputs": {
        "IntegrationName": "exampleIntegration",
        "Body": "Request body"
    }
}
```

------

IntegrationName  
Nom de l'intégration d'Automation. Par exemple, `exampleIntegration`. L'intégration que vous spécifiez doit déjà exister.  
Type : Chaîne  
Obligatoire : oui

Corps de texte  
La charge utile que vous souhaitez envoyer lorsque votre intégration de webhook est appelée.  
Type : chaîne  
Obligatoire : nonOutput

Réponse  
Texte reçu de la réponse du fournisseur de webhook.

ResponseCode  
Code d'état HTTP reçu de la réponse du fournisseur de webhook.

# `aws:invokeLambdaFunction`— Invoque une AWS Lambda fonction
<a name="automation-action-lamb"></a>

Invoque la AWS Lambda fonction spécifiée.

**Note**  
Chaque action `aws:invokeLambdaFunction` peut être exécutée jusqu'à une durée maximale de 300 secondes (5 minutes). Vous pouvez limiter le délai d'attente en spécifiant le paramètre `timeoutSeconds` pour une étape `aws:invokeLambdaFunction`.

**Note**  
L’action `aws:invokeLambdaFunction` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Input**  
Cette action prend en charge la plupart des paramètres invoqués du service Lambda. Pour plus d'informations, consultez [Invoquer](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  
Nom de la fonction Lambda. Cette fonction doit exister.  
Type : Chaîne  
Obligatoire : oui

Qualificateur  
Nom de version ou d'alias de la fonction.  
Type : chaîne  
Obligatoire : non

InvocationType  
Type d'appel. La valeur par défaut est `RequestResponse`.  
Type : Chaîne  
Valeurs valides : `Event` \$1 `RequestResponse` \$1 `DryRun`  
Obligatoire : non

LogType  
Si la valeur par défaut est `Tail`, le type d'appel doit être `RequestResponse`. Lambda retourne les 4 derniers Ko de données de journalisation générés par votre fonction Lambda, codés en base64.  
Type : Chaîne  
Valeurs valides : `None` \$1 `Tail`  
Obligatoire : non

ClientContext  
Informations spécifiques au client.  
Obligatoire : non

InputPayload  
Objet JSON ou YAML transmis au premier paramètre du gestionnaire. Utilisez cette saisie pour transmettre des données vers la fonction. Cette entrée offre plus de flexibilité et de prise en charge que l'entrée `Payload` héritée. Si vous définissez les deux `InputPayload` et `Payload` pour l'action, `InputPayload` prend la priorité et `Payload` la valeur n'est pas utilisée.  
Type : StringMap  
Obligatoire : non

Charge utile  
Objet JSON ou YAML transmis au premier paramètre du gestionnaire. Utilisez cette saisie pour la transmission des données vers la fonction. Nous vous recommandons d'utiliser `InputPayload` entrée pour des fonctionnalités supplémentaires.  
Type : chaîne  
Obligatoire : nonOutput

StatusCode  
Le code d'état HTTP .

FunctionError  
Si cette valeur est présente, elle indique qu'une erreur s'est produite lors de l'exécution de la fonction. Les détails sur l'erreur sont inclus dans la charge utile de la réponse.

LogResult  
Journaux codés en base 64 pour l'appel de fonction Lambda. Des journaux sont présents uniquement si le type d'appel est `RequestResponse` et que des journaux ont été demandés.

Charge utile  
Représentation JSON de l'objet renvoyé par la fonction Lambda. La charge utile est présente uniquement si le type d'appel est `RequestResponse`.

Ce qui suit est une partie du runbook `AWS-PatchInstanceWithRollback` démontrant comment référencer les sorties de l'action `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` : itérer les étapes d’une automatisation
<a name="automation-action-loop"></a>

Cette action itère sur un sous-ensemble d’étapes dans un runbook d’Automatisation. Vous pouvez sélectionner un style boucle `do while` ou `for each`. Pour construire une boucle `do while`, utilisez le paramètre d’entrée `LoopCondition`. Pour construire une boucle `for each`, utilisez les paramètres d’entrée `Iterators` et `IteratorDataType`. Lorsque vous utilisez une action `aws:loop`, spécifiez uniquement le paramètre d’entrée `Iterators` ou `LoopCondition`. Le nombre maximal d’itérations est de 100.

La propriété `onCancel` ne peut être utilisée que pour les étapes définies dans une boucle. La propriété `onCancel` n’est pas prise en charge pour l’action `aws:loop`. La propriété `onFailure` peut être utilisée pour une action `aws:loop`, mais elle ne sera utilisée que si une erreur inattendue se produit et entraîne l’échec de l’étape. Si vous définissez des propriétés `onFailure` pour les étapes d’une boucle, l’action `aws:loop` hérite de ces propriétés et réagit en conséquence en cas d’échec.

**Exemples**  
Les exemples suivants montrent comment construire les différents types d’actions de boucle.

------
#### [ 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**  
L'entrée est comme suit.

Itérateurs  
La liste des éléments sur lesquels les étapes doivent être itérées. Le nombre maximal d’itérateurs est de 100.  
Type : StringList  
Obligatoire : non

IteratorDataType  
Un paramètre facultatif permettant de spécifier le type de données du `Iterators`. Une valeur pour ce paramètre peut être fournie en même temps que le paramètre d’entrée `Iterators`. Si vous ne spécifiez aucune valeur pour ce paramètre et `Iterators`, vous devez alors spécifier une valeur pour le paramètre `LoopCondition`.  
Type : Chaîne  
Valeurs valides : booléen \$1 entier \$1 chaîne \$1 StringMap  
Par défaut : String  
Obligatoire : non

LoopCondition  
Comprend une `Variable` et une condition de l’opérateur à évaluer. Si vous ne spécifiez aucune valeur pour ce paramètre, vous devez alors spécifier des valeurs pour les paramètres `Iterators` et `IteratorDataType`. Vous pouvez utiliser des évaluations d’opérateurs complexes en combinant les opérateurs `And`, `Not` et `Or`. La condition est évaluée une fois les étapes de la boucle terminées. Si la condition est `true` et que la valeur `MaxIterations` n’a pas été atteinte, les étapes de la boucle sont à nouveau exécutées. Les conditions de l’opérateur sont les suivantes :  

**Opérations de chaîne**
+ StringEquals
+ EqualsIgnoreCase
+ StartsWith
+ EndsWith
+ Contains

**Opérations numériques**
+ NumericEquals
+ NumericGreater
+ NumericLesser
+ NumericGreaterOrEquals
+ NumericLesser
+ NumericLesserOrEquals

**Opération booléenne**
+ BooleanEquals
Type : StringMap  
Obligatoire : non

MaxIterations  
Le nombre maximal de fois où les étapes de la boucle sont exécutées. Une fois que la valeur spécifiée pour cette entrée est atteinte, la boucle cesse de fonctionner même si `LoopCondition` est encore `true` ou s’il reste des objets dans le paramètre `Iterators`.  
Type : Integer  
Valeurs valides : de 1 à 100  
Obligatoire : non

Étapes  
Liste des étapes à exécuter dans la boucle. Elles fonctionnent comme un runbook imbriqué. Au cours de ces étapes, vous pouvez accéder à la valeur actuelle de l’itérateur pour une boucle `for each` à l’aide de la syntaxe `{{loopStepName.CurrentIteratorValue}}`. Vous pouvez également accéder à une valeur entière de l’itération en cours pour les deux types de boucle à l’aide de la syntaxe `{{loopStepName.CurrentIteration}}`.  
Type : liste des étapes  
Obligatoire : ouiOutput

CurrentIteration  
L’itération de boucle en cours sous forme d’entier. Valeur des itérations commençant à 1.  
Type : Integer

CurrentIteratorValue  
Valeur de l’itérateur actuel sous forme de chaîne. Cette sortie n’est présente que dans les boucles `for each`.  
Type : Chaîne

# `aws:pause` - Suspendre une automatisation
<a name="automation-action-pause"></a>

Cette action suspend l'automatisation. Une fois l'automatisation interrompue, son statut est *Waiting (En attente)*. Pour poursuivre l'automatisation, utilisez l'opération [SendAutomationSignal](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendAutomationSignal.html)API avec le type de `Resume` signal. Nous vous recommandons d'utiliser l’action `aws:sleep` ou `aws:approve` pour effectuer un contrôle plus précis de vos flux de travail.

**Note**  
Le délai d'attente par défaut pour cette action est de 7 jours (604 800 secondes) et la valeur maximale est de 30 jours (2 592 000 secondes). Vous pouvez limiter ou étendre le délai d'attente en spécifiant le paramètre `timeoutSeconds` pour une étape `aws:pause`.

**Input**  
L'entrée est comme suit.

------
#### [ YAML ]

```
name: pauseThis
action: aws:pause
timeoutSeconds: 1209600
inputs: {}
```

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

```
{
    "name": "pauseThis",
    "action": "aws:pause",
    "timeoutSeconds": "1209600",
    "inputs": {}
}
```

------Output

Aucune  


# `aws:runCommand` - Exécuter une commande sur une instance gérée
<a name="automation-action-runcommand"></a>

Exécute les commandes spécifiées.

**Note**  
L'automatisation prend uniquement en charge *l'ouput* d'une action AWS Systems Manager Run Command. Un runbook peut inclure plusieurs actions Run Command, mais la sortie est prise en charge pour une seule action à la fois.

**Input**  
Cette action prend en charge la plupart des paramètres de la commande d'envoi. Pour de plus amples informations, veuillez consulter [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  
Si le document de type Commande vous appartient AWS, ou spécifiez le nom du document. Si vous utilisez un document partagé avec un autre Compte AWS, spécifiez l'Amazon Resource Name (ARN) du document. Pour plus d'informations sur l'utilisation de documents partagés, consultez [Utilisation de documents SSM partagés](documents-ssm-sharing.md#using-shared-documents).  
Type : Chaîne  
Obligatoire : oui

InstanceIds  
Instance IDs dans laquelle vous souhaitez exécuter la commande. Vous pouvez spécifier un maximum de 50 IDs.   
Vous pouvez également utiliser le pseudo-paramètre `{{RESOURCE_ID}}` à la place de l'instance IDs pour exécuter la commande sur toutes les instances du groupe cible. Pour plus d'informations sur les pseudo-paramètres, consultez [Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance](maintenance-window-tasks-pseudo-parameters.md).  
Une autre alternative consiste à envoyer des commandes à un parc d'instances à l'aide du paramètre `Targets`. Le paramètre `Targets` accepte les balises Amazon Elastic Compute Cloud (Amazon EC2). Pour de plus amples informations sur l'utilisation du paramètre `Targets`, veuillez consulter [Exécuter des commandes à grande échelle](send-commands-multiple.md).  
Type : StringList  
Obligatoire : Non (Si vous ne spécifiez pas InstanceIds ou n'utilisez pas le `{{RESOURCE_ID}}` pseudo paramètre, vous devez le `Targets` spécifier.)

Targets  
Tableau de critères de recherche qui cible les instances à l'aide d'une combinaison clé/valeur que vous spécifiez. `Targets`est obligatoire si vous ne fournissez pas une ou plusieurs instances IDs dans l'appel. Pour de plus amples informations sur l'utilisation du paramètre `Targets`, veuillez consulter [Exécuter des commandes à grande échelle](send-commands-multiple.md).  
Type : MapList (Le schéma de la carte dans la liste doit correspondre à l'objet.) Pour de plus amples informations, veuillez consulter [Cible](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_Target.html) dans la *Référence d'API AWS Systems Manager *.  
Obligatoire : Non (Si vous ne le spécifiez pas`Targets`, vous devez spécifier InstanceIds ou utiliser le `{{RESOURCE_ID}}` pseudo-paramètre.)  
Voici un exemple.  

```
- 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  
Paramètres obligatoires et facultatifs spécifiés dans le document.  
Type: carte (map)  
Obligatoire : non

CloudWatchOutputConfig  
Options de configuration pour envoyer une sortie de commande à Amazon CloudWatch Logs. Pour plus d'informations sur l'envoi d'une sortie de commande à CloudWatch Logs, consultez[Configuration d'Amazon CloudWatch Logs pour Run Command](sysman-rc-setting-up-cwlogs.md).  
Type : StringMap (Le schéma de la carte doit correspondre à l'objet. Pour plus d'informations, consultez [CloudWatchOutputConfig](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CloudWatchOutputConfig.html)la *référence de AWS Systems Manager l'API*).  
Obligatoire : non  
Voici un exemple.  

```
- 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  
Informations définies par l'utilisateur au sujet de la commande.  
Type : chaîne  
Obligatoire : non

DocumentHash  
Hachage pour le document.  
Type : chaîne  
Obligatoire : non

DocumentHashType  
Type de hachage.  
Type : Chaîne  
Valeurs valides : `Sha256` \$1 `Sha1`  
Obligatoire : non

NotificationConfig  
Configurations d'envoi des notifications.  
Obligatoire : non

OutputS3 BucketName  
Nom du compartiment S3 pour les réponses de sortie de la commande. Votre nœud géré doit disposer des autorisations nécessaires pour que le compartiment S3 enregistre correctement la sortie.  
Type : chaîne  
Obligatoire : non

OutputS3 KeyPrefix  
Préfixe.  
Type : chaîne  
Obligatoire : non

ServiceRoleArn  
L'ARN du rôle Gestion des identités et des accès AWS (IAM).  
Type : chaîne  
Obligatoire : non

TimeoutSeconds  
Temps d'attente, en secondes, avant qu'une commande ne soit délivrée AWS Systems Manager SSM Agent à une instance. Si la commande n'est pas reçue par l'SSM Agent sur l'instance avant expiration de la valeur spécifiée, le statut de la commande devient `Delivery Timed Out`.  
Type : Integer  
Obligatoire : non  
Valeurs valides : 30-2592000Output

CommandId  
ID de la commande.

Status  
Statut de la commande.

ResponseCode  
Code de réponse de la commande. Si le document que vous exécutez comporte plus d’une étape, aucune valeur n’est renvoyée pour cette sortie.

Output  
Sortie de la commande. Si vous ciblez une balise ou plusieurs instances avec votre commande, aucune valeur de sortie n’est renvoyée. Vous pouvez utiliser les opérations d’API `GetCommandInvocation` et `ListCommandInvocations` pour récupérer la sortie pour des instances individuelles.

# `aws:runInstances` – lancer une instance Amazon EC2
<a name="automation-action-runinstance"></a>

Lance une nouvelle instance Amazon Elastic Compute Cloud (Amazon EC2).

**Note**  
L’action `aws:runInstances` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Input**  
L'action prend en charge la plupart des paramètres de l'API. Pour plus d'informations, consultez la documentation de [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)l'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  
Instances réservées.  
Type : chaîne  
Obligatoire : non

BlockDeviceMappings  
Périphériques de stockage en mode bloc pour l'instance.  
Type : MapList  
Obligatoire : non

ClientToken  
Identifiant permettant de garantir l'idempotence de la demande.  
Type : chaîne  
Obligatoire : non

DisableApiTermination  
Active ou désactive la résiliation de l'API d'instance.  
Type : booléen  
Obligatoire : non

EbsOptimized  
Active ou désactive l'optimisation Amazon Elastic Block Store (Amazon EBS).  
Type : booléen  
Obligatoire : non

IamInstanceProfileArn  
Le nom de ressource Amazon (ARN) du profil d'instance Gestion des identités et des accès AWS (IAM) de l'instance.  
Type : chaîne  
Obligatoire : non

IamInstanceProfileName  
Nom du profil d'instance IAM pour l'instance.  
Type : chaîne  
Obligatoire : non

ImageId  
ID de l'Amazon Machine Image (AMI).  
Type : Chaîne  
Obligatoire : oui

InstanceInitiatedShutdownBehavior  
Indique si l'instance s'arrête ou est résiliée lors de l'arrêt du système.  
Type : chaîne  
Obligatoire : non

InstanceType  
Type d'instance.  
Si aucune valeur de type d'instance n'est fournie, le type d'instance m1.small est utilisé.
Type : chaîne  
Obligatoire : non

KernelId  
ID du noyau.  
Type : chaîne  
Obligatoire : non

KeyName  
Nom de la paire de clés.  
Type : chaîne  
Obligatoire : non

MaxInstanceCount  
Nombre maximum d'instances à lancer.  
Type : chaîne  
Obligatoire : non

MetadataOptions  
Options de métadonnées de l'instance. Pour de plus amples informations, veuillez consulter [InstanceMetadataOptionsRequest](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceMetadataOptionsRequest.html).  
Type : StringMap  
Obligatoire : non

MinInstanceCount  
Nombre minimum d'instances à lancer.  
Type : chaîne  
Obligatoire : non

Contrôle  
Active ou désactive la surveillance détaillée.  
Type : booléen  
Obligatoire : non

NetworkInterfaces  
Interfaces réseau.  
Type : MapList  
Obligatoire : non

Placement  
Placement de l'instance.  
Type : StringMap  
Obligatoire : non

PrivateIpAddress  
L' IPv4 adresse principale.  
Type : chaîne  
Obligatoire : non

RamdiskId  
ID du disque RAM.  
Type : chaîne  
Obligatoire : non

SecurityGroupIds  
Les groupes IDs de sécurité de l'instance.  
Type : StringList  
Obligatoire : non

SecurityGroups  
Noms des groupes de sécurité de l'instance.  
Type : StringList  
Obligatoire : non

SubnetId  
ID de sous-réseau.  
Type : chaîne  
Obligatoire : non

TagSpecifications  
Balises à appliquer aux ressources lors du lancement. Vous pouvez uniquement baliser des instances et des volumes au moment du lancement. Les balises spécifiées sont appliquées à toutes les instances ou volumes qui sont créés lors du lancement. Pour ajouter des balises à une instance après qu'elle a été lancée, utilisez l'action [`aws:createTags`— Crée des tags pour les AWS ressources](automation-action-createtag.md).  
Type : MapList (Pour plus d'informations, voir [TagSpecification](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TagSpecification.html).)  
Obligatoire : non

UserData  
Script fourni en tant que valeur de littéral de chaîne. Si une valeur littérale est entrée, elle doit être codée en base64.  
Type : chaîne  
Obligatoire : nonOutput

InstanceIds  
Les IDs instances.

InstanceStates  
Statut actuel de l'instance.

# `aws:sleep` - Retarder une automatisation
<a name="automation-action-sleep"></a>

Retarde l'automatisation pour une durée spécifiée. Cette action utilise le format date et heure de l'Organisation internationale de normalisation (ISO) 8601. Pour de plus amples informations sur ce format date et heure, veuillez consulter [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).

**Input**  
Vous pouvez retarder une automatisation pour une durée spécifiée. 

------
#### [ YAML ]

```
name: sleep
action: aws:sleep
inputs:
  Duration: PT10M
```

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

```
{
   "name":"sleep",
   "action":"aws:sleep",
   "inputs":{
      "Duration":"PT10M"
   }
}
```

------

Vous pouvez aussi retarder une automatisation jusqu'à une date et une heure spécifiées. Si les date et heure spécifiées sont passées, l'action est réalisée immédiatement. 

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

------

**Note**  
L'automatisation prend en charge un délai maximal de 604 799 secondes (7 jours).

Duration  
Une durée ISO 8601. Vous ne pouvez pas spécifier une durée négative.   
Type : chaîne  
Obligatoire : non

Horodatage  
Un horodatage ISO 8601. Si vous ne spécifiez aucune valeur pour ce paramètre, vous devez alors spécifier une valeur pour le paramètre `Duration`.   
Type : chaîne  
Obligatoire : nonOutput

Aucune  


# `aws:updateVariable` : met à jour la valeur d’une variable runbook
<a name="automation-action-update-variable"></a>

Cette action met à jour la valeur d’une variable runbook. Le type de données de la valeur doit correspondre au type de données de la variable que vous voulez mettre à jour. Les conversions par type de données ne sont pas prises en charge. La propriété `onCancel` n’est pas prise en charge pour l’action `aws:updateVariable`.

**Input**  
L'entrée est comme suit.

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

------

Nom  
Nom de la variable dont vous voulez mettre à jour la valeur. Vous devez utiliser le format `variable:variable name`  
Type : Chaîne  
Obligatoire : oui

Value  
La nouvelle valeur à attribuer à la variable. La valeur doit correspondre au type de données de la variable. Les conversions par type de données ne sont pas prises en charge.  
Type : Booléen \$1 Entier \$1 \$1 Chaîne MapList \$1 \$1 StringList StringMap  
Obligatoire : oui  
Contraintes:  
+ MapList peut contenir un maximum de 200 éléments.
+ La clé peut avoir une longueur minimale de 1 et une longueur maximale de 50.
+ StringList peut être un nombre minimum de 0 éléments et un nombre maximum de 50 éléments.
+ Les chaînes peuvent avoir une longueur minimale de 1 et une longueur maximale de 512.Output

Aucune  


# `aws:waitForAwsResourceProperty`— Attendre sur une propriété AWS de ressource
<a name="automation-action-waitForAwsResourceProperty"></a>

L'action `aws:waitForAwsResourceProperty` permet à votre automatisation d'attendre un statut de ressource ou d'événement spécifique avant de se poursuivre. Pour plus d'exemples sur l'utilisation de cette action, veuillez consulter la rubrique [Exemples supplémentaires de runbook](automation-document-examples.md).

**Note**  
La valeur de délai d'expiration par défaut pour cette action est de 3600 secondes (une heure). Vous pouvez limiter ou étendre le délai d'attente en spécifiant le paramètre `timeoutSeconds` pour une étape `aws:waitForAwsResourceProperty`. Pour de plus amples informations et des exemples sur l'utilisation de cette action, veuillez consulter [Gestion de délais d'expiration dans des runbooks](automation-handling-timeouts.md).

**Note**  
L’action `aws:waitForAwsResourceProperty` prend en charge la limitation des nouvelles tentatives. Pour de plus amples informations, veuillez consulter [Configuration des nouvelles tentatives automatiques pour les opérations limitées](automation-throttling-retry.md).

**Input**  
Les entrées sont définies par l'opération d'API que vous sélectionnez.

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

------

Service  
L'espace de Service AWS noms qui contient l'opération d'API que vous souhaitez exécuter. Par exemple, l'espace de noms pour AWS Systems Manager is`ssm`. L'espace de noms pour Amazon Elastic Compute Cloud (Amazon EC2) est `ec2`. Vous pouvez consulter la liste des Service AWS espaces de noms pris en charge dans la section [Services disponibles](https://docs.aws.amazon.com/cli/latest/reference/#available-services) de la *référence des AWS CLI commandes*.  
Type : Chaîne  
Obligatoire : oui

Api  
Le nom de l'opération d'API que vous voulez exécuter. Vous pouvez afficher les opérations d'API (également appelées méthodes) en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les opérations d'API (méthodes) pour Amazon Relational Database Service (Amazon RDS) sont répertoriées à la page suivante : [Méthodes pour Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html).  
Type : Chaîne  
Obligatoire : oui

Entrées d'opérations d'API  
Une ou plusieurs entrées d'opérations d'API. Vous pouvez afficher les entrées disponibles (également appelées paramètres) en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les méthodes pour Amazon RDS sont répertoriées sur la page suivante : [Méthodes Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). ****Choisissez la méthode [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) et faites défiler la page vers le bas pour voir les paramètres disponibles, tels que l'**DBInstanceidentifiant**, le nom et les valeurs.****  

```
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"
}
```
Type : déterminé par l'opération d'API choisie  
Obligatoire : oui

PropertySelector  
Le JSONPath vers un attribut spécifique dans l'objet de réponse. Vous pouvez afficher les objets de réponse en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les méthodes pour Amazon RDS sont répertoriées sur la page suivante : [Méthodes Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html). **Choisissez la méthode [describe\$1db\$1instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.describe_db_instances) et faites défiler la page jusqu'à la section Structure de réponse.** **DBInstances**est répertorié en tant qu'objet de réponse.  
Type : Chaîne  
Obligatoire : oui

DesiredValues  
État attendu ou état à partir duquel l'automatisation se poursuit.  
Type : MapList, StringList  
Obligatoire : oui

# Variables système Automation
<a name="automation-variables"></a>

Les runbooks Automation AWS Systems Manager utilisent les variables suivantes. Pour obtenir un exemple d'utilisation de ces variables, affichez la source JSON du runbook `AWS-UpdateWindowsAmi`. 

**Pour afficher la source JSON du runbook `AWS-UpdateWindowsAmi`**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Dans la liste de documents, utilisez la barre de recherche ou les nombres à droite de la barre de recherche pour choisir le runbook `AWS-UpdateWindowsAmi`.

1. Sélectionnez l'onglet **Contenu**. 

**Variables système**  
Les runbooks Automation prennent en charge actuellement les variables système suivantes.


****  

| Variable | Détails | 
| --- | --- | 
|  `global:ACCOUNT_ID`  |  L'ID de l'Compte AWS de l'utilisateur ou du rôle dans lequel Automation s'exécute.  | 
|  `global:DATE`  |  Date (au moment de l'exécution) au format AAAA-MM-JJ.  | 
|  `global:DATE_TIME`  |  Date et heure (au moment de l'exécution) au format AAAA-MM-JJ\$1HH.mm.ss.  | 
|  `global:AWS_PARTITION`  |  Partition dans laquelle se trouve la ressource. Pour les Régions AWS standards, la partition est `aws`. Pour les ressources dans d'autres partitions, la partition est `aws-partitionname`. Par exemple, la partition des ressources dans la région AWS GovCloud (US-West) est `aws-us-gov`.  | 
|  `global:REGION`  |  La région dans laquelle le runbook est exécuté. Par exemple, us-east-2.  | 

**Variables d'automatisation**  
Les runbooks Automation prennent en charge les variables d'automatisation suivantes.


****  

| Variable | Détails | 
| --- | --- | 
|  `automation:EXECUTION_ID`  |  Identifiant unique attribué à l'exécution de l'automatisation actuelle. Par exemple, `1a2b3c-1a2b3c-1a2b3c-1a2b3c1a2b3c1a2b3c`.  | 

**Topics**
+ [Terminologie](#automation-terms)
+ [Scénarios pris en charge](#automation-variables-support)
+ [Scénarios non pris en charge](#automation-variables-unsupported)

## Terminologie
<a name="automation-terms"></a>

Les conditions suivantes décrivent comment les variables et les paramètres sont résolus.


****  

| Durée | Définition | exemple | 
| --- | --- | --- | 
|  ARN constant  |  Un Amazon Resource Name (ARN) valide, sans variables.  |  `arn:aws:iam::123456789012:role/roleName`  | 
|  Paramètre runbook  |  Un paramètre défini au niveau du runbook (`instanceId`, par exemple). Le paramètre est utilisé dans un remplacement de chaîne de base. Sa valeur est fournie au moment du démarrage de l'exécution.  |  <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>  | 
|  Variable système  |  Variable générale remplacée dans le runbook lors de l'évaluation d'une partie du runbook.  |  <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>  | 
|  Variable d'automatisation  |  Variable relative à l'automatisation remplacée dans le runbook lors de l'évaluation d'une partie du runbook.  |  <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>  | 
|  Paramètre Systems Manager  |  Une variable définie dans AWS Systems Manager Parameter Store. Il ne peut pas être référencé directement dans l'entrée de l'étape. Des autorisations peuvent être requises pour accéder au paramètre.  |  <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>  | 

## Scénarios pris en charge
<a name="automation-variables-support"></a>


****  

| Scénario | Commentaires | exemple | 
| --- | --- | --- | 
|  ARN `assumeRole` constant lors de la création.  |  Un contrôle d'autorisation est effectué pour vérifier que l'utilisateur appelant est autorisé à passer le `assumeRole` donné.  |  <pre>{<br />  "description": "Test all Automation resolvable parameters",<br />  "schemaVersion": "0.3",<br />  "assumeRole": "arn:aws:iam::123456789012:role/roleName",<br />  "parameters": { <br />  ...</pre>  | 
|  Paramètre runbook fourni pour `AssumeRole` au démarrage de l'automatisation.  |  Doit être défini dans la liste des paramètres du runbook.  |  <pre>{<br />  "description": "Test all Automation resolvable parameters",<br />  "schemaVersion": "0.3",<br />  "assumeRole": "{{dynamicARN}}",<br />  "parameters": {<br /> ...</pre>  | 
|  Valeur fournie pour le paramètre du runbook au démarrage.  |  Le client fournit la valeur à utiliser pour un paramètre. Toutes les entrées fournies au moment du démarrage doivent être définies dans la liste des paramètres du 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> Les entrées pour démarrer l'exécution d'Automation incluent : `{"amiId" : ["ami-12345678"] }`  | 
|  Paramètre Systems Manager référencé dans le contenu du runbook.  |  La variable existe dans le compte du client, ou est un paramètre accessible publiquement, et le `AssumeRole` pour le runbook a accès à la variable. Un contrôle est effectué à la création pour confirmer que le `AssumeRole` y a accès. Le paramètre ne peut pas être référencé directement dans l'entrée de l'étape.  |  <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>  | 
|  Variable système référencée dans la définition de l'étape  |  Au démarrage de l'automatisation, une variable système est remplacée dans le runbook. La valeur injectée dans le runbook est relative au moment où la substitution se produit. En d'autres termes, la valeur d'une variable de temps injectée à l'étape 1 est différente de la valeur injectée à l'étape 3 en raison du temps nécessaire pour exécuter les étapes entre elles. Les variables système n'ont pas besoin d'être définies dans la liste des paramètres du 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>  | 
|  Variable d'automatisation référencée dans la définition de l'étape.  |  Les variables d'automatisation n'ont pas besoin d'être définies dans la liste des paramètres du runbook. La seule variable d'automatisation prise en charge est **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>  | 
|  Reportez-vous à la sortie de l'étape précédente dans la définition de l'étape suivante.  |  Il s'agit de la redirection du paramètre. La sortie de l'étape précédente est référencée à l'aide de la syntaxe `{{stepName.OutputName}}`. Cette syntaxe ne peut pas être utilisée par le client pour les paramètres du runbook. Ceci est résolu lorsque l'étape de référence s'exécute. Le paramètre n'est pas répertorié dans les paramètres du 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>  | 

## Scénarios non pris en charge
<a name="automation-variables-unsupported"></a>


****  

| Scénario | Comment | exemple | 
| --- | --- | --- | 
|  Paramètre Systems Manager fourni pour `assumeRole` au moment de la création  |  Non pris en charge.  |  <pre>...<br /><br />{<br />  "description": "Test all Automation resolvable parameters",<br />  "schemaVersion": "0.3",<br />  "assumeRole": "{{ssm:administratorRoleARN}}",<br />  "parameters": {<br /><br />... </pre>  | 
|  Paramètre Systems Manager directement référencé dans l'entrée de l'étape.  |  Renvoie une exception `InvalidDocumentContent` au moment de la création.  |  <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>  | 
|  Définition de l'étape des variables  |  La définition d'une étape du runbook est construite en variables.  |  <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>  | 
|  Paramètres runbook de références croisées  |  L'utilisateur fournit un paramètre d'entrée au moment du démarrage qui est une référence à un autre paramètre du 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>  | 
|  Extension à plusieurs niveaux  |  Le runbook définit une variable qui évalue le nom d'une variable. Elle se trouve dans les séparateurs de variables (c'est-à-dire *\$1\$1 \$1\$1*) et s'étend à la valeur de cette variable/ce paramètre.  |  <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>  | 
|  Référencement de sortie à partir d'une étape de runbook qui est un autre type de variable  |  L'utilisateur fait référence à la sortie d'une étape d'un précédent runbook au sein d'une étape ultérieure. Le résultat est un type de variable qui ne respecte pas les exigences de l'action dans l'étape suivante.  |  <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>  | 

# Créer vos propres runbooks
<a name="automation-documents"></a>

Un manuel d'automatisation définit les *actions* que Systems Manager exécute sur vos instances gérées et sur d'autres AWS ressources lorsqu'une automatisation s'exécute. Automation est un outil d’ AWS Systems Manager. Un runbook contient une ou plusieurs étapes exécutées dans un ordre séquentiel. Chaque étape est articulée autour d'une seule action. La sortie d'une étape peut être utilisée comme entrée lors d'une étape ultérieure. 

Le processus d'exécution de ces actions et de leurs étapes est appelé *automation (automatisation)*.

Les types d'actions pris en charge pour les runbooks vous permettent d'automatiser une grande variété d'opérations dans votre AWS environnement. Par exemple, en utilisant le type `executeScript` d'action, vous pouvez intégrer un python ou un PowerShell script directement dans votre runbook. (Lorsque vous créez un runbook personnalisé, vous pouvez ajouter votre script en ligne ou le joindre à partir d'un compartiment S3 ou de votre ordinateur local.) Vous pouvez automatiser la gestion de vos AWS CloudFormation ressources en utilisant les types `deleteStack` d'action `createStack` et. En outre, en utilisant le type `executeAwsApi` d'action, une étape peut exécuter *n'importe quelle* opération d'API Service AWS, y compris la création ou la suppression de AWS ressources, le démarrage d'autres processus, le lancement de notifications, etc. 

Pour obtenir la liste des 20 types d'action pris en charge pour l'automatisation, consultez [Référence sur les actions Systems Manager Automation](automation-actions.md).

AWS Systems Manager L'automatisation propose plusieurs runbooks avec des étapes prédéfinies que vous pouvez utiliser pour effectuer des tâches courantes, telles que le redémarrage d'une ou plusieurs instances Amazon Elastic Compute Cloud (Amazon EC2) ou la création d'une Amazon Machine Image (). AMI Vous pouvez également créer vos propres runbooks et les partager avec d'autres utilisateurs Comptes AWS, ou les rendre publics pour tous les utilisateurs d'Automation.

Les runbooks sont écrits en utilisant YAML ou JSON. Toutefois, l'outil **Document Builder** de la console Systems Manager Automation permet de créer un runbook sans avoir à utiliser JSON ou YAML.

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

Pour plus d'informations concernant les actions que vous pouvez spécifier dans un runbook, consultez [Référence sur les actions Systems Manager Automation](automation-actions.md).

Pour plus d'informations sur l'utilisation du AWS Toolkit for Visual Studio Code pour créer des runbooks, consultez les [documents Working with Systems Manager Automation](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/systems-manager-automation-docs.html) dans le *guide de l'AWS Toolkit for Visual Studio Code utilisateur*.

Pour plus d’informations sur l’utilisation du concepteur visuel pour créer un dossier d’exploitation personnalisé, consultez [Expérience de conception visuelle pour les runbooks d’Automatisation](automation-visual-designer.md). 

**Contents**
+ [Expérience de conception visuelle pour les runbooks d’Automatisation](automation-visual-designer.md)
  + [Présentation de l’interface d’expérience de conception visuelle](visual-designer-interface-overview.md)
    + [Navigateur d’actions](visual-designer-interface-overview.md#visual-designer-actions)
    + [Canvas](visual-designer-interface-overview.md#visual-designer-canvas)
    + [Formulaire](visual-designer-interface-overview.md#visual-designer-form)
    + [Raccourcis clavier](visual-designer-interface-overview.md#visual-designer-keyboard-shortcuts)
  + [Utilisation de l’expérience de conception visuelle](visual-designer-use.md)
    + [Création d’un flux de travail runbook](visual-designer-use.md#visual-designer-create-runbook-workflow)
    + [Conception d’un runbook](visual-designer-use.md#visual-designer-build)
    + [Mise à jour de votre runbook](visual-designer-use.md#visual-designer-update-runbook)
    + [Exportation de votre runbook](visual-designer-use.md#visual-designer-export-runbook)
  + [Configurer les entrées et les sorties pour vos actions](visual-designer-action-inputs-outputs.md)
    + [Fournir des données d’entrée pour une action](visual-designer-action-inputs-outputs.md#providing-input)
    + [Définir les données de sortie pour une action](visual-designer-action-inputs-outputs.md#defining-output)
  + [Gestion des erreurs grâce à l’expérience de conception visuelle](visual-designer-error-handling.md)
    + [Réessayer l’action en cas d’erreur](visual-designer-error-handling.md#retry-actions)
    + [Délais](visual-designer-error-handling.md#timeout-seconds)
    + [Actions ayant échoué](visual-designer-error-handling.md#failure-actions)
    + [Actions annulées](visual-designer-error-handling.md#cancel-actions)
    + [Actions critiques](visual-designer-error-handling.md#critical-actions)
    + [Fin des actions](visual-designer-error-handling.md#end-actions)
  + [Tutoriel : Création d’un runbook à l’aide de l’expérience de conception visuelle](visual-designer-tutorial.md)
    + [Étape 1 : Navigation vers l’expérience de conception visuelle](visual-designer-tutorial.md#navigate-console)
    + [Étape 2 : Création d’un flux de travail](visual-designer-tutorial.md#create-workflow)
    + [Étape 3 : Vérification du code généré automatiquement](visual-designer-tutorial.md#view-generated-code)
    + [Étape 4 : Exécution de votre nouveau runbook](visual-designer-tutorial.md#use-tutorial-runbook)
    + [Étape 5 : nettoyer](visual-designer-tutorial.md#cleanup-tutorial-runbook)
+ [Création de runbooks Automation](automation-authoring-runbooks.md)
  + [Identifier votre cas d'utilisation](automation-authoring-runbooks.md#automation-authoring-runbooks-use-case)
  + [Configurer votre environnement de développement.](automation-authoring-runbooks.md#automation-authoring-runbooks-environment)
  + [Développer le contenu d'un runbook](automation-authoring-runbooks.md#automation-authoring-runbooks-developing-content)
  + [Exemple 1 : création de runbooks parent-enfant](automation-authoring-runbooks-parent-child-example.md)
    + [Créer le runbook enfant](automation-authoring-runbooks-parent-child-example.md#automation-authoring-runbooks-child-runbook)
    + [Créer le runbook parent](automation-authoring-runbooks-parent-child-example.md#automation-authoring-runbooks-parent-runbook)
  + [Exemple 2 : runbook scripté](automation-authoring-runbooks-scripted-example.md)
  + [Exemples supplémentaires de runbook](automation-document-examples.md)
    + [Déployer l'architecture VPC et les contrôleurs de domaine Microsoft Active Directory](automation-document-architecture-deployment-example.md)
    + [Restaurer un volume racine à partir du dernier instantané](automation-document-instance-recovery-example.md)
    + [Créer une AMI et une copie inter-régions](automation-document-backup-maintenance-example.md)
+ [Création de paramètres d'entrée qui alimentent les ressources AWS](populating-input-parameters.md)
+ [Créer des runbooks à l'aide de Document Builder](automation-document-builder.md)
  + [Créer un runbook à l'aide de Document Builder](automation-document-builder.md#create-runbook)
  + [Créer un runbook qui exécute des scripts](automation-document-builder.md#create-runbook-scripts)
+ [Utilisation de scripts dans des runbooks](automation-document-script-considerations.md)
  + [Autorisations pour l'utilisation de runbooks](automation-document-script-considerations.md#script-permissions)
  + [Ajout de scripts à des runbooks](automation-document-script-considerations.md#adding-scripts)
  + [Contraintes de script applicables à des runbooks](automation-document-script-considerations.md#script-constraints)
+ [Utilisation d'instructions conditionnelles dans les runbooks](automation-branch-condition.md)
  + [Utilisation de l'action `aws:branch`](automation-branch-condition.md#branch-action-explained)
    + [Création d'une étape `aws:branch` dans un runbook](automation-branch-condition.md#create-branch-action)
      + [À propos de la création de la variable de sortie](automation-branch-condition.md#branch-action-output)
    + [Exemple de runbooks `aws:branch`](automation-branch-condition.md#branch-runbook-examples)
    + [Création d'automatisations à ramifications complexes avec des opérateurs](automation-branch-condition.md#branch-operators)
  + [Exemples d'utilisation des options conditionnelles](automation-branch-condition.md#conditional-examples)
+ [Utilisation des sorties d'action comme entrées](automation-action-outputs-inputs.md)
  + [Utilisation JSONPath dans les runbooks](automation-action-outputs-inputs.md#automation-action-json-path)
+ [Création d'intégrations webhook pour Automation](creating-webhook-integrations.md)
  + [Créer des intégrations (console)](creating-webhook-integrations.md#creating-integrations-console)
  + [Créer des intégrations (ligne de commande)](creating-webhook-integrations.md#creating-integrations-commandline)
  + [Créer des webhooks pour les intégrations](creating-webhook-integrations.md#creating-webhooks)
+ [Gestion de délais d'expiration dans des runbooks](automation-handling-timeouts.md)

# Expérience de conception visuelle pour les runbooks d’Automatisation
<a name="automation-visual-designer"></a>

AWS Systems Manager L'automatisation fournit une expérience de conception visuelle à faible code qui vous aide à créer des runbooks d'automatisation. L'expérience de conception visuelle fournit une drag-and-drop interface avec la possibilité d'ajouter votre propre code afin que vous puissiez créer et modifier des runbooks plus facilement. L’expérience de conception visuelle vous permet d’effectuer les actions suivantes :
+ Contrôlez les instructions conditionnelles.
+ Contrôlez la manière dont les entrées et les sorties sont filtrées ou transformées pour chaque action.
+ Configurez la gestion des erreurs.
+ Prototypez de nouveaux runbook.
+ Utilisez vos prototypes de runbook comme point de départ pour le développement local avec le AWS Toolkit for Visual Studio Code.

Lorsque vous créez ou modifiez un runbook, vous pouvez accéder à l’expérience de conception visuelle depuis la [console Automation](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/). Lorsque vous créez un runbook, l’expérience de conception visuelle valide votre travail et génère automatiquement du code. Vous pouvez consulter le code généré ou l’exporter pour le développement local. Lorsque vous avez terminé, vous pouvez enregistrer votre runbook, l’exécuter et examiner les résultats dans la console Systems Manager Automation. 

**Topics**
+ [Présentation de l'interface](visual-designer-interface-overview.md)
+ [Utilisation de l’expérience de conception visuelle](visual-designer-use.md)
+ [Configurez les entrées et les sorties](visual-designer-action-inputs-outputs.md)
+ [Gestion des erreurs grâce à l’expérience de conception visuelle](visual-designer-error-handling.md)
+ [Tutoriel : Création d’un runbook à l’aide de l’expérience de conception visuelle](visual-designer-tutorial.md)

# Présentation de l’interface d’expérience de conception visuelle
<a name="visual-designer-interface-overview"></a>

L’expérience de conception visuelle de Systems Manager Automation est un concepteur de flux de travail visuel à faible code qui vous aide à créer des runbook d’automatisation.

Découvrez l’expérience de conception visuelle grâce à un aperçu des composants de l’interface :

![\[Composants de l’expérience de conception visuelle\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_overview.png)

+ Le navigateur **Actions** contient les onglets **Actions** et **Runbooks**. **AWS APIs**
+ Le *canevas* vous permet de glisser-déposer des actions dans votre graphe de flux de travail, de modifier l’ordre des actions et de sélectionner les actions à configurer ou à afficher.
+ Le panneau **Formulaire** vous permet d’afficher et de modifier les propriétés de toute action que vous avez sélectionnée sur le canevas. Sélectionnez le bouton **Contenu** pour afficher le code YAML ou JSON de votre runbook, l’action actuellement sélectionnée étant surlignée. 

Les liens **Informations** ouvrent un panneau contenant des informations contextuelles lorsque vous avez besoin d’aide. Ces panneaux incluent également des liens vers des sujets connexes dans la documentation de Systems Manager Automation. 

## Navigateur d’actions
<a name="visual-designer-actions"></a>

Dans le navigateur **Actions**, vous pouvez sélectionner des actions à glisser-déposer dans votre graphique de flux de travail. Vous pouvez rechercher toutes les actions à l’aide du champ de recherche situé en haut du navigateur **Actions**. Le navigateur **Actions** contient les onglets suivants :
+ L’onglet **Actions** fournit une liste d’actions d’automatisation que vous pouvez glisser-déposer dans le graphique du flux de travail de votre runbook dans le canevas.
+ L'**AWS APIs**onglet fournit une liste des éléments AWS APIs que vous pouvez glisser-déposer dans le graphique du flux de travail de votre runbook dans le canevas.
+ L'onglet **Runbooks** fournit plusieurs ready-to-use runbooks réutilisables sous forme de blocs de construction que vous pouvez utiliser dans divers cas d'utilisation. Par exemple, vous pouvez utiliser des runbook pour effectuer des tâches de correction courantes sur les instances Amazon EC2 de votre flux de travail sans avoir à recréer les mêmes actions.

![\[Expérience de la conception visuelle des actions du navigateur\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_actions_multi_view.png)


## Canvas
<a name="visual-designer-canvas"></a>

Après avoir choisi une action à ajouter à votre automatisation, faites-la glisser vers le canevas et déposez-la dans votre graphe de flux de travail. Vous pouvez également glisser-déposer des actions pour les déplacer à différents endroits du flux de travail de votre runbook. Si votre flux de travail est complexe, vous pouvez rencontrer des difficultés pour l’afficher dans son intégralité dans le panneau canevas. Utilisez les commandes situées en haut du canevas pour zoomer ou dézoomer. Pour afficher les différentes parties d’un flux de travail, vous pouvez faire glisser le graphique du flux de travail dans le canevas. 

Faites glisser une action depuis le navigateur **Actions** et déposez-la dans le graphique du flux de travail de votre runbook. Une ligne indique où il sera placé dans votre flux de travail. Pour modifier l’ordre d’une action, vous pouvez la faire glisser vers un autre endroit de votre flux de travail. La nouvelle action a été ajoutée à votre flux de travail et son code est généré automatiquement.

![\[Canevas d’expérience de conception visuelle\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_canvas.png)


## Formulaire
<a name="visual-designer-form"></a>

Après avoir ajouté une action à votre flux de travail runbook, vous pouvez la configurer en fonction de votre cas d’utilisation. Sélectionnez l’action que vous souhaitez configurer et vous verrez ses paramètres et options dans le panneau **Formulaire**. Vous pouvez également voir le code YAML ou JSON en choisissant le bouton **Contenu**. Le code associé à l’action que vous avez sélectionnée est surligné.

![\[Panneau de formulaire sur l’expérience de conception visuelle\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_form.png)


![\[Panneau de contenu relatif à l’expérience de conception visuelle\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_content.png)


## Raccourcis clavier
<a name="visual-designer-keyboard-shortcuts"></a>

L’expérience de conception visuelle prend en charge les raccourcis clavier indiqués dans le tableau suivant.


| Raccourci clavier | Fonction | 
| --- | --- | 
| Ctrl\$1Z | Annule la dernière opération. | 
| Ctrl\$1Maj\$1Z | Rétablit la dernière opération. | 
| Alt \$1 C | Centre le flux de travail dans le canevas. | 
| Retour arrière | Supprime tous les états sélectionnés. | 
| Suppression | Supprime tous les états sélectionnés. | 
| Ctrl\$1D | Duplique l’état sélectionné. | 

# Utilisation de l’expérience de conception visuelle
<a name="visual-designer-use"></a>

Apprenez à créer, modifier et exécuter des flux de travail runbook à l’aide de l’expérience de conception visuelle. Une fois que votre flux de travail est prêt, vous pouvez l’enregistrer ou l’exporter. Vous pouvez également utiliser l’expérience de conception visuelle pour un prototypage rapide. 

## Création d’un flux de travail runbook
<a name="visual-designer-create-runbook-workflow"></a>

1. Connectez-vous à la [console Systems Manager Automation](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/).

1. Sélectionnez **Créer un runbook**.

1. Dans le champ **Nom**, saisissez le nom de votre runbook, `MyNewRunbook`, par exemple.

1. À côté du bouton **Design** et **Code**, sélectionnez l’icône en forme de crayon et saisissez le nom de votre runbook.

Vous pouvez désormais concevoir un flux de travail pour votre nouveau runbook.

## Conception d’un runbook
<a name="visual-designer-build"></a>

 Pour concevoir un flux de travail runbook à l’aide de l’expérience de conception visuelle, vous devez faire glisser une action d’automatisation du navigateur **Actions** vers le canevas, en la plaçant là où vous le souhaitez dans le flux de travail de votre runbook. Vous pouvez également réorganiser les actions de votre flux de travail en les faisant glisser vers un autre emplacement. Lorsque vous faites glisser une action sur le canevas, une ligne apparaît à l’endroit où vous pouvez déposer l’action dans votre flux de travail. Une fois qu’une action est déposée sur le canevas, son code est généré automatiquement et ajouté au contenu de votre runbook.

Si vous connaissez le nom de l’action que vous souhaitez ajouter, utilisez le champ de recherche en haut du navigateur **Actions** pour trouver l’action.

Après avoir déposé une action sur le canevas, configurez-la à l’aide du panneau **Formulaire** sur la droite. Ce panneau contient les onglets **Général**, **Entrées**, **Sorties** et **Configuration** pour chaque action d’automatisation ou action d’API que vous placez sur le canevas. Par exemple, l’onglet **Général** comprend les sections suivantes :
+ Le **Nom de l’étape** identifie l’étape. Spécifiez une valeur unique pour le nom de l’étape.
+ La **Description** vous permet de décrire l’action en cours dans le flux de travail de votre runbook.

L’onglet **Entrées** contient des champs qui varient en fonction de l’action. Par exemple, l’action d’automatisation `aws:executeScript` comprend les sections suivantes :
+ L’**exécution** est le langage à utiliser pour exécuter le script fourni.
+ Le **gestionnaire** est le nom de votre fonction. Vous devez vous assurer que la fonction définie dans le gestionnaire possède deux paramètres : `events` et `context`. L’exécution de PowerShell ne prend pas en charge ce paramètre. 
+ **Script** est un script incorporé que vous souhaitez exécuter pendant le flux de travail.
+ (Facultatif) La **Pièce jointe** est destinée aux scripts autonomes ou aux fichiers .zip qui peuvent être invoqués par l’action. Ce paramètre est obligatoire pour les runbook JSON.

L’onglet **Sorties** vous permet de spécifier les valeurs que vous souhaitez obtenir à partir d’une action. Vous pouvez référencer des valeurs de sortie dans des actions ultérieures de votre flux de travail ou générer des sorties à partir d’actions à des fins de journalisation. Toutes les actions n’auront pas d’onglet **Sorties** car toutes les actions ne prennent pas en charge les sorties. Par exemple, l’action `aws:pause` ne prend pas en charge les sorties. Pour les actions qui prennent en charge les sorties, l’onglet **Sorties** comprend les sections suivantes :
+ Le **Nom** est le nom à utiliser pour la valeur de sortie. Vous pouvez référencer les résultats dans des actions ultérieures de votre flux de travail.
+ Le **Sélecteur** est une chaîne d’expression JSONPath commençant par `"$."` qui est utilisée pour sélectionner un ou plusieurs composants au sein d’un élément JSON.
+ Le **Type** est le type de données pour la valeur de sortie. Par exemple, un type de donnée `String` ou `Integer`.

L’onglet **Configuration** contient des propriétés et des options utilisables par toutes les actions d’automatisation. L’action se compose des sections suivantes :
+ La propriété **Maximal de tentatives** indique le nombre de tentatives répétées d’une action en cas d’échec.
+ La propriété **Délai en secondes** spécifie la valeur du délai d’expiration d’une action.
+ La propriété **Est critique** détermine si l’échec de l’action arrête l’ensemble de l’automatisation.
+ La propriété **Etape suivante** détermine l’action à laquelle l’automatisation passe ensuite dans le runbook.
+ La propriété **En cas d’échec** détermine à quelle action l’automatisation passe ensuite dans le runbook en cas d’échec de l’action.
+ La propriété **En cas d’annulation** détermine à quelle action l’automatisation passe ensuite dans le runbook si l’action est annulée par un utilisateur.

Pour supprimer une action, vous pouvez utiliser l’espace arrière, la barre d’outils au-dessus du canevas ou cliquer avec le bouton droit de la souris et choisir **Supprimer l’action**.

Au fur et à mesure que votre flux de travail se développe, il se peut qu’il ne rentre pas dans le canevas. Pour adapter le flux de travail au canevas, essayez l’une des options suivantes : 
+ Utilisez les commandes situées sur les panneaux latéraux pour redimensionner ou fermer les panneaux.
+ Utilisez la barre d’outils située en haut du canevas pour zoomer ou dézoomer le graphique du flux de travail.

## Mise à jour de votre runbook
<a name="visual-designer-update-runbook"></a>

Vous pouvez mettre à jour un flux de travail de runbook existant en créant une nouvelle version de votre runbook. Les mises à jour de vos runbook peuvent être effectuées à l’aide de l’expérience de conception visuelle ou en modifiant directement le code. Pour mettre à jour un runbook existant, procédez comme suit :

1. Connectez-vous à la [console Systems Manager Automation](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/).

1. Sélectionnez le runbook que vous souhaitez mettre à jour.

1. Choisissez **Create new version (Créer une version)**.

1. L’expérience de conception visuelle comporte deux volets : un volet de code et un volet de flux de travail visuel. Sélectionnez **Design** dans le volet du flux de travail visuel pour modifier votre flux de travail avec l’expérience de conception visuelle. Lorsque vous avez terminé, sélectionnez **Créer une nouvelle version** pour enregistrer les modifications et quitter.

1. (Facultatif) Utilisez le volet de code pour modifier le contenu du runbook en YAML ou JSON.

## Exportation de votre runbook
<a name="visual-designer-export-runbook"></a>

Pour exporter le code YAML ou JSON du flux de travail de votre runbook, ainsi qu’un graphique de votre flux de travail, procédez comme suit : 

1. Choisissez votre runbook dans la console **Documents**.

1. Choisissez **Create new version (Créer une version)**.

1. Dans le menu déroulant **Actions**, sélectionnez si vous souhaitez exporter le diagramme ou le runbook, et sélectionnez le format que vous préférez.

# Configurer les entrées et les sorties pour vos actions
<a name="visual-designer-action-inputs-outputs"></a>

Chaque action d’automatisation répond en fonction des entrées qu’elle reçoit. Dans la plupart des cas, vous transmettez ensuite le résultat aux actions suivantes. Dans l’expérience de conception visuelle, vous pouvez configurer les données d’entrée et de sortie d’une action dans les onglets **Entrées** et **Sorties** du panneau **Formulaire**.

Pour obtenir des informations détaillées sur la définition et l’utilisation de la sortie pour les actions d’automatisation, consultez [Utilisation des sorties d'action comme entrées](automation-action-outputs-inputs.md). 

## Fournir des données d’entrée pour une action
<a name="providing-input"></a>

Chaque action d’automatisation comporte une ou plusieurs entrées pour lesquelles vous devez fournir une valeur. La valeur que vous fournissez pour la saisie d’une action est déterminée par le type de données et le format acceptés par l’action. Par exemple, les actions `aws:sleep` nécessitent une valeur de chaîne au format ISO 8601 pour l’entrée `Duration`.

Généralement, vous utilisez des actions dans le flux de travail de votre runbook qui renvoient des résultats que vous souhaitez utiliser dans les actions suivantes. Il est important de vous assurer que les valeurs d’entrée sont correctes afin d’éviter des erreurs dans le flux de travail de votre runbook. Les valeurs d’entrée sont également importantes car elles déterminent si l’action renvoie le résultat attendu. Par exemple, lorsque vous utilisez l’action `aws:executeAwsApi`, vous devez vous assurer que vous fournissez la bonne valeur pour l’opération d’API.

## Définir les données de sortie pour une action
<a name="defining-output"></a>

Certaines actions d’automatisation renvoient un résultat après avoir effectué les opérations définies. Les actions qui renvoient une sortie ont des sorties prédéfinies ou vous permettent de définir vous-même les sorties. Par exemple, l’action `aws:createImage` possède des sorties prédéfinies qui renvoient `ImageId` et `ImageState`. En comparaison, avec l’action `aws:executeAwsApi`, vous pouvez définir les sorties que vous souhaitez obtenir de l’opération d’API spécifiée. Par conséquent, vous pouvez renvoyer une ou plusieurs valeurs issues d’une seule opération d’API à utiliser dans les actions suivantes.

Pour définir vos propres sorties pour une action d’automatisation, vous devez spécifier le nom de la sortie, le type de données et la valeur de sortie. Pour continuer à utiliser l’action `aws:executeAwsApi` comme exemple, supposons que vous appelez l’opération d’API `DescribeInstances` depuis Amazon EC2. Dans cet exemple, vous souhaitez renvoyer, ou générer, le `State` d’une instance Amazon EC2 et diviser le flux de travail de votre runbook en fonction de la sortie. Vous choisissez de nommer la sortie **InstanceState** et d’utiliser le type de données **String**. 

Le processus de définition de la valeur réelle de la sortie varie en fonction de l’action. Par exemple, si vous utilisez l’action `aws:executeScript`, vous devez utiliser des déclarations `return` dans vos fonctions pour fournir des données à vos sorties. Avec d’autres actions telles que `aws:executeAwsApi`, `aws:waitForAwsResourceProperty` et `aws:assertAwsResourceProperty`, un `Selector` est requis. Le `Selector`, ou `PropertySelector` comme l’appellent certaines actions, est une chaîne JSONPath utilisée pour traiter la réponse JSON d’une opération d’API. Il est important de comprendre comment l’objet de réponse JSON issu d’une opération d’API est structuré afin de pouvoir sélectionner la valeur correcte pour votre sortie. À l’aide de l’opération d’API `DescribeInstances` mentionnée précédemment, consultez l’exemple de réponse JSON suivant :

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

Dans l’objet de réponse JSON, l’instance `State` est imbriquée dans un objet `Instances`, qui est imbriqué dans l’objet `Reservations`. Pour renvoyer la valeur de l’instance `State`, utilisez la chaîne suivante pour le `Selector` de sorte que la valeur puisse être utilisée dans notre sortie : **\$1.Reservations[0].Instances[0].State.Name**.

Pour référencer une valeur de sortie dans les actions suivantes du flux de travail de votre runbook, le format suivant est utilisé : `{{ StepName.NameOfOutput }}`. Par exemple, **\$1\$1 GetInstanceState.InstanceState \$1\$1**. Dans l’expérience de conception visuelle, vous pouvez choisir les valeurs de sortie à utiliser dans les actions suivantes à l’aide de la liste déroulante des entrées. Lorsque vous utilisez des sorties dans des actions ultérieures, le type de données de la sortie doit correspondre au type de données de l’entrée. Dans cet exemple, la sortie `InstanceState` est un `String`. Par conséquent, pour utiliser la valeur dans l’entrée d’une action ultérieure, celle-ci doit accepter un `String`.

# Gestion des erreurs grâce à l’expérience de conception visuelle
<a name="visual-designer-error-handling"></a>

Par défaut, lorsqu’une action signale une erreur, Automation arrête complètement le flux de travail du runbook. Cela est dû au fait que la valeur par défaut de la propriété `onFailure` pour toutes les actions est `Abort`. Vous pouvez configurer la façon dont l’Automatisation gère les erreurs dans le flux de travail de votre runbook. Même si vous avez configuré la gestion des erreurs, certaines erreurs peuvent tout de même entraîner l’échec d’une automatisation. Pour de plus amples informations, veuillez consulter [Résolution des problèmes liés à Systems Manager Automation](automation-troubleshooting.md). Dans l’expérience de conception visuelle, vous configurez la gestion des erreurs dans le panneau **Configuration**.

![\[Options de gestion d’erreur\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_error_handling.png)


## Réessayer l’action en cas d’erreur
<a name="retry-actions"></a>

Pour réessayer une action en cas d’erreur, spécifiez une valeur pour la propriété **Tentatives maximum**. La valeur par défaut est 1. Si vous spécifiez une valeur supérieure à 1, l’action n’est pas considérée comme ayant échoué tant que toutes les tentatives n’ont pas échoué.

## Délais
<a name="timeout-seconds"></a>

Vous pouvez configurer un délai d’attente pour les actions afin de définir le nombre maximum de secondes pendant lesquelles votre action peut s’exécuter avant d’échouer. Pour configurer un délai d’attente, entrez le nombre de secondes pendant lesquelles votre action doit attendre avant qu’elle n’échoue dans la propriété **Délai en secondes**. Si le délai est expiré et que l’action a une valeur de `Max attempts` qui est supérieure à 1, alors l’étape n’est pas considérée comme ayant expirée jusqu’à ce que les tentatives soient terminées.

## Actions ayant échoué
<a name="failure-actions"></a>

Par défaut, lorsqu’une action échoue, Automation arrête complètement le flux de travail du runbook. Vous pouvez modifier ce comportement en spécifiant une valeur alternative pour la propriété **En cas d’échec** des actions de votre runbook. Si vous souhaitez que le flux de travail passe à l’étape suivante du runbook, choisissez **Continuer**. Si vous souhaitez que le flux de travail passe à une autre étape ultérieure du runbook, choisissez **Étape**, puis entrez le nom de l’étape.

## Actions annulées
<a name="cancel-actions"></a>

Par défaut, lorsqu’une action est annulée par un utilisateur, Automation arrête complètement le flux de travail du runbook. Vous pouvez modifier ce comportement en spécifiant une valeur alternative pour la propriété **Annuler** des actions de votre runbook. Si vous souhaitez que le flux de travail passe à une autre étape ultérieure du runbook, choisissez **Étape**, puis entrez le nom de l’étape.

## Actions critiques
<a name="critical-actions"></a>

Vous pouvez désigner une action comme *critique*, ce qui signifie qu’elle détermine le statut global des rapports de votre automatisation. Si une étape portant cette désignation échoue, Automation signale l’état final comme `Failed` indépendamment du succès des autres actions. Pour configurer une action comme critique, laissez la valeur par défaut comme **Vrai** pour la propriété **Est critique**.

## Fin des actions
<a name="end-actions"></a>

La propriété **Est fin** arrête une exécution d’automatisation à la fin de l’action spécifiée. La valeur par défaut pour cette propriété est `false`. Si vous configurez cette propriété pour une action, l’automatisation s’arrête, que l’action réussisse ou échoue. Cette propriété est le plus souvent utilisée avec des actions `aws:branch` destinées à gérer des valeurs d’entrée inattendues ou non définies. L’exemple suivant montre un runbook qui attend un état d’instance tel que `running`, `stopping`, ou `stopped`. Si une instance est dans un état différent, l’automatisation prend fin.

![\[L’expérience de conception visuelle est l’exemple final\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_is_end_example.png)


# Tutoriel : Création d’un runbook à l’aide de l’expérience de conception visuelle
<a name="visual-designer-tutorial"></a>

Dans ce tutoriel, vous apprendrez les bases de l’utilisation de l’expérience de conception visuelle fournie par Systems Manager Automation. Dans le cadre de l’expérience de conception visuelle, vous pouvez créer un runbook qui utilise plusieurs actions. Vous utilisez la fonctionnalité glisser-déposer pour organiser les actions sur le canevas. Vous pouvez également rechercher, sélectionner et configurer ces actions. Vous pouvez ensuite afficher le code YAML généré automatiquement pour le flux de travail de votre runbook, quitter l’expérience de conception visuelle, exécuter le runbook et consulter les détails d’exécution.

Ce tutoriel explique également comment mettre à jour le runbook et afficher la nouvelle version. À la fin du tutoriel, vous effectuez une étape de nettoyage et supprimez votre runbook.

Après avoir terminé ce tutoriel, vous saurez comment utiliser l’expérience de conception visuelle pour créer un runbook. Vous saurez également comment mettre à jour, exécuter et supprimer votre runbook.

**Note**  
Avant de commencer ce tutoriel, assurez-vous d’avoir terminé [Configuration d'Automation](automation-setup.md).

**Topics**
+ [Étape 1 : Navigation vers l’expérience de conception visuelle](#navigate-console)
+ [Étape 2 : Création d’un flux de travail](#create-workflow)
+ [Étape 3 : Vérification du code généré automatiquement](#view-generated-code)
+ [Étape 4 : Exécution de votre nouveau runbook](#use-tutorial-runbook)
+ [Étape 5 : nettoyer](#cleanup-tutorial-runbook)

## Étape 1 : Navigation vers l’expérience de conception visuelle
<a name="navigate-console"></a>

1. Connectez-vous à la [console Systems Manager Automation](https://console.aws.amazon.com/systems-manager/automation/home?region=us-east-1#/).

1. Sélectionnez **Créer un runbook d’Automatisation**.

## Étape 2 : Création d’un flux de travail
<a name="create-workflow"></a>

Dans l’expérience de conception visuelle, un flux de travail est une représentation graphique de votre runbook sur le canevas. Vous pouvez utiliser l’expérience de conception visuelle pour définir, configurer et examiner les actions individuelles de votre runbook.

**Pour créer un flux de travail**

1. À côté du bouton **Design** et **Code**, sélectionnez l’icône en forme de crayon et saisissez le nom de votre runbook. Dans le cadre de ce didacticiel, entrez **VisualDesignExperienceTutorial**.  
![\[Expérience de conception visuelle : nommez votre runbook\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_tutorial_name.png)

1. Dans la section **Attributs du document** du panneau **Formulaire**, développez le menu déroulant **Paramètres d’entrée**, puis sélectionnez **Ajouter un paramètre**.

   1. Dans le champ **Nom du paramètre**, saisissez **InstanceId**.

   1. Dans le menu déroulant **Type**, sélectionnez **AWS::EC2::Instance**.

   1. Sélectionnez le bouton **Obligatoire**.  
![\[Créez un paramètre pour votre runbook\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_actions_tutorial_parameter.png)

1. Dans le **AWS APIs**navigateur, entrez **DescribeInstances** dans la barre de recherche.

1. Faites glisser une DescribeInstances action **Amazon EC2** vers le canevas vide.

1. Pour **Nom étape**, saisissez une valeur. Pour ce tutoriel, vous pouvez utiliser le nom **GetInstanceState**.  
![\[Choisissez une action d’API de description des instances Amazon EC2.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_tutorial_api_action.png)

   1. Développez le menu déroulant **Entrées supplémentaires**, puis dans le champ **Nom de l’entrée**, saisissez **InstanceIds**.

   1. Sélectionnez l’onglet **Entrées**.

   1. Dans le champ **Valeur d’entrée**, sélectionnez l’entrée du document **InstanceId**. Cela fait référence à la valeur du paramètre d’entrée que vous avez créé au début de la procédure. Étant donné que l'**InstanceIds**entrée de l'`DescribeInstances`action accepte `StringList` des valeurs, vous devez placer l'**InstanceId**entrée entre crochets. Le YAML pour la **valeur d’entrée** doit correspondre à ce qui suit : **['\$1\$1 InstanceId \$1\$1']**.

   1. Dans l’onglet **Sorties**, sélectionnez **Ajouter une sortie** et saisissez **InstanceState** dans le champ **Nom**.

   1. Dans le champ **Sélecteur**, saisissez **\$1.Reservations[0].Instances[0].State.Name**.

   1. Dans le menu déroulant **Type**, sélectionnez **String**.

1. Faites glisser une action **Branche** depuis le navigateur **Actions**, puis déposez-la en dessous de l’étape **`GetInstanceState`**. 

1. Pour **Nom étape**, saisissez une valeur. Pour ce tutoriel, utilisez le nom `BranchOnInstanceState`.

   Pour définir la logique de branchement, procédez comme suit :

   1. Choisissez l’état **`Branch`** sur le canevas. Ensuite, sous **Entrées** et **Choix**, sélectionnez l’icône en forme de crayon pour modifier la **Règle n°1**.

   1. Sélectionnez **Ajouter des conditions**.

   1. Dans la boîte de dialogue **Conditions pour la règle n°1**, sélectionnez le résultat de l’étape **GetInstanceState.InstanceState** dans le menu déroulant **Variable**.

   1. Pour **Opérateur**, sélectionnez **est égal à**.

   1. Pour **Valeur**, sélectionnez **String** dans la liste déroulante. Saisissez **stopped**.  
![\[Définissez une condition pour une action de branche.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_tutorial_condition.png)

   1. Sélectionnez **Enregistrer les conditions**.

   1. Sélectionnez **Ajouter une nouvelle règle de choix**.

   1. Sélectionnez **Ajouter des conditions** pour la **Règle n°2**.

   1. Dans la boîte de dialogue **Conditions pour la règle n°2**, sélectionnez le résultat de l’étape **GetInstanceState.InstanceState** dans le menu déroulant **Variable**.

   1. Pour **Opérateur**, sélectionnez **est égal à**.

   1. Pour **Valeur**, sélectionnez **String** dans la liste déroulante. Saisissez **stopping**.

   1. Sélectionnez **Enregistrer les conditions**.

   1. Sélectionnez **Ajouter une nouvelle règle de choix**.

   1. Pour la **Règle n°3**, sélectionnez **Ajouter des conditions**.

   1. Dans la boîte de dialogue **Conditions pour la règle n°3**, sélectionnez le résultat de l’étape **GetInstanceState.InstanceState** dans le menu déroulant **Variable**.

   1. Pour **Opérateur**, sélectionnez **est égal à**.

   1. Pour **Valeur**, sélectionnez **String** dans la liste déroulante. Saisissez **running**.

   1. Sélectionnez **Enregistrer les conditions**.

   1. Dans la **Règle par défaut**, sélectionnez **Aller à la fin** pour l’**Etape par défaut**.

1. Faites glisser une action **Modifier l'état d'une instance** vers la zone vide **Faire glisser l'action ici** sous le **\$1\$1 GetInstanceState. InstanceState \$1\$1 == Condition « arrêtée »**.

   1. Pour le **Nom de l’étape**, saisissez **StartInstance**.

   1. Dans l'onglet **Entrées**, sous **Instance IDs**, choisissez la valeur d'entrée du **InstanceId**document dans le menu déroulant.

   1. Pour l’**Etat souhaité**, spécifiez **`running`**.

1. Faites glisser une action **Attendre la AWS ressource** vers la zone vide **Faire glisser l'action ici** sous le **\$1\$1 GetInstanceState. InstanceState \$1\$1 == condition « d'arrêt »**.

1. Pour **Nom étape**, saisissez une valeur. Pour ce tutoriel, utilisez le nom `WaitForInstanceStop`.

   1. Pour le champ **Service**, sélectionnez **Amazon EC2**.

   1. Pour le champ **API**, sélectionnez **DescribeInstances**.

   1. Pour le champ **Sélecteur de propriétés**, saisissez **\$1.Reservations[0].Instances[0].State.Name**.

   1. Pour le paramètre **Valeurs souhaitées**, saisissez **`["stopped"]`**.

   1. Dans l'onglet **Configuration** de l'**WaitForInstanceStop**action, choisissez dans le **StartInstance**menu déroulant **Étape suivante**.

1. Faites glisser une action **Exécuter la commande sur les instances** vers la zone vide **Drag action here** située sous le **\$1\$1 GetInstanceState. InstanceState \$1\$1 == condition « en cours d'exécution »**.

1. Pour le **Nom de l’étape**, saisissez **SayHello**.

   1. Dans l’onglet **Entrées**, saisissez **AWS-RunShellScript** pour le paramètre **Nom du document**.

   1. Pour **InstanceIds**, choisissez la valeur d'entrée du **InstanceId**document dans la liste déroulante.

   1. Développez le menu déroulant **Entrées supplémentaires**, puis sélectionnez **Paramètres** dans le menu déroulant **Nom de l’entrée**.

   1. Saisissez **`{"commands": "echo 'Hello World'"}`** dans le champ **Valeur de l’entrée**.

1. Passez en revue le runbook terminé dans le canevas et sélectionnez **Créer un runbook** pour enregistrer le runbook du tutoriel.  
![\[Vérifiez et créez le runbook.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/visual_designer_tutorial_complete.png)

## Étape 3 : Vérification du code généré automatiquement
<a name="view-generated-code"></a>

Lorsque vous glissez et déposez des actions depuis le navigateur **Actions** vers le canevas, l’expérience de conception visuelle compose automatiquement le contenu YAML ou JSON de votre runbook en temps réel. Vous pouvez consulter et modifier ce code. Pour afficher le code généré automatiquement, sélectionnez **Code** pour le commutateur **Conception** et **Code**.

## Étape 4 : Exécution de votre nouveau runbook
<a name="use-tutorial-runbook"></a>

Après avoir créé votre runbook, vous pouvez exécuter l’automatisation.

**Pour exécuter votre nouveau runbook d’automatisation**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Automation** (Automatisation), puis **Execute automation** (Exécuter l'automatisation).

1. Dans la liste **Automation document** (Document Automation), sélectionnez un runbook. Sélectionnez une ou plusieurs options dans le panneau **Document categories (Catégories de documents)** pour filtrer les documents SSM en fonction de leur but. Pour afficher un runbook vous appartenant, sélectionnez l'onglet **Owned by me (M'appartenant)**. Pour afficher un runbook partagé avec votre compte, sélectionnez l'onglet **Shared with me (Partagé avec moi)**. Pour afficher tous les runbooks, sélectionnez l'onglet **All documents (Tous les documents)**.
**Note**  
Vous pouvez consulter les informations sur un runbook en sélectionnant son nom.

1. Dans la section **Document details (Détails du document)**, vérifiez que l'option **Document version (Version de document)** correspond à la version que vous souhaitez exécuter. Le système inclut les options de version suivantes : 
   + **Version par défaut lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et qu’une nouvelle version par défaut est attribuée.
   + **Dernière version lors de l’exécution** : sélectionnez cette option si le runbook d’Automatisation est mis à jour régulièrement et que vous souhaitez exécuter la dernière version mise à jour.
   + **1 (Par défaut)** : sélectionnez cette option pour exécuter la première version du document, qui est la version par défaut.

1. Choisissez **Suivant**.

1. Dans la section **Exécuter le runbook d’Automatisation**, sélectionnez **Exécution simple**.

1. Dans la section **Input parameters (Paramètres d'entrée)**, spécifiez les entrées obligatoires. Vous pouvez éventuellement choisir un rôle de service IAM dans la **AutomationAssumeRole**liste.

1. (Facultatif) Choisissez une CloudWatch alarme Amazon à appliquer à votre automatisation à des fins de surveillance. Pour associer une CloudWatch alarme à votre automatisation, le principal IAM qui lance l'automatisation doit être autorisé à effectuer l'`iam:createServiceLinkedRole`action. Pour plus d'informations sur les CloudWatch alarmes, consultez la section [Utilisation des CloudWatch alarmes Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html). Si votre alarme s’active, l’automatisation s’arrête. Si vous utilisez AWS CloudTrail, vous verrez l'appel d'API dans votre journal. 

1. Sélectionnez **Execute (Exécuter)**. 

## Étape 5 : nettoyer
<a name="cleanup-tutorial-runbook"></a>

**Pour supprimer votre runbook**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Sélectionnez l’onglet **M’appartenant**.

1. Localisez le **VisualDesignExperienceTutorial**runbook.

1. Sélectionnez le bouton sur la page de la fiche du document, puis sélectionnez **Supprimer le document** dans le menu déroulant **Actions**.

# Création de runbooks Automation
<a name="automation-authoring-runbooks"></a>

Chaque runbook dans Automation, un outil dans AWS Systems Manager, définit une automatisation. Les runbooks Automation définissent les actions effectuées durant une automatisation. Dans le contenu du runbook, vous définissez les paramètres d'entrée, les sorties et les actions que Systems Manager exécute sur vos instances et AWS ressources gérées. 

L'automatisation inclut plusieurs runbooks prédéfinis que vous pouvez utiliser afin d'effectuer des tâches courantes, telles que le redémarrage d'une ou plusieurs instances Amazon Elastic Compute Cloud (Amazon EC2) ou la création d'une Amazon Machine Image (AMI). Cependant, vos cas d'utilisation peuvent dépasser les fonctionnalités des runbooks prédéfinis. Dans ce cas, vous pouvez créer vos propres runbooks et les modifier en fonction de vos besoins.

Un runbook se compose d'actions d'automatisation, de paramètres relatifs à ces actions et de paramètres d'entrée que vous spécifiez. Le contenu d'un runbook est écrit en YAML ou en JSON. Si vous n’êtes pas familier avec YAML ou JSON, nous vous recommandons d’utiliser le concepteur visuel ou d’en apprendre davantage sur l’un ou l’autre des langages de balisage avant d’essayer de créer votre propre dossier d’exploitation. Pour plus d’informations sur le concepteur visuel, consultez [Expérience de conception visuelle pour les runbooks d’Automatisation](automation-visual-designer.md).

Les sections suivantes vous aideront à créer votre premier runbook.

## Identifier votre cas d'utilisation
<a name="automation-authoring-runbooks-use-case"></a>

La première étape de la création d'un runbook consiste à identifier votre cas d'utilisation. Par exemple, vous avez planifié le runbook `AWS-CreateImage` pour qu'il s'exécute quotidiennement sur toutes vos instances Amazon EC2 de production. À la fin du mois, vous décidez d'avoir plus d'images que nécessaire pour les points de récupération. Ensuite, vous voulez supprimer automatiquement l'AMI la plus ancienne d'une instance Amazon EC2 lorsqu'une nouvelle AMI est créée. Pour cela, vous créez un runbook qui :

1. Exécute l'action `aws:createImage` et spécifie l'ID d'instance dans la description de l'image.

1. Exécute l'action `aws:waitForAwsResourceProperty` pour interroger le statut de l'image jusqu'à ce qu'elle soit `available`.

1. Une fois que l'image a le statut `available`, l'action `aws:executeScript` exécute un script Python personnalisé qui rassemble les ID de toutes les images associées à votre instance Amazon EC2. Pour cela, le script effectue un filtrage à l'aide de l'ID d'instance dans la description de l'image que vous avez spécifiée lors de la création. Ensuite, le script trie la liste des images IDs en fonction `creationDate` de l'image et affiche l'ID de la plus ancienneAMI.

1. Enfin, l'action `aws:deleteImage` s'exécute pour supprimer l'AMI la plus ancienne à l'aide de l'ID de la sortie de l'étape précédente.

Dans ce scénario, vous utilisiez déjà le runbook `AWS-CreateImage`, mais vous avez constaté que votre cas d'utilisation nécessitait une plus grande flexibilité. C'est une situation courante en raison de l'éventualité d'un chevauchement entre les runbooks et les actions d'automatisation. Par conséquent, vous devrez peut-être ajuster les runbooks ou les actions à utiliser pour traiter votre cas d'utilisation.

Par exemple, les actions `aws:executeScript` et `aws:invokeLambdaFunction` vous permettent d'exécuter des scripts personnalisés dans le cadre de votre automatisation. Entre les deux, `aws:invokeLambdaFunction` peut vous sembler préférable du fait qu'elle prend en charge des langages d'exécution supplémentaires. Pour sa part, `aws:executeScript` vous permet de créer votre contenu de script directement dans les runbooks YAML et de fournir du contenu de script sous forme de pièces jointes pour les runbooks JSON. Vous pouvez même considérer que l'action `aws:executeScript` est plus simple en termes de configuration d' Gestion des identités et des accès AWS (IAM). Comme il utilise les autorisations fournies dans le`AutomationAssumeRole`, il `aws:executeScript` ne nécessite pas de rôle d'exécution de AWS Lambda fonction supplémentaire.

Dans un scénario donné, une action peut offrir plus de flexibilité, ou des fonctionnalités supplémentaires, par rapport à l'autre. Nous vous recommandons donc d'examiner les paramètres d'entrée disponibles pour le runbook ou l'action à utiliser afin de déterminer celui qui correspond le mieux à votre cas d'utilisation et à vos préférences.

## Configurer votre environnement de développement.
<a name="automation-authoring-runbooks-environment"></a>

Après avoir identifié votre cas d'utilisation et les runbooks ou les actions d'automatisation prédéfinis à utiliser dans votre runbook, vous devez configurer votre environnement de développement pour le contenu de votre runbook. Pour développer le contenu de votre runbook, nous vous recommandons d'utiliser la console Documents AWS Toolkit for Visual Studio Code au lieu de la console Systems Manager Documents. 

Le Toolkit for VS Code est une extension open source de Visual Studio Code (VS Code), qui offre davantage de fonctionnalités que la console de documents Systems Manager. Les fonctionnalités utiles incluent la validation de schéma pour YAML et JSON, des extraits pour les types d'action d'automatisation et la prise en charge de la saisie automatique de diverses options dans YAML et JSON. 

Pour de plus amples informations sur l'installation du Toolkit for VS Code, veuillez consulter [Installation du AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html). Pour plus d'informations sur l'utilisation de Toolkit for VS Code pour développer des runbooks, veuillez consulter [Utilisation de documents Systems Manager Automation](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/systems-manager-automation-docs.html) dans le *Guide de l'utilisateur AWS Toolkit for Visual Studio Code *.

## Développer le contenu d'un runbook
<a name="automation-authoring-runbooks-developing-content"></a>

Une fois votre cas d'utilisation identifié et votre environnement configuré, vous pouvez développer le contenu de votre Runbook. Votre cas d'utilisation et vos préférences dicteront en grande partie les actions d'automatisation ou les runbooks à utiliser dans le contenu de votre runbook. Certaines actions ne prennent en charge qu'un sous-ensemble de paramètres d'entrée, alors que d'autres vous permettent d'accomplir une tâche similaire. D'autres actions ont des sorties spécifiques, telles que `aws:createImage`, alors que certaines actions vous permettent de définir vos propres sorties, telles que `aws:executeAwsApi`. 

Si vous ne savez pas comment utiliser une action particulière dans votre runbook, nous vous recommandons d'examiner l'entrée correspondante pour l'action dans [Référence sur les actions Systems Manager Automation](automation-actions.md). Nous vous recommandons également d'examiner le contenu des runbooks prédéfinis afin de disposer d'exemples concrets sur la façon dont ces actions sont utilisées. Pour obtenir d'autres exemples d'applications réelles de runbooks, veuillez consulter [Exemples supplémentaires de runbook](automation-document-examples.md).

Les didacticiels suivants vous démontreront les différences de simplicité et de flexibilité offertes par le contenu du runbook à l'aide d'exemples sur la façon de corriger des groupes d'instances Amazon EC2 par étapes :
+ [Exemple 1 : création de runbooks parent-enfant](automation-authoring-runbooks-parent-child-example.md) - Dans cet exemple, deux runbooks sont utilisés dans une relation parent-enfant. Le runbook parent initie une automatisation de contrôle de débit du runbook enfant. 
+ [Exemple 2 : runbook scripté](automation-authoring-runbooks-scripted-example.md) - Cet exemple vous explique comment accomplir les tâches de l'exemple 1 en condensant le contenu dans un seul runbook et en utilisant des scripts dans votre runbook.

# Exemple 1 : création de runbooks parent-enfant
<a name="automation-authoring-runbooks-parent-child-example"></a>

L'exemple suivant montre comment créer deux runbooks qui corrigent les groupes étiquetés d'instances Amazon Elastic Compute Cloud (Amazon EC2) par étapes. Ces runbooks sont utilisés dans une relation parent-enfant, le runbook parent initiant une automatisation de contrôle de débit du runbook enfant. Pour de plus amples informations sur les automatisations de contrôle de débit, veuillez consulter [Exécuter des opérations automatisées à grande échelle](running-automations-scale.md). Pour de plus amples informations sur les actions d'automatisation utilisées dans cet exemple, veuillez consulter [Référence sur les actions Systems Manager Automation](automation-actions.md).

## Créer le runbook enfant
<a name="automation-authoring-runbooks-child-runbook"></a>

Cet exemple de runbook contient le scénario suivant. Emily est ingénieure système chez AnyCompany Consultants, LLC. Elle doit configurer l'application de correctifs pour les groupes d'instances Amazon Elastic Compute Cloud (Amazon EC2) qui hébergent des bases de données principale et secondaire. Les applications accèdent à ces bases de données 24 heures sur 24, de sorte que l'une des instances de base de données doit toujours être disponible. 

Elle décide que la meilleure approche consiste à appliquer des correctifs par étapes pour les instances. Le groupe principal d'instances de base de données sera donc corrigé en premier, suivi du groupe secondaire d'instances de base de données. En outre, afin de ne pas encourir des coûts supplémentaires en laissant s'exécuter des instances précédemment arrêtées, Emily souhaite que les instances corrigées retrouvent leur statut d'origine avant l'application du correctif. 

Emily identifie les groupes principal et secondaire d'instances de base de données grâce aux balises associées aux instances. Elle décide de créer un runbook parent qui démarre une automatisation de contrôle de débit d'un runbook enfant. Ce faisant, elle peut cibler les balises associées aux groupes principal et secondaire d'instances de base de données, et gérer la concurrence des automatisations enfants. Après avoir examiné les documents Systems Manager (SSM) disponibles pour l'application de correctifs, elle choisit le document `AWS-RunPatchBaseline`. En utilisant ce document SSM, ses collègues peuvent examiner les informations de conformité des correctifs associées, une fois l'opération d'application de correctifs terminée.

Pour commencer à créer le contenu de son runbook, Emily examine les actions d'automatisation disponibles et commence à créer le contenu du runbook enfant comme suit :

1. Tout d'abord, elle fournit des valeurs pour le schéma et la description du runbook, et elle définit les paramètres d'entrée pour le runbook enfant.

   En utilisant le paramètre `AutomationAssumeRole`, Emily et ses collègues peuvent utiliser un rôle IAM existant qui autorise Automation à effectuer des actions dans le runbook en leur nom. Emily utilise le paramètre `InstanceId` pour déterminer l'instance qui doit être corrigée. Le cas échéant, les paramètres `Operation`, `RebootOption` et `SnapshotId` peuvent servir à fournir des valeurs pour documenter les paramètres de `AWS-RunPatchBaseline`. Afin d'empêcher que des valeurs non valides soient fournies à ces paramètres de document, elle définit les `allowedValues` selon besoin.

------
#### [ 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. Avec les éléments de niveau supérieur définis, Emily procède à la création des actions qui constituent les `mainSteps` du runbook. La première étape affiche le statut actuel de l'instance cible spécifiée dans le paramètre d'entrée `InstanceId` via l'action `aws:executeAwsApi`. La sortie de cette action sera utilisée dans des actions ultérieures.

------
#### [ 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. Au lieu de démarrer manuellement et de garder une trace du statut d'origine de chaque instance à corriger, Emily utilise la sortie de l'action précédente pour activer l'automatisation en fonction du statut de l'instance cible. Cela permet à l'automatisation d'exécuter différentes étapes en fonction des conditions définies dans l'action `aws:branch` et de voir son efficacité globale améliorée, sans intervention manuelle.

   Si l'instance a déjà le statut `running`, l'automatisation procède à l'application de correctifs à l'instance avec le document `AWS-RunPatchBaseline` via l'action `aws:runCommand`.

   Si l'instance a déjà le statut `stopping`, l'automatisation interroge l'instance afin d'atteindre le statut `stopped` via l'action `aws:waitForAwsResourceProperty`, démarre l'instance via l'action `executeAwsApi` et interroge l'instance afin d'atteindre le statut `running` avant d'appliquer un correctif à l'instance.

   Si l'état de l'instance est `stopped`, l'automatisation démarre l'instance et interroge l'instance pour qu'elle atteigne un état `running` avant de corriger l'instance à l'aide des mêmes actions.

------
#### [ 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. Une fois l'opération d'application de correctifs terminée, Emily souhaite que l'automatisation ramène l'instance cible au statut qui était le sien avant le démarrage de l'automatisation. Pour cela, elle utilise à nouveau la sortie de la première action. L'automatisation s'active en fonction du statut d'origine de l'instance cible via l'action `aws:branch`. Si, auparavant, l'instance était dans un autre statut que `running`, l'instance est arrêtée. Sinon, si l'instance a le statut `running`, l'automatisation se termine.

------
#### [ 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 passe en revue le contenu complet du runbook pour enfants et crée le runbook dans le même format Compte AWS et dans Région AWS les instances cibles. Maintenant, elle est prête à passer à la création du contenu du runbook parent. Voici en quoi consiste le contenu du runbook enfant terminé.

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

------

Pour de plus amples informations sur les actions d'automatisation utilisées dans cet exemple, veuillez consulter [Référence sur les actions Systems Manager Automation](automation-actions.md).

## Créer le runbook parent
<a name="automation-authoring-runbooks-parent-runbook"></a>

Cet exemple de runbook poursuit le scénario décrit dans la section précédente. Maintenant qu'Emily a créé le runbook enfant, elle commence à créer le contenu du runbook parent comme suit :

1. Tout d'abord, elle fournit des valeurs pour le schéma et la description du runbook, et elle définit les paramètres d'entrée pour le runbook parent.

   En utilisant le paramètre `AutomationAssumeRole`, Emily et ses collègues peuvent utiliser un rôle IAM existant qui autorise Automation à effectuer des actions dans le runbook en leur nom. Emily utilise les paramètres `PatchGroupPrimaryKey` et `PatchGroupPrimaryValue` pour spécifier la balise associée au groupe principal d'instances de base de données qui seront corrigées. Elle utilise les paramètres `PatchGroupSecondaryKey` et `PatchGroupSecondaryValue` pour spécifier la balise associée au groupe secondaire d'instances de base de données qui seront corrigées.

------
#### [ 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. Avec les éléments de niveau supérieur définis, Emily procède à la création des actions qui constituent les `mainSteps` du runbook. 

   La première action démarre une automatisation de contrôle de débit à l'aide du runbook enfant qu'elle vient de créer et qui cible les instances associées à la balise spécifiée dans les paramètres d'entrée `PatchGroupPrimaryKey` et `PatchGroupPrimaryValue`. Elle utilise les valeurs fournies aux paramètres d'entrée pour spécifier la clé et la valeur de la balise associée au groupe principal d'instances de base de données qu'elle souhaite corriger.

   Une fois la première automatisation terminée, la seconde action démarre une autre automatisation de contrôle de débit à l'aide du runbook enfant et qui cible les instances associées à la balise spécifiée dans les paramètres d'entrée `PatchGroupSecondaryKey` et `PatchGroupSecondaryValue`. Elle utilise les valeurs fournies aux paramètres d'entrée pour spécifier la clé et la valeur de la balise associée au groupe secondaire d'instances de base de données qu'elle souhaite corriger.

------
#### [ 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 passe en revue le contenu complet du runbook parent et crée le runbook dans le même format Compte AWS et dans Région AWS les instances cibles. Maintenant, elle est prête à tester ses runbooks afin de s'assurer que l'automatisation fonctionne correctement avant de les implémenter dans son environnement de production. Voici en quoi consiste le contenu du runbook parent terminé.

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

------

Pour de plus amples informations sur les actions d'automatisation utilisées dans cet exemple, veuillez consulter [Référence sur les actions Systems Manager Automation](automation-actions.md).

# Exemple 2 : runbook scripté
<a name="automation-authoring-runbooks-scripted-example"></a>

Cet exemple de runbook contient le scénario suivant. Emily est ingénieure système chez AnyCompany Consultants, LLC. Précédemment, elle a créé deux runbooks qui sont utilisés dans une relation parent-enfant pour corriger des groupes d'instances Amazon Elastic Compute Cloud (Amazon EC2) qui hébergent des bases de données principale et secondaire. Les applications accèdent à ces bases de données 24 heures sur 24, de sorte que l'une des instances de base de données doit toujours être disponible. 

Sur la base de cette exigence, elle a créé une solution qui corrige les instances par étapes à l'aide du document `AWS-RunPatchBaseline`Systems Manager (SSM). En utilisant ce document SSM, ses collègues peuvent examiner les informations de conformité des correctifs associées, une fois l'opération d'application de correctifs terminée. 

Le groupe principal d'instances de base de données sera donc corrigé en premier, suivi du groupe secondaire d'instances de base de données. De plus, pour éviter d'encourir des coûts supplémentaires en laissant en cours d'exécution des instances qui avaient été précédemment arrêtées, Emily s'est assurée que l'automatisation remettait les instances corrigées à leur état d'origine avant que la correction ne se produise. Emily a utilisé des balises associées aux groupes primaire et secondaire d'instances de base de données afin d'identifier les instances à corriger dans l'ordre voulu.

Sa solution automatisée existante fonctionne, mais elle voudrait l'améliorer, si possible. Pour faciliter la maintenance du contenu du runbook et les efforts de dépannage, elle souhaite condenser l'automatisation en un runbook unique et réduire le nombre de paramètres d'entrée. En outre, elle voudrait éviter de créer plusieurs automatisations enfants. 

Après avoir examiné les actions d'automatisation disponibles, elle détermine qu'elle peut améliorer sa solution en utilisant l'action `aws:executeScript` pour exécuter ses scripts Python personnalisés. Elle commence alors à créer le contenu du runbook comme suit :

1. Tout d'abord, elle fournit des valeurs pour le schéma et la description du runbook, et elle définit les paramètres d'entrée pour le runbook parent.

   En utilisant le paramètre `AutomationAssumeRole`, Emily et ses collègues peuvent utiliser un rôle IAM existant qui autorise Automation à effectuer des actions dans le runbook en leur nom. Contrairement à l'[exemple 1](automation-authoring-runbooks-parent-child-example.md), le paramètre `AutomationAssumeRole` est obligatoire, et non plus facultatif. Comme ce runbook inclut des `aws:executeScript` actions, un rôle de service Gestion des identités et des accès AWS (IAM) (ou un rôle d'assumer) est toujours requis. Cette exigence est nécessaire car certains des scripts Python spécifiés pour les actions appellent des opérations d'API AWS .

   Emily utilise les paramètres `PrimaryPatchGroupTag` et `SecondaryPatchGroupTag` pour spécifier les balises associées au groupe principal et secondaire d'instances de base de données qui seront corrigées. Pour simplifier les paramètres d'entrée requis, elle décide d'utiliser des paramètres `StringMap` plutôt que plusieurs paramètres `String`, comme elle l'a fait dans l'exemple de runbook 1. Le cas échéant, les paramètres `Operation`, `RebootOption` et `SnapshotId` peuvent servir à fournir des valeurs pour documenter les paramètres de `AWS-RunPatchBaseline`. Afin d'empêcher que des valeurs non valides soient fournies à ces paramètres de document, elle définit les `allowedValues` selon besoin.

------
#### [ 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. Avec les éléments de niveau supérieur définis, Emily procède à la création des actions qui constituent les `mainSteps` du runbook. La première étape rassemble toutes les instances associées à la balise spécifiée dans le `PrimaryPatchGroupTag` paramètre et génère un `StringMap` paramètre contenant l'ID de l'instance et l'état actuel de l'instance. IDs La sortie de cette action sera utilisée dans des actions ultérieures. 

   Remarque : le paramètre d'entrée `script` n'est pas pris en charge pour les runbooks JSON. Les runbooks JSON doivent fournir du contenu de script à l'aide du paramètre d'entrée `attachment`.

------
#### [ 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 utilise la sortie de l'action précédente dans une autre action `aws:executeScript` afin de vérifier que toutes les instances associées à la balise spécifiée dans le paramètre `PrimaryPatchGroupTag` ont un statut `running`.

   Si l'instance a déjà le statut `running` ou `shutting-down`, le script continue à boucler sur les instances restantes.

   Si l'instance a le statut `stopping`, le script interroge l'instance afin d'atteindre le statut `stopped` et démarre l'instance.

   Si l'instance a le statut `stopped`, le script démarre l'instance.

------
#### [ 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 vérifie que toutes les instances associées à la balise spécifiée dans le paramètre `PrimaryPatchGroupTag` ont été démarrées ou ont le statut `running`. Ensuite, elle utilise un autre script pour vérifier que toutes les instances, y compris celles qui ont été démarrées dans l'action précédente, ont atteint le statut `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 utilise deux scripts supplémentaires pour renvoyer les valeurs `String` individuelles de la clé et de la valeur de la balise spécifiée dans le paramètre `PrimaryPatchGroupTag`. Les valeurs renvoyées par ces actions lui permettent de fournir des valeurs directement au paramètre `Targets` pour le document `AWS-RunPatchBaseline`. L'automatisation procède à l'application de correctifs à l'instance avec le document `AWS-RunPatchBaseline` via l'action `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. Une fois l'opération d'application de correctifs terminée, Emily souhaite que l'automatisation ramène les instances cibles associées à la balise spécifiée dans le paramètre `PrimaryPatchGroupTag` au statut qui était le leur avant le démarrage de l'automatisation. Pour cela, elle utilise à nouveau la sortie de la première action dans un script. Sur la base du statut d'origine de l'instance cible, si l'instance était auparavant dans un autre statut que `running`, l'instance est arrêtée. Autrement, si l'instance a le statut `running`, le script continue à boucler sur les instances restantes.

------
#### [ 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'opération d'application de correctifs est terminée pour les instances associées à la balise spécifiée dans le paramètre `PrimaryPatchGroupTag`. Maintenant, Emily duplique toutes les actions précédentes dans son contenu de runbook afin de cibler les instances associées à la balise spécifiée dans le paramètre `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 passe en revue le contenu scripté du runbook terminé et crée le runbook dans le même format Compte AWS et en même temps Région AWS que les instances cibles. Maintenant, elle est prête à tester son runbook afin de s'assurer que l'automatisation fonctionne correctement avant de l'implémenter dans son environnement de production. Voici en quoi consiste le contenu du runbook chiffré terminé.

------
#### [ 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":"..."
            }
         }
      ]
   }
   ```

------

Pour de plus amples informations sur les actions d'automatisation utilisées dans cet exemple, veuillez consulter [Référence sur les actions Systems Manager Automation](automation-actions.md).

# Exemples supplémentaires de runbook
<a name="automation-document-examples"></a>

L'exemple de manuel d'exécution suivant montre comment utiliser des actions AWS Systems Manager d'automatisation pour automatiser les tâches courantes de déploiement, de dépannage et de maintenance.

**Note**  
Les exemples de runbooks de cette section sont fournis pour démontrer comment créer des runbooks personnalisés pour répondre à vos besoins opérationnels spécifiques. Ces runbooks ne sont pas destinés à être utilisés dans les environnements de production tels qu'ils sont. Cependant, vous pouvez les personnaliser pour votre propre usage.

**Topics**
+ [Déployer l'architecture VPC et les contrôleurs de domaine Microsoft Active Directory](automation-document-architecture-deployment-example.md)
+ [Restaurer un volume racine à partir du dernier instantané](automation-document-instance-recovery-example.md)
+ [Créer une AMI et une copie inter-régions](automation-document-backup-maintenance-example.md)

# Déployer l'architecture VPC et les contrôleurs de domaine Microsoft Active Directory
<a name="automation-document-architecture-deployment-example"></a>

Pour accroître l'efficacité et normaliser les tâches courantes, vous pouvez choisir d'automatiser les déploiements. Cela est utile si vous déployez régulièrement la même architecture sur plusieurs comptes et Régions AWS. L'automatisation des déploiements d'architecture peut également réduire le risque d'erreur humaine qui peut survenir lors du déploiement manuel de l'architecture. AWS Systems Manager Les actions d'automatisation peuvent vous y aider. Automation est un outil d’ AWS Systems Manager.

L'exemple de AWS Systems Manager runbook suivant exécute les actions suivantes :
+ Récupère la dernière Amazon Machine Image (AMI) Windows Server 2016 avec Systems Manager Parameter Store à utiliser lors du lancement des instances EC2 qui seront configurées en tant que contrôleurs de domaine. Parameter Store est un outil d’ AWS Systems Manager.
+ Utilise l'action d'`aws:executeAwsApi`automatisation pour appeler plusieurs opérations d' AWS API afin de créer l'architecture VPC. Les instances de contrôleur de domaine sont lancées dans des sous-réseaux privés et se connectent à Internet à l'aide d'une passerelle NAT. Cela permet à l'SSM Agent sur les instances d'accéder aux points de terminaison Systems Manager requis.
+ Utilise l'action d'`aws:waitForAwsResourceProperty`automatisation pour confirmer que les instances lancées par l'action précédente sont `Online` destinées à AWS Systems Manager.
+ Il utilise l'action d'automatisation `aws:runCommand` pour configurer les instances lancées en tant que contrôleurs de domaine 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 $_",
                "}"
              ]
            }
          }
        }
      ]
    }
```

------

# Restaurer un volume racine à partir du dernier instantané
<a name="automation-document-instance-recovery-example"></a>

Le système d'exploitation d'un volume racine peut être corrompu pour diverses raisons. Par exemple, à l'issue d'une opération d'application de correctifs, le démarrage des instances peut échouer pour cause de noyau ou de registre corrompu. L'automatisation des tâches de dépannage courantes, telles que la restauration d'un volume racine à partir du dernier instantané pris avant l'opération de correction, permet de réduire les temps d'arrêt et d'accélérer les efforts de dépannage. AWS Systems Manager Les actions d'automatisation peuvent vous y aider. Automation est un outil d’ AWS Systems Manager.

L'exemple de AWS Systems Manager runbook suivant exécute les actions suivantes : 
+ Il utilise l'action d'automatisation `aws:executeAwsApi` pour récupérer les détails du volume racine de l'instance.
+ Il utilise l'action d'automatisation `aws:executeScript` pour récupérer le dernier instantané du volume racine.
+ Il utilise l'action d'automatisation `aws:branch` pour poursuivre l'automatisation si un instantané est trouvé pour le volume racine.

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

------

# Créer une AMI et une copie inter-régions
<a name="automation-document-backup-maintenance-example"></a>

La création d'une Amazon Machine Image (AMI) d'une instance est un processus courant utilisé dans la sauvegarde et la restauration. Vous pouvez également choisir de copier une AMI dans une autre Région AWS dans le cadre d'une architecture de reprise après sinistre. L'automatisation des tâches courantes de maintenance peut réduire les temps d'arrêt si un problème nécessite un basculement. AWS Systems Manager Les actions d'automatisation peuvent vous y aider. Automation est un outil d’ AWS Systems Manager.

L'exemple de AWS Systems Manager runbook suivant exécute les actions suivantes :
+ Il utilise l'action d'automatisation `aws:executeAwsApi` pour créer une AMI.
+ Il utilise l'action d'automatisation `aws:waitForAwsResourceProperty` pour confirmer la disponibilité de l'AMI.
+ Il utilise l'action d'automatisation `aws:executeScript` pour copier l'AMI dans la région de destination.

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

------

# Création de paramètres d'entrée qui alimentent les ressources AWS
<a name="populating-input-parameters"></a>

Automation, un outil de Systems Manager, remplit les AWS ressources AWS Management Console qui correspondent au type de ressource que vous définissez pour un paramètre d'entrée. Les ressources de votre Compte AWS qui correspondent au type de ressources défini sont disponibles sous forme de liste déroulante pour vous permettre de les choisir. Vous pouvez définir des types de paramètres d'entrée pour les instances Amazon Elastic Compute Cloud (Amazon EC2), les buckets Amazon Simple Storage Service (Amazon S3) et les rôles (IAM). Gestion des identités et des accès AWS Les définitions de types prises en charge et les expressions régulières utilisées pour localiser les ressources correspondantes sont les suivantes :
+ `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/.*$`

Voici un exemple de types de paramètres d'entrée définis dans le contenu d'un 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
      }
   ]
}
```

------

# Créer des runbooks à l'aide de Document Builder
<a name="automation-document-builder"></a>

Si les runbooks AWS Systems Manager publics ne prennent pas en charge toutes les actions que vous souhaitez effectuer sur vos AWS ressources, vous pouvez créer vos propres runbooks. Pour créer un runbook personnalisé, vous pouvez créer manuellement un fichier local au format YAML ou JSON contenant les actions d'automatisation appropriées. Vous pouvez également utiliser Document Builder dans la console Systems Manager Automation pour créer un runbook personnalisé.

Grâce à Document Builder, vous pouvez ajouter des actions d'automatisation à votre runbook personnalisé et fournir les paramètres requis, sans utiliser la syntaxe JSON ou YAML. Après avoir ajouté des étapes et créé le runbook, le système convertit les actions que vous avez ajoutées au format YAML que Systems Manager peut utiliser pour exécuter l'automatisation.

Les runbooks prennent en charge l'utilisation de Markdown, un langage de balisage, qui vous permet d'ajouter des descriptions de style wiki aux runbooks et des étapes individuelles au sein du runbook. Pour plus d'informations sur l'utilisation de Markdown, consultez [Utilisation de Markdown dans AWS](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html).

## Créer un runbook à l'aide de Document Builder
<a name="create-runbook"></a>

**Avant de commencer**  
Nous vous recommandons de prendre connaissance des différentes actions que vous pouvez effectuer dans un runbook. Pour de plus amples informations, veuillez consulter [Référence sur les actions Systems Manager Automation](automation-actions.md).

**Pour créer un runbook à l'aide de Document Builder**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Sélectionnez **Create automation (Créer une automatisation)**.

1. Pour **Name (Nom)**, saisissez un nom descriptif pour le runbook.

1. Pour **Document description (Description du document)**, indiquez la description du style de balisage pour le runbook. Vous pouvez fournir des instructions sur l'utilisation du runbook, des étapes numérotées ou tout autre type d'information pour décrire le runbook. Reportez-vous au texte par défaut pour plus d'informations sur la mise en forme de votre contenu.
**Astuce**  
Basculez entre **Hide preview (Masquer l'aperçu)** et **Show preview (Afficher l'aperçu)** pour voir à quoi ressemble le contenu de votre description lors de la composition.

1. (Facultatif) Pour **Assume role (Rôle de responsable)**, entrez le nom ou l'ARN d'un rôle de service qui effectuera des actions en votre nom. Si vous ne spécifiez pas de rôle, Automation utilise les autorisations d'accès de l'utilisateur qui exécute l'automatisation.
**Important**  
Pour les runbooks qui ne sont pas la propriété d'Amazon et qui utilisent l'action `aws:executeScript`, un rôle doit être spécifié. Pour plus d'informations, consultez [Autorisations pour l'utilisation de runbooks](automation-document-script-considerations.md#script-permissions).

1. (Facultatif) Pour **Outputs (Sorties)**, saisissez une sortie pour l'automatisation de ce runbook à mettre à disposition d'autres processus. 

   Par exemple, si votre runbook crée une nouvelle AMI, vous pouvez spécifier [». CreateImage ImageId«], puis utilisez cette sortie pour créer de nouvelles instances lors d'une automatisation ultérieure.

1. (Facultatif) Développez la section **Input Parameters (Paramètres d'entrée)** et procédez comme suit.

   1. Dans **Parameter name (Nom de paramètre)**, saisissez un nom descriptif pour le paramètre de runbook que vous créez.

   1. Pour **Type**, sélectionnez un type pour le paramètre, par exemple, `String` ou `MapList`.

   1. Pour **Required (Obligatoire)**, effectuez l'une des opérations suivantes : 
      + Sélectionnez **Yes (Oui)** si une valeur pour ce paramètre de runbook doit être fournie lors de l'exécution.
      + Sélectionnez **No (Non)** si le paramètre n'est pas obligatoire et (facultatif) saisissez une valeur de paramètre par défaut dans **Defaults value (Valeur par défaut)**.

   1. Dans **Description**, saisissez une description pour le paramètre de runbook.
**Note**  
Pour ajouter d'autres paramètres de runbook, sélectionnez **Add a parameter (Ajouter un paramètre)**. Pour supprimer un paramètre de runbook, cliquez sur le bouton **X** (Supprimer).

1. (Facultatif) Développez la section **Target type (Type de cible)** et sélectionnez un type de cible pour définir les types de ressources sur lesquelles l'automatisation peut s'exécuter. Par exemple, pour exécuter un runbook sur des instance EC2, sélectionnez `/AWS::EC2::Instance`.
**Note**  
Si vous spécifiez la valeur « `/` », le runbook peut s'exécuter sur tous les types de ressources. Pour obtenir la liste des types de ressources valides, consultez la [Référence des types de ressources AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) dans le *Guide de l'utilisateur AWS CloudFormation *.

1. (Facultatif) Développez la section **Document tags (Balises de document)** et saisissez une ou plusieurs paires clé-valeur de balise à appliquer au runbook. Les balises facilitent l'identification, l'organisation et la recherche de ressources.

1. Dans la section **Step 1 (Étape 1)** fournissez les informations suivantes.
   + Pour **Step name (Nom de l'étape)**, entrez un nom descriptif pour la première étape de l'automatisation.
   + Pour **Action type (Type d'action)**, sélectionnez le type d'action à utiliser pour cette étape.

     Pour obtenir une liste et des informations sur les types d'action disponibles, consultez [Référence sur les actions Systems Manager Automation](automation-actions.md).
   + Dans **Description**, entrez une description pour l'étape d'automatisation. Vous pouvez utiliser Markdown pour mettre en forme votre texte.
   + Selon le **Type d'action** sélectionné, saisissez les entrées requises pour le type d'action dans la section **Step inputs (Entrées d'étape)**. Par exemple, si vous avez sélectionné l'action `aws:approve`, vous devez spécifier une valeur pour la propriété `Approvers`.

     Pour plus d'informations sur les champs d'entrée d'étape, consultez l'entrée de [Référence sur les actions Systems Manager Automation](automation-actions.md) correspondant au type d'action sélectionné. Par exemple : [`aws:executeStateMachine`— Lance une machine à AWS Step Functions états](automation-action-executeStateMachine.md).
   + (Facultatif) Pour **Additional inputs (entrées supplémentaires)**, indiquez toutes les valeurs d'entrée supplémentaires nécessaires à votre runbook. Les types d'entrée disponibles dépendent du type d'action que vous avez sélectionné pour l'étape. (Notez que certains types d'action nécessitent des valeurs d'entrée.)
**Note**  
Pour ajouter d'autres entrées, sélectionnez **Add optional input (Ajouter une entrée facultative)**. Pour supprimer une entrée, cliquez sur le bouton **X** (Supprimer).
   + (Facultatif) Pour **Outputs (Sorties)**, saisissez une sortie pour cette étape à mettre à disposition d'autres processus.
**Note**  
L'option **Outputs (Sorties)** n'est pas disponible pour tous les types d'action.
   + (Facultatif) Développez la section **Common properties (Propriétés communes)** et spécifiez les propriétés des actions communes à toutes les actions d'automatisation. Par exemple, pour **Timeout seconds (Expiration en secondes)**, vous pouvez fournir une valeur en secondes pour spécifier la durée de l'exécution de l'étape avant qu'elle ne soit arrêtée.

     Pour de plus amples informations, veuillez consulter [Propriétés partagées par toutes les actions](automation-actions.md#automation-common).
**Note**  
Pour ajouter d'autres étapes, sélectionnez **Add step (Ajouter étape)** et répétez la procédure de création d'une étape. Pour supprimer une étape, sélectionnez **Remove step (Supprimer étape)**.

1. Sélectionnez **Create automation (Créer une automatisation)** pour enregistrer le runbook.

## Créer un runbook qui exécute des scripts
<a name="create-runbook-scripts"></a>

La procédure suivante explique comment utiliser Document Builder dans la console AWS Systems Manager Automation pour créer un runbook personnalisé qui exécute un script.

La première étape du runbook que vous créez exécute un script pour lancer une instance Amazon Elastic Compute Cloud (Amazon EC2). La deuxième étape exécute un autre script pour surveiller la vérification de l'état de l'instance à remplacer par `ok`. Ensuite, un état général de `Success` est signalé pour l'automatisation.

**Avant de commencer**  
Assurez-vous que vous avez suivi les étapes ci-dessous :
+ Vérifiez que vous disposez de privilèges d'administrateur ou que vous avez obtenu les autorisations adéquates d'accès à Systems Manager dans Gestion des identités et des accès AWS (IAM). 

  Pour plus d'informations, consultez [Vérification de l'accès utilisateur aux runbooks](automation-setup.md#automation-setup-user-access).
+ Vérifiez que vous disposez d'un rôle de service IAM pour Automation (également appelé *rôle de responsable*) dans votre Compte AWS. Ce rôle est obligatoire car cette procédure utilise l'action `aws:executeScript`. 

  Pour en savoir plus sur la création de ce rôle, consultez [Configuration d'un accès à un rôle de service (rôle de responsable) pour les automatisations](automation-setup.md#automation-setup-configure-role). 

  Pour plus d'informations sur le rôle de service IAM requis pour exécuter `aws:executeScript`, consultez [Autorisations pour l'utilisation de runbooks](automation-document-script-considerations.md#script-permissions).
+ Vérifiez que vous avez l'autorisation de lancer des instances EC2. 

  Pour plus d’informations, consultez [IAM et Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#intro-to-iam) dans le *Guide de l’utilisateur Amazon EC2*.

**Créer un runbook personnalisé qui exécute des scripts à l'aide de Document Builder**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Sélectionnez **Create automation (Créer une automatisation)**.

1. Dans **Name (Nom)**, saisissez ce nom descriptif pour le runbook : **LaunchInstanceAndCheckStatus**.

1. (Facultatif) Pour **Document description (Description du document)**, remplacez le texte par défaut par une description pour ce runbook, à l'aide de Markdown. Voici un exemple.

   ```
   ##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. Pour **Assume role (Rôle de responsable)**, saisissez l'ARN du rôle de service IAM pour Automation (rôle de responsable) pour l'exécution de l'automatisation, au format **arn:aws:iam::111122223333:role/AutomationServiceRole**. Remplacez votre Compte AWS identifiant par 111122223333.

   Le rôle que vous spécifiez est utilisé pour fournir les autorisations nécessaires pour démarrer l'automatisation.
**Important**  
Pour les runbooks qui ne sont pas la propriété d'Amazon et qui utilisent l'action `aws:executeScript`, un rôle doit être spécifié. Pour plus d'informations, consultez [Autorisations pour l'utilisation de runbooks](automation-document-script-considerations.md#script-permissions).

1. Développez **Input parameters (Paramètres d'entrée)** et procédez comme suit.

   1. Dans **Parameter name (Nom du paramètre)**, entrez **imageId**.

   1. Dans le champ **Type**, sélectionnez **String**.

   1. Pour **Required (Obligatoire)**, sélectionnez `No`. 

   1. Pour **Default value (Valeur par défaut)**, entrez ce qui suit.

      ```
      {{ ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64 }}
      ```
**Note**  
Cette valeur lance une instance Amazon EC2 à l’aide du dernier ID d’Amazon Machine Image (AMI) Amazon Linux 2023. Si vous souhaitez utiliser une autre AMI, remplacez la valeur par l'ID de votre AMI.

   1. Pour **Description**, entrez ce qui suit.

      ```
      (Optional) The AMI ID to use for launching the instance. The default value uses the latest released Amazon Linux 2023 AMI ID.
      ```

1. Sélectionnez **Add a parameter (Ajouter un paramètre)** pour créer le second paramètre **tagValue**, puis entrez ce qui suit.

   1. Dans **Parameter name (Nom du paramètre)**, entrez **tagValue**.

   1. Dans le champ **Type**, sélectionnez **String**.

   1. Pour **Required (Obligatoire)**, sélectionnez `No`. 

   1. Pour **Default value (Valeur par défaut)**, entrez **LaunchedBySsmAutomation**. La paire clé-valeur de balise `Name:LaunchedBySsmAutomation` est ajoutée à l'instance.

   1. Pour **Description**, entrez ce qui suit.

      ```
      (Optional) The tag value to add to the instance. The default value is LaunchedBySsmAutomation.
      ```

1. Sélectionnez **Add a parameter (Ajouter un paramètre)** pour créer le troisième paramètre **instanceType**, puis entrez les informations suivantes.

   1. Dans **Parameter name (Nom du paramètre)**, entrez **instanceType**.

   1. Dans le champ **Type**, sélectionnez **String**.

   1. Pour **Required (Obligatoire)**, sélectionnez `No`. 

   1. Pour **Default value (Valeur par défaut)**, entrez **t2.micro**.

   1. Pour **Parameter description (Description du paramètre)**, entrez ce qui suit.

      ```
      (Optional) The instance type to use for the instance. The default value is t2.micro.
      ```

1. Développez **Target type (Type de cible)** et sélectionnez **"/"**.

1. (Facultatif) Développez les **Document tags (Balises de document)** pour appliquer des balises de ressources à votre runbook. Pour la **Tag key (Clé de balise)**, entrez **Purpose**, et pour **Tag value (Valeur de balise)**, entrez **LaunchInstanceAndCheckState**.

1. Dans la section **Step 1 (Étape 1)** procédez comme suit.

   1. Pour **Step name (Nom de l'étape)**, entrez un nom descriptif pour la première étape de l'automatisation : **LaunchEc2Instance**.

   1. Pour **Action type (Type d'action)**, sélectionnez **Run a script (Exécuter un script=** (**aws:executeScript**).

   1. Dans **Description**, entrez une description de l'étape d'automatisation, telle que la suivante.

      ```
      **About This Step**
          
          This step first launches an EC2 instance using the ```aws:executeScript``` action and the provided script.
      ```

   1. Développez **Inputs (Entrées)**.

   1. Dans **Runtime**, sélectionnez le langage d'exécution à utiliser pour exécuter le script fourni.

   1. Pour **Handler** (Gestionnaire), entrez **launch\$1instance**. Il s'agit du nom de la fonction déclaré dans le script suivant.
**Note**  
Cela n'est pas obligatoire pour PowerShell.

   1. Pour **Script**, remplacez le contenu par défaut par ce qui suit. Veillez à faire correspondre le script avec la valeur d'exécution correspondante.

------
#### [ 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. Développer **Additional inputs (Entrées supplémentaires)**. 

   1. Dans **Nom de l'entrée**, choisissez **InputPayload**. Pour **Input value (Valeur d'entrée)**, entrez les données YAML suivantes. 

      ```
      image_id: "{{ imageId }}"
          tag_value: "{{ tagValue }}"
          instance_type: "{{ instanceType }}"
      ```

1. Développez **Outputs (Sorties)** et procédez comme suit :
   + Pour **Nom**, saisissez **payload**.
   + Pour **Selector (Sélecteur)**, entrez **\$1.Payload**.
   + Dans le champ **Type**, sélectionnez `StringMap`.

1. Sélectionnez **Add step (Ajouter une étape)** pour ajouter une deuxième étape au runbook. La deuxième étape interroge l'état de l'instance lancée à l'étape 1 et attend que l'état renvoyé soit `ok`.

1. Dans la section **Step 2 (Étape 2)** procédez comme suit.

   1. Pour **Step name (Nom de l'étape)**, entrez un nom descriptif pour la deuxième étape de l'automatisation : **WaitForInstanceStatusOk**.

   1. Pour **Action type (Type d'action)**, sélectionnez **Run a script (Exécuter un script=** (**aws:executeScript**).

   1. Dans **Description**, entrez une description de l'étape d'automatisation, telle que la suivante.

      ```
      **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. Pour **Exécution**, sélectionnez le langage d'exécution à utiliser pour exécuter le script fourni.

   1. Pour **Handler** (Gestionnaire), entrez **poll\$1instance**. Il s'agit du nom de la fonction déclaré dans le script suivant.
**Note**  
Cela n'est pas obligatoire pour PowerShell.

   1. Pour **Script**, remplacez le contenu par défaut par ce qui suit. Veillez à faire correspondre le script avec la valeur d'exécution correspondante.

------
#### [ 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. Développer **Additional inputs (Entrées supplémentaires)**. 

   1. Dans **Nom de l'entrée**, choisissez **InputPayload**. Pour **Input value (Valeur d'entrée)**, entrez ce qui suit.

      ```
      {{ LaunchEc2Instance.payload }}
      ```

1. Sélectionnez **Create automation (Créer une automatisation)** pour enregistrer le runbook.

# Utilisation de scripts dans des runbooks
<a name="automation-document-script-considerations"></a>

Les runbooks Automation prennent en charge l'exécution de scripts dans le cadre de l'automatisation. Automation est un outil d’ AWS Systems Manager. En utilisant les runbooks, vous pouvez exécuter des scripts directement dans AWS sans créer un environnement de calcul distinct pour exécuter vos scripts. Comme les runbooks peuvent exécuter des étapes de script avec d'autres types d'étapes d'automatisation telles que les approbations, vous pouvez intervenir manuellement en cas de situations critiques ou ambiguës. Vous pouvez envoyer le résultat des `aws:executeScript` actions de vos runbooks à Amazon CloudWatch Logs. Pour de plus amples informations, veuillez consulter [Résultat de l'action d'automatisation de la CloudWatch journalisation avec journaux](automation-action-logging.md).

## Autorisations pour l'utilisation de runbooks
<a name="script-permissions"></a>

Pour utiliser un runbook, Systems Manager doit utiliser les autorisations d'un rôle Gestion des identités et des accès AWS (IAM). La méthode utilisée par Automation pour déterminer les autorisations du rôle à utiliser dépend de divers facteurs et de si une étape utilise l'action `aws:executeScript`. 

Pour les runbooks qui n'utilisent pas `aws:executeScript`, Automation utilise l'une des deux sources d'autorisations suivantes :
+ Les autorisations d'un rôle de service IAM, ou rôle de responsable, qui est spécifié dans le runbook ou transmis en tant que paramètre.
+ Si aucun rôle de service IAM n'est spécifié, il utilise les autorisations de l'utilisateur qui a lancé l'automatisation. 

Cependant, lorsqu'une étape d'un runbook inclut l'`aws:executeScript`action, un rôle de service IAM (Assumer le rôle) est toujours requis si le Python ou le PowerShell script spécifié pour l'action appelle des opérations d' AWS API. Automation vérifie ce rôle dans l'ordre suivant :
+ Les autorisations d'un rôle de service IAM, ou rôle de responsable, qui est spécifié dans le runbook ou transmis en tant que paramètre.
+ Si aucun rôle n'est trouvé, Automation tente d'exécuter le Python ou le PowerShell script spécifié `aws:executeScript` sans aucune autorisation. Si le script appelle une opération d' AWS API (par exemple, l'`CreateImage`opération Amazon EC2) ou tente d'agir sur une AWS ressource (telle qu'une instance EC2), l'étape contenant le script échoue et Systems Manager renvoie un message d'erreur signalant l'échec. 

## Ajout de scripts à des runbooks
<a name="adding-scripts"></a>

Vous pouvez ajouter des scripts à vos runbooks en incluant le script en ligne comme partie d'une étape du runbook. Vous pouvez également joindre des scripts au runbook en les téléchargeant de votre ordinateur local ou en spécifiant un compartiment Amazon Simple Storage Service (Amazon S3) où se trouvent les scripts. Lorsqu'une étape exécutant un script est terminée, la sortie du script est disponible en tant qu'objet JSON, que vous pouvez ensuite utiliser comme entrée pour les étapes suivantes de votre runbook. Pour plus d’informations sur l’action `aws:executeScript` et sur l’utilisation des attachements pour les scripts, consultez [`aws:executeScript` - Exécuter un script](automation-action-executeScript.md).

## Contraintes de script applicables à des runbooks
<a name="script-constraints"></a>

Les runbooks imposent une limite de cinq fichiers en pièce jointe. Les scripts peuvent prendre la forme d'un script Python (.py), d'un script PowerShell Core (.ps1) ou être attachés en tant que contenu dans un fichier .zip.

# Utilisation d'instructions conditionnelles dans les runbooks
<a name="automation-branch-condition"></a>

Par défaut, les étapes que vous définissez dans la section `mainSteps` d'un runbook sont exécutées par ordre séquentiel. Lorsqu'une action est terminée, la prochaine action spécifiée dans la section `mainSteps` commence. En outre, si l'exécution d'une action échoue, l'intégralité de l'automatisation échoue (par défaut). Vous pouvez utiliser les options d'action d'automatisation `aws:branch` et de runbook décrites dans cette section pour créer des automatisations qui effectuent des *ramifications conditionnelles*. Autrement dit, vous pouvez créer des automatisations qui passent à une autre étape après avoir évalué différentes possibilités ou qui répondent aux modifications de manière dynamique à la fin d'une étape. Voici la liste des options que vous pouvez utiliser pour créer des automatisations dynamiques :
+ **`aws:branch`**: cette action d'automatisation vous permet de créer une automatisation dynamique qui évalue plusieurs options en une seule étape, puis passe à une autre étape dans le runbook Automation en fonction des résultats de cette évaluation.
+ **`nextStep`**: cette option spécifie l'étape d'une automatisation à traiter immédiatement après la fin d'une étape. 
+ **`isEnd`**: cette option arrête une exécution d'automatisation à la fin d'une étape spécifique. La valeur par défaut de cette option est false.
+ **`isCritical`**: cette option désigne une étape comme étant critique pour la réussite de l'exécution de l'automatisation. Si une étape portant cette désignation échoue, l'automatisation signale l'état final de l'automatisation comme `Failed`. La valeur par défaut de cette option est `true`.
+ **`onFailure`**: cette option 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.

La section suivante décrit l'action de l'automatisation `aws:branch`. Pour de plus amples informations sur les options de `nextStep`, `isEnd`, `isCritical` et `onFailure`, veuillez consulter [Exemple de runbooks `aws:branch`](#branch-runbook-examples).

## Utilisation de l'action `aws:branch`
<a name="branch-action-explained"></a>

L'action `aws:branch` propose les options les plus dynamiques des ramifications conditionnelles pour les automatisations. Comme noté précédemment, cette action permet à vos automatisations d'évaluer plusieurs conditions en une seule étape, puis de passer à une nouvelle étape en fonction des résultats de cette évaluation. L'action `aws:branch` fonctionne comme une instruction de programmation `IF-ELIF-ELSE`.

Voici un exemple YAML d'étape `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
```

Lorsque vous spécifiez l'action `aws:branch` pour une étape, vous définissez des `Choices` que l'automatisation doit évaluer. L'automatisation peut évaluer ces `Choices` en fonction de la valeur d'un paramètre que vous avez spécifiée dans la section `Parameters` du runbook. L'automatisation peut également évaluer ces `Choices` en fonction de la sortie d'une étape précédente.

L'automatisation évalue chaque choix à l'aide d'une expression booléenne. Si l'évaluation détermine que le premier choix est `true`, l'automatisation accède à l'étape désignée pour ce choix. Si l'évaluation détermine que le premier choix est `false`, l'automatisation évalue le choix suivant. Si l'étape inclut au moins `Choices`, l'automatisation évalue chaque choix par ordre séquentiel jusqu'à ce qu'il en identifie un possédant la valeur `true`. L'automatisation accède ensuite à l'étape désignée correspondant au choix défini sur `true`.

Si aucun des `Choices` n'est `true`, l'automatisation vérifie si l'étape contient une valeur `Default`. La valeur `Default` définit une étape à laquelle l'automatisation doit passer si aucun des choix n'est défini sur `true`. Si aucune valeur `Default` n'est spécifiée pour l'étape, l'automatisation traite l'étape suivante du runbook.

Voici une `aws:branch` étape en YAML nommée « **Choose OSfrom Parameter** ». Cette étape inclut deux `Choices` : (`NextStep: runWindowsCommand`) et (`NextStep: runLinuxCommand`). L'automatisation évalue ces `Choices` pour déterminer quelle commande exécuter pour le système d'exploitation approprié. La `Variable` pour chaque choix utilise `{{OSName}}`, qui est un paramètre défini par l'auteur dans la section `Parameters` du runbook.

```
mainSteps:
- name: chooseOSfromParameter
  action: aws:branch
  inputs:
    Choices:
    - NextStep: runWindowsCommand
      Variable: "{{OSName}}"
      StringEquals: Windows
    - NextStep: runLinuxCommand
      Variable: "{{OSName}}"
      StringEquals: Linux
```

Voici une `aws:branch` étape en YAML nommée **Choose OSfrom Output**. Cette étape inclut deux `Choices` : (`NextStep: runPowerShellCommand`) et (`NextStep: runShellCommand`). L'automatisation évalue ces `Choices` pour déterminer quelle commande exécuter pour le système d'exploitation approprié. La `Variable` pour chaque choix utilise `{{GetInstance.platform}}`, qui est la sortie d'une étape antérieure dans le runbook. Cet exemple inclut également une option appelée `Default`. Si l'automatisation évalue les deux `Choices`, et si aucun choix n'est `true`, l'automatisation accède à une étape nommée `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
```

### Création d'une étape `aws:branch` dans un runbook
<a name="create-branch-action"></a>

Lorsque vous créez une étape `aws:branch` dans un runbook, vous définissez les `Choices` que l'automatisation doit évaluer pour déterminer l'étape suivante à laquelle elle doit passer. Comme indiqué précédemment, l'évaluation des `Choices` repose sur une expression booléenne. Chaque choix doit définir les options suivantes :
+ **NextStep**: étape suivante du runbook à traiter si le choix indiqué est`true`.
+ **Variable** : spécifiez soit le nom d’un paramètre défini dans la section `Parameters` du dossier d’exploitation, soit une variable définie dans la section `Variables`, soit un objet de sortie provenant d’une étape précédente.

  Spécifiez les valeurs des variables en utilisant le formulaire suivant.

  `Variable: "{{variable name}}"`

  Spécifiez les valeurs des paramètres en utilisant le formulaire suivant.

  `Variable: "{{parameter name}}"`

  Spécifiez les variables d'objet de sortie sous la forme suivante.

  `Variable: "{{previousStepName.outputName}}"`
**Note**  
La création de la variable de sortie est décrite plus en détail dans la section suivante, [À propos de la création de la variable de sortie](#branch-action-output).
+ **Opération** : critères utilisés pour évaluer le choix, par exemple `StringEquals: Linux`. L'action `aws:branch` prend en charge les opérations suivantes :

**Opérations de chaîne**
  + StringEquals
  + EqualsIgnoreCase
  + StartsWith
  + EndsWith
  + Contains

**Opérations numériques**
  + NumericEquals
  + NumericGreater
  + NumericLesser
  + NumericGreaterOrEquals
  + NumericLesser
  + NumericLesserOrEquals

**Opération booléenne**
  + BooleanEquals
**Important**  
Lorsque vous créez un runbook, le système valide chaque opération dans le runbook. Si une opération n'est pas prise en charge, le système renvoie une erreur lorsque vous tentez de créer le runbook.
+ **Default** : spécifiez une étape de rechange à laquelle l'automatisation doit passer si aucun des `Choices` n'est défini sur `true`.
**Note**  
Si vous ne voulez pas spécifier de valeur `Default`, vous pouvez spécifier l'option `isEnd`. Si aucun des `Choices` n'est `true` et qu'aucune valeur `Default` n'est spécifiée, l'automatisation s'arrête à la fin de l'étape.

Utilisez les modèles suivants pour vous aider à construire l'étape `aws:branch` dans votre runbook : Remplacez chaque *example resource placeholder* par vos propres informations.

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

------

#### À propos de la création de la variable de sortie
<a name="branch-action-output"></a>

Pour créer un choix `aws:branch` qui fait référence à la sortie d'une étape précédente, vous devez identifier le nom de l'étape précédente et le nom du champ de sortie. Vous devez ensuite combiner les noms de l'étape et du champ en utilisant le format suivant.

`Variable: "{{previousStepName.outputName}}"`

Par exemple, dans l'exemple suivant, la première étape est nommée `GetInstance`. Ensuite, sous `outputs`, figure un champ appelé `platform`. Dans la deuxième étape (`ChooseOSforCommands`), l'auteur souhaite référencer la sortie du champ de la plateforme en tant que variable. Pour créer la variable, il suffit de combiner le nom de l'étape (GetInstance) et le nom du champ de sortie (plateforme) à créer`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
```

Voici un exemple qui montre comment *"Variable": "\$1\$1 describeInstance.Platform \$1\$1"* est créé à partir de l'étape précédente et de la sortie.

```
- 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
```

### Exemple de runbooks `aws:branch`
<a name="branch-runbook-examples"></a>

Voici quelques exemples de runbooks utilisant `aws:branch`.

**Exemple 1 : utilisation d'`aws:branch` avec une variable de sortie pour exécuter des commandes en fonction du type de système d'exploitation**

Dans la première étape de cet exemple (`GetInstance`), le créateur du runbook utilise l'action `aws:executeAwsApi` pour appeler l'opération d'API `DescribeInstanceInformation` de `ssm`. L'auteur utilise cette action pour déterminer le type de système d'exploitation utilisé par une instance. L'action `aws:executeAwsApi` génère l'ID d'instance et le type de plateforme.

Dans la deuxième étape (`ChooseOSforCommands`), l'auteur utilise l'action `aws:branch` avec deux `Choices` (`NextStep: runPowerShellCommand`) et (`NextStep: runShellCommand`). L'automatisation évalue le système d'exploitation de l'instance en utilisant la sortie de l'étape précédente (`Variable: "{{GetInstance.platform}}"`). L'automatisation accède à une étape pour le système d'exploitation désigné.

```
---
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
```

**Exemple 2 : utilisation d'`aws:branch` avec une variable de paramètre pour exécuter des commandes en fonction du type de système d'exploitation**

L'auteur définit plusieurs options de paramètres au début du runbook dans la section `parameters`. Un paramètre est nommé `OperatingSystemName`. Dans la première étape (`ChooseOS`), l'auteur utilise l'action `aws:branch` avec deux `Choices` (`NextStep: runWindowsCommand`) et (`NextStep: runLinuxCommand`). La variable pour ces `Choices` référence l'option de paramètre spécifiée dans la section Paramètres (`Variable: "{{OperatingSystemName}}"`). Lorsque l'utilisateur exécute ce runbook, il spécifie une valeur au moment de l'exécution pour `OperatingSystemName`. L'automatisation utilise le paramètre d'exécution lors de l'évaluation `Choices`. L'automatisation accède à une étape pour le système d'exploitation désigné en fonction du paramètre d'exécution spécifié pour `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
```

### Création d'automatisations à ramifications complexes avec des opérateurs
<a name="branch-operators"></a>

Vous pouvez créer des automatisations à ramifications complexes avec les opérateurs `And`, `Or` et `Not` dans les étapes `aws:branch`.

**L'opérateur 'And'**  
Utilisez l'opérateur `And` lorsque vous voulez que plusieurs variables soient `true` pour un choix. Dans l'exemple suivant, le premier choix évalue si une instance est `running` et utilise le système d'exploitation `Windows`. Si l'évaluation de ces *deux* variables a la valeur true, l'automatisation accède à l'étape `runPowerShellCommand`. Si une ou plusieurs des variables sont `false`, l'automatisation évalue les variables du deuxième choix.

```
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
```

**L'opérateur 'Or'**  
Utilisez l'opérateur `Or` lorsque vous voulez qu'*au moins une* des variables soient true pour un choix. Dans l'exemple suivant, le premier choix évalue si un paramètre de chaîne est `Windows` et si la sortie d'une étape AWS Lambda est true. Si l'évaluation détermine que *l'une* de ces variables a la valeur true, l'automatisation accède à l'étape `RunPowerShellCommand`. Si les deux variables sont false, l'automatisation évalue les variables du deuxième choix.

```
- Or:
  - Variable: "{{parameter1}}"
    StringEquals: Windows
  - Variable: "{{BooleanParam1}}"
    BooleanEquals: true
  NextStep: RunPowershellCommand
- Or:
  - Variable: "{{parameter2}}"
    StringEquals: Linux
  - Variable: "{{BooleanParam2}}"
    BooleanEquals: true
  NextStep: RunShellScript
```

**L'opérateur 'Not'**  
Utilisez l'opérateur `Not` lorsque vous souhaitez accéder à une étape définie lorsqu'une variable *n'est pas* true. Dans l'exemple suivant, le premier choix évalue si un paramètre de chaîne est `Not Linux`. Si l'évaluation détermine que la variable ne correspond pas à Linux, l'automatisation accède à l'étape `sleep2`. Si l'évaluation du premier choix détermine que la variable *est* Linux, l'automatisation évalue le choix suivant.

```
mainSteps:
- name: switch
  action: aws:branch
  inputs:
    Choices:
    - NextStep: sleep2
      Not:
        Variable: "{{testParam}}"
        StringEquals: Linux
    - NextStep: sleep1
      Variable: "{{testParam}}"
      StringEquals: Windows
    Default:
      sleep3
```

## Exemples d'utilisation des options conditionnelles
<a name="conditional-examples"></a>

Cette section inclut différents exemples d'utilisation des options dynamiques dans un runbook. Chaque exemple présenté dans cette section étend le runbook suivant. Ce runbook comporte deux actions. La première action se nomme `InstallMsiPackage`. Il utilise l'action `aws:runCommand` pour installer une application sur une instance Windows Server. La deuxième action se nomme `TestInstall`. Elle utilise l'action `aws:invokeLambdaFunction` pour effectuer un test de l'application installée si l'application a été installée correctement. La première étape spécifie `onFailure: Abort`. Ainsi, si l'application ne s'est pas installée correctement, l'automatisation s'arrête avant la deuxième étape.

**Exemple 1 : runbook comportant deux actions linéaires**

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

**Création d'une automatisation dynamique qui passe à différentes étapes à l'aide de l'option `onFailure`**

L'exemple suivant utilise les options `onFailure: step:step name`, `nextStep` et `isEnd` pour créer une automatisation dynamique. Dans cet exemple, si l'`InstallMsiPackage`action échoue, l'automatisation passe à une action appelée *PostFailure*(`onFailure: step:PostFailure`) pour exécuter une AWS Lambda fonction afin d'effectuer une action en cas d'échec de l'installation. Si l'installation réussit, l'automatisation passe à l' TestInstall action ()`nextStep: TestInstall`. Les étapes `TestInstall` et `PostFailure` utilisent l'option `isEnd` (`isEnd: true`) pour que l'automatisation se termine lorsque l'une de ces étapes est terminée.

**Note**  
L'utilisation de l'option `isEnd` à la dernière étape de la section `mainSteps` est facultative. Si la dernière étape ne fait pas passer à d'autres étapes, l'automatisation s'arrête après l'exécution de l'action effectuée à la dernière étape.

**Exemple 2 : automatisation dynamique qui passe à différentes étapes**

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

**Note**  
Avant de traiter un runbook, le système vérifie que le runbook ne crée pas une boucle infinie. Si une boucle infinie est détectée, Automation renvoie une erreur, avec un cercle qui entoure les étapes qui créent la boucle.

**Création d'une automatisation dynamique qui définit des étapes critiques**

Vous pouvez spécifier qu'une étape est critique pour la réussite globale de l'automatisation. Si une étape critique échoue, Automation signale l'état `Failed` pour l'automatisation, même si une ou plusieurs étapes se sont déroulées correctement. Dans l'exemple suivant, l'utilisateur identifie l'*VerifyDependencies*étape si elle échoue (`onFailure: step:VerifyDependencies`). *InstallMsiPackage* L'utilisateur spécifie que l'étape `InstallMsiPackage` n'est pas critique (`isCritical: false`). Dans cet exemple, si l'installation de l'application a échoué, Automation traite l'étape `VerifyDependencies` pour déterminer si une ou plusieurs dépendances sont manquantes, ce qui aurait provoqué l'échec de l'installation. 

**Exemple 3 : définition des étapes critiques de l'automatisation **

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

# Utilisation des sorties d'action comme entrées
<a name="automation-action-outputs-inputs"></a>

Plusieurs actions d’automatisation renvoient des résultats prédéfinis. Vous pouvez transmettre ces sorties en tant qu’entrées aux étapes ultérieures de votre runbook en utilisant le format `{{stepName.outputName}}`. Vous pouvez définir des sorties pour différentes actions d’automatisation dans vos runbooks. Cela vous permet d'exécuter des scripts ou d'appeler des opérations d'API pour Services AWS une autre fois afin de pouvoir réutiliser les valeurs comme entrées lors d'actions ultérieures. Les types de paramètres des runbooks sont statiques. Cela signifie que le type de paramètre ne peut pas être modifié après avoir été défini. Pour définir une sortie d’étape, fournir les champs suivants :
+ Nom : (Obligatoire) le nom de sortie utilisé pour faire référence à la valeur de la sortie dans les étapes ultérieures.
+ Sélecteur : (Obligatoire) JSONPath Expression utilisée pour déterminer la valeur de sortie.
+ Type : (Facultatif) type de données de la valeur renvoyée par le champ de sélection. Les valeurs de type valides sont `String`, `Integer`, `Boolean`, `StringList`, `StringMap`, `MapList`. La valeur par défaut est `String`.

Si la valeur d’une sortie ne correspond pas au type de données que vous avez spécifié, l’Automatisation essaie de convertir le type de données. Par exemple, si la valeur renvoyée est `Integer`, mais que le `Type` spécifié est `String`, la valeur de sortie finale est une valeur `String`. Les types de conversions suivants sont pris en charge :
+ Les valeurs `String` peuvent être converties en `StringList`, `Integer` et `Boolean`.
+ Les valeurs `Integer` peuvent être converties en `String` et `StringList`.
+ Les valeurs `Boolean` peuvent être converties en `String` et `StringList`.
+ Les valeurs `StringList`, `IntegerList` ou `BooleanList` contenant un élément peuvent être converties en `String`, `Integer` ou `Boolean`.

Lorsque vous utilisez des paramètres ou des sorties avec des actions d’automatisation, le type de donnée ne peut pas être modifié dynamiquement dans l’entrée d’une action.

Voici un exemple de runbook qui montre comment définir les sorties d'action et référencer la valeur en tant qu'entrée pour une action ultérieure. Les runbooks réalisent les opérations suivantes :
+ Utilise l'`aws:executeAwsApi`action pour appeler l'opération d' DescribeImages API Amazon EC2 afin d'obtenir le nom d'un Windows Server 2016 spécifique. AMI Il génère l'ID d'image en tant que `ImageId`.
+ Utilise l'`aws:executeAwsApi`action pour appeler l'opération d' RunInstances API Amazon EC2 afin de lancer une instance utilisant `ImageId` l'étape précédente. Il génère l'ID d'instance en tant que `InstanceId`.
+ Utilise l'` aws:waitForAwsResourceProperty`action pour interroger le fonctionnement de l' DescribeInstanceStatus API Amazon EC2 afin d'attendre que l'instance atteigne son état. `running` L'action arrive à expiration dans les 60 secondes. L'étape arrive à expiration si l'état de l'instance ne parvient pas à atteindre `running` après 60 secondes d'interrogation.
+ Utilise l'action `aws:assertAwsResourceProperty` pour appeler l'opération d'API `DescribeInstanceStatus` d'Amazon EC2 afin d'affirmer que l'instance a le statut `running`. L'étape échoue si l'état de l'instance n'est pas `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"
...
```

Chacune des actions d'automatisation décrites précédemment vous permet d'appeler une opération d'API spécifique en définissant l'espace de noms de service, l'opération d'API, les paramètres d'entrée et les paramètres de sortie. Les entrées sont définies par l'opération d'API que vous sélectionnez. Vous pouvez consulter les opérations d'API (également appelées méthodes) en choisissant un service dans le panneau de navigation de gauche sur la page [Services Reference (Référence des services)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html) suivante. Sélectionnez une méthode dans la section **Client** pour le service que vous voulez appeler. Par exemple, toutes les opérations d'API (méthodes) pour Amazon Relational Database Service (Amazon RDS) sont répertoriées à la page suivante : [Méthodes pour Amazon RDS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html).

Vous pouvez consulter le schéma de chaque action d'automatisation dans les emplacements suivants :
+ [`aws:assertAwsResourceProperty`— Affirme un état de AWS ressource ou un état d'événement](automation-action-assertAwsResourceProperty.md)
+ [`aws:executeAwsApi`— Appelez et exécutez des opérations AWS d'API](automation-action-executeAwsApi.md)
+ [`aws:waitForAwsResourceProperty`— Attendre sur une propriété AWS de ressource](automation-action-waitForAwsResourceProperty.md)

Les schémas incluent les descriptions des champs obligatoires pour l'utilisation de chaque action.

**Utilisation des Selector/PropertySelector champs**  
Chaque action Automation exige que vous spécifiiez une sortie `Selector` (pour `aws:executeAwsApi`) ou `PropertySelector` (pour `aws:assertAwsResourceProperty` et `aws:waitForAwsResourceProperty`). Ces champs sont utilisés pour traiter la réponse JSON d'une opération d' AWS API. Ces champs utilisent la JSONPath syntaxe.

Voici un exemple pour vous aider à illustrer ce concept pour l'action `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"
...
```

Dans l'étape `getImageId` `aws:executeAwsApi`, l'automatisation appelle l'opération d'API `DescribeImages` et reçoit une réponse d'`ec2`. L'automatisation applique ensuite `Selector - "$.Images[0].ImageId"` à la réponse de l'API et attribue la valeur sélectionnée pour à la variable `ImageId` de sortie. D'autres étapes dans la même automatisation peuvent utiliser la valeur `ImageId` en spécifiant `"{{ getImageId.ImageId }}"`.

Voici un exemple pour vous aider à illustrer ce concept pour l'action `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
...
```

Dans l'étape `waitUntilInstanceStateRunning` `aws:waitForAwsResourceProperty`, l'automatisation appelle l'opération d'API `DescribeInstanceStatus` et reçoit une réponse d'`ec2`. L'automatisation applique ensuite `PropertySelector - "$.InstanceStatuses[0].InstanceState.Name"` à la réponse et vérifie si la valeur renvoyée correspond à une valeur spécifiée dans la liste `DesiredValues` (dans ce cas, `running`). L'étape répète le processus jusqu'à ce que la réponse renvoie l'état d'instance `running`. 

## Utilisation JSONPath dans les runbooks
<a name="automation-action-json-path"></a>

Une JSONPath expression est une chaîne commençant par « \$1 ». qui est utilisée pour sélectionner un ou plusieurs composants d'un élément JSON. La liste suivante inclut des informations sur JSONPath les opérateurs pris en charge par Systems Manager Automation :
+ **Enfant à notation point (.)** : à utiliser avec un objet JSON. Cet opérateur sélectionne la valeur d'une clé spécifique.
+ **Analyse approfondie (..)** : à utiliser avec un élément JSON. Cet opérateur numérise l'élément JSON niveau par niveau et sélectionne une liste de valeurs avec la clé spécifique. Le type de retour de cet opérateur est toujours un tableau JSON. Dans le contexte d'un type de sortie d'action d'automatisation, l'opérateur peut être StringList soit MapList.
+ **Index de tableau ([])** : à utiliser avec un tableau JSON. Cet opérateur obtient la valeur d'un index spécifique.
+ **Filtre ([? (*expression*)])** : À utiliser avec un tableau JSON. Cet opérateur filtre les valeurs des tableaux JSON qui correspondent aux critères définis dans l’expression du filtre. Les expressions de filtre ne peuvent utiliser que les opérateurs suivants : ==, \$1 =, >, <, >= ou <=. La combinaison de plusieurs expressions de filtre avec AND (&&) ou OR (\$1\$1) n’est pas prise en charge. Le type de retour de cet opérateur est toujours un tableau JSON. 

Pour mieux comprendre JSONPath les opérateurs, consultez la réponse JSON suivante provenant de l'opération d'`DescribeInstances`API ec2. À la suite de cette réponse figurent plusieurs exemples qui montrent des résultats différents en appliquant différentes JSONPath expressions à la réponse issue de l'opération `DescribeInstances` d'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 Exemple 1 : Obtenir une chaîne spécifique à partir d'une réponse JSON**

```
JSONPath: 
$.Reservations[0].Instances[0].ImageId 

Returns:
"ami-12345678"

Type: String
```

**JSONPath Exemple 2 : obtenir un booléen spécifique à partir d'une réponse JSON**

```
JSONPath:
$.Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.DeleteOnTermination
        
Returns:
true

Type: Boolean
```

**JSONPath Exemple 3 : Obtenir un entier spécifique à partir d'une réponse JSON**

```
JSONPath:
$.Reservations[0].Instances[0].State.Code
        
Returns:
16

Type: Integer
```

**JSONPath Exemple 4 : analyse approfondie d'une réponse JSON, puis obtention de toutes les valeurs VolumeId sous forme de StringList** 

```
JSONPath:
$.Reservations..BlockDeviceMappings..VolumeId
        
Returns:
[
   "vol-000000000000",
   "vol-111111111111"
]

Type: StringList
```

**JSONPath Exemple 5 : Obtenir un BlockDeviceMappings objet spécifique en tant que StringMap**

```
JSONPath:
$.Reservations[0].Instances[0].BlockDeviceMappings[0]
        
Returns:
{
   "Ebs" : {
      "DeleteOnTermination" : true,
      "Status" : "attached",
      "VolumeId" : "vol-000000000000"
   },
   "DeviceName" : "/dev/xvda"
}

Type: StringMap
```

**JSONPath Exemple 6 : analyse approfondie d'une réponse JSON, puis récupère tous les objets State sous forme de MapList**

```
JSONPath:
$.Reservations..Instances..State 
    
Returns:
[
   {
      "Code" : 16,
      "Name" : "running"
   },
   {
      "Code" : 80,
      "Name" : "stopped"
   }
]

Type: MapList
```

**JSONPath Exemple 7 : filtre pour les instances de l'`running`état**

```
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 Exemple 8 : Renvoie les `ImageId` instances qui ne sont pas dans l'`running`état**

```
JSONPath:
$.Reservations..Instances[?(@.State.Name != 'running')].ImageId

Returns:
[
  "ami-12345678"
]

Type: StringList | String
```

# Création d'intégrations webhook pour Automation
<a name="creating-webhook-integrations"></a>

Pour envoyer des messages à l'aide de webhooks pendant une automatisation, créez une intégration. Les intégrations peuvent être appelées lors d'une automatisation à l'aide de l'action `aws:invokeWebhook` dans votre runbook. Si vous n'avez pas encore créé de webhook, consultez [Créer des webhooks pour les intégrations](#creating-webhooks). Pour en savoir plus sur l'action `aws:invokeWebhook`, consultez [`aws:invokeWebhook` : appeler une intégration de webhook Automation](invoke-webhook.md).

Comme indiqué dans les procédures suivantes, vous pouvez créer une intégration à l'aide de la console Systems Manager Automation ou de l'outil de ligne de commande de votre choix. 

## Créer des intégrations (console)
<a name="creating-integrations-console"></a>

**Pour créer une intégration pour Automation (console)**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Sélectionnez l'onglet **Integrations** (Intégrations).

1. Sélectionnez **Add integration** (Ajouter une intégration), puis **Webhook**.

1. Saisissez les valeurs requises et les valeurs facultatives que vous souhaitez inclure pour l'intégration.

1. Sélectionnez **Add** (Ajouter) pour créer l'intégration.

## Créer des intégrations (ligne de commande)
<a name="creating-integrations-commandline"></a>

Pour créer une intégration à l'aide des outils de ligne de commande, vous devez créer le paramètre `SecureString` requis pour une intégration. Automation utilise un espace de noms réservé dans Parameter Store, un outil de Systems Manager, pour stocker des informations sur votre intégration. Si vous créez une intégration à l'aide de AWS Management Console, Automation gère ce processus pour vous. Après l'espace de noms, vous devez spécifier le type d'intégration que vous souhaitez créer, puis le nom de votre intégration. Automation prend actuellement en charge les intégrations de type `webhook`.

Les champs pris en charge pour les intégrations de type `webhook` sont les suivants :
+ Description
+ headers
+ payload
+ URL

**Avant de commencer**  
Si ce n'est pas déjà fait, installez et configurez le AWS Command Line Interface (AWS CLI) ou le Outils AWS pour PowerShell. Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

**Pour créer une intégration pour Automation (ligne de commande)**
+ Exécutez les commandes suivantes pour créer le paramètre `SecureString` requis pour une intégration. Remplacez chaque *example resource placeholder* par vos propres informations. L'espace de noms `/d9d01087-4a3f-49e0-b0b4-d568d7826553/ssm/integrations/webhook/` est réservé dans Parameter Store pour les intégrations. Le nom de votre paramètre doit utiliser cet espace de noms suivi du nom de votre intégration. Par exemple `/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"}'
  ```

------

## Créer des webhooks pour les intégrations
<a name="creating-webhooks"></a>

Lorsque vous créez des webhooks avec votre fournisseur, prenez note des éléments suivants :
+ Le protocole doit être HTTPS.
+ Les en-têtes de demande personnalisés sont pris en charge.
+ Un corps de requête par défaut peut être spécifié.
+ Le corps de requête par défaut peut être remplacé lorsqu'une intégration est appelée à l'aide de l'action `aws:invokeWebhook`.

# Gestion de délais d'expiration dans des runbooks
<a name="automation-handling-timeouts"></a>

La propriété `timeoutSeconds` est partagée par toutes les actions de l'automatisation. Vous pouvez utiliser cette propriété pour spécifier la valeur de délai d'exécution d'une action. Vous pouvez également modifier la manière dont une action qui arrive à expiration affecte l'automatisation et le statut global de l'exécution. Pour ce faire, définissez également les propriétés partagées `onFailure` et `isCritical` d'une action.

Par exemple, selon votre cas d'utilisation, vous souhaiterez peut-être que l'automatisation passe à une autre action sans affecter le statut global de l'automatisation si une action arrive à expiration. Dans cet exemple, vous spécifiez la durée d'attente avant l'expiration de l'action à l'aide de la propriété `timeoutSeconds`. Vous spécifiez ensuite l'action, ou l'étape, par laquelle l'automatisation doit passer si un délai d'expiration a été spécifié. Spécifiez une valeur au format `step:step name` pour la propriété `onFailure` plutôt que la valeur par défaut `Abort`. Par défaut, si une action arrive à expiration, le statut de l'automatisation sera `Timed Out`. Pour empêcher un délai d'expiration d'affecter le statut d'exécution de l'automatisation, spécifiez `false` pour la propriété `isCritical`.

L'exemple suivant illustre comment définir les propriétés partagées pour une action décrite dans ce scénario.

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

------

Pour de plus amples informations sur les propriétés partagées par toutes les actions de l'automatisation, veuillez consulter [Propriétés partagées par toutes les actions](automation-actions.md#automation-common).

# Référence du dossier d’exploitation Systems Manager Automation
<a name="automation-documents-reference"></a>

Pour vous aider à démarrer rapidement, AWS Systems Manager fournit des runbooks prédéfinis. Ces runbooks sont gérés par Amazon Web Services AWS Support, et AWS Config. Le Runbook Reference décrit chacun des runbooks prédéfinis fournis par Systems Manager Support, et. AWS Config Pour de plus amples informations, consultez la [Référence des dossiers d’exploitation Systems Manager Automation](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide).

# Didacticiels
<a name="automation-tutorials"></a>

Les didacticiels suivants vous aident à utiliser AWS Systems Manager Automation pour répondre à des cas d'utilisation courants. Ces didacticiels expliquent comment utiliser vos propres dossiers d’exploitation, des dossiers d’exploitation prédéfinis fournis par Automation et d’autres outils de Systems Manager avec d’autres Services AWS.

**Contents**
+ [Mise à jour des AMIs](automation-tutorial-update-ami.md)
  + [Mettre à jour une AMI Linux](automation-tutorial-update-patch-linux-ami.md)
  + [Mettre à jour une AMI Linux (AWS CLI)](automation-tutorial-update-ami.md#update-patch-linux-ami-cli)
  + [Mettre à jour une AMI Windows Server](automation-tutorial-update-patch-windows-ami.md)
  + [Mettez à jour un golden AMI à l'aide de l'automatisation AWS Lambda, et Parameter Store](automation-tutorial-update-patch-golden-ami.md)
    + [Tâche 1 : créer un paramètre dans Systems Manager Parameter Store](automation-tutorial-update-patch-golden-ami.md#create-parameter-ami)
    + [Tâche 2 : créer un rôle IAM pour AWS Lambda](automation-tutorial-update-patch-golden-ami.md#create-lambda-role)
    + [Tâche 3 : créer une AWS Lambda fonction](automation-tutorial-update-patch-golden-ami.md#create-lambda-function)
    + [Tâche 4 : créer un runbook et corriger l'AMI](automation-tutorial-update-patch-golden-ami.md#create-custom-ami-update-runbook)
  + [Mise à jour des AMIs à l’aide d’Automation et de Jenkins](automation-tutorial-update-patch-ami-jenkins-integration.md)
  + [Mise à jour d'AMIs pour des groupes Auto Scaling](automation-tutorial-update-patch-windows-ami-autoscaling.md)
    + [Création du runbook **Patch AMIAnd UpdateASG**](automation-tutorial-update-patch-windows-ami-autoscaling.md#create-autoscaling-update-runbook)
+ [Utilisation de AWS Support runbooks en libre-service](automation-tutorial-support-runbooks.md)
  + [Exécutez l'outil EC2 Rescue sur des instances inaccessibles](automation-ec2rescue.md)
    + [Comment ça marche](automation-ec2rescue.md#automation-ec2rescue-how)
    + [Avant de commencer](automation-ec2rescue.md#automation-ec2rescue-begin)
      + [Attribution d'autorisations `AWSSupport-EC2Rescue` pour exécuter des actions sur vos instances](automation-ec2rescue.md#automation-ec2rescue-access)
        + [Attribution des autorisations en utilisant les politiques IAM](automation-ec2rescue.md#automation-ec2rescue-access-iam)
        + [Octroi d'autorisations à l'aide d'un CloudFormation modèle](automation-ec2rescue.md#automation-ec2rescue-access-cfn)
    + [Exécution d'Automation](automation-ec2rescue.md#automation-ec2rescue-executing)
  + [Réinitialiser les mots de passe et les clés SSH sur les instances EC2](automation-ec2reset.md)
    + [Comment ça marche](automation-ec2reset.md#automation-ec2reset-how)
    + [Avant de commencer](automation-ec2reset.md#automation-ec2reset-begin)
      + [Octroi d'autorisations à AWSSupport-EC 2Rescue pour effectuer des actions sur vos instances](automation-ec2reset.md#automation-ec2reset-access)
        + [Attribution des autorisations en utilisant les politiques IAM](automation-ec2reset.md#automation-ec2reset-access-iam)
        + [Octroi d'autorisations à l'aide d'un CloudFormation modèle](automation-ec2reset.md#automation-ec2reset-access-cfn)
    + [Exécution d'Automation](automation-ec2reset.md#automation-ec2reset-executing)
+ [Transmission de données à Automation à l'aide de transformateurs en entrée](automation-tutorial-eventbridge-input-transformers.md)

# Mise à jour des AMIs
<a name="automation-tutorial-update-ami"></a>

Les didacticiels suivants expliquent comment mettre à jour Amazon Machine Image (AMIs) pour inclure les derniers correctifs.

**Topics**
+ [Mettre à jour une AMI Linux](automation-tutorial-update-patch-linux-ami.md)
+ [Mettre à jour une AMI Linux (AWS CLI)](#update-patch-linux-ami-cli)
+ [Mettre à jour une AMI Windows Server](automation-tutorial-update-patch-windows-ami.md)
+ [Mettez à jour un golden AMI à l'aide de l'automatisation AWS Lambda, et Parameter Store](automation-tutorial-update-patch-golden-ami.md)
+ [Mise à jour des AMIs à l’aide d’Automation et de Jenkins](automation-tutorial-update-patch-ami-jenkins-integration.md)
+ [Mise à jour d'AMIs pour des groupes Auto Scaling](automation-tutorial-update-patch-windows-ami-autoscaling.md)

# Mettre à jour une AMI Linux
<a name="automation-tutorial-update-patch-linux-ami"></a>

Cette procédure Systems Manager Automation vous montre comment utiliser la console ou l' AWS CLI et le runbook `AWS-UpdateLinuxAmi` pour mettre à jour une AMI Linux avec les correctifs les plus récents des packages que vous spécifiez. Automation est un outil d’ AWS Systems Manager. Le runbook `AWS-UpdateLinuxAmi` automatise aussi l'installation de packages et configurations supplémentaires propres aux sites. Vous pouvez mettre à jour différentes distributions Linux à l’aide de cette démonstration, notamment lUbuntu Server, Red Hat Enterprise Linux (RHEL), ou Amazon Linux AMIs. Pour obtenir la liste complète des versions Linux prises en charge, consultez [conditions préalables requises de l’Patch Manager](patch-manager-prerequisites.md).

Le runbook `AWS-UpdateLinuxAmi` vous permet d'automatiser les tâches de maintenance d'images sans devoir créer de runbook en JSON ou YAML. Vous pouvez utiliser le runbook `AWS-UpdateLinuxAmi` pour effectuer les types de tâche suivants.
+ Mettre à niveau tous les packages de distribution et les logiciels Amazon sur une Amazon Linux, Red Hat Enterprise Linux, ou Ubuntu Server Amazon Machine Image (AMI). Il s'agit du comportement du runbook par défaut.
+ Effectuez l'installation AWS Systems Manager SSM Agent sur une image existante pour activer les outils de Systems Manager, tels que l'exécution de commandes à distance AWS Systems Manager Run Command ou la collecte d'un inventaire logiciel à l'aide d'Inventory.
+ Installer des packages logiciels supplémentaires

**Avant de commencer**  
Avant de commencer à travailler avec des runbooks, configurez les rôles et, éventuellement, EventBridge pour Automation. Pour de plus amples informations, veuillez consulter [Configuration d'Automation](automation-setup.md). Cette procédure pas à pas nécessite également que vous spécifiiez le nom d'un profil d'instance Gestion des identités et des accès AWS (IAM). Pour de plus amples informations sur la création d’un profil d’instance IAM, consultez [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md).

Le runbook `AWS-UpdateLinuxAmi` accepte les paramètres d'entrée suivants.


****  

| Paramètre | Type | Description | 
| --- | --- | --- | 
|  SourceAmiId  |  String  |  (Obligatoire) L'ID d'AMI source.  | 
|  IamInstanceProfileName  |  String  |  (Obligatoire) Le nom du rôle de profil d’instance IAM que vous avez créé dans [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md). Le rôle de profil d'instance autorise Automation à effectuer des actions sur vos instances, comme l'exécution de commandes, ou le démarrage ou l'arrêt de services. Le runbook utilise uniquement le nom du rôle de profil d'instance. Si vous spécifiez l'Amazon Resource Name (ARN), l'automatisation échoue.  | 
|  AutomationAssumeRole  |  String  |  (Obligatoire) Le nom du rôle de service IAM que vous avez créé dans [Configuration d'Automation](automation-setup.md). Le rôle de service (également appelé rôle de responsable) accorde à Automation l'autorisation d'assumer votre rôle IAM et d'exécuter des actions en votre nom. Par exemple, le rôle de service autorise Automation à créer une nouvelle AMI lors de l'exécution de l'action `aws:createImage` dans un runbook. Pour ce paramètre, l'ARN complet doit être spécifié.  | 
|  TargetAmiName  |  String  |  (Facultatif) Nom de la nouvelle AMI une fois celle-ci créée. Le nom par défaut est une chaîne générée par le système qui inclut l'ID de l'AMI source, et les date et heure de création.  | 
|  InstanceType  |  String  |  (Facultatif) Type d'instance à lancer en tant qu'hôte d'espace de travail. Les types d'instances varient selon la région. La type par défaut est t2.micro.  | 
|  PreUpdateScript  |  String  |  (Facultatif) URL d'un script à exécuter avant l'application des mises à jour. La valeur par défaut (\$1"none\$1") consiste à ne pas exécuter de script.  | 
|  PostUpdateScript  |  String  |  (Facultatif) URL d'un script à exécuter après l'application des mises à jour de package. La valeur par défaut (\$1"none\$1") consiste à ne pas exécuter de script.  | 
|  IncludePackages  |  String  |  (Facultatif) Mettre à jour uniquement ces packages nommés. Par défaut (\$1"all\$1"), toutes les mises à jour disponibles sont appliquées.  | 
|  ExcludePackages  |  String  |  (Facultatif) Noms des packages spécifiques à exclure des mises à jour, sous toutes les conditions. Par défaut (\$1"none\$1"), aucun package n'est exclu.  | 

**Étapes d'Automation**  
Le runbook `AWS-UpdateLinuxAmi` inclut les actions d'automatisation suivantes par défaut.

**Étape 1 : launchInstance (action `aws:runInstances`) **  
Cette étape lance une instance à l'aide de données utilisateur Amazon Elastic Compute Cloud (Amazon EC2) et d'un rôle de profil d'instance IAM. Userdata installe l'SSM Agent approprié selon le système d'exploitation. L’installation de SSM Agent vous permet d’utiliser des outils de Systems Manager comme Run Command, State Manager et Inventory.

**Étape 2 : mise à jour OSSoftware (`aws:runCommand`action) **  
Cette étape exécute les commandes suivantes sur l'instance lancée :  
+ Téléchargement d'un script de mise à jour depuis Amazon S3.
+ Exécution d'un script de pré-mise à jour facultatif.
+ Mise à jour des packages de distribution et des logiciels Amazon.
+ Exécution d'un script de post-mise à jour facultatif.
Le journal d'exécution est stocké dans le dossier /tmp pour que l'utilisateur puisse le consulter ultérieurement.  
Si vous souhaitez mettre à niveau un ensemble de packages spécifique, vous pouvez fournir la liste à l'aide du paramètre `IncludePackages`. Dans ce cas, le système tente de mettre à jour seulement ces packages et leurs dépendances. Aucune autre mise à jour n'est exécutée. Par défaut, quand aucun package *include* n'est spécifié, le programme met à jour tous les packages disponibles.  
Si vous souhaitez exclure de la mise à niveau un ensemble de packages spécifique, vous pouvez fournir la liste à l'aide du paramètre `ExcludePackages`. Dans ce cas, ces packages restent à leur version actuelle, quelles que soient les autres options spécifiées. Par défaut, quand aucun package *exclude* n'est spécifié, aucun package n'est exclu.

**Étape 3 : stopInstance (action `aws:changeInstanceState`)**  
Cette étape arrête toutes les instances mises à jour.

**Étape 4 : createImage (action `aws:createImage`) **  
Cette étape crée une nouvelle AMI avec un nom descriptif qui la relie à l'ID source et l'heure de création. Par exemple : « AMI Généré par EC2 Automation le \$1\$1global:Date\$1Time\$1\$1 à partir de \$1\$1SourceAmiId\$1\$1 » où DATE\$1TIME et sourceID représentent les variables d'automatisation.

**Étape 5 : terminateInstance (action `aws:changeInstanceState`) **  
Cette étape nettoie l'automatisation en mettant hors service l'instance en cours d'exécution.

**Output**  
L'automatisation renvoie le nouvel ID AMI en tant que sortie.

**Note**  
Par défaut, lorsqu'Automation exécute le runbook `AWS-UpdateLinuxAmi`, le système crée une instance temporaire dans le VPC par défaut (172.30.0.0/16). Si vous avez supprimé le VPC par défaut, vous recevrez l'erreur suivante :  
`VPC not defined 400`  
Pour régler ce problème, vous devez réaliser une copie du runbook `AWS-UpdateLinuxAmi` et spécifier un ID de sous-réseau. Pour de plus amples informations, veuillez consulter [VPC non défini 400](automation-troubleshooting.md#automation-trbl-common-vpc).

**Pour créer une AMI à laquelle un correctif a été appliqué l'aide d'Automation (AWS Systems Manager)**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Sélectionnez **Execute automation (Exécuter l'automatisation)**.

1. Dans la liste **Document Type (Type de document)**, sélectionnez `AWS-UpdateLinuxAmi`.

1. Dans la section **Document details (Détails du document)**, vérifiez que l'option **Document version (Version du document)** est définie sur **Version par défaut lors de l'exécution**.

1. Sélectionnez **Suivant**.

1. Dans la section **Execution mode (Mode d'exécution)**, sélectionnez **Simple Execution (Exécution simple)**.

1. Dans la section **Input parameters (Paramètres d'entrée)**, saisissez les informations que vous avez collectées dans la section **Before you begin (Avant de commencer)**.

1. Sélectionnez **Execute (Exécuter)**. La console affiche le statut de l'exécution d'automatisation.

Lorsque l'automatisation est terminée, lancez une instance test à partir de l'AMI mise à jour pour vérifier les modifications.

**Note**  
Si une étape de l'automatisation échoue, les informations concernant l'échec sont répertoriées dans la page **Automation Executions**. L'automatisation est conçue pour mettre fin à l'instance temporaire une fois que toutes les tâches ont été effectuées correctement. Si une étape échoue, le système ne met pas nécessairement fin à l'instance. Donc, si une étape échoue, mettez fin à l'instance temporaire manuellement.

## Mettre à jour une AMI Linux (AWS CLI)
<a name="update-patch-linux-ami-cli"></a>

Cette procédure AWS Systems Manager d'automatisation explique comment utiliser le runbook AWS Command Line Interface (AWS CLI) et le `AWS-UpdateLinuxAmi` runbook Systems Manager pour patcher automatiquement un Linux Amazon Machine Image (AMI) avec les dernières versions des packages que vous spécifiez. Automation est un outil d’ AWS Systems Manager. Le runbook `AWS-UpdateLinuxAmi` automatise aussi l'installation de packages et configurations supplémentaires propres aux sites. Vous pouvez mettre à jour différentes distributions Linux à l’aide de cette démonstration, notamment lUbuntu Server, Red Hat Enterprise Linux (RHEL), ou Amazon Linux AMIs. Pour obtenir la liste complète des versions Linux prises en charge, consultez [conditions préalables requises de l’Patch Manager](patch-manager-prerequisites.md).

Le runbook `AWS-UpdateLinuxAmi` vous permet d'automatiser les tâches de maintenance d'images sans devoir créer de runbook en JSON ou YAML. Vous pouvez utiliser le runbook `AWS-UpdateLinuxAmi` pour effectuer les types de tâche suivants.
+ Mettre à niveau tous les packages de distribution et les logiciels Amazon sur une Amazon Linux, RHEL, ou Ubuntu Server Amazon Machine Image (AMI). Il s'agit du comportement du runbook par défaut.
+ Effectuez l'installation AWS Systems Manager SSM Agent sur une image existante pour activer les fonctionnalités de Systems Manager, telles que l'exécution de commandes à distance AWS Systems Manager Run Command ou la collecte d'un inventaire logiciel à l'aide d'Inventory.
+ Installer des packages logiciels supplémentaires

**Avant de commencer**  
Avant de commencer à travailler avec des runbooks, configurez les rôles et, éventuellement, EventBridge pour Automation. Pour de plus amples informations, veuillez consulter [Configuration d'Automation](automation-setup.md). Cette procédure pas à pas nécessite également que vous spécifiiez le nom d'un profil d'instance Gestion des identités et des accès AWS (IAM). Pour de plus amples informations sur la création d’un profil d’instance IAM, consultez [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md).

Le runbook `AWS-UpdateLinuxAmi` accepte les paramètres d'entrée suivants.


****  

| Paramètre | Type | Description | 
| --- | --- | --- | 
|  SourceAmiId  |  Chaîne  |  (Obligatoire) L'ID d'AMI source. Vous pouvez référencer automatiquement le dernier identifiant d'un Amazon EC2 AMI pour Linux à l'aide d'un paramètre AWS Systems Manager Parameter Store *public*. Pour plus d'informations, consultez [Query for the latest Amazon Linux AMI IDs using 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  |  Chaîne  |  (Obligatoire) Le nom du rôle de profil d’instance IAM que vous avez créé dans [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md). Le rôle de profil d'instance autorise Automation à effectuer des actions sur vos instances, comme l'exécution de commandes, ou le démarrage ou l'arrêt de services. Le runbook utilise uniquement le nom du rôle de profil d'instance.  | 
|  AutomationAssumeRole  |  Chaîne  |  (Obligatoire) Le nom du rôle de service IAM que vous avez créé dans [Configuration d'Automation](automation-setup.md). Le rôle de service (également appelé rôle de responsable) accorde à Automation l'autorisation d'assumer votre rôle IAM et d'exécuter des actions en votre nom. Par exemple, le rôle de service autorise Automation à créer une nouvelle AMI lors de l'exécution de l'action `aws:createImage` dans un runbook. Pour ce paramètre, l'ARN complet doit être spécifié.  | 
|  TargetAmiName  |  Chaîne  |  (Facultatif) Nom de la nouvelle AMI une fois celle-ci créée. Le nom par défaut est une chaîne générée par le système qui inclut l'ID de l'AMI source, et les date et heure de création.  | 
|  InstanceType  |  Chaîne  |  (Facultatif) Type d'instance à lancer en tant qu'hôte d'espace de travail. Les types d'instances varient selon la région. La type par défaut est t2.micro.  | 
|  PreUpdateScript  |  Chaîne  |  (Facultatif) URL d'un script à exécuter avant l'application des mises à jour. La valeur par défaut (\$1"none\$1") consiste à ne pas exécuter de script.  | 
|  PostUpdateScript  |  Chaîne  |  (Facultatif) URL d'un script à exécuter après l'application des mises à jour de package. La valeur par défaut (\$1"none\$1") consiste à ne pas exécuter de script.  | 
|  IncludePackages  |  Chaîne  |  (Facultatif) Mettre à jour uniquement ces packages nommés. Par défaut (\$1"all\$1"), toutes les mises à jour disponibles sont appliquées.  | 
|  ExcludePackages  |  Chaîne  |  (Facultatif) Noms des packages spécifiques à exclure des mises à jour, sous toutes les conditions. Par défaut (\$1"none\$1"), aucun package n'est exclu.  | 

**Étapes d'Automation**  
Le runbook `AWS-UpdateLinuxAmi` inclut les étapes suivantes par défaut.

**Étape 1 : launchInstance (action `aws:runInstances`) **  
Cette étape lance une instance à l'aide des données utilisateur d'Amazon Elastic Compute Cloud (Amazon EC2) et d'un rôle de profil d'instance IAM. User data installe le SSM Agent approprié selon le système d'exploitation. L’installation de SSM Agent vous permet d’utiliser des outils de Systems Manager comme Run Command, State Manager et Inventory.

**Étape 2 : mise à jour OSSoftware (`aws:runCommand`action) **  
Cette étape exécute les commandes suivantes sur l'instance lancée :  
+ Télécharge un script de mise à jour à partir d'Amazon Simple Storage Service (Amazon S3).
+ Exécution d'un script de pré-mise à jour facultatif.
+ Mise à jour des packages de distribution et des logiciels Amazon.
+ Exécution d'un script de post-mise à jour facultatif.
Le journal d'exécution est stocké dans le dossier /tmp pour que l'utilisateur puisse le consulter ultérieurement.  
Si vous souhaitez mettre à niveau un ensemble de packages spécifique, vous pouvez fournir la liste à l'aide du paramètre `IncludePackages`. Dans ce cas, le système tente de mettre à jour seulement ces packages et leurs dépendances. Aucune autre mise à jour n'est exécutée. Par défaut, quand aucun package *include* n'est spécifié, le programme met à jour tous les packages disponibles.  
Si vous souhaitez exclure de la mise à niveau un ensemble de packages spécifique, vous pouvez fournir la liste à l'aide du paramètre `ExcludePackages`. Dans ce cas, ces packages restent à leur version actuelle, quelles que soient les autres options spécifiées. Par défaut, quand aucun package *exclude* n'est spécifié, aucun package n'est exclu.

**Étape 3 : stopInstance (action `aws:changeInstanceState`)**  
Cette étape arrête toutes les instances mises à jour.

**Étape 4 : createImage (action `aws:createImage`) **  
Cette étape crée une nouvelle AMI avec un nom descriptif qui la relie à l'ID source et l'heure de création. Par exemple : « AMI générée par EC2 Automation le \$1\$1global:Date\$1Time\$1\$1 à partir de \$1\$1\$1SourceAmiId\$1 » où DATE\$1TIME et sourceID représentent les variables d'automatisation.

**Étape 5 : terminateInstance (action `aws:changeInstanceState`) **  
Cette étape nettoie l'automatisation en mettant hors service l'instance en cours d'exécution.

**Sortie**  
L'automatisation renvoie le nouvel ID AMI en tant que sortie.

**Note**  
Par défaut, lorsqu'Automation exécute le runbook `AWS-UpdateLinuxAmi`, le système crée une instance temporaire dans le VPC par défaut (172.30.0.0/16). Si vous avez supprimé le VPC par défaut, vous recevrez l'erreur suivante :  
`VPC not defined 400`  
Pour régler ce problème, vous devez réaliser une copie du runbook `AWS-UpdateLinuxAmi` et spécifier un ID de sous-réseau. Pour de plus amples informations, veuillez consulter [VPC non défini 400](automation-troubleshooting.md#automation-trbl-common-vpc).

**Pour créer une AMI corrigée à l'aide d'Automation**

1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

   Pour de plus amples informations, consultez [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Exécutez la commande suivante pour exécuter le runbook `AWS-UpdateLinuxAmi`. Remplacez chaque *example resource placeholder* par vos propres informations.

   ```
   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'
   ```

   La commande renvoie un ID d'exécution. Copiez cet ID dans le Presse-papiers. Vous utiliserez cet ID pour afficher le statut de l'automatisation.

   ```
   {
       "AutomationExecutionId": "automation execution ID"
   }
   ```

1. Pour visualiser l'automatisation à l'aide de AWS CLI, exécutez la commande suivante :

   ```
   aws ssm describe-automation-executions
   ```

1. Pour afficher les détails de la progression de l'automatisation, exécutez la commande suivante. Remplacez *automation execution ID* par vos propres informations.

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

   Le processus de mise à jour peut prendre 30 minutes ou plus.
**Note**  
Vous pouvez aussi surveiller le statut de l'automatisation dans la console. Dans la liste, sélectionnez l'automatisation que vous venez juste d'exécuter, puis sélectionnez l'onglet **Steps (Étapes)**. Cet onglet affiche l'état des actions de l'automatisation.

Lorsque l'automatisation est terminée, lancez une instance test à partir de l'AMI mise à jour pour vérifier les modifications.

**Note**  
Si une étape de l'automatisation échoue, les informations concernant l'échec sont répertoriées dans la page **Automation Executions**. L'automatisation est conçue pour mettre fin à l'instance temporaire une fois que toutes les tâches ont été effectuées correctement. Si une étape échoue, le système ne met pas nécessairement fin à l'instance. Donc, si une étape échoue, mettez fin à l'instance temporaire manuellement.

# Mettre à jour une AMI Windows Server
<a name="automation-tutorial-update-patch-windows-ami"></a>

Le runbook `AWS-UpdateWindowsAmi` vous permet d'automatiser les tâches de maintenance d'images sur vos Amazon Machine Image (AMI) Windows Amazon sans devoir créer le flux de travail en JSON ou YAML. Ce runbook est pris en charge pour Windows Server 2008 R2 ou une version ultérieure. Vous pouvez utiliser le runbook `AWS-UpdateWindowsAmi` pour effectuer les types de tâche suivants.
+ Installez toutes les mises à jour Windows et mettez à niveau les logiciels Amazon (comportement par défaut).
+ Installez toutes les mises à jour Windows spécifiques et mettez à niveau les logiciels Amazon.
+ Personnalisez une AMI en utilisant vos scripts.

**Avant de commencer**  
Avant de commencer à travailler avec des runbooks, [configurez des rôles pour Automation](automation-setup-iam.md) afin d'ajouter une politique `iam:PassRole` qui référence l'ARN du profil d'instance auquel vous souhaitez octroyer l'accès. Vous pouvez éventuellement configurer Amazon EventBridge for Automation, un outil dans AWS Systems Manager. Pour de plus amples informations, veuillez consulter [Configuration d'Automation](automation-setup.md). Cette procédure pas à pas nécessite également que vous spécifiiez le nom d'un profil d'instance Gestion des identités et des accès AWS (IAM). Pour de plus amples informations sur la création d’un profil d’instance IAM, consultez [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md).

**Note**  
Les mises à jour de AWS Systems Manager SSM Agent sont généralement déployées dans différentes régions, à des heures différentes. Lorsque vous personnalisez ou mettez à jour une AMI, utilisez uniquement le code source AMIs publié pour la région dans laquelle vous travaillez. Vous aurez ainsi l'assurance de travailler avec le dernier agent SSM Agent publié pour cette région, et vous éviterez des problèmes de compatibilité.

Le runbook `AWS-UpdateWindowsAmi` accepte les paramètres d'entrée suivants.


****  

| Paramètre | Type | Description | 
| --- | --- | --- | 
|  SourceAmiId  |  String  |  (Obligatoire) L'ID d'AMI source. Vous pouvez référencer automatiquement le dernier ID d'AMI Windows Server à l'aide d'un paramètre Systems Manager *public* Parameter Store. Pour plus d'informations, consultez la section [Requête pour obtenir la dernière version de Windows AMI IDs utilisant AWS Systems ManagerParameter Store](https://aws.amazon.com/blogs/mt/query-for-the-latest-windows-ami-using-systems-manager-parameter-store/).  | 
|  SubnetId  |  String  |  (Facultatif) Le sous-réseau dans lequel vous souhaitez lancer l'instance temporaire. Vous devez spécifier une valeur pour ce paramètre si vous avez supprimé votre VPC par défaut.  | 
|  IamInstanceProfileName  |  String  |  (Obligatoire) Le nom du rôle de profil d’instance IAM que vous avez créé dans [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md). Le rôle de profil d'instance autorise Automation à effectuer des actions sur vos instances, comme l'exécution de commandes, ou le démarrage ou l'arrêt de services. Le runbook utilise uniquement le nom du rôle de profil d'instance.  | 
|  AutomationAssumeRole  |  String  |  (Obligatoire) Le nom du rôle de service IAM que vous avez créé dans [Configuration d'Automation](automation-setup.md). Le rôle de service (également appelé rôle de responsable) accorde à Automation l'autorisation d'assumer votre rôle IAM et d'exécuter des actions en votre nom. Par exemple, le rôle de service autorise Automation à créer une nouvelle AMI lors de l'exécution de l'action `aws:createImage` dans un runbook. Pour ce paramètre, l'ARN complet doit être spécifié.  | 
|  TargetAmiName  |  String  |  (Facultatif) Nom de la nouvelle AMI une fois celle-ci créée. Le nom par défaut est une chaîne générée par le système qui inclut l'ID de l'AMI source, et les date et heure de création.  | 
|  InstanceType  |  String  |  (Facultatif) Type d'instance à lancer en tant qu'hôte d'espace de travail. Les types d'instances varient selon la région. La type par défaut est t2.medium.  | 
|  PreUpdateScript  |  String  |  (Facultatif) Un script à exécuter avant la mise à jour de l'AMI. Saisissez un script dans le runbook ou lors de l'exécution en tant que paramètre.  | 
|  PostUpdateScript  |  String  |  (Facultatif) Un script à exécuter après la mise à jour de l'AMI. Saisissez un script dans le runbook ou lors de l'exécution en tant que paramètre.  | 
|  IncludeKbs  |  String  |  (Facultatif) Spécifiez un ou plusieurs articles de la base de connaissances Microsoft (KB) IDs à inclure. Vous pouvez en installer plusieurs IDs en utilisant des valeurs séparées par des virgules. Formats valides : KB9876543 ou 9876543.  | 
|  ExcludeKbs  |  String  |  (Facultatif) Spécifiez un ou plusieurs articles de la Base de connaissances Microsoft (KB) IDs à exclure. Vous pouvez en exclure plusieurs à IDs l'aide de valeurs séparées par des virgules. Formats valides : KB9876543 ou 9876543.  | 
|  Catégories  |  String  |  (Facultatif) Spécifiez une ou plusieurs catégories de mise à jour. Vous pouvez filtrer les catégories en utilisant des valeurs séparées par une virgule. Options : Mise à jour critique, Mise à jour de la sécurité, Mise à jour de la définition, Report de mise à jour, Service Pack, Outil, Mise à jour, ou Pilote. Parmi les formats valides, on compte une seule entrée comme : Critical Update. Ou, vous pouvez spécifier une liste avec des éléments séparés par des virgules : Mise à jour critique, Mise à jour de la sécurité, Mise à jour de la définition.  | 
|  SeverityLevels  |  String  |  (Facultatif) Spécifiez un ou plusieurs niveaux de sécurité MSRC associés à une mise à jour. Vous pouvez filtrer les niveaux de sécurité en utilisant des valeurs séparées par une virgule. Options : Critique, Important, Faible, Modéré ou Non précisé. Parmi les formats valides, on compte une seule entrée comme : Critique. Ou, vous pouvez spécifier une liste avec des éléments séparés par des virgules : Critique, Important, Faible.  | 

**Étapes d'Automation**  
Le runbook `AWS-UpdateWindowsAmi` inclut les étapes suivantes par défaut.

**Étape 1 : launchInstance (action `aws:runInstances`)**  
Cette étape lance une instance avec un rôle de profil d'instance IAM à partir du `SourceAmiID` spécifié.

**Étape 2 : runPreUpdate Script (`aws:runCommand`action)**  
Cette étape vous permet de spécifier un script comme chaîne exécutée avant l'installation des mises à jour.

**Étape 3 : mettre à jour EC2 Config (`aws:runCommand`action)**  
Cette étape utilise le `AWS-InstallPowerShellModule` runbook pour télécharger un PowerShell module AWS public. Systems Manager vérifie l'intégrité du module via un hachage SHA-256. Systems Manager vérifie ensuite le système d'exploitation pour déterminer s'il convient de mettre à jour EC2 Config ou EC2 Launch. EC2Config s'exécute sous Windows Server 2008 R2 via Windows Server 2012 R2. EC2Launch s'exécute sous Windows Server 2016.

**Étape 4 : mise à jour SSMAgent (`aws:runCommand`action)**  
Cette étape met à jour SSM Agent à l'aide du runbook `AWS-UpdateSSMAgent`.

**Étape 5 : mise à jour AWSPVDriver (`aws:runCommand`action)**  
Cette étape met à jour les pilotes AWS PV à l'aide du `AWS-ConfigureAWSPackage` runbook.

**Étape 6 : updateAwsEna NetworkDriver (`aws:runCommand`action)**  
Cette étape met à jour les pilotes réseau AWS ENA à l'aide du `AWS-ConfigureAWSPackage` runbook.

**Étape 7 : installWindowsUpdates (`aws:runCommand`action) **  
Cette étape installe les mises à jour Windows à l'aide du runbook `AWS-InstallWindowsUpdates`. Par défaut, Systems Manager recherche et installe l'ensemble des mises à jour manquantes. Vous pouvez modifier le comportement par défaut en spécifiant l'un des paramètres suivants : `IncludeKbs`, `ExcludeKbs`, `Categories`, ou `SeverityLevels`. 

**Étape 8 : runPostUpdate Script (`aws:runCommand`action)**  
Cette étape vous permet de spécifier un script comme chaîne qui est exécutée après l'installation des mises à jour.

**Étape 9 : runSysprepGeneralize (`aws:runCommand`action) **  
Cette étape utilise le `AWS-InstallPowerShellModule` runbook pour télécharger un PowerShell module AWS public. Systems Manager vérifie l'intégrité du module via un hachage SHA-256. Systems Manager exécute ensuite sysprep à l'aide de méthodes AWS prises en charge pour EC2 Launch (Windows Server 2016) ou EC2 Config (Windows Server 2008 R2 à 2012 R2).

**Étape 10 : stopInstance (action `aws:changeInstanceState`) **  
Cette étape arrête toutes les instances mises à jour. 

**Étape 11 : createImage (action `aws:createImage`) **  
Cette étape crée une nouvelle AMI avec un nom descriptif qui la relie à l'ID source et l'heure de création. Par exemple : « AMI générée par EC2 Automation le \$1\$1global:Date\$1time\$1\$1 à partir de \$1\$1\$1\$1 » où DATE\$1TIME et SourceAmiId sourceID représentent les variables d'automatisation.

**Étape 12 : TerminateInstance (`aws:changeInstanceState`action) **  
Cette étape nettoie l'automatisation en mettant hors service l'instance en cours d'exécution. 

**Output**  
Cette section vous permet de désigner les sorties de différentes étapes ou valeurs de n'importe quel paramètre comme sortie d'Automation. Par défaut, la sortie est l'ID des AMI Windows mises à jour créées par l'automatisation.

**Note**  
Par défaut, lorsqu'Automation exécute le runbook `AWS-UpdateWindowsAmi` et crée une instance temporaire, le système utilise le VPC par défaut (172.30.0.0/16). Si vous avez supprimé le VPC par défaut, vous recevrez l'erreur suivante :  
VPC non défini 400  
Pour régler ce problème, vous devez réaliser une copie du runbook `AWS-UpdateWindowsAmi` et spécifier un ID de sous-réseau. Pour de plus amples informations, veuillez consulter [VPC non défini 400](automation-troubleshooting.md#automation-trbl-common-vpc).

**Pour créer une AMI Windows corrigée à l'aide d'Automation**

1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

   Pour de plus amples informations, consultez [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Exécutez la commande suivante pour exécuter le runbook `AWS-UpdateWindowsAmi`. Remplacez chaque *example resource placeholder* par vos propres informations. L'exemple de commande ci-dessous utilise une AMI Amazon EC2 récente afin de réduire le nombre de correctifs à appliquer. Si vous exécutez cette commande plus d'une fois, vous devez spécifier une valeur unique pour `targetAMIname`. Les noms des AMI doivent être uniques.

   ```
   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'
   ```

   La commande renvoie un ID d'exécution. Copiez cet ID dans le Presse-papiers. Vous utiliserez cet ID pour afficher le statut de l'automatisation.

   ```
   {
       "AutomationExecutionId": "automation execution ID"
   }
   ```

1. Pour visualiser l'automatisation à l'aide de AWS CLI, exécutez la commande suivante :

   ```
   aws ssm describe-automation-executions
   ```

1. Pour afficher les détails de la progression de l'automatisation, exécutez la commande suivante.

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

**Note**  
En fonction du nombre de correctifs appliqués, le processus de mise à jour corrective Windows exécuté dans cet exemple d'automatisation peut prendre 30 minutes ou plus pour se terminer.

# Mettez à jour un golden AMI à l'aide de l'automatisation AWS Lambda, et Parameter Store
<a name="automation-tutorial-update-patch-golden-ami"></a>

L'exemple suivant utilise le modèle où une organisation gère et applique périodiquement des correctifs sur leurs propres AMIs propriétaires plutôt que de s'appuyer sur des AMIs Amazon Elastic Compute Cloud (Amazon EC2).

La procédure suivante montre comment appliquer automatiquement des correctifs de système d'exploitation (OS) à un correctif AMI qui est déjà considéré comme le plus *récent up-to-date ou le plus récent*AMI. Dans l'exemple, la valeur par défaut du paramètre `SourceAmiId` est définie par un AWS Systems Manager Parameter Store paramètre appelé`latestAmi`. La valeur de `latestAmi` est mise à jour par une AWS Lambda fonction invoquée à la fin de l'automatisation. Grâce à ce processus d'automatisation, le temps et les efforts consacrés à l'application des correctifs AMIs sont réduits au minimum, car les correctifs sont toujours appliqués au maximum. up-to-date AMI Parameter Storeet l'automatisation sont des outils de AWS Systems Manager.

**Avant de commencer**  
Configurez les rôles d'automatisation et, éventuellement, Amazon EventBridge for Automation. Pour de plus amples informations, veuillez consulter [Configuration d'Automation](automation-setup.md).

**Topics**
+ [Tâche 1 : créer un paramètre dans Systems Manager Parameter Store](#create-parameter-ami)
+ [Tâche 2 : créer un rôle IAM pour AWS Lambda](#create-lambda-role)
+ [Tâche 3 : créer une AWS Lambda fonction](#create-lambda-function)
+ [Tâche 4 : créer un runbook et corriger l'AMI](#create-custom-ami-update-runbook)

## Tâche 1 : créer un paramètre dans Systems Manager Parameter Store
<a name="create-parameter-ami"></a>

Créez un paramètre dans Parameter Store qui utilise les informations suivantes :
+ **Nom** : `latestAmi`.
+ **Valeur** : Un ID d'AMI. Par exemple :` ami-188d6e0e`.

Pour de plus amples informations sur la création d'un paramètre de chaîne Parameter Store, consultez [Création de paramètres Parameter Store dans Systems Manager](sysman-paramstore-su-create.md).

## Tâche 2 : créer un rôle IAM pour AWS Lambda
<a name="create-lambda-role"></a>

Utilisez la procédure suivante pour créer un rôle de service IAM pour AWS Lambda. Ces politiques autorisent Lambda à mettre à jour la valeur du paramètre `latestAmi` à l'aide d'une fonction Lambda et Systems Manager.

**Pour créer un rôle de service IAM pour Lambda**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le volet de navigation, sélectionnez **Politiques**, puis **Créer une politique**.

1. Sélectionnez l'onglet **JSON**.

1. Remplacez les contenus par défaut par la politique suivante. Remplacez chaque *example resource placeholder* par vos propres informations.

------
#### [ 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. Choisissez **Suivant : Balises**.

1. (Facultatif) Ajoutez une ou plusieurs paires clé-valeur d'identification afin d'organiser, de suivre ou de contrôler l'accès pour cette politique. 

1. Choisissez **Suivant : Vérification**.

1. Sur la page **Examiner une politique**, dans le champ **Nom**, saisissez un nom pour la politique en ligne, tel que **amiLambda**.

1. Sélectionnez **Créer une politique**.

1. Répétez les étapes 2 et 3.

1. Collez la politique suivante. Remplacez chaque *example resource placeholder* par vos propres informations.

------
#### [ 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. Choisissez **Suivant : Balises**.

1. (Facultatif) Ajoutez une ou plusieurs paires clé-valeur d'identification afin d'organiser, de suivre ou de contrôler l'accès pour cette politique. 

1. Choisissez **Suivant : Vérification**.

1. Sur la page **Examiner une politique**, dans le champ **Nom**, saisissez un nom pour la politique en ligne, tel que **amiParameter**.

1. Sélectionnez **Créer une politique**.

1. Dans le volet de navigation, sélectionnez **Rôles**, puis **Créer un rôle**.

1. Directement sous **Cas d'utilisation**, choisissez **Lambda**, puis **Suivant**.

1. Sur la page **Ajouter des autorisations** utilisez le champ **Recherche** pour localiser les deux politiques que vous avez créées précédemment.

1. Cochez la case à côté des politiques, puis sélectionnez **Suivant**.

1. Pour **Role name (Nom du rôle)**, entrez un nom pour votre nouveau rôle, par exemple **lambda-ssm-role** ou autre, en fonction de vos préférences. 
**Note**  
Différentes entités peuvent référencer le rôle et il n'est donc pas possible de modifier son nom après sa création.

1. (Facultatif) Ajoutez une ou plusieurs paires clé-valeur de balise afin d'organiser, de suivre ou de contrôler l'accès pour ce rôle, puis sélectionnez **Créer le rôle**.

## Tâche 3 : créer une AWS Lambda fonction
<a name="create-lambda-function"></a>

Utilisez la procédure suivante pour créer une fonction Lambda qui met à jour automatiquement la valeur du paramètre `latestAmi`.

**Pour créer une fonction Lambda**

1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Choisissez **Créer une fonction**.

1. Sur la page **Create function**, sélectionnez **Author from scratch**.

1. Sous **Nom de la fonction**, saisissez **Automation-UpdateSsmParam**.

1. Pour **Runtime**, choisissez **Python 3.11**.

1. Dans **Architecture**, sélectionnez le type de processeur informatique que Lambda doit utiliser pour exécuter la fonction, **x86\$164** ou **arm64**, 

1. Sous **Autorisations**, développez **Modifier le rôle d'exécution par défaut**.

1. Sélectionnez **Use an existing role (Utiliser un rôle existant)**, puis le rôle de service Lambda que vous avez créé lors de la tâche 2.

1. Choisissez **Créer une fonction**.

1. Dans la section **Code source**, dans l'onglet **lambda\$1function**, supprimez le code prérempli dans le champ, puis collez l'exemple de code suivant.

   ```
   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. Choisissez **Fichier, Enregistrer**.

1. Pour tester la fonction Lambda, dans le menu **Test**, sélectionnez **Configurer des événements de test**.

1. Pour **Event name (Nom d'événement)**, saisissez un nom pour l'événement de test, tel que **MyTestEvent**.

1. Remplacez le texte existant par le code JSON suivant. *AMI ID*Remplacez-le par vos propres informations pour définir la valeur de votre `latestAmi` paramètre.

   ```
   {
      "parameterName":"latestAmi",
      "parameterValue":"AMI ID"
   }
   ```

1. Choisissez **Enregistrer**.

1. Sélectionnez **Test** pour tester la fonction. Dans l'onglet **Résultat de l'exécution**, le statut doit être indiqué comme **Réussi**, avec d'autres détails concernant la mise à jour.

## Tâche 4 : créer un runbook et corriger l'AMI
<a name="create-custom-ami-update-runbook"></a>

Utilisez la procédure suivante pour créer un runbook qui applique des correctifs à l'AMI que vous avez spécifiée pour le paramètre **latestAmi**. Une fois le flux de travail d'automatisation terminé, la valeur **latestAmi** est mise à jour avec l'ID de l'AMI nouvellement corrigée. Les automatisations suivantes utilisent l'AMI créée par la précédente exécution.

**Pour créer et exécuter le runbook**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Pour **Créer un document**, choisissez **Automation**.

1. Pour **Nom**, saisissez **UpdateMyLatestWindowsAmi**.

1. Sélectionnez l'onglet **Éditeur**, puis **Modifier**.

1. Choisissez **OK** lorsque vous y êtes invité.

1. Remplacez le contenu par défaut dans le champ **Éditeur de document** avec l'exemple de runbook YAML suivant.

   ```
   ---
   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. Sélectionnez **Create automation (Créer une automatisation)**.

1. Dans le panneau de navigation, sélectionnez **Automation** (Automatisation), puis **Execute automation** (Exécuter l'automatisation).

1. Dans la page **Choose document** (Choisir un document), choisissez l'onglet **Owned by me** (Possédé par moi).

1. Recherchez le **UpdateMyLatestWindowsAmi**runbook, puis sélectionnez le bouton sur la **UpdateMyLatestWindowsAmi**carte.

1. Choisissez **Suivant**.

1. Sélectionnez **Exécution simple**.

1. Spécifiez les valeurs des paramètres d'entrée.

1. Sélectionnez **Execute (Exécuter)**.

1. Une fois l'automatisation terminée, sélectionnez **Parameter Store** dans le panneau de navigation et vérifiez que la nouvelle valeur de `latestAmi` correspond à celle renvoyée par l'automatisation. Vous pouvez également vérifier que le nouvel AMI identifiant correspond à la sortie Automation dans la **AMIs**section de la console Amazon EC2.

# Mise à jour des AMIs à l’aide d’Automation et de Jenkins
<a name="automation-tutorial-update-patch-ami-jenkins-integration"></a>

Si votre organisation utilise un Jenkins logiciel dans un CI/CD pipeline, vous pouvez ajouter Automation en tant qu'étape post-construction pour préinstaller les versions de l'application dans Amazon Machine Images ()AMIs. Automation est un outil d’ AWS Systems Manager. Vous pouvez aussi utiliser la fonctionnalité de planification de Jenkins pour appeler Automation et créer votre propre rythme d’application de correctifs de système d’exploitation.

L’exemple ci-dessous montre comment invoquer Automation à partir d’un serveur Jenkins qui s’exécute sur site ou dans Amazon Elastic Compute Cloud (Amazon EC2). Pour l'authentification, le Jenkins serveur utilise des AWS informations d'identification basées sur une politique IAM que vous avez créée dans l'exemple et que vous associez à votre profil d'instance.

**Note**  
Veillez à respecter les bonnes pratiques de sécurité de Jenkins quand vous configurez votre instance.

**Avant de commencer**  
Effectuez les tâches suivantes avant de configurer Automation avec Jenkins :
+ Complétez l'exemple [Mettez à jour un golden AMI à l'aide de l'automatisation AWS Lambda, et Parameter Store](automation-tutorial-update-patch-golden-ami.md). L'exemple suivant utilise le **UpdateMyLatestWindowsAmi**runbook créé dans cet exemple.
+ Configurez les rôles IAM pour Automation. Systems Manager nécessite un rôle de profil d'instance et un ARN de rôle de service pour traiter les automatisations. Pour de plus amples informations, veuillez consulter [Configuration d'Automation](automation-setup.md).

**Pour créer une politique IAM pour le serveur Jenkins**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le volet de navigation, sélectionnez **Politiques**, puis **Créer une politique**.

1. Sélectionnez l'onglet **JSON**.

1. Remplacez chaque *example resource placeholder* par vos propres informations.

------
#### [ 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. Sélectionnez **Examiner une politique**.

1. Sur la page **Examiner une politique**, dans le champ **Nom**, saisissez un nom pour la politique en ligne, tel que **JenkinsPolicy**.

1. Sélectionnez **Créer une politique**.

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Choisissez le profil d’instance qui est attaché à votre serveur Jenkins.

1. Sous l'onglet **Autorisations**, sélectionnez **Ajouter des autorisations** et choisissez **Attacher des politiques**.

1. Dans la section **Autres politiques d'autorisation**, saisissez le nom de la politique que vous avez créée lors des étapes précédentes. Par exemple, **JenkinsPolicy**.

1. Sélectionnez la case en regard de votre politique et choisissez **Attacher des politiques**.

Utilisez la procédure suivante pour configurer le AWS CLI sur votre Jenkins serveur.

**Pour configurer le serveur Jenkins pour Automation**

1. Connectez-vous à votre serveur Jenkins sur le port 8080 à l’aide de votre navigateur préféré pour accéder à l’interface de gestion.

1. Saisissez le mot de passe trouvé dans `/var/lib/jenkins/secrets/initialAdminPassword`. Pour afficher le mot de passe, exécutez la commande suivante.

   ```
   sudo cat /var/lib/jenkins/secrets/initialAdminPassword
   ```

1. Le script d’installation Jenkins vous dirige vers la page **Personnaliser Jenkins**. Sélectionnez **Install suggested plugins (Installer les plug-ins suggérés)**.

1. Une fois l’installation terminée, sélectionnez **Informations d’identification administrateur**, sélectionnez **Enregistrer les informations d’identification**, puis **Commencer à utiliser Jenkins**.

1. Dans le panneau de navigation de gauche, sélectionnez **Gérer Jenkins**, puis **Gérer les plugins**.

1. Cliquez sur l'onglet **Available (Disponible)**, puis saisissez **Amazon EC2 plugin**.

1. Sélectionnez la case à cocher pour **Amazon EC2 plugin**, puis sélectionnez **Install without restart (Installer sans redémarrer)**.

1. Une fois l'installation terminée, sélectionnez **Go back to the top page (Revenir à la page supérieure)**.

1. Choisissez **Gérer Jenkins**, puis choisissez **Gérer les nœuds et les clouds**.

1. Dans la section **Configurer les clouds**, sélectionnez **Ajouter un nouveau cloud**, puis **Amazon EC2**.

1. Saisissez vos informations dans les champs restants. Assurez-vous de sélectionner l'option **Utiliser le profil d'instance EC2 pour obtenir des informations d'identification**.

Utilisez la procédure suivante afin de configurer votre projet Jenkins pour invoquer Automation.

**Pour configurer votre serveur Jenkins afin d’invoquer Automation**

1. Ouvrez la console Jenkins dans un navigateur Web.

1. Sélectionnez le projet que vous voulez configurer avec Automation, puis sélectionnez **Configure**.

1. Dans l'onglet **Build**, sélectionnez **Add Build Step**.

1. Sélectionnez **Execute shell** ou **Execute Windows batch command** (en fonction de votre système d'exploitation).

1. Dans le champ **Commande**, exécutez une AWS CLI commande comme suit. Remplacez chaque *example resource placeholder* par vos propres informations.

   ```
   aws ssm start-automation-execution \
           --document-name runbook name \
           --region Région AWS of your source AMI \
           --parameters runbook parameters
   ```

   L'exemple de commande suivant utilise le **UpdateMyLatestWindowsAmi**runbook et le paramètre Systems Manager `latestAmi` créés dans[Mettez à jour un golden AMI à l'aide de l'automatisation AWS Lambda, et Parameter Store](automation-tutorial-update-patch-golden-ami.md).

   ```
   aws ssm start-automation-execution \
           --document-name UpdateMyLatestWindowsAmi \
           --parameters \
               "sourceAMIid='{{ssm:latestAmi}}'"
           --region region
   ```

   Dans Jenkins, la commande ressemble à l’exemple dans la capture d’écran suivante.  
![\[Exemple de commande dans le logiciel Jenkins.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/sysman-ami-jenkins2.png)

1. Dans le projet Jenkins, choisissez **Générer maintenant**. Le logiciel Jenkins renvoie une sortie similaire à l’exemple suivant.  
![\[Exemple de sortie de commande dans le logiciel Jenkins.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/sysman-ami-jenkins.png)

# Mise à jour d'AMIs pour des groupes Auto Scaling
<a name="automation-tutorial-update-patch-windows-ami-autoscaling"></a>

L'exemple suivant met à jour un groupe Auto Scaling avec l'AMI nouvellement corrigée. Cette approche permet de s'assurer que des nouvelles images sont automatiquement mises à disposition dans différents environnements de calcul qui utilisent des groupes Auto Scaling.

L'étape finale de l'automatisation dans cet exemple utilise une fonction Python pour créer un nouveau modèle de lancement qui utilise l'AMI nouvellement corrigée. Ensuite, le groupe Auto Scaling est mis à jour pour utiliser le nouveau modèle de lancement. Dans ce type de scénario Auto Scaling, les utilisateurs peuvent mettre hors fonction des instances existantes dans le groupe Auto Scaling pour forcer une nouvelle instance utilisant la nouvelle image à se lancer. Ou les utilisateurs peuvent attendre et permettre aux événements de mise à l'échelle vers le haut ou vers le bas de lancer naturellement des instances plus récentes.

**Avant de commencer**  
Exécutez les tâches suivantes avant de commencer cet exemple.
+ Configurez les rôles IAM pour Automation, un outil dans AWS Systems Manager. Systems Manager nécessite un rôle de profil d'instance et un ARN de rôle de service pour traiter les automatisations. Pour de plus amples informations, veuillez consulter [Configuration d'Automation](automation-setup.md).

## Création du runbook **Patch AMIAnd UpdateASG**
<a name="create-autoscaling-update-runbook"></a>

**Utilisez la procédure suivante pour créer le runbook **Patch AMIAnd UpdateAsg** qui corrige le paramètre que AMI vous spécifiez pour le paramètre SourceAMI.** Le runbook met également à jour un groupe Auto Scaling afin d'utiliser la dernière AMI corrigée.

**Pour créer et exécuter le runbook**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Dans le menu déroulant **Create document (Créer un document)**, sélectionnez **Automation**.

1. Dans le champ **Nom**, saisissez **PatchAMIAndUpdateASG**.

1. Sélectionnez l'onglet **Editor** (Éditeur), puis cliquez sur le bouton **Edit** (Modifier).

1. Sélectionnez **OK** à l'invite et supprimez le contenu dans le champ **Document editor** (Éditeur de document).

1. Dans le champ **Document editor** (Éditeur de document), collez l'exemple de contenu de runbook YAML suivant.

   ```
   ---
   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. Sélectionnez **Create automation (Créer une automatisation)**.

1. Dans le panneau de navigation, sélectionnez **Automation** (Automatisation), puis **Execute automation** (Exécuter l'automatisation).

1. Dans la page **Choose document** (Choisir un document), choisissez l'onglet **Owned by me** (Possédé par moi).

1. **Recherchez le runbook **Patch AMIAnd UpdateASG**, puis sélectionnez le bouton dans la carte Patch UpdateASG. AMIAnd**

1. Choisissez **Suivant**.

1. Sélectionnez **Exécution simple**.

1. Spécifiez les valeurs des paramètres d'entrée. Assurez-vous que le `SubnetId` et les `SecurityGroupIds` que vous spécifiez autorisent l'accès aux points de terminaison publics de Systems Manager ou à vos points de terminaison d'interface pour Systems Manager.

1. Sélectionnez **Execute (Exécuter)**.

1. Une fois l'automatisation terminée, dans la console Amazon EC2, choisissez **Auto Scaling**, puis **Launch Templates** (Modèles de lancement). Vérifiez que vous voyez le nouveau modèle de lancement et qu'il utilise la nouvelle AMI.

1. Sélectionnez **Auto Scaling**, puis **Auto Scaling Groups (Groupes Auto Scaling)**. Vérifiez que le groupe Auto Scaling utilise le nouveau modèle de lancement.

1. Mettez hors fonction une ou plusieurs instances dans votre groupe Auto Scaling. Des instances de remplacement seront lancées en utilisant la nouvelle AMI.

# Utilisation de AWS Support runbooks en libre-service
<a name="automation-tutorial-support-runbooks"></a>

Cette section décrit comment utiliser certaines des automatisations en libre-service créées par l' AWS Support équipe. Ces automatisations vous aident à gérer vos AWS ressources.

**Support Automation Workflows**  
Support Automation Workflows (SAW) sont des manuels d'automatisation rédigés et maintenus par l' AWS Support équipe. Ces runbooks vous aident à résoudre les problèmes courants liés à vos AWS ressources, à surveiller et à identifier de manière proactive les problèmes de réseau, à collecter et à analyser les journaux, etc.

Les runbooks SAW utilisent le préfixe **`AWSSupport`**. Par exemple, [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).

En outre, les clients disposant de plans Business Support\$1 AWS ou supérieurs ont également accès aux runbooks qui utilisent le **`AWSPremiumSupport`**préfixe. Par exemple, [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).

Pour en savoir plus AWS Support, consultez [Getting started with AWS Support](https://docs.aws.amazon.com/awssupport/latest/user/getting-started.html).

**Topics**
+ [Exécutez l'outil EC2 Rescue sur des instances inaccessibles](automation-ec2rescue.md)
+ [Réinitialiser les mots de passe et les clés SSH sur les instances EC2](automation-ec2reset.md)

# Exécutez l'outil EC2 Rescue sur des instances inaccessibles
<a name="automation-ec2rescue"></a>

EC2Rescue peut vous aider à diagnostiquer et à résoudre les problèmes qui peuvent survenir sur les instances Amazon Elastic Compute Cloud (Amazon EC2) pour Linux et Windows Server. Vous pouvez exécuter l'outil manuellement, comme décrit dans les sections [Utilisation de EC2 Rescue pour Linux Server](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Linux-Server-EC2Rescue.html) et [Utilisation de EC2 Rescue pour Windows Server](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Windows-Server-EC2Rescue.html). Vous pouvez aussi exécuter l'outil automatiquement en utilisant Systems Manager Automation et le runbook **`AWSSupport-ExecuteEC2Rescue`**. Automation est un outil d’ AWS Systems Manager. Le **`AWSSupport-ExecuteEC2Rescue`**runbook est conçu pour exécuter une combinaison d'actions de Systems Manager, CloudFormation d'actions et de fonctions Lambda qui automatisent les étapes normalement requises pour EC2 utiliser Rescue. 

Vous pouvez utiliser le runbook **`AWSSupport-ExecuteEC2Rescue`** pour dépanner et potentiellement corriger différents types de problèmes liés aux systèmes d'exploitation (SE). Les instances avec des volumes racines chiffrés ne sont pas prises en charge. Pour obtenir une liste complète, consultez les rubriques suivantes :

**Windows** : voir *Action de sauvetage* dans [Utilisation de EC2 Rescue pour Windows Server avec la ligne de commande](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-cli.html#ec2rw-rescue).

**Linux** et **macOS**: certains modules EC2 Rescue for Linux détectent les problèmes et tentent de les résoudre. Pour de plus amples informations, consultez la documentation [https://github.com/awslabs/aws-ec2rescue-linux/tree/master/docs](https://github.com/awslabs/aws-ec2rescue-linux/tree/master/docs) pour chaque module sur GitHub.

## Comment ça marche
<a name="automation-ec2rescue-how"></a>

Le dépannage d'une instance avec Automation et le runbook **`AWSSupport-ExecuteEC2Rescue`** fonctionne le la façon suivante :
+ Vous spécifiez l'ID de l'instance inaccessible et lancez le runbook.
+ Le système crée un VPC temporaire, puis exécute une série de fonctions Lambda pour configurer le VPC.
+ Le système identifie un sous-réseau pour votre VPC temporaire dans la même zone de disponibilité que votre instance d'origine.
+ Le système lance une instance d'assistant SSM temporaire.
+ Le système arrête l'instance originale et crée une sauvegarde. Ensuite, il rattache le volume racine original à l'instance d'assistant.
+ Le système exécute Run Command EC2 Rescue sur l'instance d'assistance. EC2Rescue identifie et tente de résoudre les problèmes sur le volume racine d'origine connecté. Lorsque vous avez terminé, EC2 Rescue rattache le volume racine à l'instance d'origine.
+ Le système redémarre votre instance originale et met fin à l'instance temporaire. Le système met également fin au VPC temporaire et aux fonctions Lambda créés au début de l'automatisation.

## Avant de commencer
<a name="automation-ec2rescue-begin"></a>

Avant d'exécuter l'automatisation suivante, veillez à exécuter les actions suivantes :
+ Copiez l'ID de l'instance de l'instance inaccessible. Vous spécifierez cet ID au cours de la procédure.
+ Vous pouvez également recueillir l'ID d'un sous-réseau dans la même zone de disponibilité que votre instance inaccessible. L'instance EC2 Rescue sera créée dans ce sous-réseau. Si vous ne spécifiez aucun sous-réseau, Automation crée un nouveau VPC temporaire dans votre. Compte AWS Vérifiez que vous Compte AWS disposez d'au moins un VPC. Par défaut, vous pouvez en créer cinq VPCs dans une région. Si vous en avez déjà créé cinq VPCs dans la région, l'automatisation échoue sans apporter de modifications à votre instance. Pour de plus amples informations sur les quotas Amazon VPC, consultez [VPC et sous-réseaux](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-vpcs-subnets) dans le *Guide de l'utilisateur Amazon VPC*.
+ Vous pouvez éventuellement créer et spécifier un rôle Gestion des identités et des accès AWS (IAM) pour Automation. Si vous ne spécifiez pas ce rôle, Automation s'exécute dans le contexte de l'utilisateur qui a exécuté l'automatisation.

### Attribution d'autorisations `AWSSupport-EC2Rescue` pour exécuter des actions sur vos instances
<a name="automation-ec2rescue-access"></a>

EC2Rescue a besoin d'une autorisation pour effectuer une série d'actions sur vos instances pendant l'automatisation. Ces actions font appel aux AWS Lambda services IAM et Amazon EC2 pour tenter de résoudre en toute sécurité les problèmes liés à vos instances. Si vous disposez d'autorisations de niveau administrateur dans votre VPC et/ou Compte AWS votre VPC, vous pourrez peut-être exécuter l'automatisation sans configurer les autorisations, comme décrit dans cette section. Si vous ne possédez pas les autorisations niveau administrateur, donc vous, ou un administrateur, devez configurer les autorisations en utilisant l'une des options suivantes.
+ [Attribution des autorisations en utilisant les politiques IAM](#automation-ec2rescue-access-iam)
+ [Octroi d'autorisations à l'aide d'un CloudFormation modèle](#automation-ec2rescue-access-cfn)

#### Attribution des autorisations en utilisant les politiques IAM
<a name="automation-ec2rescue-access-iam"></a>

Vous pouvez attacher la politique IAM suivante à votre utilisateur, groupe ou rôle IAM en tant que politique en ligne, ou vous pouvez créer une nouvelle politique IAM gérée et la relier à votre utilisateur, groupe ou rôle. Pour plus d'informations au sujet de l'ajout d'une politique en ligne à votre compte utilisateur, groupe ou rôle, consultez la page [Utilisation de politiques en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html). Pour plus d'informations sur la création d'une nouvelle politique gérée, consultez la page [Utilisation de politiques gérées](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html).

**Note**  
Si vous créez une nouvelle politique gérée par IAM, vous devez également y associer la politique gérée **Amazon SSMAutomation** Role afin que vos instances puissent communiquer avec l'API Systems Manager.

**Politique IAM pour 2Rescue AWSSupport-EC**

Remplacez *account ID* par vos propres informations.

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

------

#### Octroi d'autorisations à l'aide d'un CloudFormation modèle
<a name="automation-ec2rescue-access-cfn"></a>

CloudFormation automatise le processus de création de rôles et de politiques IAM à l'aide d'un modèle préconfiguré. Utilisez la procédure suivante pour créer les rôles et politiques IAM requis pour EC2 Rescue Automation à l'aide CloudFormation de.

**Pour créer les rôles et politiques IAM requis pour Rescue EC2**

1. Téléchargez [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) et extrayez le fichier `AWSSupport-EC2RescueRole.json` pour l'enregistrer dans un répertoire de votre machine locale.

1. Si vous Compte AWS vous trouvez dans une partition spéciale, modifiez le modèle pour remplacer les valeurs de l'ARN par celles de votre partition.

   Par exemple, pour les régions de Chine, remplacez toutes les occurrences de `arn:aws` par `arn:aws-cn`.

1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Sélectionnez **Créer une pile**, **Avec de nouvelles ressources (standard)**.

1. Sur la page **Créer une pile**, pour **Prérequis - Préparer le modèle**, sélectionnez **Le modèle est prêt**.

1. Dans **Spécifier le modèle**, sélectionnez **Charger un modèle de fichier**.

1. Sélectionnez **Choisir le fichier**, puis recherchez et sélectionnez le fichier `AWSSupport-EC2RescueRole.json` dans le répertoire où vous l'avez extrait.

1. Sélectionnez **Suivant**.

1. Dans la page **Spécifier les détails de la pile**, pour le champ **Nom de la pile**, entrez un nom pour identifier cette pile, puis sélectionnez **Suivant**.

1. (Facultatif) Dans la zone **Balises**, appliquez une ou plusieurs name/value paires de clés de balise à la pile.

   Les balises sont des métadonnées facultatives que vous affectez à une ressource. Les balises vous permettent de classer une ressource de différentes façons, par exemple, par objectif, par propriétaire ou par environnement. Par exemple, vous pouvez baliser une pile pour identifier le type de tâches qu'elle exécute, les types de cibles ou d'autres ressources concernées, et l'environnement dans lequel elle est exécutée.

1. Choisissez **Next** (Suivant)

1. Sur la page de **révision**, passez en revue les détails de la pile, puis faites défiler la page vers le bas et choisissez l'option **Je reconnais que cela CloudFormation pourrait créer des ressources IAM**.

1. Sélectionnez **Créer la pile**.

   CloudFormation affiche l'état de **CREATE\$1IN\$1PROGRESS** pendant quelques minutes. Le statut passe à **CREATE\$1COMPLETE** après la création de la pile. Vous pouvez également choisir l'icône d'actualisation pour vérifier le statut du processus de création.

1. Dans la liste **Piles**, sélectionnez l'option à côté de la pile que vous venez de créer, puis sélectionnez l'onglet **Sorties**.

1. Notez la **Valeur**. Il s'agit de l'ARN du AssumeRole. Vous spécifiez cet ARN lorsque vous exécutez l'automatisation lors de la procédure suivante, [Exécution d'Automation](#automation-ec2rescue-executing). 

## Exécution d'Automation
<a name="automation-ec2rescue-executing"></a>

**Important**  
L'automatisation suivante arrête l'instance inaccessible. L'arrêt de l'instance peut entraîner la perte de données sur des volumes de stockage d'instance attachés (le cas échéant). L'arrêt de l'instance peut aussi causer le changement de l'adresse IP publique, si aucune adresse IP Elastic n'est associée.

**Pour exécuter l'automatisation `AWSSupport-ExecuteEC2Rescue`**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Sélectionnez **Execute automation (Exécuter l'automatisation)**.

1. Dans la section **Document d'automatisation**, sélectionnez **M'appartenant ou appartenant à Amazon** dans la liste.

1. Dans la liste des runbooks, sélectionnez le bouton de la carte pour `AWSSupport-ExecuteEC2Rescue`, puis sélectionnez **Next (Suivant)**.

1. Sur la page **Exécuter le document d'automatisation**, sélectionnez **Exécution simple**.

1. Dans la section **Détails du document**, vérifiez que l'option **Version du document** est définie sur la version par défaut la plus importante. Par exemple, **\$1DEFAULT** ou **3 (par défaut)**.

1. Dans la section **Paramètres d'entrée**, spécifiez les paramètres suivants : 

   1. Pour **UnreachableInstanceId**, spécifiez l'ID de l'instance inaccessible. 

   1. (Facultatif) Pour **EC2RescueInstanceType**, spécifiez un type d'instance pour l'instance EC2 Rescue. Le type d'instance par défaut est `t2.medium`.

   1. En **AutomationAssumeRole**effet, si vous avez créé des rôles pour cette automatisation en utilisant la CloudFormation procédure décrite précédemment dans cette rubrique, choisissez l'ARN du rôle AssumeRole que vous avez créé dans la CloudFormation console.

   1. (Facultatif) Pour **LogDestination**, spécifiez un compartiment S3 si vous souhaitez collecter des journaux au niveau du système d'exploitation lors du dépannage de votre instance. Les journaux sont chargés automatiquement dans le compartiment spécifié.

   1. Pour **SubnetId**, spécifiez un sous-réseau dans un VPC existant dans la même zone de disponibilité que l'instance inaccessible. Par défaut, Systems Manager crée un VPC, mais vous pouvez spécifier un sous-réseau dans un VPC existant si vous le souhaitez.
**Note**  
Si vous ne voyez pas l'option permettant de spécifier un compartiment ou un ID de sous-réseau, vérifiez que vous utilisez la version **Default (Par défaut)** la plus récente du runbook.

1. (Facultatif) Dans la zone **Balises**, appliquez une ou plusieurs name/value paires de clés de balise pour identifier l'automatisation, par exemple`Key=Purpose,Value=EC2Rescue`.

1. Sélectionnez **Execute (Exécuter)**.

Le runbook crée une AMI de sauvegarde dans le cadre de l'automatisation. Toutes les autres ressources créées par l'automatisation sont automatiquement supprimées, mais cette AMI reste dans votre compte. L'AMI est nommée selon la convention suivante :

AMI de sauvegarde : AWSSupport-EC 2Rescue : *UnreachableInstanceId*

Vous pouvez localiser cette AMI dans la console Amazon EC2 en recherchant l'ID d'exécution d'Automation.

# Réinitialiser les mots de passe et les clés SSH sur les instances EC2
<a name="automation-ec2reset"></a>

Vous pouvez utiliser le dossier d’exploitation `AWSSupport-ResetAccess` pour réactiver automatiquement la génération du mot de passe administrateur local sur les instances Amazon Elastic Compute Cloud (Amazon EC2) pour Windows Server et générer une nouvelle clé SSH sur les instances EC2 pour Linux. Le `AWSSupport-ResetAccess` runbook est conçu pour exécuter une combinaison d' AWS Systems Manager actions, AWS CloudFormation d'actions et de AWS Lambda fonctions qui automatisent les étapes normalement requises pour réinitialiser le mot de passe de l'administrateur local.

Vous pouvez utiliser Automation, un outil AWS Systems Manager intégré au `AWSSupport-ResetAccess` runbook, pour résoudre les problèmes suivants :

**Windows**

*Vous avez perdu la paire de clés EC2* : pour résoudre ce problème, vous pouvez utiliser le **AWSSupport-ResetAccess**runbook pour créer une paire de clés activée par mot de passe à AMI partir de votre instance actuelle, lancer une nouvelle instance depuis l'AMI et sélectionner une paire de clés qui vous appartient.

*Vous avez oublié le mot de passe administrateur local* : pour résoudre ce problème, vous pouvez utiliser le runbook `AWSSupport-ResetAccess` pour générer un nouveau mot de passe que vous pouvez déchiffrer avec la paire de clés EC2 actuelle.

**Linux**

*Vous avez perdu votre paire de clés EC2 ou vous avez configuré l'accès SSH à l'instance avec une clé que vous avez perdue* : pour résoudre ce problème, vous pouvez utiliser le runbook `AWSSupport-ResetAccess` pour créer une clé SSH pour votre instance actuelle, ce qui vous permet de vous reconnecter à l'instance.

**Note**  
Si votre instance EC2 pour Windows Server est configurée pour Systems Manager, vous pouvez également réinitialiser votre mot de passe d'administrateur local en utilisant EC2 Rescue et AWS Systems Manager Run Command. Pour plus d'informations, consultez la section [Utilisation de EC2 Rescue for Windows Server avec Systems Manager Run Command](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-ssm.html) dans le guide de l'*utilisateur Amazon EC2*.

**Informations connexes**  
[Se connecter à votre instance Linux depuis Windows à l’aide de PuTTY](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html) dans le *Guide de l’utilisateur Amazon EC2*

## Comment ça marche
<a name="automation-ec2reset-how"></a>

Le dépannage d'une instance avec Automation et le runbook `AWSSupport-ResetAccess` fonctionne le la façon suivante :
+ Vous spécifiez l'ID de l'instance et vous exécutez le runbook.
+ Le système crée un VPC temporaire, puis exécute une série de fonctions Lambda pour configurer le VPC.
+ Le système identifie un sous-réseau pour votre VPC temporaire dans la même zone de disponibilité que votre instance d'origine.
+ Le système lance une instance d'assistant SSM temporaire.
+ Le système arrête l'instance originale et crée une sauvegarde. Ensuite, il rattache le volume racine original à l'instance d'assistant.
+ Le système exécute Run Command EC2 Rescue sur l'instance d'assistance. Sous Windows, EC2 Rescue permet de générer un mot de passe pour l'administrateur local en utilisant EC2 Config ou EC2 Launch sur le volume racine d'origine connecté. Sous Linux, EC2 Rescue génère et injecte une nouvelle clé SSH et enregistre la clé privée, chiffrée, dans. Parameter Store Lorsque vous avez terminé, EC2 Rescue rattache le volume racine à l'instance d'origine.
+ Le système crée une Amazon Machine Image (AMI) de votre instance, maintenant que la génération de mot de passe est activée. Vous pouvez utiliser cette AMI pour créer une instance EC2 et lui associer une nouvelle paire de clés le cas échéant.
+ Le système redémarre votre instance originale et met fin à l'instance temporaire. Le système met également fin au VPC temporaire et aux fonctions Lambda créés au début de l'automatisation.
+ **Windows** : Votre instance génère un nouveau mot de passe que vous pouvez décoder à partit de la console Amazon EC2 grâce à la paire de clés actuelle affectée à l'instance.

  **Linux** : vous pouvez accéder à l'instance en utilisant la clé SSH stockée dans le magasin de paramètres de Systems Manager sous le nom **/ec2rl/openssh/ *instance ID* /key.**

## Avant de commencer
<a name="automation-ec2reset-begin"></a>

Avant d'exécuter l'automatisation suivante, veillez à exécuter les actions suivantes :
+ Copiez l'ID de l'instance sur laquelle vous souhaitez réinitialiser le mot de passe administrateur. Vous spécifierez cet ID au cours de la procédure.
+ Vous pouvez également recueillir l'ID d'un sous-réseau dans la même zone de disponibilité que votre instance inaccessible. L'instance EC2 Rescue sera créée dans ce sous-réseau. Si vous ne spécifiez aucun sous-réseau, Automation crée un nouveau VPC temporaire dans votre. Compte AWS Vérifiez Compte AWS qu'au moins un VPC est disponible. Par défaut, vous pouvez en créer cinq VPCs dans une région. Si vous en avez déjà créé cinq VPCs dans la région, l'automatisation échoue sans apporter de modifications à votre instance. Pour de plus amples informations sur les quotas Amazon VPC, consultez [VPC et sous-réseaux](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-vpcs-subnets) dans le *Guide de l'utilisateur Amazon VPC*.
+ Vous pouvez éventuellement créer et spécifier un rôle Gestion des identités et des accès AWS (IAM) pour Automation. Si vous ne spécifiez pas ce rôle, Automation s'exécute dans le contexte de l'utilisateur qui a exécuté l'automatisation.

### Octroi d'autorisations à AWSSupport-EC 2Rescue pour effectuer des actions sur vos instances
<a name="automation-ec2reset-access"></a>

EC2Rescue a besoin d'une autorisation pour effectuer une série d'actions sur vos instances pendant l'automatisation. Ces actions font appel aux AWS Lambda services IAM et Amazon EC2 pour tenter de résoudre en toute sécurité les problèmes liés à vos instances. Si vous disposez d'autorisations de niveau administrateur dans votre VPC et/ou Compte AWS votre VPC, vous pourrez peut-être exécuter l'automatisation sans configurer les autorisations, comme décrit dans cette section. Si vous ne possédez pas les autorisations niveau administrateur, donc vous, ou un administrateur, devez configurer les autorisations en utilisant l'une des options suivantes.
+ [Attribution des autorisations en utilisant les politiques IAM](#automation-ec2reset-access-iam)
+ [Octroi d'autorisations à l'aide d'un CloudFormation modèle](#automation-ec2reset-access-cfn)

#### Attribution des autorisations en utilisant les politiques IAM
<a name="automation-ec2reset-access-iam"></a>

Vous pouvez attacher la politique IAM suivante à votre utilisateur, groupe ou rôle IAM en tant que politique en ligne, ou vous pouvez créer une nouvelle politique IAM gérée et la relier à votre utilisateur, groupe ou rôle. Pour plus d'informations au sujet de l'ajout d'une politique en ligne à votre compte utilisateur, groupe ou rôle, consultez la page [Utilisation de politiques en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html). Pour plus d'informations sur la création d'une nouvelle politique gérée, consultez la page [Utilisation de politiques gérées](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html).

**Note**  
Si vous créez une nouvelle politique gérée par IAM, vous devez également y associer la politique gérée **Amazon SSMAutomation** Role afin que vos instances puissent communiquer avec l'API Systems Manager.

**Politique IAM pour `AWSSupport-ResetAccess`**

Remplacez *account ID* par vos propres informations.

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

------

#### Octroi d'autorisations à l'aide d'un CloudFormation modèle
<a name="automation-ec2reset-access-cfn"></a>

CloudFormation automatise le processus de création de rôles et de politiques IAM à l'aide d'un modèle préconfiguré. Utilisez la procédure suivante pour créer les rôles et politiques IAM requis pour EC2 Rescue Automation en utilisant CloudFormation.

**Pour créer les rôles et politiques IAM requis pour Rescue EC2**

1. Téléchargez [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) et extrayez le fichier `AWSSupport-EC2RescueRole.json` pour l'enregistrer dans un répertoire de votre machine locale.

1. Si vous Compte AWS vous trouvez dans une partition spéciale, modifiez le modèle pour remplacer les valeurs de l'ARN par celles de votre partition.

   Par exemple, pour les régions de Chine, remplacez toutes les occurrences de `arn:aws` par `arn:aws-cn`.

1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Sélectionnez **Créer une pile**, **Avec de nouvelles ressources (standard)**.

1. Sur la page **Créer une pile**, pour **Prérequis - Préparer le modèle**, sélectionnez **Le modèle est prêt**.

1. Dans **Spécifier le modèle**, sélectionnez **Charger un modèle de fichier**.

1. Sélectionnez **Choisir le fichier**, puis recherchez et sélectionnez le fichier `AWSSupport-EC2RescueRole.json` dans le répertoire où vous l'avez extrait.

1. Sélectionnez **Suivant**.

1. Dans la page **Spécifier les détails de la pile**, pour le champ **Nom de la pile**, entrez un nom pour identifier cette pile, puis sélectionnez **Suivant**.

1. (Facultatif) Dans la zone **Balises**, appliquez une ou plusieurs name/value paires de clés de balise à la pile.

   Les balises sont des métadonnées facultatives que vous affectez à une ressource. Les balises vous permettent de classer une ressource de différentes façons, par exemple, par objectif, par propriétaire ou par environnement. Par exemple, vous pouvez baliser une pile pour identifier le type de tâches qu'elle exécute, les types de cibles ou d'autres ressources concernées, et l'environnement dans lequel elle est exécutée.

1. Choisissez **Next** (Suivant)

1. Sur la page de **révision**, passez en revue les détails de la pile, puis faites défiler la page vers le bas et choisissez l'option **Je reconnais que cela CloudFormation pourrait créer des ressources IAM**.

1. CloudFormation affiche l'état de **CREATE\$1IN\$1PROGRESS** pendant quelques minutes. Le statut passe à **CREATE\$1COMPLETE** après la création de la pile. Vous pouvez également choisir l'icône d'actualisation pour vérifier le statut du processus de création.

1. Dans la liste des piles, sélectionnez l'option en regard de la pile que vous venez de créer, puis sélectionnez l'onglet **Sorties**.

1. Copiez la **Valeur**. Il s'agit de l'ARN du AssumeRole. Vous spécifierez cet ARN lorsque vous exécuterez l'automatisation. 

## Exécution d'Automation
<a name="automation-ec2reset-executing"></a>

La procédure suivante explique comment exécuter le runbook `AWSSupport-ResetAccess` à l'aide de la console AWS Systems Manager .

**Important**  
L'automatisation suivante arrête l'instance. L'arrêt de l'instance peut entraîner la perte de données sur des volumes de stockage d'instance attachés (le cas échéant). L'arrêt de l'instance peut aussi causer le changement de l'adresse IP publique, si aucune adresse IP Elastic n'est associée. Pour éviter ces changements de configuration, utilisez Run Command pour réinitialiser l'accès. Pour plus d'informations, consultez la section [Utilisation de EC2 Rescue for Windows Server avec Systems Manager Run Command](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-ssm.html) dans le guide de l'*utilisateur Amazon EC2*.

**Pour exécuter l' AWSSupport-ResetAccess automatisation**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation de gauche, sélectionnez **Automation** (Automatisation).

1. Sélectionnez **Execute automation (Exécuter l'automatisation)**.

1. Dans la section **Document d'automatisation**, sélectionnez **M'appartenant ou appartenant à Amazon** dans la liste.

1. Dans la liste des runbooks, sélectionnez le bouton de la carte pour **AWSSupport-ResetAccess**, puis sélectionnez **Next (Suivant)**.

1. Sur la page **Exécuter le document d'automatisation**, sélectionnez **Exécution simple**.

1. Dans la section **Détails du document**, vérifiez que l'option **Version du document** est définie sur la version par défaut la plus importante. Par exemple, **\$1DEFAULT** ou **3 (par défaut)**.

1. Dans la section **Paramètres d'entrée**, spécifiez les paramètres suivants : 

   1. Pour **InstanceId**, spécifiez l'ID de l'instance inaccessible. 

   1. Pour **SubnetId**, spécifiez un sous-réseau dans un VPC existant dans la même zone de disponibilité que l'instance que vous avez spécifiée. Par défaut, Systems Manager crée un VPC, mais vous pouvez spécifier un sous-réseau dans un VPC existant si vous le souhaitez.
**Note**  
Si vous ne voyez pas l'option permettant de spécifier un ID de sous-réseau, vérifiez que vous utilisez la version **Par défaut** la plus récente du runbook.

   1. Pour **EC2RescueInstanceType**, spécifiez un type d'instance pour l'instance EC2 Rescue. Le type d'instance par défaut est `t2.medium`.

   1. En **AssumeRole**effet, si vous avez créé des rôles pour cette automatisation en utilisant la CloudFormation procédure décrite précédemment dans cette rubrique, spécifiez l' AssumeRole ARN que vous avez noté dans la CloudFormation console.

1. (Facultatif) Dans la zone **Balises**, appliquez une ou plusieurs name/value paires de clés de balise pour identifier l'automatisation, par exemple`Key=Purpose,Value=ResetAccess`.

1. Sélectionnez **Execute (Exécuter)**.

1. Pour contrôler les progrès de l'automatisation, sélectionnez l'automatisation en cours d'exécution, puis sélectionnez l'onglet **Steps (Étapes)**. Lorsque l'automatisation est terminée, sélectionnez l'onglet **Descriptions**, puis sélectionnez **View Output (Afficher la sortie)** pour consulter les résultats. Pour consulter la sortie des étapes individuelles, sélectionnez l'onglet **Étapes**, puis sélectionnez **Afficher les sorties** en regard d'une étape.

Le runbook crée une AMI de sauvegarde et une AMI activée par mot de passe dans le cadre de l'automatisation. Toutes les autres ressources créées par le flux de travail d'automatisation sont automatiquement supprimées, mais ces AMIs restent dans votre compte. Les AMIs sont nommées selon les conventions suivantes :
+ AMI de sauvegarde : `AWSSupport-EC2Rescue:InstanceID`
+ AMI activée par mot de passe AWSSupport-EC : 2Rescue : AMI activée par mot de passe depuis *Instance ID*

Vous pouvez localiser ces AMIs en recherchant l'ID d'exécution d'Automation.

Pour Linux, la nouvelle clé privée SSH pour votre instance est enregistrée, chiffrée, dans Parameter Store. Le nom du paramètre est **/ec2rl/openssh/ *instance ID* /key.**

# Transmission de données à Automation à l'aide de transformateurs en entrée
<a name="automation-tutorial-eventbridge-input-transformers"></a>

Ce didacticiel d' AWS Systems Manager automatisation explique comment utiliser la fonction de transformation d'entrée d'Amazon EventBridge pour extraire le contenu `instance-id` d'une instance Amazon Elastic Compute Cloud (Amazon EC2) à partir d'un événement de changement d'état d'instance. Automation est un outil d’ AWS Systems Manager. Nous utilisons le transformateur d'entrée pour transmettre ces données à la cible du runbook `AWS-CreateImage` comme paramètre d'entrée `InstanceId`. La règle est déclenchée lorsqu'une instance passe à l'état `stopped`.

Pour plus d'informations sur l'utilisation des transformateurs d'entrée, consultez le [didacticiel : Utiliser un transformateur d'entrée pour personnaliser ce qui est transmis à la cible de l'événement](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-input-transformer-tutorial.html) dans le *guide de l' EventBridge utilisateur Amazon*.

**Avant de commencer**  
Vérifiez que vous avez ajouté les autorisations et la politique de confiance requises EventBridge pour votre rôle de service Systems Manager Automation. Pour plus d'informations, consultez la section [Présentation de la gestion des autorisations d'accès à vos EventBridge ressources](https://docs.aws.amazon.com/eventbridge/latest/userguide/iam-access-control-identity-based-eventbridge.html) dans le *guide de EventBridge l'utilisateur Amazon*.

**Pour utiliser des transformateurs d'entrée avec l'automatisation**

1. Ouvrez la EventBridge console Amazon à l'adresse [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Dans le panneau de navigation, choisissez **Rules**.

1. Choisissez **Créer une règle**.

1. Saisissez un nom et une description pour la règle.

   Une règle ne peut pas avoir le même nom qu'une autre règle de la même région et sur le même bus d'événement.

1. Pour **Event bus** (Bus d'événement), sélectionnez le bus d'événement que vous souhaitez associer à cette règle. Si vous souhaitez que cette règle réponde aux événements correspondants qui proviennent des vôtres Compte AWS, sélectionnez **par défaut**. Lorsqu'un événement Service AWS de votre compte est émis, il est toujours redirigé vers le bus d'événements par défaut de votre compte.

1. Pour **Type de règle**, choisissez **Règle avec un modèle d’événement**.

1. Choisissez **Suivant**.

1. Dans **Source de l'événement**, choisissez **AWS des événements ou des événements EventBridge partenaires**.

1. Dans la section **Modèle d’événement**, choisissez **Utiliser un formulaire d’événement**.

1. Pour **Event source** (Origine de l’événement), choisissez **AWS services** (Services ).

1. Pour **AWS service** choisissez **EC2**.

1. Pour **Event Type (Type d’événement)**, sélectionnez **EC2 Instance State-change Notification (Notification de changement d’état de l’instance EC2)**.

1. Pour la **Spécification de type d’événement 1**, sélectionnez **État(s) spécifique(s)**, puis **Arrêté**.

1. Pour la **spécification du type d'événement 2**, sélectionnez **N'importe quelle instance** **ou sélectionnez des identifiants IDs d'instance spécifiques** et entrez les instances à surveiller.

1. Choisissez **Suivant**.

1. Pour **Types de cibles**, choisissez **service AWS **.

1. Pour **Select a target** (Sélectionner une cible), choisissez **Systems Manager Automation**.

1. Pour **Document**, choisissez **AWS- CreateImage**.

1. Dans la section **Configure automation parameter(s)** (Configurer le(s) paramètre(s) d'automatisation), choisissez **Input Transformer** (Transformateur d'entrée).

1. Pour **Input path** (Chemin d'entrée), saisissez **\$1"instance":"\$1.detail.instance-id"\$1**.

1. Pour **Template** (Modèle), saisissez **\$1"InstanceId":[<instance>]\$1**.

1. Pour **Execution role** (Fonction d'exécution), choisissez **Use existing role** (Utiliser la fonction existante) et sélectionnez votre fonction du service Automation.

1. Choisissez **Suivant**.

1. (Facultatif) Saisissez une ou plusieurs balises pour la règle. Pour plus d'informations, consultez la section [Marquage de vos EventBridge ressources Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-tagging.html) dans le *guide de l' EventBridge utilisateur Amazon*.

1. Choisissez **Suivant**.

1. Consultez les détails de la règle et choisissez **Create rule** (Créer une règle).

# En savoir plus sur les statuts renvoyés par Systems Manager Automation
<a name="automation-statuses"></a>

AWS Systems Manager L'automatisation fournit des informations d'état détaillées sur les différents statuts que traverse une action ou une étape d'automatisation lorsque vous exécutez une automatisation et pour l'automatisation globale. Automation est un outil d’ AWS Systems Manager. Vous pouvez surveiller les statuts d'automatisation à l'aide des méthodes suivantes :
+ Surveillez le **statut d'exécution** dans la console Systems Manager Automation.
+ Utilisez vos outils de ligne de commande préférés. Pour le AWS Command Line Interface (AWS CLI), vous pouvez utiliser [describe-automation-step-executions](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-automation-step-executions.html)ou [get-automation-execution](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-automation-execution.html). Pour le AWS Tools for Windows PowerShell, vous pouvez utiliser [Get- SSMAutomation StepExecution ou Get](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-SSMAutomationStepExecution.html) [- SSMAutomation Execution](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-SSMAutomationExecution.html).
+ Configurez Amazon EventBridge pour qu'il réponde aux changements de statut liés aux actions ou à l'automatisation.

Pour plus d’informations sur la gestion des délais d’attente dans une automatisation, consultez [Gestion de délais d'expiration dans des runbooks](automation-handling-timeouts.md).

## À propos des statuts Automation
<a name="automation-statuses-about"></a>

Automation rapporte des détails sur le statut d'actions d'automatisation individuelles, en plus de l'automatisation globale.

Le statut de l'automatisation globale peut être différent de celui rapporté par une action ou une étape individuelle, comme l'indiquent les tableaux suivants.


**Statut détaillé des actions**  

| Statut | Détails | 
| --- | --- | 
| En attente | L'exécution de l'étape n'a pas commencé. Si votre automatisation utilise des actions conditionnelles, les étapes restent dans cet état une fois l'automatisation terminée si la condition exigée pour l'exécution de l'étape n'est pas remplie. Les étapes restent également dans cet état si l'automatisation est annulée avant l'exécution de l'étape. | 
| InProgress | L'étape est en cours d'exécution. | 
| En attente | L'étape attend une entrée. | 
| Réussite | L'étape s'est terminée avec succès. Il s’agit d’un statut de terminal. | 
| TimedOut | Une étape ou une approbation ne s'est pas effectuée avant la période d'expiration spécifiée. Il s’agit d’un statut de terminal. | 
| Annulation | L'étape est en cours d'arrêt après avoir été annulée par un demandeur. | 
| Annulée | L'étape a été arrêtée par un demandeur avant d'être terminée. Il s’agit d’un statut de terminal. | 
| Échec |  L'étape ne s'est pas terminée avec succès. Il s’agit d’un statut de terminal.  | 
| Exited |  Renvoyé uniquement par l’action `aws:loop`. La boucle n’était pas complètement terminée. Une étape de la boucle a été déplacée vers une étape extérieure à l’aide des propriétés `nextStep`, `onCancel` ou `onFailure`.  | 


**Statut détaillé d'une automatisation**  

| Statut | Détails | 
| --- | --- | 
| En attente | L'exécution de l'automatisation n'a pas commencé. | 
| InProgress | L'automatisation est en cours d'exécution. | 
| En attente | L'automatisation attend une entrée. | 
| Réussite | L'automatisation s'est terminée avec succès. Il s’agit d’un statut de terminal. | 
| TimedOut | Une étape ou une approbation ne s'est pas effectuée avant la période d'expiration spécifiée. Il s’agit d’un statut de terminal. | 
| Annulation | L'automatisation est en cours d'arrêt après avoir été annulée par un demandeur. | 
| Annulée | L'automatisation a été arrêtée par un demandeur avant d'être terminée. Il s’agit d’un statut de terminal. | 
| Échec |  L'automatisation ne s'est pas terminée avec succès. Il s’agit d’un statut de terminal.  | 

# Résolution des problèmes liés à Systems Manager Automation
<a name="automation-troubleshooting"></a>

Utilisez les informations suivantes pour résoudre les problèmes liés à AWS Systems Manager Automation, un outil d’ AWS Systems Manager. La rubrique inclut des tâches spécifiques pour résoudre des problèmes selon les messages d'erreur d'Automation.

**Topics**
+ [Erreurs d'automatisation courantes](#automation-trbl-common)
+ [L'exécution d'Automation n'a pas pu démarrer](#automation-trbl-access)
+ [L'exécution a démarré, mais le statut est Failed (Échec)](#automation-trbl-exstrt)
+ [L'exécution a démarré, mais a expiré](#automation-trbl-to)

## Erreurs d'automatisation courantes
<a name="automation-trbl-common"></a>

Cette section inclut des informations sur les erreurs d'Automation courantes.

### VPC non défini 400
<a name="automation-trbl-common-vpc"></a>

Par défaut, lorsqu'Automation exécute les runbooks `AWS-UpdateLinuxAmi` ou `AWS-UpdateWindowsAmi`, le système crée une instance temporaire dans le VPC par défaut (172.30.0.0/16). Si vous avez supprimé le VPC par défaut, vous recevrez l'erreur suivante :

`VPC not defined 400`

Pour résoudre ce problème, vous devez spécifier une valeur pour le paramètre d'entrée `SubnetId`.

## L'exécution d'Automation n'a pas pu démarrer
<a name="automation-trbl-access"></a>

Une automatisation peut échouer avec une erreur de refus d'accès ou une erreur de prise de rôle non valide si vous n'avez pas correctement configuré les rôles Gestion des identités et des accès AWS (IAM) et les politiques d'automatisation.

### Accès refusé
<a name="automation-trbl-access-denied"></a>

Les exemples suivants décrivent les situations lorsqu'une automatisation a échoué lors du démarrage, avec une erreur d'accès refusé.

**Accès refusé à l'API Systems Manager**  
**Message d'erreur** : `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)`
+ Cause possible 1 : l'utilisateur tentant de démarrer l'automatisation n'est pas autorisé à appeler l'API `StartAutomationExecution`. Pour résoudre ce problème, attachez la politique IAM requise à l'utilisateur qui a été utilisé pour lancer l'automatisation. 
+ Cause possible 2 : l'utilisateur tentant de lancer l'automatisation dispose de l'autorisation d'appeler l'API `StartAutomationExecution`, mais n'a pas l'autorisation d'appeler l'API en utilisant le runbook spécifique. Pour résoudre ce problème, attachez la politique IAM requise à l'utilisateur qui a été utilisé pour lancer l'automatisation. 

**Accès refusé en raison d' PassRole autorisations manquantes**  
**Message d’erreur** : `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'utilisateur qui tente de démarrer l'automatisation n'est pas PassRole autorisé à assumer le rôle. Pour résoudre ce problème, associez la PassRole politique iam : au rôle de l'utilisateur qui tente de démarrer l'automatisation. Pour de plus amples informations, veuillez consulter [Tâche 2 : associer la PassRole politique iam : à votre rôle d'automatisation](automation-setup-iam.md#attach-passrole-policy).

### Rôle de responsable non valide
<a name="automation-trbl-ar"></a>

Lorsque vous exécutez Automation, un rôle de responsable est fourni dans le runbook ou transmis en tant que valeur de paramètre pour le runbook. Différents types d'erreurs peuvent survenir si le rôle de responsable n'est pas correctement spécifié ou configuré.

**Rôle de responsable incorrect**  
**Message d'erreur** : `The format of the supplied assume role ARN isn't valid.` Le rôle de responsable n'est pas mis en forme correctement. Pour résoudre ce problème, vérifiez qu'un rôle de responsable valide est spécifié dans votre runbook ou en tant que paramètre d'exécution lorsque vous lancez l'automatisation.

**Le rôle de responsable ne peut être assumé**  
**Message d'erreur** : `The defined assume role is unable to be assumed. (Service: AWSSimpleSystemsManagement; Status Code: 400; Error Code: InvalidAutomationExecutionParametersException; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)`
+ Cause possible 1 : le rôle de responsable n'existe pas. Pour résoudre ce problème, créez le rôle. Pour de plus amples informations, veuillez consulter [Configuration d'Automation](automation-setup.md). Des détails spécifiques pour créer ce rôle sont décrits dans la rubrique suivante, [Tâche 1 : Création d'un rôle de service pour Automation](automation-setup-iam.md#create-service-role).
+ Cause possible 2 : le rôle de responsable n'a pas de relation d'approbation avec le service Systems Manager. Pour résoudre ce problème, créez la relation d'approbation. Pour de plus amples informations, consultez [Je ne peux pas assumer un rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_cant-assume-role) dans le *Guide de l'utilisateur IAM*. 

## L'exécution a démarré, mais le statut est Failed (Échec)
<a name="automation-trbl-exstrt"></a>

### Échecs spécifiques à l'action
<a name="automation-trbl-actspec"></a>

Les runbooks contiennent des étapes, qui s'exécutent dans l'ordre. Chaque étape en invoque une ou plusieurs Service AWS APIs. Ils APIs déterminent les entrées, le comportement et les sorties de l'étape. Il existe plusieurs situations dans lesquelles une erreur peut causer l'échec d'une étape. Les messages d'échec indiquent quand et où une erreur s'est produite.

Pour afficher un message d'échec dans la console Amazon Elastic Compute Cloud (Amazon EC2), sélectionnez le lien **View Outputs (Afficher les sorties)** de l'étape qui a échoué. Pour voir un message d'échec provenant du AWS CLI, appelez `get-automation-execution` et recherchez l'`FailureMessage`attribut dans un échec`StepExecution`.

Dans les exemples suivants, une étape associée à l'action `aws:runInstance` a échoué. Chaque exemple décrit un type d'erreur différent.

**Image manquante**  
**Message d'erreur** : `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'action `aws:runInstances` a reçu une entrée pour une `ImageId` qui n'existe pas. Pour résoudre ce problème, mettez à jour le runbook ou les valeurs de paramètre avec l'ID d'AMI correct.

**La politique de rôle assumé ne dispose pas d’autorisations suffisantes**  
**Message d'erreur** : `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.`

Le rôle de responsable ne dispose pas des autorisations suffisantes pour appeler l'API `RunInstances` sur des instances EC2. Pour résoudre ce problème, attachez une politique IAM au rôle assume qui a l'autorisation d'appeler l'API `RunInstances`. Pour plus d'informations, consultez le [Créer les rôles de service pour l’automatisation à l’aide de la console](automation-setup-iam.md).

**État inattendu**  
**Message d'erreur** : `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.`
+ Cause possible 1 : un problème est survenu avec l'instance ou le service Amazon EC2. Pour résoudre ce problème, connectez-vous à l'instance ou vérifiez le journal système de l'instance pour comprendre ce qui a déclenché l'arrêt de l'instance.
+ Cause possible 2 : Le script de données utilisateur pour l'action `aws:runInstances` rencontre un problème ou a une syntaxe incorrecte. Vérifiez la syntaxe du script des données utilisateur. Vérifiez aussi que le script des données utilisateur n'arrête pas l'instance ou n'appelle pas d'autres scripts susceptibles d'arrêter l'instance.

**Référence des échecs spécifiques à l'action**  
Lorsqu'une étape échoue, le message peut indiquer quel service a été appelé au moment de l'échec. Le tableau suivant répertorie les services appelés par chaque action. Le tableau fournit aussi des liens vers des informations sur chaque service.


****  

| Action | Services AWS invoqué par cette action | Pour obtenir des informations sur ce service | Contenu de dépannage | 
| --- | --- | --- | --- | 
|  `aws:runInstances`  |  Amazon EC2  |  [ Guide de l’utilisateur Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)  |  [Dépannage des instances EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-troubleshoot.html)  | 
|  `aws:changeInstanceState`  |  Amazon EC2  |  [Guide de l’utilisateur Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)  |  [Dépannage des instances 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)  |   [Résolution des problèmes liés à Run Command de 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 Guide de l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)  |  [Résolution des problèmes CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html)  | 
|  `aws:deleteStack`  |  CloudFormation  |  [AWS CloudFormation Guide de l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)  |  [Résolution des problèmes CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html)  | 
|  `aws:deleteImage`  |  Amazon EC2  |  [Amazon Machine Images](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  |  [Ressources et balises EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_Resources.html)  |  | 
|  `aws:invokeLambdaFunction`  |  AWS Lambda  |  [AWS Lambda Manuel du développeur](https://docs.aws.amazon.com/lambda/latest/dg/)  |  [Résolution des problèmes Lambda](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html)  | 

### Erreur interne du service Automation
<a name="automation-trbl-err"></a>

**Message d'erreur** : `Internal Server Error. Please refer to Automation Service Troubleshooting Guide for more diagnosis details.`

Un problème du service Automation empêche le runbook spécifié de s'exécuter correctement. Pour résoudre ce problème, contactez AWS Support. Fournissez l'ID d'exécution et l'ID client, si disponible.

## L'exécution a démarré, mais a expiré
<a name="automation-trbl-to"></a>

**Message d'erreur** : `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.`

Une étape de l'action `aws:runInstances` a expiré. Cela peut se produire si l'action de l'étape met plus de temps à s'exécuter que la valeur spécifiée pour `timeoutSeconds` dans l'étape. Pour résoudre ce problème, spécifiez une valeur plus longue pour le paramètre `timeoutSeconds` dans l'action `aws:runInstances`. Si cela ne résout pas le problème, cherchez pourquoi l'étape est plus longue à s'exécuter que prévu.

# AWS Systems Manager Change Calendar
<a name="systems-manager-change-calendar"></a>

Change Calendar, un outil dans AWS Systems Manager, vous permet de définir des plages de dates et d'heures auxquelles les actions que vous spécifiez (par exemple, dans [les runbooks de Systems Manager Automation](systems-manager-automation.md)) peuvent ou non être effectuées dans votre Compte AWS. Dans Change Calendar, ces plages sont appelées des *événements*. Lorsque vous créez une entrée Change Calendar, vous créez un [document Systems Manager](documents.md) de type `ChangeCalendar`. Dans Change Calendar, le document stocke les données [iCalendar 2.0](https://icalendar.org/) au format texte brut. Les événements que vous ajoutez à l'entrée Change Calendar font partie du document. Pour vos premiers pas dans Change Calendar, ouvrez [Systems Manager console](https://console.aws.amazon.com//systems-manager/change-calendar). Dans le panneau de navigation, sélectionnez **Change Calendar**.

Vous pouvez créer un calendrier et ses événements dans la console Systems Manager. Vous pouvez également importer un fichier iCalendar (`.ics`), exporté à partir d'un fournisseur de calendrier tiers pris en charge, pour ajouter ses événements à votre calendrier. Les fournisseurs pris en charge comprennent Google Calendar, Microsoft Outlook et iCloud Calendar.

Une entrée Change Calendar peut être de l'un des deux types suivants :

**`DEFAULT_OPEN`** ou Ouvert par défaut  
Toutes les actions peuvent être exécutées par défaut, sauf pendant les événements du calendrier. Pendant les événements, l'état d'un calendrier `DEFAULT_OPEN` est `CLOSED` et les événements sont bloqués.

**`DEFAULT_CLOSED`** ou Fermé par défaut  
Toutes les actions sont bloquées par défaut, sauf pendant les événements du calendrier. Pendant les événements, l'état d'un calendrier `DEFAULT_CLOSED` est `OPEN` et les actions sont autorisées.

Vous pouvez choisir d'ajouter automatiquement tous les flux de travail d'automatisation, les fenêtres de maintenance et les associations State Manager planifiés à un calendrier. Vous pouvez également supprimer chacun de ces types de l'affichage du calendrier. 

## À qui est destiné Change Calendar ?
<a name="systems-manager-change-calendar-who"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 
+ AWS clients qui exécutent les types d'actions suivants :
  + Créez ou exécutez des runbooks d'automatisation.
  + Créez des demandes de modification dans Change Manager.
  + Exécutez des fenêtres de maintenance.
  + Créez des associations dans State Manager.

  L'automatisation Change Manager et Maintenance Windows le State Manager sont tous des outils AWS Systems Manager. En intégrant ces outils à Change Calendar, vous pouvez autoriser ou bloquer ces types d’action en fonction du statut actuel du calendrier de modifications qui leur est associé.
+ Administrateurs chargés de maintenir la cohérence, la stabilité et la fonctionnalité des configurations des nœuds gérés par Systems Manager.

## Avantages d'Change Calendar
<a name="systems-manager-change-calendar-benefits"></a>

Change Calendar offre entre autres les avantages suivants.
+ **Vérifier les modifications avant qu'elles soient appliquées**

  Une entrée Change Calendar peut vous aider à vous assurer que les modifications potentiellement destructrices apportées à votre environnement sont passées en revue avant d'être appliquées.
+ **Appliquer les modifications uniquement pendant les heures appropriées**

  Les entrées Change Calendar permettent de préserver la stabilité de votre environnement pendant les heures des événements. Par exemple, vous pouvez créer une entrée Change Calendar pour bloquer les modifications lorsque vous vous attendez à une forte demande sur vos ressources, par exemple, lors d'une conférence ou d'une promotion marketing publique. Une entrée de calendrier peut également bloquer les modifications lorsque vous vous attendez à un support administratif limité, par exemple, pendant les vacances ou les jours fériés. Vous pouvez utiliser une entrée de calendrier pour autoriser les modifications sauf pendant certaines périodes de la journée ou de la semaine où le support administratif est limité pour résoudre les échecs d'actions ou de déploiements.
+ **Obtenir du statut actuel ou à venir du calendrier**

  Vous pouvez exécuter l'opération d'API `GetCalendarState` de Systems Manager pour afficher du statut actuel du calendrier, son état à une heure spécifique ou la prochaine fois qu'une modification de du statut du calendrier est planifiée.
**Note**  
L’API `GetCalendarState` dispose d’un quota de 10 requêtes par seconde. Pour plus d’informations sur les quotas Systems Manager, veuillez consulter la rubrique [Quotas de service Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm) dans la *Référence générale d'Amazon Web Services*.
+ 

**EventBridge soutien**  
Cet outil Systems Manager est pris en charge en tant que type d'*événement* dans les EventBridge règles d'Amazon. Pour plus d'informations, consultez [Surveillance des événements de Systems Manager avec Amazon EventBridge](monitoring-eventbridge-events.md) et [Référence : modèles et types d' EventBridge événements Amazon pour Systems Manager](reference-eventbridge-events.md).

**Topics**
+ [À qui est destiné Change Calendar ?](#systems-manager-change-calendar-who)
+ [Avantages d'Change Calendar](#systems-manager-change-calendar-benefits)
+ [Configuration de Change Calendar](systems-manager-change-calendar-prereqs.md)
+ [Utilisation de l’option Change Calendar](systems-manager-change-calendar-working.md)
+ [Ajouter des dépendances Change Calendar à des runbooks Automation](systems-manager-change-calendar-automations.md)
+ [Résolution des problèmes de Change Calendar](change-calendar-troubleshooting.md)

# Configuration de Change Calendar
<a name="systems-manager-change-calendar-prereqs"></a>

Effectuez les opérations suivantes avant Change Calendar d'utiliser un outil AWS Systems Manager.

## Installer les derniers outils de ligne de commande
<a name="change-calendar-prereqs-tools"></a>

Installez les derniers outils de ligne de commande pour obtenir des informations d'état sur les calendriers.


| Exigence | Description | 
| --- | --- | 
|  AWS CLI  |  (Facultatif) Pour utiliser le AWS Command Line Interface (AWS CLI) pour obtenir des informations sur l'état des calendriers, installez la dernière version du AWS CLI sur votre ordinateur local. Pour plus d'informations sur l'installation ou la mise à niveau de l'interface CLI, consultez [Installation, mise à jour et désinstallation de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) dans le *Guide de l'utilisateur AWS Command Line Interface *.  | 
|  Outils AWS pour PowerShell  |  (Facultatif) Pour utiliser les outils PowerShell pour obtenir des informations sur l'état des calendriers, installez la dernière version de Tools for PowerShell sur votre ordinateur local. Pour plus d'informations sur l'installation ou la mise à niveau des outils pour PowerShell, consultez la section [Installation des Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html) dans le *guide de Outils AWS pour PowerShell l'utilisateur*.  | 

## Configuration d’autorisations
<a name="change-calendar-prereqs-permissions"></a>

Si votre utilisateur, votre groupe ou votre rôle dispose des autorisations d'administrateur, vous avez accès complet à Change Calendar. Si vous ne disposez pas d'autorisations d'administrateur, un administrateur doit vous les donner en affectant la stratégie gérée `AmazonSSMFullAccess` ou en affectant une stratégie qui fournit les autorisations nécessaires à votre utilisateur, votre groupe ou votre rôle.

Les autorisations suivantes sont requises pour travailler avec Change Calendar.

**Les entrées Change Calendar**  
Pour créer, mettre à jour ou supprimer une entrée Change Calendar, y compris ajouter et supprimer des événements de l'entrée, une politique attachée à votre utilisateur, groupe ou rôle doit autoriser les actions suivantes :  
+ `ssm:CreateDocument`
+ `ssm:DeleteDocument`
+ `ssm:DescribeDocument`
+ `ssm:DescribeDocumentPermission`
+ `ssm:GetCalendar`
+ `ssm:ListDocuments`
+ `ssm:ModifyDocumentPermission`
+ `ssm:PutCalendar`
+ `ssm:UpdateDocument`
+ `ssm:UpdateDocumentDefaultVersion`

**État du calendrier**  
Pour obtenir des informations sur l'état actuel ou à venir du calendrier, une politique attachée à votre utilisateur, votre groupe ou votre rôle doit autoriser l'action suivante :  
+ `ssm:GetCalendarState`

**Événements opérationnels**  
Pour afficher les événements opérationnels, tels que les fenêtres de maintenance, les associations et les automatismes planifiés, la politique attachée à votre utilisateur, groupe ou rôle doit autoriser les actions suivantes :  
+ `ssm:DescribeMaintenanceWindows`
+ `ssm:DescribeMaintenanceWindowExecution`
+ `ssm:DescribeAutomationExecutions`
+ `ssm:ListAssociations`

**Note**  
Les entrées Change Calendar appartenant à (c'est-à-dire créées par) d'autres comptes que le vôtre sont en lecture seule, même si elles sont partagées avec votre compte. Les fenêtres de maintenance, les associations State Manager et les automatisations ne sont pas partagées.

# Utilisation de l’option Change Calendar
<a name="systems-manager-change-calendar-working"></a>

Vous pouvez utiliser la console AWS Systems Manager pour ajouter, gérer ou supprimer des entrées dans AWS Systems Manager, un outil d’Change Calendar. Vous pouvez également importer des événements à partir de fournisseurs de calendrier tiers pris en charge en important un fichier iCalendar (`.ics`) exporté à partir du calendrier source. Vous pouvez utiliser l'opération d'API `GetCalendarState` ou la commande `get-calendar-state` AWS Command Line Interface (AWS CLI) pour obtenir des informations sur l'état de Change Calendar à un moment spécifique.

**Topics**
+ [Création d'un calendrier de modifications](change-calendar-create.md)
+ [Création et gestion d'événements dans Change Calendar](change-calendar-events.md)
+ [Importation et gestion d'événements à partir de calendriers tiers](third-party-events.md)
+ [Mise à jour d'un calendrier de modifications](change-calendar-update.md)
+ [Partage d'un calendrier de modifications](change-calendar-share.md)
+ [Suppression d'un calendrier de modifications](change-calendar-delete.md)
+ [Obtenir le statut d'un calendrier de modifications](change-calendar-getstate.md)

# Création d'un calendrier de modifications
<a name="change-calendar-create"></a>

Lorsque vous créez une entrée dans Change Calendar, un outil d’AWS Systems Manager, vous créez un document Systems Manager (document SSM) au format `text`.

**Pour créer un calendrier de modifications**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Sélectionnez **Create calendar (Créer un calendrier)**.

   -ou-

   Si la page d'accueil **Change Calendar** s'ouvre en premier, sélectionnez **Create change calendar** (Créer un calendrier de modification).

1. Dans la page **Create calendar (Créer un calendrier)** dans **Calendar details (Détails du calendrier)**, saisissez un nom pour votre entrée de calendrier. Les noms d'entrée de calendrier peuvent contenir des lettres, des chiffres, des points, des tirets et des traits de soulignement. Le nom doit être suffisamment précis pour permettre d'identifier immédiatement le but de l'entrée de calendrier. Par exemple : **support-off-hours**. Vous ne pouvez pas mettre à jour ce nom après avoir créé l'entrée de calendrier.

1. (Facultatif) Pour **Description**, saisissez une description de votre entrée de calendrier.

1. (Facultatif) Dans la zone **Import calendar (Importer un calendrier)**, sélectionnez **Choose file (Choisir un fichier)** pour sélectionner un fichier iCalendar (`.ics`) exporté à partir d'un fournisseur de calendriers tiers. L'importation du fichier ajoutera ses événements à votre calendrier.

   Les fournisseurs pris en charge comprennent Google Calendar, Microsoft Outlook et iCloud Calendar.

   Pour de plus amples informations, consultez [Importation d'événements à partir de fournisseurs de calendrier tiers](change-calendar-import.md).

1. Dans **Calendar type (Type de calendrier)**, sélectionnez l'une des options suivantes :
   + **Open by default (Ouvert par défaut)** : le calendrier est ouvert (les actions Automation peuvent s'exécuter jusqu'au démarrage d'un événement), puis fermé pendant la durée d'un événement associé.
   + **Closed by default (Fermé par défaut)** : le calendrier est fermé (les actions Automation ne peuvent pas s'exécuter avant le démarrage d'un événement), mais ouvert pendant la durée d'un événement associé.

1. (Facultatif) Dans **Événements de gestion de modification**, sélectionnez **Ajouter au calendrier des événements de gestion de modification**. Cette sélection affiche toutes les fenêtres de maintenance planifiées, les associations State Manager, les flux de travail d'automatisation et les demandes de modification Change Manager dans l'affichage de votre calendrier mensuel.
**Astuce**  
Si par la suite, vous souhaitez supprimer définitivement ces types d'événements de l'affichage du calendrier, modifiez le calendrier, décochez cette case, puis choisissez **Enregistrer**.

1. Sélectionnez **Create calendar (Créer un calendrier)**.

   Une fois l'entrée de calendrier créée, Systems Manager affiche votre entrée de calendrier dans la liste **Change Calendar**. Les colonnes affichent la version du calendrier et le numéro de Compte AWS du propriétaire du calendrier. Votre entrée de calendrier ne peut ni empêcher ni autoriser des actions tant que vous n'avez pas créé ou importé au moins un événement. Pour plus d'informations sur la création d'un événement, consultez [Création d'un événement Change Calendar](change-calendar-create-event.md). Pour plus d'informations sur l'importation d'évènements, consultez [Importation d'événements à partir de fournisseurs de calendrier tiers](change-calendar-import.md).

# Création et gestion d'événements dans Change Calendar
<a name="change-calendar-events"></a>

Après avoir créé un calendrier dans AWS Systems Manager Change Calendar, vous pouvez créer, mettre à jour et supprimer des événements inclus dans votre calendrier ouvert ou fermé. Change Calendarest un outil dans AWS Systems Manager.

**Astuce**  
Comme alternative à la création d'événements directement dans la console Systems Manager, vous pouvez importer un fichier iCalendar (`.ics`) à partir d'une application de calendrier tierce prise en charge. Pour plus d'informations, consultez [Importation et gestion d'événements à partir de calendriers tiers](third-party-events.md).

**Topics**
+ [Création d'un événement Change Calendar](change-calendar-create-event.md)
+ [Mise à jour d'un événement Change Calendar](change-calendar-update-event.md)
+ [Suppression d'un événement Change Calendar](change-calendar-delete-event.md)

# Création d'un événement Change Calendar
<a name="change-calendar-create-event"></a>

Lorsque vous ajoutez un événement à une entrée dans Change Calendar, un outil d’AWS Systems Manager, vous spécifiez une période pendant laquelle l’action par défaut de l’entrée de calendrier est suspendue. Par exemple, si l'entrée de calendrier est de type Fermé par défaut, le calendrier est ouvert aux modifications pendant les événements. (Vous pouvez également créer un événement consultatif, qui sert uniquement un rôle d'information dans le calendrier.)

Actuellement, vous ne pouvez créer un événement Change Calendar qu'à l'aide de la console. Les événements sont ajoutés au document Change Calendar que vous créez lorsque vous créez une entrée Change Calendar.

**Pour créer un événement Change Calendar**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Dans la liste des calendriers, sélectionnez le nom de l'entrée de calendrier à laquelle vous souhaitez ajouter un événement.

1. Dans la page des détails de l'entrée de calendrier, sélectionnez **Create event (Créer un événement)**.

1. Dans la page **Create scheduled event (Créer un événement planifié)** dans **Event details (Détails de l'événement)**, saisissez le nom complet de votre événement. Les noms d'événement peuvent contenir des lettres, des chiffres, des points, des tirets et des traits de soulignement. Le nom doit être suffisamment précis pour permettre d'identifier le but de l'événement. Par exemple : **nighttime-hours**.

1. Pour **Description**, saisissez une description de votre événement. Par exemple, **The support team isn't available during these hours**.

1. (Facultatif) Si vous souhaitez que cet événement ne serve que de notification visuelle ou de rappel, cochez la case **Advisory** (Recommandation). Les événements consultatifs ne jouent aucun rôle fonctionnel dans votre calendrier. Ils servent uniquement à des fins d'information pour ceux qui consultent votre calendrier.

1. Pour **Event start date** (Date de début de l'événement), saisissez ou sélectionnez un jour de démarrage de l'événement, au format `MM/DD/YYYY`, puis saisissez une heure de démarrage de l'événement le jour spécifié, au format `hh:mm:ss` (heures, minutes et secondes).

1. Pour **Event end date (Date de fin de l'événement)**, saisissez ou sélectionnez un jour de fin de l'événement, au format `MM/DD/YYYY`, puis saisissez une heure de fin de l'événement le jour spécifié, au format `hh:mm:ss` (heures, minutes et secondes).

1. Pour **Schedule time zone (Fuseau horaire de planification)**, sélectionnez un fuseau horaire qui s'applique aux heures de début et de fin de l'événement. Vous pouvez saisir une partie d'un nom de ville ou d'une différence de fuseau horaire par rapport à l'heure GMT (heure moyenne de Greenwich) pour trouver un fuseau horaire plus rapidement. La valeur par défaut est UTC (temps universel coordonné).

1. (Facultatif) Pour créer un événement qui se répète chaque jour, chaque semaine ou chaque mois, activez l'option **Recurrence** (Récurrence), puis spécifiez la fréquence et la date de fin facultative de la récurrence.

1. Sélectionnez **Create scheduled event (Créer un événement planifié)**. Le nouvel événement est ajouté à votre entrée de calendrier et s'affiche sous l'onglet **Events (Événements)** de la page des détails de l'entrée de calendrier.

# Mise à jour d'un événement Change Calendar
<a name="change-calendar-update-event"></a>

Procédez comme suit pour mettre à jour un événement Change Calendar dans la console AWS Systems Manager. Change Calendar est un outil d’AWS Systems Manager.

**Pour mettre à jour un événement Change Calendar**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Dans la liste des calendriers, sélectionnez le nom de l'entrée de calendrier pour laquelle vous souhaitez modifier un événement.

1. Dans la page des détails de l'entrée de calendrier, sélectionnez **Events (Événements)**.

1. Dans la page du calendrier, sélectionnez l'événement que vous souhaitez modifier.
**Astuce**  
Utilisez les boutons situés en haut à gauche pour reculer ou avancer d'un an, ou reculer ou avancer d'un mois. Modifiez le fuseau horaire, si nécessaire, en choisissant le fuseau horaire approprié dans la liste située en haut à droite.

1. Dans **Event details** (Détails de l'événement), sélectionnez **Edit** (Modifier).

   Pour modifier le nom et la description de l'événement, ajoutez ou remplacez les valeurs de texte actuelles.

1. Pour modifier l'option **Event start date** (Date de début de l'événement), sélectionnez la date de début actuelle, puis une nouvelle date dans le calendrier. Pour modifier l'heure de début, sélectionnez l'heure de début actuelle, puis une nouvelle heure dans la liste.

1. Pour modifier l'option **Event end date** (Date de fin de l'événement), sélectionnez la date actuelle, puis une nouvelle date de fin dans le calendrier. Pour modifier l'heure de fin, sélectionnez l'heure de fin actuelle, puis une nouvelle heure dans la liste.

1. Pour modifier la valeur du champ **Schedule time zone** (Fuseau horaire de planification), sélectionnez un fuseau horaire à appliquer aux heures de début et de fin de l'événement. Vous pouvez saisir une partie d'un nom de ville ou d'une différence de fuseau horaire par rapport à l'heure GMT (heure moyenne de Greenwich) pour trouver un fuseau horaire plus rapidement. La valeur par défaut est UTC (temps universel coordonné).

1. (Facultatif) Si vous souhaitez que cet événement ne serve que de notification visuelle ou de rappel, cochez la case **Advisory** (Recommandation). Les événements consultatifs ne jouent aucun rôle fonctionnel dans votre calendrier. Ils servent uniquement à des fins d'information pour ceux qui consultent votre calendrier.

1. Sélectionnez **Enregistrer**. Vos modifications s'affichent sous l'onglet **Events (Événements)** de la page des détails de l'entrée de calendrier. Sélectionnez l'événement que vous avez mis à jour pour afficher vos modifications.

# Suppression d'un événement Change Calendar
<a name="change-calendar-delete-event"></a>

Vous pouvez supprimer un événement à la fois dans Change Calendar, un outil d’AWS Systems Manager, via la AWS Management Console. 

**Astuce**  
Si vous avez sélectionné **Ajouter au calendrier des événements de gestion de modification** lors de la création du calendrier, vous pouvez procéder comme suit :  
Pour masquer *temporairement* un type d'événement de gestion des modifications dans l'affichage du calendrier, choisissez le **X** correspondant au type en haut de l'aperçu mensuel.
Pour supprimer *définitivement* ces types de l'affichage du calendrier, modifiez le calendrier, décochez **Ajouter au calendrier des événements de gestion de modification**, puis choisissez **Enregistrer**. La suppression des types de l'affichage du calendrier ne les supprime pas de votre compte.

**Pour supprimer un événement Change Calendar**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Dans la liste des calendriers, sélectionnez le nom de l'entrée de calendrier à partir de laquelle vous souhaitez supprimer un événement.

1. Dans la page des détails de l'entrée de calendrier, sélectionnez **Events (Événements)**.

1. Dans la page du calendrier, sélectionnez l'événement que vous souhaitez supprimer.
**Astuce**  
Utilisez les boutons situés en haut à gauche pour faire reculer ou avancer le calendrier d'un an, ou pour le faire reculer ou avancer d'un mois. Modifiez le fuseau horaire, si nécessaire, en choisissant le fuseau horaire approprié dans la liste située en haut à droite.

1. Dans la page **Event details (Détails de l'événement)**, sélectionnez **Delete (Supprimer)**. Lorsque vous êtes invité à confirmer que vous souhaitez supprimer l'événement, sélectionnez **Confirm** (Confirmer).

# Importation et gestion d'événements à partir de calendriers tiers
<a name="third-party-events"></a>

Au lieu de créer des événements directement dans la AWS Systems Manager console, vous pouvez importer un fichier iCalendar `.ics` () depuis une application de calendrier tierce prise en charge. Votre calendrier peut inclure à la fois des événements importés et des événements créés par vos soins dans Change Calendar, un outil d’ AWS Systems Manager.

**Avant de commencer**  
Avant de tenter d'importer un fichier de calendrier, vérifiez les exigences et les contraintes suivantes :

Format de fichier de calendrier  
Seuls les fichiers iCalendar (`.ics`) valides sont pris en charge.

Fournisseurs de calendriers pris en charge  
Seuls les fichiers `.ics` exportés à partir des fournisseurs de calendriers tiers suivants sont pris en charge :  
+ Google Calendar ([Instructions d'exportation](https://support.google.com/calendar/answer/37111))
+ Microsoft Outlook ([Instructions d'exportation](https://support.microsoft.com/en-us/office/export-an-outlook-calendar-to-google-calendar-662fa3bb-0794-4b18-add8-9968b665f4e6))
+ iCloud Calendar ([Instructions d'exportation](https://support.apple.com/guide/calendar/import-or-export-calendars-icl1023/mac))

Taille de fichier  
Vous pouvez importer n'importe quel nombre de fichiers `.ics` valides. Toutefois, la taille totale de tous les fichiers importés pour chaque calendrier ne peut pas dépasser 64 Ko.  
Pour réduire la taille du fichier `.ics`, vérifiez que vous n'exportez que les détails de base de vos entrées de calendrier. Si nécessaire, réduisez la longueur de la période de temps exportée.

Fuseau horaire  
Outre un nom de calendrier, un fournisseur de calendrier et au moins un événement, votre fichier `.ics` exporté doit indiquer le fuseau horaire du calendrier. Dans le cas contraire, ou si l'identification du fuseau horaire pose problème, vous serez invité à spécifier un fuseau horaire après l'importation du fichier.

Limitation d'événements récurrents  
Le fichier `.ics` que vous exportez peut contenir des événements récurrents. Cependant, si une ou plusieurs occurrences d'un événement récurrent ont été supprimées dans le calendrier source, l'importation échouera.

**Topics**
+ [Importation d'événements à partir de fournisseurs de calendrier tiers](change-calendar-import.md)
+ [Mise à jour de tous les événements d'un fournisseur de calendrier tiers](change-calendar-import-add-remove.md)
+ [Suppression de tous les événements importés d'un calendrier tiers](change-calendar-delete-ics.md)

# Importation d'événements à partir de fournisseurs de calendrier tiers
<a name="change-calendar-import"></a>

Procédez comme suit pour importer un fichier iCalendar (`.ics`) à partir d'une application de calendrier tierce prise en charge. Les événements contenus dans le fichier sont incorporés dans les règles de votre calendrier ouvert ou fermé. Vous pouvez importer un fichier dans le nouveau calendrier que vous créez avec Change Calendar (un outil d’ AWS Systems Manager) ou dans un calendrier existant.

Après avoir importé le fichier `.ics`, vous pouvez en supprimer des événements individuels via l'interface Change Calendar. Pour plus d'informations, consultez [Suppression d'un événement Change Calendar](change-calendar-delete-event.md). Vous pouvez aussi supprimer tous les événements du calendrier source en supprimant le ficher `.ics`. Pour plus d'informations, consultez [Suppression de tous les événements importés d'un calendrier tiers](change-calendar-delete-ics.md).

**Pour importer des événements à partir de fournisseurs de calendrier tiers**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Pour démarrer avec un nouveau calendrier, sélectionnez **Create calendar (Créer un calendrier)**. Dans la zone **Import calendar (Importer un calendrier**, sélectionnez **Choose file (Choisir un fichier)**. Pour obtenir des informations sur les autres étapes de création d'un calendrier, consultez [Création d'un calendrier de modifications](change-calendar-create.md).

   -ou-

   Pour importer des événements tiers dans un calendrier existant, sélectionnez le nom d'un calendrier existant pour l'ouvrir.

1. Sélectionnez **Actions, Edit** (Actions, modifier), puis dans la zone **Import calendar** (Importer le calendrier), sélectionnez **Choose file** (Choisir un fichier).

1. Sur votre ordinateur local, accédez au fichier `.ics` exporté et sélectionnez-le.

1. Si vous y êtes invité, pour **Select a time zone (Sélectionner un fuseau horaire)**, sélectionnez le fuseau horaire qui s'applique au calendrier.

1. Choisissez **Enregistrer**.

# Mise à jour de tous les événements d'un fournisseur de calendrier tiers
<a name="change-calendar-import-add-remove"></a>

Si plusieurs événements sont ajoutés à votre calendrier source, ou supprimés de celui-ci, une fois son fichier iCalendar `.ics` importé, vous pouvez refléter ces modifications dans Change Calendar. Tout d’abord, réexportez le calendrier source, puis importez le nouveau fichier dans Change Calendar, un outil d’ AWS Systems Manager. Les événements de votre calendrier de modifications seront mis à jour pour refléter le contenu du fichier le plus récent.

**Pour mettre à jour tous les événements provenant d'un fournisseur de calendrier tiers**

1. Dans votre calendrier tiers, ajoutez ou supprimez des événements de sorte qu'ils soient reflétés dans Change Calendar, puis réexportez le calendrier vers un nouveau fichier `.ics`.

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Dans la liste des calendriers, sélectionnez le nom du calendrier.

1. Sélectionnez **Choisir un fichier**, puis recherchez et sélectionnez le fichier `.ics` de remplacement.

1. En réponse à la notification de l'écrasement du fichier existant, sélectionnez **Confirm (Confirmer)**.

# Suppression de tous les événements importés d'un calendrier tiers
<a name="change-calendar-delete-ics"></a>

Si vous ne voulez plus qu'aucun des événements importés à partir d'un fournisseur tiers figure dans votre calendrier, vous pouvez supprimer le fichier iCalendar `.ics` importé.

**Pour supprimer tous les événements importés d'un calendrier tiers**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Dans la liste des calendriers, sélectionnez le nom du calendrier.

1. Dans la zone **Import calendar (Importer un calendrier)**, sous **My imported calendars (Mes calendriers importés)**, recherchez le nom du calendrier importé, puis sélectionnez le **X** dans sa carte.

1. Choisissez **Enregistrer**.

# Mise à jour d'un calendrier de modifications
<a name="change-calendar-update"></a>

Vous pouvez mettre à jour la description d'un calendrier de modifications, mais pas son nom. Bien que vous puissiez modifier du statut par défaut d'une entrée de calendrier, sachez que cela inverse le comportement des actions de modification lors des événements qui sont associés à cette entrée de calendrier. Par exemple, si vous remplacez du statut **Open by default (Ouvert par défaut)** d'un calendrier par **Closed by default (Fermé par défaut**, des modifications indésirables peuvent être effectuées pendant les périodes d'événement lorsque les utilisateurs qui ont créé les événements associés n'attendent pas de modifications.

Lorsque vous mettez à jour un calendrier de modifications, vous modifiez le document Change Calendar créé lors de la création de l’entrée. Change Calendar est un outil d’AWS Systems Manager.

**Pour mettre à jour un calendrier de modifications**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Dans la liste des calendriers, sélectionnez le nom du calendrier à mettre à jour.

1. Sur la page des détails du calendrier, sélectionnez **Actions, Edit** (Actions, modifier).

1. Dans **Description**, vous pouvez modifier le texte de la description. Vous ne pouvez pas modifier le nom d'un calendrier de modifications.

1. Pour modifier du statut du calendrier, sélectionnez une autre valeur dans **Calendar type (Type de calendrier)**. Sachez que cela inverse le comportement des actions de modification lors des événements qui sont associés au calendrier. Avant de modifier le type de calendrier, vous devez vérifier auprès des autres utilisateurs Change Calendar que ce changement de type de calendrier n'autorise pas des modifications indésirables lors des événements qu'ils ont créés.
   + **Open by default (Ouvert par défaut)** – le calendrier est ouvert (les actions Automation peuvent s'exécuter jusqu'au démarrage d'un événement), puis fermé pendant la durée d'un événement associé.
   + **Closed by default (Fermé par défaut)** – le calendrier est fermé (les actions Automation ne peuvent pas s'exécuter avant le démarrage d'un événement), mais ouvert pendant la durée d'un événement associé.

1. Sélectionnez **Enregistrer**.

   Votre calendrier ne peut ni empêcher ni autoriser des actions tant que vous n'avez pas ajouté au moins un événement. Pour plus d'informations sur l'ajout d'un événement, consultez [Création d'un événement Change Calendar](change-calendar-create-event.md).

# Partage d'un calendrier de modifications
<a name="change-calendar-share"></a>

Vous pouvez partager un calendrier dans Change Calendar, un outil d’AWS Systems Manager, avec d’autres Comptes AWS via la console AWS Systems Manager. Lorsque vous partagez un calendrier, ce calendrier est en lecture seule pour les utilisateurs du compte partagé. Les fenêtres de maintenance, les associations State Manager et les automatisations ne sont pas partagées.

**Pour partager un calendrier de modifications**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Dans la liste des calendriers, sélectionnez le nom du calendrier à partager.

1. Sur la page des détails du calendrier, sélectionnez l'onglet **Sharing** (Partage).

1. Sélectionnez **Actions, Share** (Actions, partager).

1. Dans **Share calendar (Partager le calendrier)**, pour **Account ID (ID de compte)**, saisissez le numéro d'identification d'un compte Compte AWS valide, puis sélectionnez **Share (Partager)**.

   Les utilisateurs du compte partagé peuvent lire le calendrier des modifications, mais ne peuvent y apporter aucune modification.

# Suppression d'un calendrier de modifications
<a name="change-calendar-delete"></a>

Vous pouvez supprimer un calendrier dans Change Calendar, un outil d’AWS Systems Manager, via la console Systems Manager ou la AWS Command Line Interface (AWS CLI). La suppression d'un calendrier des modifications supprime tous les événements associés.

**Pour supprimer un calendrier de modifications**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Calendar**.

1. Dans la liste des calendriers, sélectionnez le nom du calendrier à supprimer.

1. Dans la page des détails du calendrier, sélectionnez **Actions, Delete** (Actions, Supprimer). Lorsque vous êtes invité à confirmer que vous souhaitez supprimer le calendrier, sélectionnez **Delete (Supprimer)**.

# Obtenir le statut d'un calendrier de modifications
<a name="change-calendar-getstate"></a>

Vous pouvez obtenir le statut global d’un calendrier ou son statut à un moment donné dans Change Calendar, un outil d’ AWS Systems Manager. Vous pouvez également afficher le prochain passage de l'état `OPEN` à l'état `CLOSED` (ou inversement) du calendrier.

**Note**  
Pour plus d'informations sur l'intégration Change Calendar à Amazon EventBridge pour la surveillance automatique des modifications de l'état du calendrier, consultez[Change Calendarintégration avec Amazon EventBridge](monitoring-systems-manager-event-examples.md#change-calendar-eventbridge-integration). EventBridge l'intégration fournit des notifications basées sur les événements lorsque les états du calendrier changent, complétant ainsi l'approche basée sur les sondages de l'action de l'API. `GetCalendarState`

Vous ne pouvez effectuer cette tâche qu'à l'aide de l'opération d'API `GetCalendarState`. La procédure décrite dans cette section utilise le AWS Command Line Interface (AWS CLI).

**Pour obtenir le statut d'un calendrier de modifications**
+ Exécutez la commande suivante pour afficher l'état d'une ou plusieurs calendriers à un moment spécifique. Le paramètre `--calendar-names` est obligatoire, mais `--at-time` est facultatif. Remplacez chaque *example resource placeholder* par vos propres informations.

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

  Voici un exemple.

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

  Voici un exemple.

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

------

  La commande renvoie des informations telles que les suivantes.

  ```
  {
      "State": "OPEN",
      "AtTime": "2020-07-30T16:18:18Z",
      "NextTransitionTime": "2020-07-31T00:00:00Z"
  }
  ```

  Les résultats indiquent l'état du calendrier (s'il est de type `DEFAULT_OPEN` ou `DEFAULT_CLOSED`) pour les entrées de calendrier spécifiées appartenant à votre compte ou partagées avec celui-ci, au moment spécifié par la valeur de `--at-time`, et l'heure de la transition suivante. Si vous n'ajoutez pas le paramètre `--at-time`, l'heure actuelle est utilisée.
**Note**  
Si vous spécifiez plusieurs calendriers dans une demande, la commande renvoie le statut `OPEN` uniquement si tous les calendriers de la demande sont ouverts. Si un ou plusieurs calendriers de la demande sont fermés, le statut renvoyé est `CLOSED`.

# Ajouter des dépendances Change Calendar à des runbooks Automation
<a name="systems-manager-change-calendar-automations"></a>

Pour que les actions d'automatisation adhèrent à Change Calendar un outil AWS Systems Manager, ajoutez une étape dans un runbook d'automatisation qui utilise l'[`aws:assertAwsResourceProperty`](automation-action-assertAwsResourceProperty.md)action. Configurez l'action pour exécuter `GetCalendarState` afin de vérifier qu'une entrée de calendrier spécifique est à l'état souhaité (`OPEN` ou `CLOSED`). Le runbook Automation n'est autorisé à passer à l'étape suivante que si l'état du calendrier est `OPEN`. Voici un exemple d'extrait YAML d'un runbook Automation qui ne peut pas passer à l'étape suivante, `LaunchInstance`, tant que l'état du calendrier ne correspond pas à `OPEN`, l'état spécifié dans `DesiredValues`.

Voici un exemple.

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

# Résolution des problèmes de Change Calendar
<a name="change-calendar-troubleshooting"></a>

Utilisez les informations suivantes pour résoudre les problèmes liés à Change Calendar, un outil d’ AWS Systems Manager.

**Topics**
+ [Erreur Échec d'importation du calendrier](#change-manager-troubleshooting-1)

## Erreur Échec d'importation du calendrier
<a name="change-manager-troubleshooting-1"></a>

**Problème** : lors de l'importation d'un fichier iCalendar (`.ics`), le système signale que l'importation du calendrier a échoué.
+ **Solution 1** : vérifiez que vous importez bien un fichier exporté à partir d'un fournisseur de calendrier tiers pris en charge, notamment :
  + Google Calendar ([Instructions d'exportation](https://support.google.com/calendar/answer/37111))
  + Microsoft Outlook ([Instructions d'exportation](https://support.microsoft.com/en-us/office/export-an-outlook-calendar-to-google-calendar-662fa3bb-0794-4b18-add8-9968b665f4e6))
  + iCloud Calendar ([Instructions d'exportation](https://support.apple.com/guide/calendar/import-or-export-calendars-icl1023/mac))
+ **Solution 2** : si votre calendrier source contient des événements récurrents, vérifiez qu'aucune occurrence individuelle de l'événement n'a été annulée ou supprimée. Actuellement, Change Calendar ne prend pas en charge l'importation d'événements récurrents avec des annulations individuelles. Pour résoudre le problème, supprimez l'événement récurrent du calendrier source, réexportez le calendrier et réimportez-le dans Change Calendar, puis ajoutez l'événement récurrent via l'interface Change Calendar. Pour plus d'informations, consultez [Création d'un événement Change Calendar](change-calendar-create-event.md).
+ **Solution 3** : vérifiez que votre calendrier source contient au moins un événement. Les téléchargements de fichiers `.ics` exempts d'événements échouent.
+ **Solution 4** : si le système signale que l'importation a échoué parce que le fichier `.ics` est trop volumineux, vérifiez que vous n'exportez que les détails de base de vos entrées de calendrier. Si nécessaire, réduisez la longueur de la période de temps que vous exportez.
+ **Solution 5** : si Change Calendar n'est pas en mesure de déterminer le fuseau horaire du calendrier exporté lorsque vous tentez de l'importer à partir de l'onglet **Events (Événements)**, le message suivant peut s'afficher : « L'importation du calendrier a échoué. Change Calendar n'a pas pu localiser un fuseau horaire valide. Vous pouvez importer le calendrier à partir du menu Editi (Modifier). Dans ce cas, sélectionnez **Actions, Edit (Actions, Modifier)**, puis essayez d'importer le fichier à partir de la page **Edit calendar (Modifier le calendrier)**.
+ **Solution 6** : ne modifiez pas le fichier `.ics` avant importation. Les données du calendrier peuvent être corrompues si vous tentez de modifier le contenu du fichier. Si vous avez modifié le fichier avant de tenter de l'importer, exportez à nouveau le calendrier à partir du calendrier source, puis retentez le téléchargement.

# AWS Systems Manager Change Manager
<a name="change-manager"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Change Manager, un outil de AWS Systems Manager, est un cadre de gestion des modifications d'entreprise permettant de demander, d'approuver, de mettre en œuvre et de signaler les modifications opérationnelles apportées à la configuration et à l'infrastructure de vos applications. À partir d'un seul *compte d'administrateur délégué*, si vous en avez un AWS Organizations, vous pouvez gérer les modifications sur plusieurs Comptes AWS comptes Régions AWS. En variante, en utilisant un *compte local*, vous pouvez gérer les modifications d'un Compte AWS unique. Change ManagerÀ utiliser pour gérer les modifications apportées aux AWS ressources et aux ressources locales. Pour vos premiers pas dans Change Manager, ouvrez [Systems Manager console](https://console.aws.amazon.com//systems-manager/change-manager). Dans le panneau de navigation, sélectionnez **Change Manager**.

Avec Change Manager, vous pouvez utiliser des *modèles de modifications* approuvés pour automatiser les processus de modification de vos ressources et éviter les résultats non intentionnels lors des modifications opérationnelles. Chaque modèle de modification spécifie ce qui suit :
+ Un ou plusieurs runbooks Automation à choisir par un utilisateur lors de la création d'une demande de modification. Les modifications apportées à vos ressources sont définies dans les runbooks Automation. Vous pouvez inclure des runbooks personnalisés ou des [runbooks gérés par AWS](automation-documents-reference.md) dans les modèles de modifications que vous créez. Lorsqu'un utilisateur crée une demande de modification, il peut choisir quel runbook inclure dans la demande, parmi ceux qui sont disponibles. En outre, vous pouvez créer des modèles de modifications où l'utilisateur qui effectue la demande peut spécifier n'importe quel runbook dans la demande de modification.
+ Les utilisateurs du compte qui doivent vérifier les demandes de modifications qui ont été faites à l'aide de ce modèle de modification.
+ La rubrique Amazon Simple Notification Service (Amazon SNS) qui sert à informer les approbateurs affectés qu'une demande de modification est prête à être vérifiée.
+ L' CloudWatch alarme Amazon utilisée pour surveiller le flux de travail du runbook.
+ La rubrique Amazon SNS qui sert à envoyer des notifications relatives aux changements de statut des demandes de modifications créées à l'aide du modèle de modification.
+ Les balises à appliquer au modèle de modification pour catégoriser et filtrer vos modèles de modifications.
+ La possibilité que les demandes de modifications créées à partir du modèle de modification soient exécutées sans une étape d'approbation (demandes approuvées automatiquement).

Grâce à son intégration à un autre outil de Systems ManagerChange Calendar, il vous permet Change Manager également de mettre en œuvre des modifications en toute sécurité tout en évitant les conflits de calendrier avec des événements commerciaux importants. Change Managerintégration avec AWS Organizations et AWS IAM Identity Center aide à gérer les changements au sein de votre organisation à partir d'un seul compte en utilisant votre système de gestion des identités existant. Vous pouvez surveiller la progression des modifications à partir de Change Manager et auditer les modifications opérationnelles au sein de votre organisation afin d'améliorer la visibilité et la responsabilisation.

Change Managercomplète les contrôles de sécurité de vos pratiques [d'intégration continue](https://aws.amazon.com/devops/continuous-integration) (CI) et de votre méthodologie [de livraison continue](https://aws.amazon.com/devops/continuous-delivery) (CD). Change Managern'est pas destiné aux modifications effectuées dans le cadre d'un processus de publication automatisé, tel qu'un CI/CD pipeline, sauf exception ou approbation requise.

## Fonctionnement d'Change Manager
<a name="how-change-manager-works"></a>

Lorsque la nécessité d'une modification opérationnelle standard ou d'urgence est identifiée, une personne de l'organisation crée une demande de modification basée sur l'un des modèles de modifications créés pour votre organisation ou votre compte.

Si la modification demandée exige des approbations manuelles, Change Manager avertit les approbateurs désignés via une notification Amazon SNS qu'une demande de modification est prête à être vérifiée. Vous pouvez désigner des approbateurs pour les demandes de modifications dans le modèle de modification ou laisser les utilisateurs désigner eux-mêmes des approbateurs dans la demande de modification. Vous pouvez affecter différents vérificateurs à différents modèles. Par exemple, affectez un utilisateur, groupe d'utilisateurs ou rôle Gestion des identités et des accès AWS (IAM) à l'approbation des demandes de modification des nœuds gérés, et un autre utilisateur, groupe ou rôle IAM à celle des demandes de modification de la base de données. Si le modèle de modification autorise les approbations automatiques et qu'une politique d'utilisateur d'un demandeur ne l'interdit pas, l'utilisateur peut également choisir d'exécuter le runbook Automation pour sa demande sans une étape de vérification (à l'exception des événements de gel des modifications).

Pour chaque modèle de modification, vous pouvez ajouter jusqu'à cinq niveaux d'approbateurs. Par exemple, vous pouvez d'abord demander à des vérificateurs techniques d'approuver une demande de modification créée à partir d'un modèle de modification, puis exiger un second niveau d'approbation de la part d'un ou plusieurs responsables.

Change Manager est intégré à [AWS Systems Manager Change Calendar](systems-manager-change-calendar.md). Lorsqu'une modification demandée est approuvée, le système détermine d'abord si la demande est en conflit avec d'autres activités métier planifiées. Si un conflit est détecté, Change Manager peut bloquer la modification ou exiger des approbations supplémentaires avant de démarrer le flux de travail du runbook. Par exemple, vous pouvez autoriser l'exécution de modifications uniquement pendant les heures ouvrables afin que les équipes soient disponibles pour gérer les problèmes inattendus. Pour l'exécution de modifications en dehors de ces heures, vous pouvez exiger l'approbation d'un échelon supérieur de la direction, servant alors d'*approbateurs de gel des modifications*. Pour des modifications d'urgence, Change Manager peut ignorer l'étape de vérification de conflits ou d'événements de blocage en lien avec Change Calendar, après qu'une demande de modification a été approuvée.

Lorsqu'il est temps d'implémenter un changement approuvé, Change Manager exécute le runbook Automation spécifié dans la demande de modification associée. Seules les opérations définies dans les demandes de modifications approuvées sont autorisées lors de l'exécution des flux de travail du runbook. Cette approche permet d'éviter les résultats non intentionnels durant l'implémentation des modifications.

En plus de limiter les modifications qui peuvent être apportées lors de l'exécution d'un flux de travail de runbook, Change Manager vous aide également à contrôler la simultanéité et les seuils d'erreur. Vous sélectionnez le nombre de ressources sur lesquelles un flux de travail de runbook peut s'exécuter simultanément, le nombre de comptes sur lesquels la modification peut s'exécuter simultanément, et le nombre d'échecs à autoriser avant que le processus soit arrêté, et (si le runbook inclut un script d'annulation), annulé. Vous pouvez également suivre la progression des modifications apportées à l'aide d' CloudWatch alarmes.

Une fois le flux de travail de runbook terminé, vous pouvez vérifier les détails des modifications apportées. Ces détails comprennent la raison de la demande de modification, le modèle de modification utilisé, la personne qui a demandé et approuvé les modifications, et la façon dont les modifications ont été implémentées.

**Plus d'informations**  
[Présentation de AWS Systems ManagerChange Manager](https://aws.amazon.com/blogs/aws/introducing-systems-manager-change-manager/) dans le *Blog d'actualités AWS *

## Quels avantages Change Manager présente-t-il pour mes opérations ?
<a name="change-manager-benefits"></a>

Les avantages d'Change Manager sont les suivants :
+ **Réduction des risques d'interruption de service et de temps d'arrêt**

  Change Manager peut renforcer la sécurité des modifications opérationnelles en veillant à ce que seules les modifications approuvées soient implémentées lors de l'exécution d'un flux de travail de runbook. Vous pouvez bloquer les modifications non planifiées et non vérifiées. Change Manager vous aide à éviter les types de résultats non intentionnels dus à une erreur humaine et qui exigent des heures coûteuses de recherche et de retour sur trace.
+ **Obtention d'audits et de rapports détaillés sur les historiques de modifications**

  Change Manager favorise la responsabilisation grâce à des rapports et des audits cohérents sur les modifications apportées au sein de votre organisation, l'intention des modifications et des détails sur les personnes qui les ont approuvées et implémentées.
+ **Évitement des conflits ou violations de planification**

  Change Manager peut détecter des conflits de planification, tels que des événements de vacances ou des lancements de nouveaux produits, en se basant sur le calendrier des modifications actives de votre organisation. Vous pouvez autoriser l'exécution de workflows de runbook uniquement pendant les heures ouvrables ou uniquement avec des approbations supplémentaires.
+ **Adaptation des exigences de gestion des modifications au calendrier de votre entreprise**

  En fonction des périodes d'activité, vous pouvez implémenter différentes exigences de gestion des modifications. Par exemple, au cours de la période des end-of-month rapports, de la saison des impôts ou d'autres périodes commerciales critiques, vous pouvez bloquer les modifications ou demander l'approbation du directeur pour les modifications susceptibles d'entraîner des risques opérationnels inutiles.
+ **Gestion centralisée des modifications entre comptes**

  Grâce à son intégration à Organizations, il vous Change Manager permet de gérer les modifications dans toutes vos unités organisationnelles (OUs) à partir d'un seul compte d'administrateur délégué. Vous pouvez l'activer Change Manager pour une utilisation avec l'ensemble de votre organisation ou uniquement avec une partie de votre organisation OUs.

## À qui est destiné Change Manager ?
<a name="change-manager-who"></a>

Change Managerconvient aux AWS clients et organisations suivants :
+ Tout AWS client qui souhaite améliorer la sécurité et la gouvernance des modifications opérationnelles apportées à son environnement cloud ou sur site.
+ Les organisations désireuses d'améliorer la collaboration et la visibilité entre équipes, d'accroître la disponibilité des applications en évitant les temps d'arrêt, et de réduire les risques associés aux tâches manuelles et répétitives.
+ Les organisations qui doivent se conformer aux bonnes pratiques en matière de gestion des modifications. 
+ Les clients qui ont besoin d'un historique auditable des modifications apportées à la configuration et à l'infrastructure de leur application.

## Quelles sont les principales fonctionnalités Change Manager ?
<a name="change-manager-features"></a>

Les principales fonctionnalités de Change Manager sont décrites ci-après :
+ **Prise en charge intégrée des bonnes pratiques en matière de gestion des modifications**

  Avec Change Manager, vous pouvez appliquer certaines bonnes pratiques de gestion des modifications à vos opérations. Vous pouvez choisir d'activer les options suivantes :
  + Vérifiez Change Calendar pour voir si des restrictions affectent des événements et que des modifications ne peuvent être effectuées que pendant les heures ouvrables.
  + Autorisez des modifications durant des événements restreints avec des approbations supplémentaires émanant d'approbateurs de gel des modifications.
  + Exiger que des CloudWatch alarmes soient spécifiées pour tous les modèles de modification.
  + Exigez que tous les modèles de modifications créés dans votre compte soient vérifiés et approuvés avant d'être utilisés pour créer des demandes de modifications.
+ **Différents chemins d'approbation pour les périodes civiles fermées ainsi que les demandes de modification d'urgence**

  Vous pouvez autoriser une option qui vérifie les événements restreints dans Change Calendar et bloque les demandes de modifications approuvées jusqu'à ce que l'événement soit terminé. Vous pouvez également désigner un second groupe d'approbateurs, les approbateurs de gel des modifications, qui peuvent autoriser la modification même en dehors des heures ouvrables. Vous pouvez aussi créer des modèles de modifications d'urgence. Les demandes de modifications créées à partir d'un modèle de modification d'urgence exigent toujours des approbations régulières, mais ne sont pas soumises à des restrictions de calendrier et ne nécessitent pas d'approbations de gel des modifications.
+ **Contrôler la méthode et l'instant de démarrage de flux de travail de runbook**

  Les flux de travail de runbook peuvent être démarrés de façon planifiée ou dès que les approbations sont terminées (sous réserve des règles de restriction de calendrier).
+ **Prise en charge intégrée des notifications**

  Indiquez les personnes qui, au sein de votre organisation, doivent vérifier et approuver les modèles de modifications et les demandes de modifications. Affectez une rubrique Amazon SNS à un modèle de modification pour envoyer des notifications aux abonnés de la rubrique à propos des changements de statut de demandes de modifications créées avec ce modèle de modification.
+ **Intégration avec AWS Systems Manager Change Calendar**

  Change Manager permet aux administrateurs de restreindre les modifications de planification pendant des périodes spécifiées. Par exemple, vous pouvez créer une politique qui autorise les modifications uniquement pendant les heures ouvrables afin que l'équipe soit disponible pour gérer les problèmes. Vous pouvez également restreindre les modifications lors d'événements professionnels importants. Par exemple, les entreprises de vente au détail peuvent restreindre les modifications lors d'événements de grande envergure. Vous pouvez également exiger des approbations supplémentaires pendant les périodes restreintes. 
+ **Intégration AWS IAM Identity Center et prise en charge d'Active Directory**

  Grâce à l'intégration à IAM Identity Center, les membres de votre organisation peuvent accéder à Comptes AWS et gérer leurs ressources en utilisant Systems Manager à partir d'une identité utilisateur commune. L'utilisation d'IAM Identity Center vous permet d'affecter à vos utilisateurs l'accès à des comptes dans AWS.

  L'intégration à Active Directory permet d'affecter des utilisateurs de votre compte Active Directory en tant qu'approbateurs pour les modèles de modifications créés pour vos opérations Change Manager.
+ **Intégration aux CloudWatch alarmes Amazon**

  Change Managerest intégré aux CloudWatch alarmes. Change Managerécoute les CloudWatch alarmes pendant le flux de travail du runbook et prend toutes les mesures, y compris l'envoi de notifications, définies pour l'alarme.
+ **Intégration avec AWS CloudTrail Lake**

  En créant un magasin de données d'événements dans AWS CloudTrail Lake, vous pouvez consulter des informations vérifiables sur les modifications apportées par les demandes de modification exécutées dans votre compte ou votre organisation. Les informations stockées sur les événements incluent des informations telles que les suivantes :
  + Les actions d'API qui ont été exécutées
  + Les paramètres de demande inclus pour ces actions
  + L'utilisateur qui a exécuté l'action
  + Les ressources qui ont été mises à jour au cours du processus
+ **Intégration avec AWS Organizations**

  Grâce aux fonctionnalités multi-comptes fournies par Organizations, vous pouvez utiliser un compte d'administrateur délégué pour gérer les Change Manager opérations au OUs sein de votre organisation. Dans votre compte de gestion Organizations, vous pouvez spécifier quel compte doit être le compte d'administrateur délégué. Vous pouvez également contrôler lequel de vos appareils OUs Change Manager peut être utilisé dans.

## L'utilisation d'Change Manager entraîne-t-elle des frais ?
<a name="change-manager-cost"></a>

Oui Change Managerle prix est calculé sur une pay-per-use base. Vous ne payez que ce que vous utilisez. Pour plus d’informations, consultez [Tarification d’AWS Systems Manager](https://aws.amazon.com/systems-manager/pricing/).

## Quels sont les principaux composants de Change Manager?
<a name="change-manager-primary-components"></a>

Voici les composants de Change Manager, que vous utilisez pour gérer le processus de modification dans votre organisation ou votre compte :

### Compte administrateur délégué
<a name="change-manager-what-is-delegated-account"></a>

Si vous utilisez Change Manager dans une organisation, vous utilisez un compte d'administrateur délégué. C'est le Compte AWS désigné comme compte pour la gestion des activités opérationnelles dans Systems Manager, notamment Change Manager. Le compte d'administrateur délégué gère les activités de modification au sein de votre organisation. Lorsque vous configurez votre organisation pour une utilisation avec Change Manager, vous spécifiez lequel de vos comptes tiendra ce rôle. Le compte d'administrateur délégué doit être le seul membre de l'unité d'organisation (UO) à laquelle il est affecté. Le compte d'administrateur délégué n'est pas obligatoire si vous ne l'utilisez qu'Change Manageravec un Compte AWS seul.

**Important**  
Si vous utilisez Change Manager au sein d'une organisation, nous vous recommandons de toujours apporter les modifications à partir du compte d'administrateur délégué. Bien qu'il soit possible d'apporter des modifications à partir d'autres comptes de l'organisation, celles-ci ne seront pas signalées ou affichées à partir du compte d'administrateur délégué.

### Modèle de modification
<a name="change-manager-what-is-change-template"></a>

Un modèle de modification est un ensemble de paramètres de configuration dans Change Manager, qui définissent des éléments tels que les approbations requises, les runbooks disponibles et les options de notification relatives aux demandes de modifications.

Vous pouvez exiger que les modèles de modifications créés par les utilisateurs de votre organisation ou de votre compte passent par un processus d'approbation avant d'être utilisés.

Change Manager prend en charge deux types de modèles de modifications. Pour une demande de modification approuvée basée sur un *modèle de modification d'urgence*, la modification demandée peut être effectuée même s'il existe des événements de blocage dans Change Calendar. Pour une demande de modification approuvée basée sur un *modèle de modification standard*, la modification demandée ne peut pas être effectuée s'il existe des événements de blocage dans Change Calendar, sauf si des approbations supplémentaires sont reçues d'approbateurs *d'événements de gel des modifications*.

### Demande de modification
<a name="change-manager-what-is-change-request"></a>

Une demande de modification est une demande visant Change Manager à exécuter un runbook d'automatisation qui met à jour une ou plusieurs ressources dans votre environnement AWS ou sur site. Une demande de modification est créée à l'aide d'un modèle de modification.

Lorsque vous créez une demande de modification, un ou plusieurs approbateurs de votre organisation ou de votre compte doivent la vérifier et l'approuver. Sans les approbations requises, le flux de travail de runbook, qui applique les modifications demandées, n'est pas autorisé à s'exécuter.

Dans le système, les demandes de modification sont un type OpsItem d'entrée AWS Systems Manager OpsCenter. Toutefois, des OpsItems du type `/aws/changerequest` ne sont pas affichés dans OpsCenter. En tant qu'OpsItems, les demandes de modification sont soumises aux mêmes quotas que pour les autres types d'OpsItems. 

En outre, pour créer une demande de modification par programmation, vous n'appelez pas l'opération d'API `CreateOpsItem`. Vous utilisez plutôt l'opération d'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)`. Cependant, la demande de modification ne peut pas s'exécuter immédiatement ; elle doit être approuvée, et il ne doit y avoir aucun événement de blocage dans Change Calendarsusceptible d'empêcher l'exécution du flux de travail. Après que les approbations ont été reçues, et si le calendrier n'est pas bloqué (ou que l'autorisation de contourner les événements de calendrier bloqués a été accordée), l'action `StartChangeRequestExecution` peut se terminer.

### Flux de travail de runbook
<a name="change-manager-what-is-runbook-workflow"></a>

Un flux de travail de runbook est le processus des modifications demandées apportées aux ressources ciblées dans votre environnement cloud ou local. Chaque demande de modification désigne un runbook Automation unique, à utiliser pour effectuer la modification demandée. Le flux de travail de runbook se produit après que toutes les approbations requises ont été accordées et s'il n'y a pas d'événements de blocage dans Change Calendar. Si la modification a été planifiée à une date et une heure spécifiques, le flux de travail de runbook ne démarre pas avant la date prévue, même si toutes les approbations ont été reçues et que le calendrier n'est pas bloqué.

**Topics**
+ [Fonctionnement d'Change Manager](#how-change-manager-works)
+ [Quels avantages Change Manager présente-t-il pour mes opérations ?](#change-manager-benefits)
+ [À qui est destiné Change Manager ?](#change-manager-who)
+ [Quelles sont les principales fonctionnalités Change Manager ?](#change-manager-features)
+ [L'utilisation d'Change Manager entraîne-t-elle des frais ?](#change-manager-cost)
+ [Quels sont les principaux composants de Change Manager?](#change-manager-primary-components)
+ [Configuration de Change Manager](change-manager-setting-up.md)
+ [Utilisation de l’option Change Manager](working-with-change-manager.md)
+ [Audit et journalisation de l'activité de Change Manager](change-manager-auditing.md)
+ [Résolution des problèmes de Change Manager](change-manager-troubleshooting.md)

# Configuration de Change Manager
<a name="change-manager-setting-up"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Vous pouvez utiliser Change Manager un outil dans AWS Systems Manager, pour gérer les modifications pour l'ensemble d'une organisation, telle que configurée dans AWS Organizations, ou pour une seule organisation Compte AWS.

Si vous utilisez Change Manager avec une organisation, commencez par la rubrique [Configuration de Change Manager pour une organisation (compte de gestion)](change-manager-organization-setup.md), puis passez à [Configuration d'options et de bonnes pratiques Change Manager](change-manager-account-setup.md).

Si vous utilisez Change Manager avec un seul compte, passez directement à [Configuration d'options et de bonnes pratiques Change Manager](change-manager-account-setup.md).

**Note**  
Si vous commencez à utiliser Change Manager avec un seul compte, mais que ce compte est ajouté par la suite à une unité d'organisation pour laquelle Change Manager est autorisé, les paramètres de votre compte unique ne sont pas pris en compte.

**Topics**
+ [Configuration de Change Manager pour une organisation (compte de gestion)](change-manager-organization-setup.md)
+ [Configuration d'options et de bonnes pratiques Change Manager](change-manager-account-setup.md)
+ [Configuration des rôles et des autorisations pour Change Manager](change-manager-permissions.md)
+ [Contrôler l'accès aux flux de travail de runbook d'approbation automatique](change-manager-auto-approval-access.md)

# Configuration de Change Manager pour une organisation (compte de gestion)
<a name="change-manager-organization-setup"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Les tâches décrites dans cette rubrique s'appliquent si vous utilisez Change Manager un outil dans AWS Systems Manager, avec une organisation configurée dans AWS Organizations. Si vous ne souhaitez l'utiliser Change Manager qu'avec un seul Compte AWS, passez à la rubrique[Configuration d'options et de bonnes pratiques Change Manager](change-manager-account-setup.md).

Effectuez les tâches décrites dans cette section dans un compte Compte AWS qui sert de *compte de gestion* dans Organizations. Pour obtenir des informations sur le compte de gestion et d'autres concepts Organizations, veuillez consulter [Terminologie et concepts relatifs àAWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html).

Si vous devez activer Organizations et spécifier votre compte en tant que compte de gestion avant de continuer, veuillez consulter [Création et gestion d'une organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org.html) dans le *Guide de l'utilisateur AWS Organizations *. 

**Note**  
Ce processus de configuration ne peut pas être effectué dans les cas suivants Régions AWS :  
Europe (Milan) (eu-south-1)
Moyen-Orient (Bahreïn) (me-south-1)
Afrique (Le Cap) (af-south-1)
Asie-Pacifique (Hong Kong) (ap-east-1)
Pour cette procédure, vérifiez que vous travaillez bien dans une région différente dans votre compte de gestion.

Durant la procédure de configuration, vous effectuez les tâches principales suivantes dans Quick Setup, un outil d’ AWS Systems Manager.
+ **Tâche 1 : enregistrer un compte administrateur délégué pour votre organisation**

  Les tâches liées aux modifications effectuées en utilisant Change Manager sont gérées dans l'un de vos comptes membres spécifié comme *compte d'administrateur délégué*. Le compte d'administrateur délégué que vous enregistrez pour Change Manager devient le compte d'administrateur délégué pour toutes vos opérations Systems Manager. (Vous avez peut-être délégué des comptes d'administrateur pour d'autres Services AWS). Votre compte d'administrateur délégué pour Change Manager, qui est différent de votre compte de gestion, gère les activités de modification au sein de votre organisation, notamment les modèles de modifications, les demandes de modifications et les approbations qui s'y rapportent. Dans le compte d'administrateur délégué, vous spécifiez également d'autres options de configuration pour vos opérations Change Manager. 
**Important**  
Le compte d'administrateur délégué doit être le seul membre de l'unité d'organisation (UO) à laquelle il est affecté dans Organizations.
+ **Tâche 2 : définir et spécifier des politiques d'accès du runbook pour les rôles de demandeur de modification ou les fonctions professionnelles personnalisées que vous voulez utiliser pour vos Change Manageropérations**

  Pour créer des demandes de modification dansChange Manager, les utilisateurs de vos comptes membres doivent disposer d'autorisations Gestion des identités et des accès AWS (IAM) leur permettant d'accéder uniquement aux runbooks d'automatisation et aux modèles de modification que vous choisissez de mettre à leur disposition. 
**Note**  
Lorsqu'un utilisateur crée une demande de modification, il sélectionne d'abord un modèle de modification. Avec ce modèle de modification, plusieurs runbooks peuvent être disponibles, mais l'utilisateur ne peut en sélectionner qu'un seul pour chaque demande de modification. Les modèles de modifications peuvent également être configurés pour autoriser les utilisateurs à inclure n'importe quel runbook disponible dans leurs demandes.

  Pour octroyer les autorisations nécessaires, Change Manager utilise le concept de *fonctions professionnelles*, qui est partagé par IAM. Cependant, contrairement aux [politiques gérées par AWS pour les fonctions professionnelles](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) dans IAM, ici, vous spécifiez les noms de vos fonctions professionnelles Change Manager et les autorisations IAM pour ces fonctions professionnelles. 

  Lorsque vous configurez une fonction professionnelle, nous vous recommandons de créer une politique personnalisée et de ne fournir que les autorisations nécessaires pour effectuer des tâches de gestion des modifications. Par exemple, vous pouvez spécifier des autorisations limitant les utilisateurs à cet ensemble spécifique de runbooks selon des *fonctions professionnelles* définies. 

  Par exemple, vous pouvez créer une fonction professionnelle avec le nom `DBAdmin`. Pour cette fonction professionnelle, vous pouvez octroyer uniquement les autorisations nécessaires pour les runbooks liés à des bases de données Amazon DynamoDB, comme `AWS-CreateDynamoDbBackup` et `AWSConfigRemediation-DeleteDynamoDbTable`. 

  Ou alors vous pouvez octroyer à certains utilisateurs uniquement les autorisations nécessaires pour utiliser les runbooks liés à des compartiments Amazon Simple Storage Service (Amazon S3), comme `AWS-ConfigureS3BucketLogging` et `AWSConfigRemediation-ConfigureS3BucketPublicAccessBlock`. 

  Le processus de configuration de Change Manager dans Quick Setup met également à votre disposition un ensemble d'autorisations administratives complètes de Systems Manager, que vous pouvez appliquer au rôle administratif que vous créez. 

  Chaque configuration de Quick Setup dans Change Manager déployée crée une fonction professionnelle dans votre compte d'administrateur délégué avec les autorisations d'exécuter des modèles Change Manager et des runbooks Automation dans les unités organisationnelles que vous avez sélectionnées. Vous pouvez créer jusqu'à 15 configurations Quick Setup pour Change Manager. 
+ **Tâche 3 : choisir les comptes membres de votre organisation à utiliser avec Change Manager**

  Vous pouvez utiliser Change Manager avec tous les comptes membres de toutes vos unités organisationnelles configurées dans Organizations, et dans toutes les Régions AWS où ils fonctionnent. Si vous préférez, vous pouvez utiliser Change Manager avec seulement quelques-unes de vos unités organisationnelles.

**Important**  
Avant de commencer cette procédure, nous vous recommandons vivement de prendre connaissance des différentes étapes qui la composent, afin de comprendre les choix de configuration que vous effectuez et les autorisations que vous octroyez. En particulier, planifiez les fonctions professionnelles personnalisées que vous allez créer et les autorisations que vous affectez à chaque fonction professionnelle. De la sorte, lorsque vous attacherez les politiques de fonctions professionnelles créées à des utilisateurs individuels, des groupes d'utilisateurs ou des rôles IAM, ils ne recevront que les autorisations que vous entendez leur octroyer.  
Il est recommandé de commencer par configurer le compte d'administrateur délégué à l'aide de l'identifiant d'un Compte AWS administrateur. Ensuite, configurez les fonctions professionnelles et leurs autorisations après avoir créé des modèles de modifications et identifié les runbooks que chacun d'entre eux utilise.

Pour configurer Change Manager pour une utilisation avec une organisation,, exécutez la tâche suivante dans la zone Quick Setup de la console Systems Manager.

Répétez cette tâche pour chaque fonction professionnelle que vous voulez créer pour votre organisation. Chaque fonction professionnelle créée peut avoir des autorisations pour un ensemble différent d'unités organisationnelles.

**Pour configurer une organisation pour Change Manager dans le compte de gestion Organizations**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **Change Manager**, choisissez **Create** (Créer).

1. Pour **Delegated administrator account (Compte d'administrateur délégué)**, saisissez l'ID du Compte AWS que vous voulez utiliser pour gérer les modèles de modifications, les demandes de modifications et les flux de travail de runbook dans Change Manager. 

   Si vous avez précédemment spécifié un compte d'administrateur délégué pour Systems Manager, son ID figure déjà dans ce champ. 
**Important**  
Le compte d'administrateur délégué doit être le seul membre de l'unité d'organisation (UO) à laquelle il est affecté dans Organizations.  
Si le compte d'administrateur délégué que vous enregistrez est désinscrit ultérieurement de ce rôle, le système supprime ses autorisations pour gérer les opérations du Systems Manager en même temps. N'oubliez pas que vous devrez revenir à Quick Setup, désigner un compte d'administrateur délégué différent et spécifier à nouveau toutes les fonctions professionnelles et les autorisations.  
Si vous utilisez Change Manager au sein d'une organisation, nous vous recommandons de toujours apporter les modifications à partir du compte d'administrateur délégué. Bien qu'il soit possible d'apporter des modifications à partir d'autres comptes de l'organisation, celles-ci ne seront pas signalées ou affichées à partir du compte d'administrateur délégué.

1. Dans la section **Autorisations de demander et d'apporter des modifications**, procédez comme suit.
**Note**  
Chaque configuration de déploiement que vous créez fournit la politique d'autorisations d'une seule fonction professionnelle. Vous pourrez revenir à Quick Setup ultérieurement pour créer d'autres fonctions professionnelles lorsque vous aurez créé des modèles de modifications à utiliser dans vos opérations.

   **Pour créer un rôle administratif** : pour une fonction professionnelle d'administrateur qui dispose d'autorisations IAM pour toutes les actions AWS , procédez comme suit.
**Important**  
L'octroi d'autorisations administratives complètes aux utilisateurs doit être effectué avec parcimonie, et uniquement si leurs rôles nécessitent un accès complet à Systems Manager. Pour obtenir des informations importantes sur les considérations de sécurité relatives à l'accès à Systems Manager, veuillez consulter [Gestion des identités et des accès pour AWS Systems Manager](security-iam.md) et [Bonnes pratiques de sécurité pour Systems Manager](security-best-practices.md).

   1. Pour **Job function (Fonction professionnelle)**, saisissez un nom pour identifier ce rôle et ses autorisations, **My AWS Admin** par exemple.

   1. Pour **Role and permissions option (Option de rôle et d'autorisations)**, sélectionnez **Autorisations d'administrateur**.

   **Pour créer d'autres fonctions professionnelles** : pour créer un rôle non administratif, procédez comme suit :

   1. Pour **Job function (Fonction professionnelle)**, saisissez un nom pour identifier ce rôle et suggérer ses autorisations. Le nom que vous sélectionnez doit représenter la portée des runbooks pour lesquels vous fournirez des autorisations, `DBAdmin` ou `S3Admin` par exemple. 

   1. Pour **Role and permissions option (Option de rôle et d'autorisations)**, sélectionnez **Custom persmissions (Autorisations personnalisées)**.

   1. Dans l'**éditeur de politique d'autorisations**, saisissez les autorisations IAM, au format JSON, à octroyer à cette fonction professionnelle.
**Astuce**  
Nous vous recommandons d'utiliser l'éditeur de politique IAM pour construire votre politique, puis de coller le JSON de la politique dans le champ **Politique d'autorisations**.

**Exemple de politique : gestion de la base de données DynamoDB**  
Par exemple, vous pouvez commencer par le contenu de la politique qui fournit des autorisations pour travailler avec les documents Systems Manager (documents SSM) auxquels la fonction professionnelle doit accéder. Voici un exemple de contenu de politique qui donne accès à tous les runbooks d'automatisation AWS gérés liés aux bases de données DynamoDB et à deux modèles de modification créés dans l' Compte AWS `123456789012`exemple, dans la région USA Est (Ohio) (). `us-east-2` 

   La politique inclut également l'autorisation pour l'opération [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html), qui est obligatoire pour créer une demande de modification dans Change Calendar. 
**Note**  
Cet exemple n'est pas exhaustif. Des autorisations supplémentaires peuvent être nécessaires pour travailler avec d'autres AWS ressources, telles que des bases de données et des nœuds.

------
#### [ 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/*"
               ]
           }
       ]
   }
   ```

------

   Pour de plus amples informations sur les politiques IAM, veuillez consulter [Gestion des accès pour des ressources AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) et [Création de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le *Guide de l'utilisateur IAM*.

1. Dans la section **Cibles**, choisissez d'octroyer des autorisations pour la fonction professionnelle que vous créez à l'ensemble de votre organisation ou à certaines de vos unités organisationnelles uniquement.

   Si vous sélectionnez **Ensemble de l'organisation**, passez à l'étape 9.

   Si vous sélectionnez **Custom (Personnalisé)**, passez à l'étape 8.

1. Dans la OUs section **Cible**, cochez les cases des unités organisationnelles à utiliser avecChange Manager.

1. Choisissez **Créer**.

Une fois que le système a terminé de configurer Change Managerpour votre organisation, il affiche un résumé de vos déploiements. Ces informations récapitulatives incluent le nom du rôle créé pour la fonction professionnelle que vous avez configurée. Par exemple, `AWS-QuickSetup-SSMChangeMgr-DBAdminInvocationRole`.

**Note**  
Quick Setuputilise AWS CloudFormation StackSets pour déployer vos configurations. Vous pouvez également afficher des informations sur une configuration de déploiement terminée dans la console CloudFormation . Pour plus d'informations StackSets, consultez la section [Travailler avec AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) dans le *guide de AWS CloudFormation l'utilisateur*.

Dans l'étape suivante, vous allez configurer des options Change Manager supplémentaires. Vous pouvez effectuer cette tâche dans votre compte d'administrateur délégué ou dans n'importe quel compte d'une unité d'organisation dont vous avez autorisé l'utilisation avec Change Manager. Parmi les options que vous configurez, vous pouvez choisir une option de gestion des identités utilisateur, spécifier les utilisateurs qui peuvent vérifier et approuver ou rejeter les modèles de modifications et les demandes de modifications, et choisir les options de bonnes pratiques à autoriser pour votre organisation. Pour plus d'informations, consultez [Configuration d'options et de bonnes pratiques Change Manager](change-manager-account-setup.md).

# Configuration d'options et de bonnes pratiques Change Manager
<a name="change-manager-account-setup"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Les tâches de cette section doivent être effectuéesChange Manager, que vous utilisiez un outil au sein d'une organisation AWS Systems Manager, au sein d'une organisation ou dans une seule organisation Compte AWS.

Si vous utilisez Change Manager pour une organisation, vous pouvez effectuer les tâches suivantes dans votre compte d'administrateur délégué ou dans n'importe quel compte d'une unité d'organisation dont vous avez autorisé l'utilisation avec Change Manager.

**Topics**
+ [Tâche 1 : configuration de vérificateurs de gestion des identités des utilisateurs et de modèles Change Manager](#cm-configure-account-task-1)
+ [Tâche 2 : configuration d'approbateurs d'événements de gel des modifications et de bonnes pratiques Change Manager](#cm-configure-account-task-2)
+ [Configuration des rubriques Amazon SNS pour les notifications Change Manager](change-manager-sns-setup.md)

## Tâche 1 : configuration de vérificateurs de gestion des identités des utilisateurs et de modèles Change Manager
<a name="cm-configure-account-task-1"></a>

Effectuez la tâche de cette procédure la première fois que vous accédez à Change Manager. Vous pouvez mettre à jour ces paramètres de configuration ultérieurement en revenant à Change Manager et en choisissant **Modifier** sous l'onglet **Settings (Paramètres)**.

**Pour configurer des vérificateurs de gestion des identités des utilisateurs et de modèles Change Manager**

1. Connectez-vous au AWS Management Console.

   Si vous utilisez Change Manager pour une organisation, connectez-vous avec les informations d'identification de votre compte d'administrateur délégué. L'utilisateur doit disposer des autorisations Gestion des identités et des accès AWS  (IAM) nécessaires pour effectuer des mises à jour de vos paramètres Change Manager.

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Sur la page d'accueil du service, effectuez l'une des actions suivantes en fonction des options disponibles :
   + Si vous utilisez Change Manager avec AWS Organizations , choisissez **Configurer un compte délégué**.
   + Si vous l'utilisez Change Manager avec un seul Compte AWS appareil, choisissez **Configurer Change Manager**.

     -ou-

     Sélectionnez **Créer un exemple de demande de modification**, **Ignore**, puis sélectionnez l'onglet **Settings (Paramètres)**.

1. Pour **Gestion des identités utilisateur**, sélectionnez l'une des options suivantes.
   + **Gestion des identités et des accès AWS (IAM)** — Identifiez les utilisateurs qui font et approuvent les demandes et effectuent d'autres actions en Change Manager utilisant vos utilisateurs, groupes et rôles existants.
   + **AWS IAM Identity Center (IAM Identity Center)** — Autorisez [IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/) à créer et à gérer des identités, ou à vous connecter à votre source d'identité existante pour identifier les utilisateurs qui effectuent des actions dans. Change Manager

1. Dans la section **Template reviewer notification** (Notification du vérificateur de modèle), spécifiez les rubriques Amazon Simple Notification Service (Amazon SNS) à utiliser afin d'informer les vérificateurs de modèles qu'il est possible de vérifier un nouveau modèle de modification ou une nouvelle version d'un modèle de modification. Vérifiez que la rubrique Amazon SNS que vous sélectionnez est bien configurée pour envoyer des notifications à vos vérificateurs de modèles. 

   Pour obtenir des informations sur la création et la configuration de rubriques Amazon SNS pour les notifications des vérificateurs de modèles de modifications, consultez [Configuration des rubriques Amazon SNS pour les notifications Change Manager](change-manager-sns-setup.md).

   1. Pour spécifier la rubrique Amazon SNS pour les notifications des vérificateurs de modèles, sélectionnez l'une des options suivantes :
      + **Saisir un Amazon Resource Name (ARN) SNS** : pour **ARN de rubrique**, saisissez l'ARN d'une rubrique Amazon SNS existante. Cette rubrique peut se trouver dans n'importe quel compte de votre organisation.
      + **Sélectionner une rubrique SNS existante** : pour **Rubrique de notification cible**, sélectionnez l'ARN d'une rubrique Amazon SNS existante dans votre Compte AWS actuel. (Cette option n'est pas disponible si vous n'avez pas encore créé de rubrique Amazon SNS dans votre Compte AWS et Région AWS.)
**Note**  
La rubrique Amazon SNS que vous sélectionnez doit être configurée pour spécifier les notifications qu'elle envoie, ainsi que les abonnés auxquels elles sont envoyées. Sa politique d'accès doit également octroyer des autorisations à Systems Manager de sorte que Change Manager puisse envoyer des notifications. Pour plus d'informations, consultez [Configuration des rubriques Amazon SNS pour les notifications Change Manager](change-manager-sns-setup.md). 

   1. Sélectionnez **Ajouter une notification**.

1. Dans la section **Vérificateurs des modèles de modifications**, sélectionnez les utilisateurs de votre organisation ou de votre compte qui vérifieront les nouveaux modèles de modifications ou modifieront les versions de modèles avant qu'ils soient utilisés dans vos opérations. 

   Les vérificateurs de modèles de modifications sont chargés de vérifier l'adéquation et la sécurité des modèles que d'autres utilisateurs ont envoyés en vue d'une utilisation dans des flux de travail de runbook Change Manager.

   Sélectionnez les vérificateurs des modèles de modifications de la façon suivante :

   1. Choisissez **Ajouter**.

   1. Cochez la case en regard du nom de chaque utilisateur, groupe ou rôle IAM que vous souhaitez affecter en tant que vérificateur de modèle de modification.

   1. Sélectionnez **Ajouter des approbateurs**.

1. Sélectionnez **Submit (Envoyer)**.

 Une fois ce processus de configuration initiale terminé, configurez des paramètres et des bonnes pratiques Change Manageren suivant les étapes décrites dans [Tâche 2 : configuration d'approbateurs d'événements de gel des modifications et de bonnes pratiques Change Manager](#cm-configure-account-task-2).

## Tâche 2 : configuration d'approbateurs d'événements de gel des modifications et de bonnes pratiques Change Manager
<a name="cm-configure-account-task-2"></a>

Après avoir effectué les étapes de [Tâche 1 : configuration de vérificateurs de gestion des identités des utilisateurs et de modèles Change Manager](#cm-configure-account-task-1), vous pouvez désigner des vérificateurs supplémentaires pour les demandes de modifications lors d'*événements de gel des modifications* et spécifier les bonnes pratiques disponibles que vous souhaitez autoriser pour vos opérations Change Manager.

Un événement de gel des modifications signifie que des restrictions sont en place dans le calendrier des modifications actuel (c'est l'état du calendrier qui s'y AWS Systems Manager Change Calendar trouve`CLOSED`). Dans ce cas, outre les approbateurs réguliers des demandes de modifications, ou si la demande de modification est créée à l'aide d'un modèle qui autorise les approbations automatiques, les approbateurs de gel des modifications doivent octroyer l'autorisation d'exécuter cette demande de modification. Si ce n'est pas le cas, la modification ne sera pas traitée tant que le calendrier ne retrouvera pas le statut `OPEN`.

**Pour configurer d'approbateurs d'événements de gel des modifications et de bonnes pratiques Change Manager**

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Sélectionnez l'onglet **Settings (Paramètres)**, puis **Edit (Modifier)**.

1. Dans **Approbateurs d'événements de gel des modifications**, sélectionnez les utilisateurs de votre organisation ou de votre compte qui peuvent approuver les modifications à exécuter même lorsque le calendrier utilisé dans Change Calendar a le statut FERMÉ.
**Note**  
Pour autoriser les vérifications de gel des modifications, vous devez activer l'option **Vérifier les événements de modifications restreintes dans le calendrier des modifications** dans les **Bonnes pratiques**.

   Sélectionnez les approbateurs d'événements de gel des modifications en procédant comme suit :

   1. Choisissez **Ajouter**.

   1. Cochez la case en regard du nom de chaque utilisateur, groupe ou rôle IAM que vous souhaitez affecter en tant qu'approbateur pour les événements de gel des modifications.

   1. Sélectionnez **Ajouter des approbateurs**.

1. Dans la section **Bonnes pratiques**, en bas de la page, activez les bonnes pratiques que vous souhaitez appliquer pour chacune des options suivantes.
   + Option : **Vérifier les événements de modifications restreintes dans le calendrier des modifications**

     Pour spécifier que Change Manager vérifie un calendrier dans Change Calendar pour s'assurer que les modifications ne sont pas bloquées par des événements planifiés, cochez d'abord la case **Activé**, puis sélectionnez le calendrier dans lequel vérifier les événements de modifications restreintes dans la liste **Calendrier des modifications**.

     Pour plus d'informations sur Change Calendar, consultez [AWS Systems Manager Change Calendar](systems-manager-change-calendar.md).
   + Option  :**Rubrique SNS pour les approbateurs d'événements fermés**

     1. Sélectionnez l'une des options suivantes pour spécifier la rubrique Amazon Simple Notification Service (Amazon SNS) de votre compte à utiliser pour envoyer des notifications aux approbateurs lors d'événements de gel des modifications. (Notez que vous devez également spécifier des approbateurs dans la section **Approbateurs d'événements de gel des modifications** au-dessus des **Bonnes pratiques**.)
        + **Saisir un Amazon Resource Name (ARN) SNS** : pour **ARN de rubrique**, saisissez l'ARN d'une rubrique Amazon SNS existante. Cette rubrique peut se trouver dans n'importe quel compte de votre organisation.
        + **Sélectionner une rubrique SNS existante** : pour **Rubrique de notification cible**, sélectionnez l'ARN d'une rubrique Amazon SNS existante dans votre Compte AWS actuel. (Cette option n'est pas disponible si vous n'avez pas encore créé de rubrique Amazon SNS dans votre Compte AWS et Région AWS.)
**Note**  
La rubrique Amazon SNS que vous sélectionnez doit être configurée pour spécifier les notifications qu'elle envoie, ainsi que les abonnés auxquels elles sont envoyées. Sa politique d'accès doit également octroyer des autorisations à Systems Manager de sorte que Change Manager puisse envoyer des notifications. Pour plus d'informations, consultez [Configuration des rubriques Amazon SNS pour les notifications Change Manager](change-manager-sns-setup.md). 

     1. Sélectionnez **Ajouter une notification**.
   + Option : **Exiger des surveillances pour tous les modèles**

     Si vous voulez vous assurer que tous les modèles de votre organisation ou de votre compte contiennent une CloudWatch alarme Amazon pour surveiller votre opération de modification, cochez la case **Activé**.
   + Option : **Exiger la vérification et l'approbation du modèle avant son utilisation**

     Pour vous assurer qu'aucune demande de modification n'est créée et qu'aucun flux de travail de runbook n'est exécuté sans être basés sur un modèle qui a été vérifié et approuvé, cochez la case **Activé**.

1. Choisissez **Enregistrer**.

# Configuration des rubriques Amazon SNS pour les notifications Change Manager
<a name="change-manager-sns-setup"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Vous pouvez configurer Change Manager un outil pour envoyer des notifications à une rubrique Amazon Simple Notification Service (Amazon SNS) pour les événements liés aux demandes de modification et aux modèles de modification. AWS Systems Manager Effectuez les tâches suivantes pour recevoir des notifications pour les événements Change Manager auxquels vous ajoutez une rubrique.

**Topics**
+ [Tâche 1 : Créer une rubrique Amazon SNS et s'y abonner](#change-manager-sns-setup-create-topic)
+ [Tâche 2 : Mise à jour de la politique d'accès Amazon SNS](#change-manager-sns-setup-encryption-policy)
+ [Tâche 3 : (Facultatif) Mettre à jour la politique AWS Key Management Service d'accès](#change-manager-sns-setup-KMS-policy)

## Tâche 1 : Créer une rubrique Amazon SNS et s'y abonner
<a name="change-manager-sns-setup-create-topic"></a>

Pour commencer, vous devez créer une rubrique Amazon SNS à laquelle vous vous abonnez. Pour plus d'informations, consultez [Création d'une rubrique Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) et [Abonnement à une rubrique Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-tutorial-create-subscribe-endpoint-to-topic.html) dans le *Guide du développeur Amazon Simple Notification Service*.

**Note**  
Pour recevoir des notifications, vous devez spécifier le nom de ressource Amazon (ARN) d'une rubrique Amazon SNS figurant dans le même compte Région AWS et en Compte AWS tant qu'administrateur délégué. 

## Tâche 2 : Mise à jour de la politique d'accès Amazon SNS
<a name="change-manager-sns-setup-encryption-policy"></a>

Utilisez la procédure suivante pour mettre à jour la politique d'accès Amazon SNS afin que Systems Manager puisse publier les notifications Change Manager dans la rubrique Amazon SNS créée dans la tâche 1. Si cette tâche n'est pas effectuée ,Change Manager n'a pas l'autorisation d'envoyer des notifications à propos d'événements auxquels vous ajoutez la rubrique.

1. [Connectez-vous à la console Amazon SNS AWS Management Console et ouvrez-la sur v3/home. https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/v3/home)

1. Dans le panneau de navigation, sélectionnez **Topics (Rubriques)**.

1. Sélectionnez la rubrique que vous avez créée dans la tâche 1, puis sélectionnez **Edit (Modifier)**.

1. Développez **la politique d'accès**.

1. Ajoutez et mettez à jour le `Sid` bloc suivant à la politique existante et remplacez-le *user input placeholder* par vos propres informations.

   ```
   {
       "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"
               ]
           }
       }
   }
   ```

   Entrez ce bloc après le `Sid` bloc existant, et remplacez-le par *region* *topic-name* les valeurs appropriées pour le sujet que vous avez créé. *account-id*

1. Sélectionnez **Enregistrer les modifications**.

Le système enverra maintenant des notifications à la rubrique Amazon SNS lorsque le type d'événement que vous ajoutez à la rubrique se produira.

**Important**  
Si vous avez configuré la rubrique Amazon SNS avec une clé de chiffrement côté serveur AWS Key Management Service (AWS KMS), vous devez effectuer la tâche 3.

## Tâche 3 : (Facultatif) Mettre à jour la politique AWS Key Management Service d'accès
<a name="change-manager-sns-setup-KMS-policy"></a>

Si vous avez activé AWS Key Management Service (AWS KMS) le chiffrement côté serveur pour votre rubrique Amazon SNS, vous devez également mettre à jour la politique d'accès que vous avez choisie lors de AWS KMS key la configuration de la rubrique. Utilisez la procédure suivante pour mettre à jour la politique d'accès afin que Systems Manager puisse publier les notifications d'approbation Change Manager dans la rubrique Amazon SNS créée dans la tâche 1.

1. Ouvrez la AWS KMS console à l'adresse [https://console.aws.amazon.com/kms.](https://console.aws.amazon.com/kms)

1. Dans le volet de navigation, sélectionnez **Clés gérées par le client**.

1. Sélectionnez l'ID de la clé gérée par le client que vous avez choisie lors de la création de la rubrique.

1. Dans la section **Key policy (Politique de clé)**, sélectionnez **Switch to policy view (Passer à la vue de politique)**.

1. Sélectionnez **Edit** (Modifier).

1. Entrez le bloc `Sid` suivant après l'un des blocs `Sid` existants dans la politique existante. Remplacez chaque *user input placeholder* par vos propres informations.

   ```
   {
       "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. Maintenant, entrez le bloc `Sid` suivant après l'un des blocs `Sid` existants dans la politique de ressources pour aider à prévenir le [problème du député confus entre services](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). 

   Ce bloc utilise les clés de contexte de condition globale [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) et [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) pour limiter les autorisations que Systems Manager accorde à un autre service pour la ressource.

   Remplacez chaque *user input placeholder* par vos propres informations.

------
#### [ 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. Sélectionnez **Enregistrer les modifications**.

# Configuration des rôles et des autorisations pour Change Manager
<a name="change-manager-permissions"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Par défaut, Change Manager ne dispose pas d’autorisation pour effectuer des actions sur vos instances. Vous devez accorder l'accès en utilisant un rôle de service Gestion des identités et des accès AWS (IAM) ou en *assumant un rôle*. Ce rôle permet à Change Manager d’exécuter en toute sécurité les flux de travail du Runbook spécifiés dans une demande de modification approuvée en votre nom. Le rôle accorde la [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)confiance à AWS Security Token Service (AWS STS)Change Manager.

En accordant ces autorisations à un rôle pour agir au nom des utilisateurs d'une organisation, les utilisateurs n'ont pas besoin de se voir accorder eux-mêmes ce tableau d'autorisations. Les actions permises par les autorisations se limitent uniquement aux opérations approuvées.

Lorsque les utilisateurs de votre compte ou de votre organisation créent une demande de modification, ceux-ci peuvent sélectionner ce rôle de responsable pour effectuer les opérations de modification.

Vous pouvez créer un nouveau rôle de responsable pour Change Manager ou mettre à jour un rôle existant avec les autorisations nécessaires.

Si vous avez besoin de créer une fonction du service pour Change Manager, exécutez les tâches suivantes. 

**Topics**
+ [Tâche 1 : Création d'une politique de rôle de responsable pour Change Manager](#change-manager-role-policy)
+ [Tâche 2 : Création d'une politique de rôle de responsable pour Change Manager](#change-manager-role)
+ [Tâche 3 : Attacher la politique `iam:PassRole` à d'autres rôles](#change-manager-passpolicy)
+ [Tâche 4 : Ajouter des politiques intégrées à un rôle d'assume pour invoquer d'autres Services AWS](#change-manager-role-add-inline-policy)
+ [Tâche 5 : Configuration de l'accès utilisateur à Change Manager](#change-manager-passrole)

## Tâche 1 : Création d'une politique de rôle de responsable pour Change Manager
<a name="change-manager-role-policy"></a>

Suivez la procédure suivante pour créer la politique que vous attacherez à votre rôle de responsable Change Manager.

**Pour créer une politique de rôle de responsabilité pour Change Manager**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Policies**, puis **Create Policy**.

1. Dans la page **Create policy** (Créer une politique), choisissez l’onglet **JSON** et remplacez le contenu par défaut par le contenu suivant que vous modifierez pour vos opérations Change Manager au bout des étapes suivantes.
**Note**  
Si vous créez une politique à utiliser avec un seul compte Compte AWS, et non avec une organisation possédant plusieurs comptes Régions AWS, vous pouvez omettre le premier bloc de relevés. L'autorisation `iam:PassRole` n'est pas requise pour le cas d’un compte unique utilisant 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. Pour l'`iam:PassRole`action, mettez à jour la `Resource` valeur pour inclure toutes les fonctions ARNs de travail définies pour votre organisation auxquelles vous souhaitez accorder l'autorisation de lancer des flux de travail Runbook.

1. Remplacez les *job-function* balises *region**account-id*,*template-name*,*delegated-admin-account-id*, et par des valeurs correspondant à vos Change Manager opérations.

1. Pour la seconde `Resource`, modifiez la liste pour inclure tous les modèles de modification pour lesquels vous souhaitez accorder des autorisations. Sinon, indiquez `"Resource": "*"` pour accorder des autorisations pour tous les modèles de modification de votre organisation.

1. Choisissez **Suivant : Balises**.

1. (Facultatif) Ajoutez une ou plusieurs paires clé-valeur d'identification afin d'organiser, de suivre ou de contrôler l'accès pour cette politique. 

1. Choisissez **Suivant : Vérification**.

1. Dans la page **Review policy** (Vérification de la politique), saisissez un nom dans la zone **Name** (Nom), tel que **MyChangeManagerAssumeRole**, puis saisissez une description facultative.

1. Choisissez **Create policy** (Créer une politique), et continuez vers [Tâche 2 : Création d'une politique de rôle de responsable pour Change Manager](#change-manager-role).

## Tâche 2 : Création d'une politique de rôle de responsable pour Change Manager
<a name="change-manager-role"></a>

Suivez la procédure suivante pour créer un rôle de responsable Change Manager, une sorte de fonction du service pour Change Manager.

**Pour créer un rôle d'assumer pour Change Manager**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, sélectionnez **Rôles**, puis **Créer un rôle**.

1. Pour **Select trusted entity** (Sélectionner une entité de confiance), effectuez les choix suivants :

   1. Pour **Type d'entité de confiance**, choisissez **Service AWS **

   1. Pour les **cas d'utilisation pour les autres Services AWS**, choisissez **Systems Manager**

   1. Choisissez **Systems Manager**, comme illustré dans l'image suivante.  
![\[Capture d'écran illustrant l'option Systems Manager sélectionnée comme cas d'utilisation.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/iam_use_cases_for_MWs.png)

1. Choisissez **Suivant**.

1. Dans la page **Attached permissions policy** (¨Politique d'autorisations attachées), recherchez la politique de rôle de responsable que vous avez créée dans[Tâche 1 : Création d'une politique de rôle de responsable pour Change Manager](#change-manager-role-policy), comme **MyChangeManagerAssumeRole**. 

1. Cochez la case cà côté du nom de la politique de rôle de responsable, puis choisissez **Next: Tags** (Suivant : balises).

1. Pour **Role name** (Nom du rôle), saisissez un nom pour votre nouveau profil d'instance, par exemple **MyChangeManagerAssumeRole**.

1. (Facultatif) Pour **Description**, saisissez une description pour ce role d'instance.

1. (Facultatif) Ajoutez une ou plusieurs paires clé-valeur d'identification afin d'organiser, de suivre ou de contrôler l'accès pour ce rôle. 

1. Choisissez **Suivant : Vérification**.

1. (Facultatif) Pour **Tags** (Balises), ajoutez une ou plusieurs paires clé-valeur d'identification afin d'organiser, de suivre ou de contrôler l'accès pour ce rôle, puis sélectionnez **Create role** (Créer le rôle). Le système vous renvoie à la page **Rôles**.

1. Sélectionnez **Créer un rôle**. Le système vous renvoie à la page **Rôles**.

1. Sur la page **Rôles**, sélectionnez le rôle que vous venez de créer pour ouvrir la page **Récapitulatif**. 

## Tâche 3 : Attacher la politique `iam:PassRole` à d'autres rôles
<a name="change-manager-passpolicy"></a>

Procédez comme suit pour attacher la politique `iam:PassRole` à un profil d'instance IAM ou à une fonction du service IAM. (Le service Systems Manager utilise des profils d'instance IAM pour communiquer avec les instances EC2. Pour les nœuds gérés non EC2 dans un environnement [hybride et multicloud](operating-systems-and-machine-types.md#supported-machine-types), une fonction du service IAM est utilisée à la place.)

En attachant la politique `iam:PassRole`, le service Change Manager peut transmettre des autorisations de rôle à d’autres services ou outils Systems Manager lors de l’exécution des flux de travail de dossier d’exploitation.

**Pour attacher la politique `iam:PassRole` à un profil d'instance ou une fonction du service IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Recherchez le rôle de responsable Change Manager que vous avez créé, comme **MyChangeManagerAssumeRole** et définissez son nom.

1. Dans la page **Summary** (Résumé) du rôle de responsable, sélectionnez l'onglet **Autorisations**.

1. Choisissez **Add permissions, Create inline policy** (Ajouter des autorisations, Créer une politique en ligne).

1. Dans la page **Créer une politique**, sélectionnez l'onglet **Éditeur visuel**.

1. Sélectionnez **Service**, puis sélectionnez **IAM**.

1. Dans la zone de texte **Actions de filtrage****PassRole**, entrez, puis choisissez l'**PassRole**option.

1. Développer les **Ressources**. Vérifiez que **Spécifique** est sélectionné, puis sélectionnez **Add ARN** (Ajouter l'ARN).

1. Dans le champ **Specify ARN for role** (Spécifier l'ARN du rôle), saisissez l'ARN du rôle de profil d'instance IAM ou celui de la fonction du service IAM auquel vous souhaitez transmettre les autorisations de rôle de responsable. Le système remplit automatiquement les champs **Compte** et **Role name with path (Nom du rôle avec chemin d'accès)**. 

1. Choisissez **Ajouter**.

1. Sélectionnez **Review policy (Examiner une politique)**.

1. Pour **Name** (Nom), entrez un nom pour identifier cette politique, puis choisissez **Create policy** (Créer une politique).

**Plus d'informations**  
+ [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md)
+ [Créer le rôle de service IAM requis pour Systems Manager dans les environnements hybrides et multicloud](hybrid-multicloud-service-role.md)

## Tâche 4 : Ajouter des politiques intégrées à un rôle d'assume pour invoquer d'autres Services AWS
<a name="change-manager-role-add-inline-policy"></a>

Lorsqu'une demande de modification invoque d'autres services en Services AWS utilisant le rôle d'Change Managerassumer, le rôle d'assumer doit être configuré avec l'autorisation d'invoquer ces services. Cette exigence s'applique à tous les runbooks AWS Automation (runbooks AWS-\$1) susceptibles d'être utilisés dans une demande de modification, tels que les runbooks et les `AWS-ConfigureS3BucketLogging` runbooks. `AWS-CreateDynamoDBBackup` `AWS-RestartEC2Instance` Cette exigence s'applique également à tous les runbooks 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 exécutez les actions `aws:executeAwsApi`, `aws:CreateStack` ou `aws:copyImage`, vous devez configurer la fonction du service avec l'autorisation de faire appel à ces services. Vous pouvez accorder des autorisations à d'autres Services AWS en ajoutant une politique IAM en ligne au rôle. 

**Pour ajouter une politique intégrée à un rôle d'assumer afin d'en invoquer un autre Services AWS (console IAM)**

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Dans la liste, définissez le nom du rôle de responsable que vous souhaitez mettre à jour, par exemple `MyChangeManagerAssumeRole`.

1. Choisissez l'onglet **Permissions** (Autorisations).

1. Choisissez **Add permissions, Create inline policy** (Ajouter des autorisations, Créer une politique en ligne).

1. Sélectionnez l'onglet **JSON**.

1. Entrez un document de politique JSON pour le que Services AWS vous souhaitez invoquer. Voici deux exemples de document de stratégie JSON.

   **Amazon S3`PutObject` et `GetObject` exemple**

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

****  

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

------

   **Amazon EC2`CreateSnapshot` et `DescribeSnapShots` exemple**

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

****  

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

------

    Afin d’obtenir des informations approfondies sur la terminologie IAM, consultez la [Référence de politique JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) dans le *Guide de l'utilisateur IAM*.

1. Lorsque vous avez terminé, sélectionnez **Review policy (Examiner une politique)**. Le programme de [validation de politique](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html) signale les éventuelles erreurs de syntaxe.

1. Pour **Name** (Nom), saisissez un nom pour identifier la politique que vous créez. Vérifiez le **récapitulatif** de politique pour voir les autorisations accordées par votre politique. Sélectionnez ensuite **Créer une politique** pour enregistrer votre travail.

1. Une fois que vous avez créé une politique en ligne, elle est automatiquement intégrée à votre rôle.

## Tâche 5 : Configuration de l'accès utilisateur à Change Manager
<a name="change-manager-passrole"></a>

Si votre utilisateur, votre groupe ou votre rôle dispose des autorisations d'administrateur, vous avez accès à Change Manager. Si vous ne disposez pas des autorisations d'administrateur, alors un administrateur doit vous assigner la politique gérée `AmazonSSMFullAccess` ou une politique octroyant des d'autorisations similaires à votre utilisateur, groupe ou rôle.

Suivez la procédure suivante afin de configurer un utilisateur pour utiliser Change Manager. L'utilisateur que vous sélectionnez aura l'autorisation de configurer et d'exécuter Change Manager. 

En fonction de l'application d'identité que vous utilisez dans votre organisation, vous pouvez sélectionner l'une des trois options disponibles pour configurer l'accès des utilisateurs. Lors de la configuration de l'accès utilisateur, attribuez ou ajoutez les éléments suivants : 

1. Attribuez la politique `AmazonSSMFullAccess` ou une politique comparable qui autorise l'accès à Systems Manager.

1. Attribuez la politique `iam:PassRole`.

1. Ajoutez l'ARN du rôle de responsable Change Manager que vous avez copié à la fin de [Tâche 2 : Création d'une politique de rôle de responsable pour Change Manager](#change-manager-role).

Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :
+ Utilisateurs et groupes dans AWS IAM Identity Center :

  Créez un jeu d’autorisations. Suivez les instructions de la rubrique [Création d’un jeu d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) du *Guide de l’utilisateur AWS IAM Identity Center *.
+ Utilisateurs gérés dans IAM par un fournisseur d’identité :

  Créez un rôle pour la fédération d’identité. Suivez les instructions de la rubrique [Création d’un rôle pour un fournisseur d’identité tiers (fédération)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) dans le *Guide de l’utilisateur IAM*.
+ Utilisateurs IAM :
  + Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la rubrique [Création d’un rôle pour un utilisateur IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) dans le *Guide de l’utilisateur IAM*.
  + (Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la rubrique [Ajout d'autorisations à un utilisateur (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) du *Guide de l'utilisateur IAM*.

Vous en avez terminer avec la configuration des rôles requis pour Change Manager. Vous pouvez désormais utiliser l’ARN du rôle de responsabilité Change Manager dans vos opérations Change Manager.

# Contrôler l'accès aux flux de travail de runbook d'approbation automatique
<a name="change-manager-auto-approval-access"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Dans chaque modèle de modification créé pour votre organisation ou votre compte, vous pouvez spécifier si les demandes de modifications créées à partir de ce modèle peuvent être exécutées en tant que des demandes de modifications approuvées automatiquement, ce qui signifie qu'elles s'exécutent automatiquement sans l'étape de vérification (à l'exception des événements de gel des modifications).

Toutefois, vous souhaiterez peut-être empêcher certains utilisateurs, groupes ou rôles Gestion des identités et des accès AWS (IAM) d'exécuter des demandes de modification approuvées automatiquement, même si un modèle de modification le permet. Pour cela, vous pouvez utiliser la clé de condition `ssm:AutoApprove` pour l'opération `StartChangeRequestExecution` dans une politique IAM affectée à l'utilisateur, au groupe ou au rôle IAM. 

Vous pouvez ajouter la politique suivante en tant que politique intégrée, dans laquelle la condition est spécifiée comme `false`, pour empêcher les utilisateurs d'exécuter des demandes de modifications à approbation automatique.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
            {
            "Effect": "Allow",
            "Action": "ssm:StartChangeRequestExecution",
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "ssm:AutoApprove": "false"
                }
            }
        }
    ]
}
```

------

Pour obtenir des informations sur la spécification de politiques intégrées, veuillez consulter [Politiques en ligne](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) et [Ajout et suppression d'autorisations basées sur l'identité IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dans le *Guide de l'utilisateur IAM*.

Pour de plus amples informations sur les clés de condition pour les politiques Systems Manager, veuillez consulter la rubrique [Clés de condition pour Systems Manager](security_iam_service-with-iam.md#policy-conditions).

# Utilisation de l’option Change Manager
<a name="working-with-change-manager"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Grâce Change Manager à un outil intégré AWS Systems Manager, les utilisateurs de votre organisation ou d'une seule personne Compte AWS peuvent effectuer des tâches liées au changement pour lesquelles ils ont obtenu les autorisations nécessaires. Change Managerles tâches incluent les suivantes :
+ La création, la vérification, l'approbation ou le rejet de modèles de modifications. 

  Un modèle de modification est un ensemble de paramètres de configuration dans Change Manager, qui définissent des éléments tels que les approbations requises, les runbooks disponibles et les options de notification relatives aux demandes de modifications.
+ La création, la vérification, l'approbation ou le rejet de demandes de modifications.

  Une demande de modification est une demande visant Change Manager à exécuter un runbook d'automatisation qui met à jour une ou plusieurs ressources dans votre environnement AWS ou sur site. Une demande de modification est créée à l'aide d'un modèle de modification.
+ Spécifiez les utilisateurs de votre organisation ou de votre compte qui peuvent devenir des vérificateurs de modèles de modifications et de demandes de modifications.
+ Modifiez les paramètres de configuration, notamment la façon dont les identités utilisateur sont gérées dans Change Manager et les *bonnes pratiques* qui sont appliquées dans vos opérations Change Manager. Pour de plus amples informations sur la configuration des paramètres, veuillez consulter [Configuration d'options et de bonnes pratiques Change Manager](change-manager-account-setup.md).

**Topics**
+ [Utilisation des modèles de modification](change-templates.md)
+ [Utilisation des demandes de modifications](change-requests.md)
+ [Vérifier les détails, les tâches et les échéances d'une demande de modification (console)](reviewing-changes.md)
+ [Affichage du nombre agrégé de demandes de modifications (ligne de commande)](change-requests-review-aggregate-command-line.md)

# Utilisation des modèles de modification
<a name="change-templates"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Un modèle de modification est un ensemble de paramètres de configuration dans Change Manager, qui définissent des éléments tels que les approbations requises, les runbooks disponibles et les options de notification relatives aux demandes de modifications.

**Note**  
AWS fournit un exemple de modèle de modification [Hello World](change-templates-aws-managed.md) que vous pouvez utiliser pour essayerChange Manager, un outil dans AWS Systems Manager. Toutefois, vous créez vos propres modèles de modifications pour définir les modifications que vous voulez autoriser sur les ressources de votre organisation ou de votre compte. 

Les modifications apportées lors de l'exécution d'un flux de travail de runbook sont basées sur le contenu d'un runbook Automation. Dans chaque modèle de modification créé, vous pouvez inclure un ou plusieurs runbooks Automation que l'utilisateur qui effectue une demande de modification peut choisir d'exécuter pendant la mise à jour. Vous pouvez également créer des modèles de modifications qui autorisent les demandeurs à choisir n'importe quel runbook Automation disponible pour la demande de modification.

Pour créer un modèle de modification, vous pouvez utiliser l'option **Builder (Générateur)** sur la page de la console **Create template (Créer un modèle)**. En variante, vous pouvez utiliser l'option **Editor (Éditeur)** pour créer manuellement du contenu JSON ou YAML avec la configuration voulue pour votre flux de travail de runbook. Vous pouvez aussi utiliser un outil de ligne de commande pour créer un modèle de modification, avec le contenu JSON pour le modèle de modification stocké dans un fichier externe.

**Topics**
+ [Essayez le modèle de AWS gestion des `Hello World` modifications](change-templates-aws-managed.md)
+ [Création de modèles de modification](change-templates-create.md)
+ [Vérification et approbation de modèles de modifications](change-templates-review.md)
+ [Suppression de modèles de modification](change-templates-delete.md)

# Essayez le modèle de AWS gestion des `Hello World` modifications
<a name="change-templates-aws-managed"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Vous pouvez utiliser l’exemple de modèle de modification `AWS-HelloWorldChangeTemplate`, qui utilise l’exemple de dossier d’exploitation Automation `AWS-HelloWorld`, pour tester le processus de vérification et d’approbation lorsque vous avez terminé la configuration Change Manager, un outil d’ AWS Systems Manager. Ce modèle est conçu pour tester ou vérifier vos autorisations configurées, les affectations d'approbateur et le processus d'approbation. L'approbation d'utiliser ce modèle de modification dans votre organisation ou votre compte a déjà été fournie par AWS. Toutefois, toute demande de modification basée sur ce modèle de modification doit toujours être approuvée par les vérificateurs de votre organisation ou de votre compte.

Le résultat du flux de travail de runbook associé à ce modèle ne consiste pas à apporter des modifications à une ressource, mais à imprimer un message dans la sortie d'une étape d'automatisation.

**Avant de commencer**  
Avant de commencer, assurez-vous que vous avez terminé les tâches suivantes :
+ Si vous utilisez AWS Organizations pour gérer le changement au sein d'une organisation, effectuez les tâches de configuration de l'organisation décrites dans[Configuration de Change Manager pour une organisation (compte de gestion)](change-manager-organization-setup.md).
+ Configurez Change Manager pour votre compte d'administrateur délégué ou votre compte unique, de la façon décrite dans [Configuration d'options et de bonnes pratiques Change Manager](change-manager-account-setup.md). 
**Note**  
Si vous avez activé l'option de bonne pratique **Exiger des surveillances pour tous les modèles** dans vos paramètres Change Manager, désactivez-la momentanément pendant que vous testez le modèle de modification Hello World.

**Pour essayer le modèle de modification AWS géré par Hello World**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Sélectionnez **Créer une demande**.

1. Sélectionnez le modèle de modification nommé `AWS-HelloWorldChangeTemplate`, puis **Suivant**.

1. Pour **Nom** de la demande de modification, saisissez un nom permettant d'identifier sa fonction, **MyChangeRequestTest** par exemple.

1. Pour les autres étapes de création de votre demande de modification, veuillez consulter [Création de demandes de modificationsCréation de demandes de modifications (console)](change-requests-create.md).

**Étapes suivantes**  
Pour obtenir des informations sur l'approbation de demandes de modifications, veuillez consulter [Vérifier et approuver ou rejeter les demandes de modifications](change-requests-review.md).

Pour afficher le statut et les résultats de votre demande de modification, sélectionnez le nom de votre demande de modification sous l'onglet **Requests (Demandes)** dans Change Manager. 

# Création de modèles de modification
<a name="change-templates-create"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Un modèle de modification est un ensemble de paramètres de configuration dans Change Manager, qui définissent des éléments tels que les approbations requises, les runbooks disponibles et les options de notification relatives aux demandes de modifications.

Vous pouvez créer des modèles de modifications pour vos opérations dans Change Manager, un outil d’ AWS Systems Managerà l’aide de la console, qui inclut les options générateur et éditeur, ou des outils de ligne de commande.

**Topics**
+ [À propos des approbations dans vos modèles de modification](cm-approvals-templates.md)
+ [Création de modèles de modifications à l'aide du générateur](change-templates-custom-builder.md)
+ [Création de modèles de modifications à l'aide de l'éditeur](change-templates-custom-editor.md)
+ [Création de modèles de modifications à l'aide des outils de ligne de commande](change-templates-tools.md)

# À propos des approbations dans vos modèles de modification
<a name="cm-approvals-templates"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Pour chaque modèle de modification que vous créez, vous pouvez spécifier jusqu'à cinq *niveaux* d'approbation pour les demandes de modification créées à partir de ce modèle. Pour chacun de ces niveaux, vous pouvez désigner jusqu'à cinq *approbateurs* potentiels. Un approbateur n'est pas limité à un seul utilisateur. Vous pouvez également spécifier un groupe IAM ou un rôle IAM comme approbateur individuel. Pour les groupes IAM et les rôles IAM, un ou plusieurs utilisateurs appartenant au groupe ou au rôle peuvent fournir des approbations afin de recevoir le nombre total d'approbations requises pour une demande de modification. Vous pouvez également spécifier un nombre d'approbateurs supérieur à celui requis par votre modèle de modification.

Change Manager prend en charge deux approches principales en matière d'approbations : *les approbations par niveau* et les *approbations par ligne*. Une combinaison des deux types est également possible dans certaines situations. Nous vous recommandons de n'utiliser que des approbations par niveau dans vos opérations Change Manager.

------
#### [ Per-level approvals ]

*Recommandé* À compter du 23 janvier 2023, Change Manager prend en charge les approbations par niveau. Dans ce modèle, pour chaque niveau d'approbation de votre modèle de modifications, vous spécifiez d'abord le nombre d'approbations requises pour ce niveau. Ensuite, vous spécifiez au moins autant d'approbateurs pour le niveau et pouvez en spécifier d'autres. Toutefois, seul le nombre d'approbateurs par niveau que vous spécifiez doit approuver la demande de modifications. Par exemple, vous pouvez spécifier cinq approbateurs, mais demander trois approbations.

Pour des exemples avec la console et JSON de ce type d'approbation, consultez [Exemple de configuration d'approbation par niveau](approval-type-samples.md#per-level-approvals).

------
#### [ Per-line approvals ]

*Pris en charge pour des raisons de rétrocompatibilité*. La version initiale des approbations par ligne uniquement prises en charge par Change Manager. Dans ce modèle, chaque approbateur spécifié pour un niveau d'approbation est représenté par une ligne d'approbation. Chaque approbateur devait approuver une demande de modification pour qu'elle soit approuvée à ce niveau. Avant le 23 janvier 2023, il s'agissait du seul modèle pris en charge pour les approbations. Les modèles de modification créés avant cette date continuent de prendre en charge les approbations par ligne, mais nous vous recommandons d'utiliser plutôt des approbations par niveau.

Pour des exemples avec la console et JSON de ce type d'approbation, consultez [Exemple de configuration d'approbation par ligne](approval-type-samples.md#per-line-approvals).

------
#### [ Combined per-line and per-level approvals ]

*Non recommandé*. Dans la console, l'onglet **Générateur** ne prend plus en charge l'ajout des approbations par ligne. Toutefois, dans certains cas, vous pouvez obtenir des approbations à la fois par ligne et par niveau dans un modèle de modification. Cela peut se produire si vous mettez à jour un modèle de modification créé avant le 23 janvier 2023, ou si vous créez ou mettez à jour un modèle de modification en modifiant manuellement son contenu YAML,

Pour des exemples avec la console et JSON de ce type d'approbation, consultez [Exemple de configuration d'approbation combinée par niveau et par ligne](approval-type-samples.md#combined-approval-levels).

------

**Important**  
Bien qu'il soit possible de créer un modèle de modification combinant des approbations par ligne et par niveau, cette configuration n'est ni recommandée ni nécessaire. Le type d'approbation nécessitant le plus d'approbations (approbations par ligne ou par niveau) est prioritaire. Par exemple :  
Si un modèle de modification spécifie trois approbations par niveau mais cinq approbations par ligne, cinq approbations sont requises.
Si un modèle de modification spécifie quatre approbations par niveau mais deux approbations par ligne, quatre approbations sont requises.

Vous pouvez créer un niveau qui inclut des approbations par ligne et par niveau en modifiant le contenu YAML ou JSON manuellement. L'onglet **Générateur** affiche ensuite des commandes permettant de spécifier le nombre d'approbations requis à la fois pour le niveau et pour les lignes individuelles. Toutefois, les nouveaux niveaux que vous ajoutez à l'aide de la console ne prennent toujours en charge que les configurations d'approbation par niveau.

## Notifications et refus de demandes de modifications
<a name="notifications-and-rejections"></a>

Notifications Amazon SNS  
Lorsqu'une demande de modifications est créée, des notifications sont envoyées aux abonnés de la rubrique Amazon Simple Notification Service (Amazon SNS) qui a été désignée pour les notifications d'approbation à ce niveau.. Vous pouvez spécifier la rubrique de notification dans le modèle de modification ou autoriser l'utilisateur qui crée la demande de modifications à en spécifier une.  
Une fois que le nombre minimum d'approbations requises est reçu à un niveau, des notifications sont envoyées aux approbateurs abonnés à la rubrique Amazon SNS pour le niveau suivant, et ainsi de suite.  
Assurez-vous que les rôles, les groupes et les utilisateurs IAM que vous désignez ensemble fournissent suffisamment d'approbateurs pour atteindre le nombre d'approbations requis que vous spécifiez. Par exemple, si vous ne désignez qu'un seul groupe IAM comme approbateur contenant trois utilisateurs, vous ne pouvez pas spécifier que cinq approbations sont obligatoires à ce niveau, mais seulement trois ou moins.

Refus de demandes de modification  
Quel que soit le nombre de niveaux d'approbation et d'approbateurs que vous spécifiez, un seul refus d'une demande de modification est requis pour empêcher le flux de travail du runbook pour cette demande de se produire.

# Exemples de types d'approbation dans Change Manager
<a name="approval-type-samples"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Les exemples suivants illustrent la vue de la console et le contenu JSON pour les trois types de types d'approbation dans Change Manager.

**Topics**
+ [Exemple de configuration d'approbation par niveau](#per-level-approvals)
+ [Exemple de configuration d'approbation par ligne](#per-line-approvals)
+ [Exemple de configuration d'approbation combinée par niveau et par ligne](#combined-approval-levels)

## Exemple de configuration d'approbation par niveau
<a name="per-level-approvals"></a>

Dans la configuration du niveau d'approbation par niveau présentée dans l'image suivante, trois approbations sont requises. Ces approbations peuvent provenir de n'importe quelle combinaison d'utilisateurs, de groupes et de rôles IAM spécifiés en tant qu'approbateurs. Les approbateurs spécifiés incluent deux utilisateurs IAM (John Stiles et Ana Carolina Silva), un groupe d'utilisateurs composé de trois membres (`GroupOfThree`) et un rôle utilisateur représentant dix utilisateurs (`RoleOfTen`). 

Si les trois utilisateurs du groupe `GroupOfThree` approuvent la demande de modification, celle-ci est approuvée pour ce niveau. Il n'est pas nécessaire de recevoir l'approbation de chaque utilisateur, groupe ou rôle. Le nombre minimum d'approbations peut provenir de n'importe quelle combinaison d'approbateurs spécifiés. Nous recommandons des approbations par niveau pour vos opérations dans Change Manager.

![\[Niveau d'approbation indiquant que trois approbations sont requises et que quatre approbateurs sont spécifiés.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/Add-approval-2.png)


L'exemple suivant illustre une partie du code YAML pour cette configuration. 

**Note**  
Cette version du code YAML inclut une entrée supplémentaire, `MinRequiredApprovals` (commençant par un `M` majuscule). La valeur de cette entrée indique le nombre d'approbations requises parmi tous les réviseurs disponibles. Notez également que la valeur `minRequiredApprovals` (commençant par un `m` minuscule) de chaque approbateur de la liste `Approvers` est de `0` (zéro). Cela indique que l'approbateur peut contribuer aux approbations globales, mais qu'il n'est pas obligé de le faire.

```
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
```

## Exemple de configuration d'approbation par ligne
<a name="per-line-approvals"></a>

Dans la configuration du niveau d'approbation présentée dans l'image suivante, quatre approbateurs sont spécifiés. Il s'agit notamment de deux utilisateurs IAM (John Stiles et Ana Carolina Silva), d'un groupe d'utilisateurs composé de trois membres (`GroupOfThree`) et d'un rôle utilisateur représentant dix utilisateurs (`RoleOfTen`). Les approbations par ligne sont prises en charge pour des raisons de rétrocompatibilité, mais elles ne sont pas recommandées.

![\[Niveau d'approbation indiquant les quatre approbateurs requis par ligne.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/Add-approval-1.png)


Pour que la demande de modifications soit approuvée dans cette configuration d'approbation par ligne, elle doit être approuvée par toutes les lignes d'approbation : John Stiles, Ana Carolina Silva, un membre du groupe `GroupOfThree` et un membre du rôle `RoleOfTen`.

L'exemple suivant illustre une partie du code YAML pour cette configuration.

**Note**  
Notez que la valeur de chaque approbateur `minRequiredApprovals` est de `1`. Cela indique qu'une approbation est requise de la part de chaque approbateur.

```
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
```

## Exemple de configuration d'approbation combinée par niveau et par ligne
<a name="combined-approval-levels"></a>

Dans la configuration d'approbation combinée par niveau et par ligne présentée dans l'image suivante, trois approbations sont spécifiées pour le niveau, mais quatre approbations sont spécifiées pour les approbations par poste. Quel que soit le type d'approbation qui nécessite le plus d'approbations, cette configuration nécessite quatre approbations. L'approbation combinée par niveau et par ligne n'est pas recommandée.

![\[Niveau d'approbation indiquant trois approbations requises pour le niveau mais quatre requises au niveau de la ligne.\]](http://docs.aws.amazon.com/fr_fr/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**
+ [À propos des approbations dans vos modèles de modification](cm-approvals-templates.md)
+ [Création de modèles de modifications à l'aide du générateur](change-templates-custom-builder.md)
+ [Création de modèles de modifications à l'aide de l'éditeur](change-templates-custom-editor.md)
+ [Création de modèles de modifications à l'aide des outils de ligne de commande](change-templates-tools.md)

# Création de modèles de modifications à l'aide du générateur
<a name="change-templates-custom-builder"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

En utilisant le générateur de modèles de modifications dans Change Manager, un outil d’ AWS Systems Manager, vous pouvez configurer le flux de travail de dossier d’exploitation défini dans votre modèle de modification, sans utiliser la syntaxe JSON ou YAML. Après avoir spécifié vos options, le système convertit votre entrée au format YAML, que Systems Manager peut utiliser pour exécuter des flux de travail de runbook.

**Pour créer un modèle de modification à l'aide du générateur**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Sélectionnez **Create template (Créer un modèle)**.

1. Pour **Name (Nom)**, saisissez un nom pour le modèle permettant d'identifier sa fonction, **UpdateEC2LinuxAMI** par exemple.

1. Dans la section **Change template details (Détails du modèle de modification)**, procédez comme suit :
   + Pour **Description**, expliquez brièvement comment et quand le modèle de modification que vous créez doit être utilisé. 

     Cette description permet aux utilisateurs qui créent des demandes de modifications de déterminer s'ils utilisent le bon modèle de modification. Elle aide les personnes qui vérifient les demandes de modifications à comprendre si la demande doit être approuvée.
   + Pour **Change template type (Type de modèle de modification)**, spécifiez si vous créez un modèle de modification standard ou un modèle de modification d'urgence.

     Un modèle de modification d'urgence est utilisé dans les situations où une modification doit être apportée même si les modifications sont bloquées par un événement du calendrier utilisé par AWS Systems Manager Change Calendar. Les demandes de modifications créées à partir d'un modèle de modification d'urgence doivent toujours être approuvées par ses approbateurs désignés, mais les modifications demandées peuvent quand même s'exécuter même lorsque le calendrier est bloqué.
   + Pour **Runbook options (Options de runbook)**, spécifiez les runbooks que les utilisateurs peuvent choisir lorsqu'ils créent une demande de modification. Vous pouvez ajouter un seul ou plusieurs runbooks. En variante, vous pouvez autoriser les demandeurs à spécifier le runbook à utiliser. Dans tous ces cas, la demande de modification ne peut contenir qu'un seul runbook.
   + Pour **Runbook**, sélectionnez les noms et les versions de runbooks que les utilisateurs peuvent choisir pour leurs demandes de modifications. Indépendamment du nombre de runbooks que vous ajoutez au modèle de modification, un seul d'entre eux peut être sélectionné par demande de modification.

     Vous n'avez pas à spécifier de runbook si vous avez précédemment choisi **Any runbook can be used (N'importe quel runbook peut être utilisé)**.
**Astuce**  
Sélectionnez un runbook et sa version, puis sélectionnez **View (Afficher)** pour examiner le contenu du runbook dans l'interface Systems Manager Documents.

1. Dans la section **Template information (Informations sur le modèle)**, sélectionnez Markdown pour saisir des informations pour les utilisateurs qui créent des demandes de modifications à partir de ce modèle de modification. Un ensemble de questions vous est fourni, que vous pouvez inclure pour les utilisateurs qui créent des demandes de modifications. Vous pouvez aussi ajouter d'autres informations et questions à la place. 
**Note**  
Markdown est un langage de balisage qui vous permet d'ajouter des descriptions de style wiki aux documents et des étapes individuelles au sein du document. Pour plus d'informations sur l'utilisation de Markdown, consultez [Utilisation de Markdown dans AWS](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html).

   Nous vous recommandons de répondre aux questions que les utilisateurs se posent à propos de leurs demandes de modifications afin d'aider les approbateurs à décider s'ils acceptent ou non chaque demande de modification, notamment la liste des étapes manuelles à exécuter dans le cadre de la modification et un plan de restauration. 
**Astuce**  
Basculez entre **Hide preview (Masquer l'aperçu)** et **Show preview (Afficher l'aperçu)** pour voir à quoi ressemble votre contenu lorsque vous le créez.

1. Dans la section **Change request approvals (Approbations de demande de modification)**, procédez de la manière suivante :
   + (Facultatif) Si vous voulez autoriser l'exécution automatique des demandes de modifications créées à partir de ce modèle de modification, sans vérification par des approbateurs (à l'exception des événements de gel des modifications), sélectionnez **Enable auto-approval (Activer l'approbation automatique)**.
**Note**  
L'activation des approbations automatiques dans un modèle de modification fournit aux utilisateurs l'*option* de contourner les vérificateurs. Ils peuvent toujours choisir de spécifier des vérificateurs lors de la création d'une demande de modification. Vous devez donc toujours spécifier des options de vérificateurs dans le modèle de modification.
**Important**  
Si vous activez l'approbation automatique d'un modèle de modification, les utilisateurs peuvent utiliser ce modèle pour envoyer des demandes de modifications n'exigeant pas de vérification par des vérificateurs avant leur exécution (à l'exception des approbateurs d'événements de gel des modifications). Si vous voulez empêcher un utilisateur, un groupe ou un rôle IAM particulier d'envoyer des demandes d'approbation automatique, vous pouvez utiliser une condition dans une politique IAM. Pour de plus amples informations, veuillez consulter [Contrôler l'accès aux flux de travail de runbook d'approbation automatique](change-manager-auto-approval-access.md).
   + Dans **Nombre d'approbations requises à ce niveau**, choisissez le nombre d'approbations que les demandes de modifications créées à partir de ce modèle de modification doivent recevoir pour ce niveau.
   + Pour ajouter des approbateurs de premier niveau obligatoires, sélectionnez **Add approver (Ajouter un approbateur)**, puis sélectionnez l'une des options suivantes :
     + **Approbateurs spécifiés par le modèle** : sélectionnez un ou plusieurs utilisateurs, groupes ou rôles Gestion des identités et des accès AWS (IAM) de votre compte pour approuver les demandes de modifications créées à partir de ce modèle de modification. Toutes les demandes de modifications créées avec ce modèle doivent être vérifiées et approuvées par chaque approbateur spécifié.
     + **Approbateurs spécifiés par la demande** : l'utilisateur qui effectue la demande de modification spécifie les vérificateurs au moment de la demande, et il peut choisir parmi une liste d'utilisateurs dans votre compte. 

       Le nombre que vous saisissez dans la colonne **Required (Obligatoire)** détermine le nombre de vérificateurs à spécifier pour une demande de modification utilisant ce modèle de modification. 
**Important**  
Avant le 23 janvier 2023, l'onglet **Générateur** permettait de spécifier uniquement les approbations par ligne. Les nouveaux modèles de modification et les nouveaux niveaux que vous ajoutez à des modèles de modification existants à l'aide de l'onglet **Générateur** ne prennent en charge que les approbations par niveau. Nous vous recommandons de n'utiliser que des approbations par niveau dans vos opérations dans Change Manager.  
Pour de plus amples informations, veuillez consulter [À propos des approbations dans vos modèles de modification](cm-approvals-templates.md).
   + Pour **SNS topic to notify approvers (Rubrique SNS utilisée pour informer les approbateurs)**, procédez comme suit :

     1. Sélectionnez l'une des options suivantes pour spécifier la rubrique Amazon Simple Notification Service (Amazon SNS) de votre compte à utiliser pour envoyer aux approbateurs des notifications indiquant qu'une demande de modification est prête à être vérifiée :
        + **Saisir un Amazon Resource Name (ARN) SNS** : pour **ARN de rubrique**, saisissez l'ARN d'une rubrique Amazon SNS existante. Cette rubrique peut se trouver dans n'importe quel compte de votre organisation.
        + **Sélectionner une rubrique SNS existante** : pour **Rubrique de notification cible**, sélectionnez l'ARN d'une rubrique Amazon SNS existante dans votre Compte AWS actuel. (Cette option n'est pas disponible si vous n'avez pas encore créé de rubrique Amazon SNS dans votre Compte AWS et Région AWS.)
        + **Spécifier la rubrique SNS lors de la création de la demande de modification** : l'utilisateur qui crée une demande de modification peut spécifier la rubrique Amazon SNS à utiliser pour les notifications.
**Note**  
La rubrique Amazon SNS que vous sélectionnez doit être configurée pour spécifier les notifications qu'elle envoie, ainsi que les abonnés auxquels elles sont envoyées. Sa politique d'accès doit également octroyer des autorisations à Systems Manager de sorte que Change Manager puisse envoyer des notifications. Pour plus d'informations, consultez [Configuration des rubriques Amazon SNS pour les notifications Change Manager](change-manager-sns-setup.md). 

     1. Sélectionnez **Ajouter une notification**.

1. (Facultatif) Pour ajouter un niveau supplémentaire d'approbateurs, sélectionnez **Add approval level (Ajouter un niveau d'approbation)** et sélectionnez entre les approbateurs spécifiés par le modèle et les approbateurs spécifiés par la demande pour ce niveau. Ensuite, sélectionnez une rubrique SNS à utiliser pour informer ce niveau d'approbateurs.

   Une fois toutes les approbations reçues par les approbateurs de premier niveau, c'est au tour des approbateurs de deuxième niveau d'être informés, etc.

   Vous pouvez ajouter cinq niveaux d'approbateurs maximum dans chaque modèle. Par exemple, vous pouvez exiger des approbations des utilisateurs occupant des rôles techniques pour le premier niveau, puis des approbations managériales pour le deuxième niveau.

1. Dans la section **Surveillance**, pour qu'une **CloudWatch alarme soit surveillée**, entrez le nom d'une CloudWatch alarme Amazon dans le compte courant afin de suivre la progression des flux de travail Runbook basés sur ce modèle. 
**Astuce**  
Pour créer une nouvelle alarme ou pour revoir les paramètres d'une alarme que vous souhaitez spécifier, choisissez **Ouvrir la CloudWatch console Amazon**. Pour plus d'informations sur l'utilisation des CloudWatch alarmes, consultez la section [Utilisation des CloudWatch alarmes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) dans le *guide de CloudWatch l'utilisateur Amazon*.

1. Dans la section **Notifications**, procédez comme suit :

   1. Sélectionnez l'une des options suivantes pour spécifier la rubrique Amazon SNS de votre compte à utiliser pour envoyer des notifications à propos des demandes de modifications créées à l'aide de ce modèle de modification : 
      + **Saisir un Amazon Resource Name (ARN) SNS** : pour **ARN de rubrique**, saisissez l'ARN d'une rubrique Amazon SNS existante. Cette rubrique peut se trouver dans n'importe quel compte de votre organisation.
      + **Sélectionner une rubrique SNS existante** : pour **Rubrique de notification cible**, sélectionnez l'ARN d'une rubrique Amazon SNS existante dans votre Compte AWS actuel. (Cette option n'est pas disponible si vous n'avez pas encore créé de rubrique Amazon SNS dans votre Compte AWS et Région AWS.)
**Note**  
La rubrique Amazon SNS que vous sélectionnez doit être configurée pour spécifier les notifications qu'elle envoie, ainsi que les abonnés auxquels elles sont envoyées. Sa politique d'accès doit également octroyer des autorisations à Systems Manager de sorte que Change Manager puisse envoyer des notifications. Pour plus d'informations, consultez [Configuration des rubriques Amazon SNS pour les notifications Change Manager](change-manager-sns-setup.md). 

   1. Sélectionnez **Ajouter une notification**.

1. (Facultatif) Dans la section **Balises**, appliquez une ou plusieurs name/value paires de clés de balise au modèle de modification.

   Les balises sont des métadonnées facultatives que vous affectez à une ressource. Les balises vous permettent de classer une ressource de différentes façons, par exemple, par objectif, par propriétaire ou par environnement. Par exemple, vous pouvez étiqueter un modèle de modification afin d'identifier le type de modification qu'il effectue et l'environnement dans lequel il s'exécute. Dans ce cas, vous pouvez spécifier les name/value paires de clés suivantes :
   + `Key=TaskType,Value=InstanceRepair`
   + `Key=Environment,Value=Production`

1. Sélectionnez **Save and preview (Enregistrer et prévisualiser)**.

1. Vérifiez les détails du modèle de modification que vous créez.

   Si vous voulez apporter des modifications au modèle de modification avant de l'envoyer en vérification, sélectionnez **Actions, Edit (Actions, modifier)**.

   Si le contenu du modèle de modification vous convient, sélectionnez **Submit for review (Envoyer en vérification)**. Les utilisateurs de votre organisation ou de votre compte qui ont été spécifiés comme vérificateurs de modèles sous l'onglet **Settings (Paramètres)** dans Change Manager sont informés qu'un nouveau modèle de modification est en attente de vérification. 

   Si une rubrique Amazon SNS a été spécifiée pour les modèles de modifications, des notifications sont envoyées lorsque le modèle de modification est rejeté ou approuvé. Si vous ne recevez pas de notifications liées à ce modèle de modification, vous pouvez revenir à Change Manager plus tard afin de vérifier son statut.

# Création de modèles de modifications à l'aide de l'éditeur
<a name="change-templates-custom-editor"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Suivez les étapes de cette rubrique pour configurer un modèle de modification dans Change Manager, un outil d’ AWS Systems Manager, en saisissant JSON ou YAML au lieu d’utiliser les commandes de la console.

**Pour créer un modèle de modification à l'aide d'Editor**

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Sélectionnez **Create template (Créer un modèle)**.

1. Pour **Name (Nom)**, saisissez un nom pour le modèle permettant d'identifier sa fonction, **RestartEC2LinuxInstance** par exemple.

1. Au-dessus de **Change template details (Détails du modèle de modification)**, sélectionnez **Editor (Éditeur)**.

1. Dans la section **Document editor (Éditeur de document)**, sélectionnez **Edit (Modifier)**, puis saisissez le contenu JSON ou YAML pour votre modèle de modification. 

   Voici un exemple.
**Note**  
Le paramètre `minRequiredApprovals` permet de spécifier combien de réviseurs à un niveau spécifié doivent approuver une demande de modification créée à l'aide de ce modèle.  
Cet exemple illustre deux niveaux d'approbation. Vous pouvez spécifier jusqu'à cinq niveaux d'approbation, mais un seul niveau est requis.   
Au premier niveau, l'utilisateur spécifique « John-Doe » doit approuver chaque demande de modification. Après cela, trois membres du rôle de l'IAM `Admin` doivent approuver la demande de modification.  
Pour plus d'informations sur les modèles de modification, consultez [À propos des approbations dans vos modèles de modification](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. Sélectionnez **Save and preview (Enregistrer et prévisualiser)**.

1. Vérifiez les détails du modèle de modification que vous créez.

   Si vous voulez apporter des modifications au modèle de modification avant de l'envoyer en vérification, sélectionnez **Actions, Edit (Actions, modifier)**.

   Si le contenu du modèle de modification vous convient, sélectionnez **Submit for review (Envoyer en vérification)**. Les utilisateurs de votre organisation ou de votre compte qui ont été spécifiés comme vérificateurs de modèles sous l'onglet **Settings (Paramètres)** dans Change Manager sont informés qu'un nouveau modèle de modification est en attente de vérification. 

   Si une rubrique Amazon Simple Notification Service (Amazon SNS) a été spécifiée pour les modèles de modifications, des notifications sont envoyées lorsque le modèle de modification est rejeté ou approuvé. Si vous ne recevez pas de notifications liées à ce modèle de modification, vous pouvez revenir à Change Manager plus tard afin de vérifier son statut.

# Création de modèles de modifications à l'aide des outils de ligne de commande
<a name="change-templates-tools"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Les procédures suivantes décrivent comment utiliser le AWS Command Line Interface (AWS CLI) (sous LinuxmacOS, ouWindows Server) ou comment AWS Tools for Windows PowerShell créer une demande de modification dans Change Manager un outil dans AWS Systems Manager. 

**Pour créer un modèle de modification**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Créez un fichier JSON sur votre ordinateur local avec un nom tel que `MyChangeTemplate.json`, puis collez le contenu dans votre fichier de modification.
**Note**  
Les modèles de modifications utilisent une version de schéma 0.3 qui n'inclut pas l'intégralité de la prise en charge appliquée aux runbooks Automation.

   Voici un exemple.
**Note**  
Le paramètre `minRequiredApprovals` permet de spécifier combien de réviseurs à un niveau spécifié doivent approuver une demande de modification créée à l'aide de ce modèle.  
Cet exemple illustre deux niveaux d'approbation. Vous pouvez spécifier jusqu'à cinq niveaux d'approbation, mais un seul niveau est requis.   
Au premier niveau, l'utilisateur spécifique « John-Doe » doit approuver chaque demande de modification. Après cela, trois membres du rôle de l'IAM `Admin` doivent approuver la demande de modification.  
Pour plus d'informations sur les modèles de modification, consultez [À propos des approbations dans vos modèles de modification](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. Exécutez la commande suivante pour créer le modèle de modification. 

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

------

   Pour plus d'informations sur les autres options que vous pouvez spécifier, consultez [https://docs.aws.amazon.com/cli/latest/reference/ssm/create-document.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/create-document.html).

   Le système retourne des informations telles que les suivantes.

   ```
   {
      "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":[
   
         ]
      }
   }
   ```

Les utilisateurs de votre organisation ou de votre compte qui ont été spécifiés comme vérificateurs de modèles sous l'onglet **Settings (Paramètres)** dans Change Manager sont informés qu'un nouveau modèle de modification est en attente de vérification. 

Si une rubrique Amazon Simple Notification Service (Amazon SNS) a été spécifiée pour les modèles de modifications, des notifications sont envoyées lorsque le modèle de modification est rejeté ou approuvé. Si vous ne recevez pas de notifications liées à ce modèle de modification, vous pouvez revenir à Change Manager plus tard afin de vérifier son statut.

# Vérification et approbation de modèles de modifications
<a name="change-templates-review"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Si vous êtes spécifié comme vérificateur de modèles de modifications dans Change Manager, un outil d’ AWS Systems Manager, vous êtes informé lorsqu’un nouveau modèle de modification ou une nouvelle version d’un modèle de modification est en attente de vérification. Une rubrique Amazon Simple Notification Service (Amazon SNS) envoie les notifications.

**Note**  
Cette fonctionnalité dépend du fait que votre compte a été, ou non, configuré pour utiliser une rubrique Amazon SNS afin d'envoyer des notifications de vérification de modèle de modification. Pour obtenir des informations sur la spécification d'une rubrique de notification de vérificateur de modèle, veuillez consulter [Tâche 1 : configuration de vérificateurs de gestion des identités des utilisateurs et de modèles Change Manager](change-manager-account-setup.md#cm-configure-account-task-1).

Pour consulter le modèle de modification, suivez le lien figurant dans votre notification AWS Management Console, connectez-vous au et suivez les étapes de cette procédure.

**Pour vérifier et approuver ou rejeter un modèle de modification**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Dans la section **Modèles de modifications** au bas de l'onglet **Présentation**, sélectionnez le nombre dans **Vérification en attente**.

1. Dans la liste **Modèles de modifications**, recherchez et sélectionnez le nom du modèle de modification à vérifier.

1. Sur la page récapitulative, vérifiez le contenu proposé du modèle de modification et effectuez l'une des opérations suivantes :
   + Pour approuver le modèle de modification, ce qui autorise son utilisation dans les demandes de modification, sélectionnez **Approve (Approuver)**.
   + Pour rejeter le modèle de modification, ce qui empêche son utilisation dans les demandes de modification, sélectionnez **Reject (Rejeter)**.

# Suppression de modèles de modification
<a name="change-templates-delete"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Cette rubrique explique comment supprimer les modèles que vous avez créés dans Change Manager, un outil de Systems Manager. Si vous utilisez Change Manager pour une organisation, cette procédure doit être effectuée à partir de votre compte administrateur délégué.

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Sélectionnez l'onglet **Templates (Modèles)** .

1. Sélectionnez le nom du modèle à supprimer.

1. Sélectionnez **Actions, Delete template (Actions, Supprimer le modèle)**.

1. Dans le champ de confirmation, saisissez **DELETE**, puis sélectionnez **Delete (Supprimer)**.

# Utilisation des demandes de modifications
<a name="change-requests"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Une demande de modification est une demande visant Change Manager à exécuter un runbook d'automatisation qui met à jour une ou plusieurs ressources dans votre environnement AWS ou sur site. Une demande de modification est créée à l'aide d'un modèle de modification.

Lorsque vous créez une demande de modification dans Change Manager, un outil d’ AWS Systems Manager, un ou plusieurs approbateurs de votre organisation ou de votre compte doivent vérifier et approuver la demande. Sans les approbations requises, le flux de travail de runbook, qui effectue les modifications demandées, n'est pas autorisé à s'exécuter.

**Topics**
+ [Création de demandes de modifications](change-requests-create.md)
+ [Vérifier et approuver ou rejeter les demandes de modifications](change-requests-review.md)

# Création de demandes de modifications
<a name="change-requests-create"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Lorsque vous créez une demande de modification dans Change Manager, un outil d’ AWS Systems Manager, le modèle de modification que vous sélectionnez effectue généralement les opérations suivantes :
+ Désigne les approbateurs de la demande de modification ou spécifie le nombre d'approbations requises
+ Spécifie la rubrique Amazon Simple Notification Service (Amazon SNS) à utiliser pour informer les approbateurs de votre demande de modification.
+ Spécifie une CloudWatch alarme Amazon pour surveiller le flux de travail du runbook pour la demande de modification
+ Identifie les runbooks Automation que vous pouvez choisir pour effectuer la modification demandée

Dans certains cas, un modèle de modification peut être configuré de sorte à spécifier l'utilisation de votre propre runbook Automation et spécifier qui doit vérifier et approuver la demande.

**Important**  
Si vous utilisez Change Manager au sein d'une organisation, nous vous recommandons de toujours apporter les modifications à partir du compte d'administrateur délégué. Bien qu'il soit possible d'apporter des modifications à partir d'autres comptes de l'organisation, celles-ci ne seront pas signalées ou affichées à partir du compte d'administrateur délégué.

**Topics**
+ [À propos des approbations de demandes de modification](#cm-approvals-requests)
+ [Création de demandes de modifications (console)](#change-requests-create-console)
+ [Création de demandes de modifications (AWS CLI)](#change-requests-create-cli)

## À propos des approbations de demandes de modification
<a name="cm-approvals-requests"></a>

En fonction des exigences spécifiées dans un modèle de modification, les demandes de modification que vous créez à partir de celui-ci peuvent nécessiter des approbations de cinq *niveaux* au maximum avant que le flux de travail de runbook associé à la demande puisse être exécuté. Pour chacun de ces niveaux, le créateur du modèle pouvait spécifier jusqu'à cinq *approbateurs* potentiels. Un approbateur n'est pas limité à un seul utilisateur. Dans ce sens, un approbateur peut également être un groupe IAM ou un rôle IAM. Pour les groupes IAM et les rôles IAM, un ou plusieurs utilisateurs appartenant au groupe ou au rôle peuvent fournir des approbations afin de recevoir le nombre total d'approbations requises pour une demande de modification. Les créateurs de modèles peuvent également spécifier un nombre d'approbateurs supérieur à celui requis par le modèle de modification.

**Flux de travail d'approbation originaux et and/or approbations mises à jour**  
À l'aide de modèles de modification créés avant le 23 janvier 2023, une approbation doit être reçue de chaque approbateur spécifié pour que la demande de modification soit approuvée à ce niveau. Par exemple, dans la configuration du niveau d'approbation présentée dans l'image suivante, quatre approbateurs sont spécifiés. Les approbateurs spécifiés incluent deux utilisateurs (John Stiles et Ana Carolina Silva), un groupe d'utilisateurs composé de trois membres (GroupOfThree) et un rôle d'utilisateur représentant dix utilisateurs (RoleOfTen).

![\[Niveau d'approbation indiquant les quatre approbateurs requis par ligne.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/Add-approval-1.png)


Pour que la demande de modification soit approuvée à ce niveau, elle doit être approuvée par John Stiles, Ana Carolina Silva, un membre du groupe `GroupOfThree` et un membre du rôle `RoleOfTen`.

À l'aide de modèles de modification créés le 23 janvier 2023 ou après cette date, les créateurs de modèles peuvent spécifier le nombre total d'approbations requises pour chaque niveau d'approbation. Ces approbations peuvent provenir de n'importe quelle combinaison d'utilisateurs, de groupes et de rôles qui ont été spécifiés en tant qu'approbateurs. Un modèle de modification peut nécessiter une seule approbation pour un niveau, mais spécifier, par exemple, deux utilisateurs individuels, deux groupes et un rôle en tant qu'approbateurs potentiels.

Par exemple, dans la zone du niveau d'approbation présentée dans l'image suivante, trois approbations sont requises. Les approbateurs spécifiés dans le modèle incluent deux utilisateurs (John Stiles et Ana Carolina Silva), un groupe d'utilisateurs composé de trois membres (`GroupOfThree`) et un rôle utilisateur représentant dix utilisateurs (`RoleOfTen`).

![\[Niveau d'approbation indiquant que trois approbations sont requises et que quatre approbateurs sont spécifiés.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/Add-approval-2.png)


Si les trois utilisateurs du groupe `GroupOfThree` approuvent votre demande de modifications, elle est approuvée pour ce niveau. Il n'est pas nécessaire de recevoir l'approbation de chaque utilisateur, groupe ou rôle. Le nombre minimum d'approbations peut provenir de n'importe quelle combinaison d'approbateurs potentiels.

Lorsque votre demande de modifications est créée, des notifications sont envoyées aux abonnés du sujet Amazon SNS qui a été spécifié pour les notifications d'approbation à ce niveau. Le créateur du modèle de modifications a peut-être spécifié le sujet de notification à utiliser ou vous a autorisé à en spécifier un.

Une fois que le nombre minimum d'approbations requises est reçu à un niveau, des notifications sont envoyées aux approbateurs abonnés à la rubrique Amazon SNS pour le niveau suivant, et ainsi de suite.

Quel que soit le nombre de niveaux d'approbation et d'approbateurs spécifiés, un seul rejet d'une demande de modifications est requis pour empêcher le flux de travail du runbook pour cette demande de se produire.

## Création de demandes de modifications (console)
<a name="change-requests-create-console"></a>

La procédure suivante décrit comment créer une demande de modification à l'aide de la console Systems Manager.

**Pour créer une demande de modification (console)**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Sélectionnez **Créer une demande**.

1. Recherchez et sélectionnez un modèle de modification à utiliser pour cette demande de modification.

1. Sélectionnez **Suivant**.

1. Pour **Nom** de la demande de modification, saisissez un nom permettant d'identifier sa fonction, **UpdateEC2LinuxAMI-us-east-2** par exemple.

1. Pour **Runbook**, sélectionnez le runbook à utiliser pour effectuer la modification demandée.
**Note**  
Si l'option permettant de sélectionner un runbook n'est pas disponible, le créateur du modèle de modification a spécifié le runbook à utiliser.

1. Pour **Informations sur la demande de modification**, utilisez Markdown pour fournir des informations supplémentaires sur la demande de modification afin d'aider les vérificateurs à décider s'ils doivent approuver ou rejeter la demande de modification. Le créateur du modèle que vous utilisez peut avoir fourni des instructions ou des questions pour répondre.
**Note**  
Markdown est un langage de balisage qui vous permet d'ajouter des descriptions de style wiki aux documents et des étapes individuelles au sein du document. Pour plus d'informations sur l'utilisation de Markdown, consultez [Utilisation de Markdown dans AWS](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html).

1. Dans la section **Heure de début du flux de travail**, sélectionnez l'une des options suivantes :
   + **Exécuter l'opération à une heure planifiée** : pour**Heure de début demandée**, saisissez la date et l'heure auxquelles vous proposez d'exécuter le flux de travail de runbook pour cette demande. Pour **Heure de fin estimée**, saisissez la date et l'heure de la fin attendue du flux de travail du runbook. (Cette heure n'est qu'une estimation destinée aux vérificateurs.)
**Astuce**  
Sélectionnez **Afficher le calendrier des modifications** pour vérifier les événements de blocage pendant la durée spécifiée.
   + **Exécuter l'opération dès que possible après l'approbation** : si la demande de modification est approuvée, le flux de travail de runbook s'exécute dès qu'une période sans restriction se présente, pendant laquelle les modifications peuvent être apportées.

1. Dans la section **Change request approvals (Approbations de demande de modification)**, procédez de la manière suivante :

   1. Si des options **Type d'approbation** sont proposées, sélectionnez l'une des options suivantes :
      + **Approbation automatique** : le modèle de modification que vous avez sélectionné est configuré pour autoriser l'exécution automatique des demandes de modifications sans vérification par les approbateurs. Passez à l'étape 11.
**Note**  
Les autorisations spécifiées dans les politiques IAM, qui régissent votre utilisation de Systems Manager, ne doivent pas vous empêcher d'envoyer des demandes de modifications d'approbation automatique pour qu'elles s'exécutent automatiquement.
      + **Spécification des approbateurs** : vous devez ajouter un ou plusieurs utilisateurs, groupes ou rôles IAM pour vérifier et approuver cette demande de modification.
**Note**  
Vous pouvez choisir de spécifier des vérificateurs même si les autorisations spécifiées dans les politiques IAM qui régissent votre utilisation du Systems Manager vous autorisent à exécuter des demandes de modifications d'approbation automatique.

   1. Choisissez **Ajouter un approbateur**, puis sélectionnez un ou plusieurs utilisateurs, groupes ou rôles Gestion des identités et des accès AWS (IAM) dans la liste des réviseurs disponibles.
**Note**  
Un ou plusieurs approbateurs peuvent déjà être spécifiés. Cela signifie que les approbateurs obligatoires sont déjà spécifiés dans le modèle de modification que vous avez sélectionné. Ces approbateurs ne peuvent pas être supprimés de la demande. Si le bouton **Ajouter un approbateur** n'est pas activé, le modèle que vous avez choisi n'autorise pas l'ajout de vérificateurs supplémentaires aux demandes.

      Pour obtenir des informations sur les approbations de demande de modifications, consultez [À propos des approbations de demandes de modification](#cm-approvals-requests).

   1. Sous **Rubrique SNS pour notifier les approbateurs**, sélectionnez l'une des options suivantes pour spécifier la rubrique Amazon SNS de votre compte à utiliser pour envoyer des notifications aux approbateurs que vous ajoutez à cette demande de modification.
**Note**  
Si l'option permettant de spécifier une rubrique Amazon SNS n'est pas disponible, la rubrique Amazon SNS à utiliser est déjà spécifiée dans le modèle de modification que vous avez sélectionné.
      + **Saisir un Amazon Resource Name (ARN) SNS** : pour **ARN de rubrique**, saisissez l'ARN d'une rubrique Amazon SNS existante. Cette rubrique peut se trouver dans n'importe quel compte de votre organisation.
      + **Sélectionner une rubrique SNS existante** : pour **Rubrique de notification cible**, sélectionnez l'ARN d'une rubrique Amazon SNS existante dans votre compte actuel. (Cette option n'est pas disponible si vous n'avez pas encore créé de rubrique Amazon SNS dans votre Compte AWS et Région AWS.)
**Note**  
La rubrique Amazon SNS que vous sélectionnez doit être configurée pour spécifier les notifications qu'elle envoie, ainsi que les abonnés auxquels elles sont envoyées. Sa politique d'accès doit également octroyer des autorisations à Systems Manager de sorte que Change Manager puisse envoyer des notifications. Pour plus d'informations, consultez [Configuration des rubriques Amazon SNS pour les notifications Change Manager](change-manager-sns-setup.md). 

   1. Sélectionnez **Ajouter une notification**.

1. Sélectionnez **Suivant**.

1. Pour **IAM role (Rôle IAM)**, sélectionnez *dans votre compte actuel* un rôle IAM qui dispose des autorisations nécessaires pour exécuter les runbooks spécifiés pour cette demande de modification.

   Ce rôle est également appelé fonction du service, ou rôle d'assumer, pour Automation. Pour plus d'informations sur ce rôle, consultez [Configuration d'Automation](automation-setup.md).

1. Dans la section **Deployment location (Emplacement de déploiement)**, sélectionnez l'une des options suivantes :
**Note**  
Si vous l'utilisez Change Manager avec une Compte AWS seule personne et non avec une organisation configurée dans AWS Organizations, il n'est pas nécessaire de spécifier un lieu de déploiement.
   + **Appliquer la modification à ce compte** : le flux de travail de runbook s'exécute uniquement dans le compte actuel. Pour une organisation, cela désigne le compte d'administrateur délégué.
   + **Appliquer les modifications à plusieurs unités organisationnelles (OUs)** : procédez comme suit : 

     1. Pour **Comptes et unités organisationnelles (OUs)**, entrez l'identifiant d'un compte membre de votre organisation, au format**123456789012**, ou l'identifiant d'une unité organisationnelle, au format**o-o96EXAMPLE**. 

     1. (Facultatif) Pour **Execution role name (Nom du rôle d'exécution)**, saisissez le nom du rôle IAM *dans le compte cible* ou de l'UO qui dispose des autorisations nécessaires pour exécuter les runbooks spécifiés pour cette demande de modification. Tous les comptes de l'UO que vous spécifiez doivent utiliser le même nom pour ce rôle.

     1. (Facultatif) Sélectionnez **Add another target location (Ajouter un emplacement cible)** pour chaque compte ou UO que vous voulez spécifier, et répétez les étapes a et b. 

     1. Pour **Target Région AWS**, sélectionnez la région dans laquelle effectuer le changement, par exemple `Ohio (us-east-2)` pour la région USA Est (Ohio).

     1. Développez **Rate control (Contrôle de débit)**. 

        Pour **Concurrency (Concomitance)**, saisissez un nombre, puis, dans la liste, sélectionnez si cela représente le nombre ou le pourcentage de comptes dans lesquels le flux de travail de runbook peut s'exécuter simultanément. 

        Pour **Error threshold (Seuil d'erreur)**, saisissez un nombre, puis, dans la liste, sélectionnez si cela représente le nombre ou le pourcentage de comptes dans lesquels le flux de travail de runbook peut échouer avant l'arrêt de l'opération. 

1. Dans la section **Deployment targets (Cibles de déploiement)**, procédez comme suit :

   1. Sélectionnez l'une des méthodes suivantes :
      + **Ressource unique** : la modification doit être apportée pour une seule ressource. Par exemple, un seul nœud ou une seule AMI (Amazon Machine Image), en fonction de l'opération définie dans les runbooks pour cette demande de modification.
      + **Plusieurs ressources** : pour **Parameter (Paramètre)**, sélectionnez parmi les paramètres disponibles dans les runbooks pour cette demande de modification. Cette sélection reflète le type de ressource mise à jour.

        Par exemple, si le runbook pour cette demande de modification est `AWS-RetartEC2Instance`, vous pouvez choisir `InstanceId`, puis définir les instances qui sont mises à jour en sélectionnant l'une des options suivantes :
        + **Spécifier des balises** : saisissez une paire clé-valeur avec laquelle toutes les ressources à mettre à jour sont balisées.
        + **Choisir un groupe de ressources** : sélectionnez le nom du groupe de ressources auquel appartiennent toutes les ressources à mettre à jour.
        + **Spécifier les valeurs des paramètres** : identifiez les ressources à mettre à jour dans la section **Runbook parameters (Paramètres du Runbook)**.
        + **Target all instances (Cibler toutes les instances)** : apportez la modification sur tous les nœuds gérés des emplacements cibles.

   1. Si vous avez choisi **Plusieurs ressources**, développez **Contrôle de débit**. 

      Pour **Concurrency (Concomitance)**, saisissez un nombre, puis, dans la liste, sélectionnez si cela représente le nombre ou le pourcentage de comptes que le flux de travail de runbook peut mettre à jour simultanément. 

      Pour **Error threshold (Seuil d'erreur)**, saisissez un nombre, puis, dans la liste, sélectionnez si cela représente le nombre ou le pourcentage de cibles dans lesquelles la mise à jour peut échouer avant l'arrêt de l'opération. 

1. Si vous avez choisi **Spécifier les valeurs des paramètres** pour mettre à jour plusieurs ressources à l'étape précédente : dans la section **Paramètres du Runbook**, spécifiez des valeurs pour les paramètres d'entrée requis. Les valeurs de paramètre que vous devez fournir sont basées sur le contenu des runbooks Automation associés au modèle de modification que vous avez choisi. 

   Par exemple, si le modèle de modification utilise le `AWS-RetartEC2Instance` runbook, vous devez saisir une ou plusieurs instances IDs pour le **InstanceId**paramètre. Sinon, sélectionnez **Show interactive instance picker (Afficher le sélecteur d'instance interactif)** et sélectionnez les instances disponibles une par une. 

1. Sélectionnez **Suivant**.

1. Sur la page **Review and submit (Vérifier et envoyer)**, re-vérifiez les ressources et les options que vous avez spécifiées pour cette demande de modification.

   Sélectionnez le bouton **Edit (Modifier)** pour la ou les sections auxquelles vous voulez apporter des modifications.

   Lorsque vous êtes satisfait des détails de la demande de modification, sélectionnez **Submit for approval (Envoyer pour approbation)**.

Si une rubrique Amazon SNS a été spécifiée pour le modèle des modifications que vous avez choisi pour la demande, des notifications sont envoyées lorsque la demande est rejetée ou approuvée. Si vous ne recevez pas de notifications pour la demande, vous pouvez revenir à Change Manager pour vérifier le statut de votre demande. 

## Création de demandes de modifications (AWS CLI)
<a name="change-requests-create-cli"></a>

Vous pouvez créer une demande de modification à l'aide de AWS Command Line Interface (AWS CLI) en spécifiant les options et les paramètres de la demande de modification dans un fichier JSON et en utilisant l'`--cli-input-json`option pour l'inclure dans votre commande.

**Pour créer une demande de modification (AWS CLI)**

1. Installez et configurez le AWS CLI ou le Outils AWS pour PowerShell, si ce n'est pas déjà fait.

   Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d' Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

1. Créez un fichier JSON sur votre ordinateur local avec un nom tel que `MyChangeRequest.json`, puis collez le contenu suivant dans le fichier.

   Remplacez *placeholders* par des valeurs pour votre demande de modification.
**Note**  
Cet exemple JSON crée une demande de modification en utilisant le modèle de modification `AWS-HelloWorldChangeTemplate` et le runbook `AWS-HelloWorld`. Pour vous aider à adapter cet exemple à vos propres demandes de modifications, consultez [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartChangeRequestExecution.html) dans la *Référence d'API AWS Systems Manager * pour obtenir des informations sur les paramètres disponibles  
Pour obtenir des informations sur les approbations de demande de modifications, consultez [À propos des approbations de demandes de modification](#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. Dans le répertoire où vous avez créé le fichier JSON, exécutez la commande suivante.

   ```
   aws ssm start-change-request-execution --cli-input-json file://MyChangeRequest.json
   ```

   Le système retourne des informations telles que les suivantes.

   ```
   {
       "AutomationExecutionId": "b3c1357a-5756-4839-8617-2d2a4EXAMPLE"
   }
   ```

# Vérifier et approuver ou rejeter les demandes de modifications
<a name="change-requests-review"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Si vous êtes spécifié en tant que vérificateur pour une demande de modification dans Change Manager, un outil d’ AWS Systems Manager, vous êtes informé par une rubrique Amazon Simple Notification Service (Amazon SNS) lorsqu’une nouvelle demande de modification est en attente de vérification. 

**Note**  
Cette fonctionnalité dépend du fait qu'un Amazon SNS a été spécifié, ou non, dans le modèle de modification pour l'envoi de notifications de vérification. Pour plus d'informations, consultez [Configuration des rubriques Amazon SNS pour les notifications Change Manager](change-manager-sns-setup.md). 

Pour consulter la demande de modification, vous pouvez suivre le lien figurant dans votre notification, ou vous connecter AWS Management Console directement au et suivre les étapes de cette procédure.

**Note**  
Si une rubrique Amazon SNS est affectée aux vérificateurs dans un modèle de modification, des notifications sont envoyées aux abonnés de la rubrique lorsque la demande de modification change de statut.  
Pour obtenir des informations sur les approbations de demande de modifications, consultez [À propos des approbations de demandes de modification](change-requests-create.md#cm-approvals-requests).

## Vérifier et approuver ou rejeter les demandes de modifications (console)
<a name="change-requests-review-console"></a>

Les procédures suivantes décrivent comment utiliser la console Systems Manager pour examiner, approuver ou rejeter une demande de modification.

**Pour la vérification, l’approbation ou le rejet d’une seule demande de modification**

1. Ouvrez le lien contenu dans la notification par e-mail que vous avez reçue et connectez-vous au AWS Management Console, qui vous redirige vers la demande de modification à examiner.

1. Sur la page récapitulative, vérifiez le contenu proposé de la demande de modification.

   Pour approuver la demande de modification, sélectionnez **Approve (Approuver)**. Dans la boîte de dialogue, fournissez d'éventuels commentaires à ajouter pour cette approbation, puis sélectionnez **Approve (Approuver)**. Le flux de travail de runbook représenté par cette demande commence à s'exécuter, soit lorsqu'il est planifié, soit dès que les modifications ne sont pas bloquées par aucune restriction.

   -ou-

   Pour rejeter la demande de modification, sélectionnez **Reject (Rejeter)**. Dans la boîte de dialogue, fournissez d'éventuels commentaires à ajouter pour ce rejet, puis sélectionnez **Reject (Rejeter)**.

**Pour la vérification, l’approbation ou le rejet de plusieurs demandes de modification**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Cliquez sur l'onglet **Approvals** (Approbations).

1. (Facultatif) Consultez les détails des demandes en attente d’approbation en choisissant le nom de chaque demande, puis revenez à l’onglet **Approvals** (Approbations).

1. Cochez la case correspondant à demande de modification que vous souhaitez approuver.

   -ou-

   Cochez la case correspondant à demande de modification que vous souhaitez rejeter.

1. Dans la boîte de dialogue, saisissez d'éventuels commentaires à ajouter pour l’approbation ou le rejet.

1. Selon que vous décision d’approuver ou de rejeter les demandes de modification sélectionnées, choisissez **Approver** (Approuver) ou **Reject** (Rejeter).

## Vérifier et approuver ou rejeter les demandes de modifications (ligne de commande)
<a name="change-requests-review-command-line"></a>

La procédure suivante décrit comment utiliser le AWS Command Line Interface (AWS CLI) (sous LinuxmacOS, ouWindows Server) pour examiner et approuver ou rejeter une demande de modification.

**Pour vérifier et approuver ou rejeter une demande de modification**

1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

   Pour de plus amples informations, consultez [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Créez un fichier JSON sur votre machine locale qui spécifie les paramètres de votre AWS CLI appel. 

   ```
   {
     "OpsItemFilters": 
     [
       {
         "Key": "OpsItemType",
         "Values": ["/aws/changerequest"],
         "Operator": "Equal"
       }
     ],
     "MaxResults": number
   }
   ```

   Vous pouvez filtrer les résultats pour un approbateur spécifique en spécifiant l'Amazon Resource Name (ARN) de cet approbateur dans le fichier JSON. Voici un exemple.

   ```
   {
     "OpsItemFilters": 
     [
       {
         "Key": "OpsItemType",
         "Values": ["/aws/changerequest"],
         "Operator": "Equal"
       },
       {
         "Key": "ChangeRequestByApproverArn",
         "Values": ["arn:aws:iam::account-id:user/user-name"],
         "Operator": "Equal"
       }
     ],
     "MaxResults": number
   }
   ```

1. Exécutez la commande suivante pour afficher le nombre maximal de demandes de modifications que vous avez spécifié dans le fichier 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. Exécutez la commande suivante pour approuver ou rejeter une demande de modification.

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

------

   Si une rubrique Amazon SNS a été spécifiée pour le modèle des modifications que vous avez choisi pour la demande, des notifications sont envoyées lorsque la demande est rejetée ou approuvée. Si vous ne recevez pas de notifications pour la demande, vous pouvez revenir à Change Manager pour vérifier le statut de votre demande. Pour plus d'informations sur les autres options disponibles lors de l'utilisation de cette commande, consultez [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) dans la section AWS Systems Manager de la *Référence des commandes AWS CLI *.

# Vérifier les détails, les tâches et les échéances d'une demande de modification (console)
<a name="reviewing-changes"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Vous pouvez afficher des informations sur une demande de modification, y compris les demandes pour lesquelles des modifications ont déjà été traitées, dans le tableau de bord de Change Manager, un outil d’ AWS Systems Manager. Ces détails incluent un lien vers l'opération Automation, qui exécute les runbooks effectuant la modification. Un ID d'exécution Automation est généré lors de la création de la demande, mais le processus ne s'exécute pas tant que toutes les approbations n'ont pas été données et que plus aucune restriction n'est en place pour bloquer la modification.

**Pour vérifier les détails, les tâches et les échéances d'une demande de modification (console)**

1. Dans le panneau de navigation, sélectionnez **Change Manager**.

1. Sélectionnez l'onglet **Requests (Demandes)**.

1. Dans la section **Change requests (Demandes de modifications)**, recherchez la demande de modification à vérifier. 

   Vous pouvez utiliser les options **Create date range (Créer une plage de dates)** pour limiter les résultats à une période spécifique.

   Vous pouvez filtrer les demandes sur la base des propriétés suivantes :
   + `Status`
   + `Request ID`
   + `Approver`
   + `Requester`

   Par exemple, pour afficher des détails sur toutes les demandes de modifications qui se sont achevées avec succès au cours des dernières 24 heures, procédez comme suit :

   1. Pour **Créer une plage de dates**, sélectionnez **1d**.

   1. Dans le champ de recherche, sélectionnez **Status, CompletedWithSuccess**. 

   1. Dans les résultats, sélectionnez le nom de la demande de modification terminée avec succès pour vérifier les résultats.

1. Affichez les informations sur la demande de modification dans les onglets suivants :
   + **Détails de la demande** : affiche les détails de base sur la demande de modification, notamment le demandeur, le modèle de modification et les runbooks Automation sélectionnés pour la modification. Vous pouvez également suivre un lien vers les détails de l'opération d'automatisation et consulter les informations relatives aux paramètres du runbook spécifiés dans la demande, aux CloudWatch alarmes Amazon attribuées à la demande de modification, ainsi qu'aux approbations et commentaires fournis pour la demande.
   + **Tâche** : affiche des informations sur la tâche dans la modification, notamment le statut de la tâche pour les demandes de modifications terminées, les ressources ciblées, les étapes des runbooks Automation associés, ainsi que les détails de concomitance et de seuils d'erreur.
   + **Chronologie** : affiche un récapitulatif de tous les événements associés à la demande de modification, répertoriés par date et heure. Le récapitulatif indique la date de création de la demande, les actions des approbateurs affectés, une note sur la date de l'exécution planifiée des demandes de modifications approuvées, les détails du flux de travail de runbook et les changements de statut pour le processus de modification dans son ensemble et chaque étape du runbook.
   + **Associated events** (Événements associés) : affichez des détails vérifiables sur les demandes de modification enregistrées dans [AWS CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html). Les détails incluent les actions d'API qui ont été exécutées, les paramètres de demande inclus pour ces actions, le compte utilisateur qui a exécuté l'action, les ressources mises à jour au cours du processus, etc.

     Lorsque vous activez CloudTrail le suivi des événements de CloudTrail Lake, Lake crée un magasin de données d'événements pour les événements liés à vos demandes de modification. Les détails de l'événement sont disponibles pour le compte ou l'organisation où la demande de modification a été exécutée. Vous pouvez activer le suivi des événements CloudTrail Lake à partir de toute demande de modification concernant votre compte ou votre organisation. Pour plus d'informations sur l'activation de l'intégration de CloudTrail Lake et la création d'un magasin de données d'événements, consultez[Surveillance de vos événements de demande de modification](monitoring-change-request-events.md).
**Note**  
L'utilisation du **CloudTrail lac est payante**. Pour de plus amples informations, veuillez consulter [Tarification AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/).

# Affichage du nombre agrégé de demandes de modifications (ligne de commande)
<a name="change-requests-review-aggregate-command-line"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Vous pouvez consulter le nombre agrégé de demandes Change Manager de modification dans un outil en AWS Systems Manager utilisant l'opération [GetOpsSummary](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetOpsSummary.html)API. Cette opération d'API peut renvoyer des dénombrements pour un seul Compte AWS compte Région AWS ou pour plusieurs comptes et plusieurs régions.

**Note**  
Si vous souhaitez consulter le nombre agrégé de demandes de modification pour plusieurs Comptes AWS et plusieurs Régions AWS, vous devez configurer une synchronisation des données de ressources. Pour de plus amples informations, veuillez consulter [Création d’une synchronisation des données de ressources pour l’inventaire](inventory-create-resource-data-sync.md).

La procédure suivante décrit comment utiliser le AWS Command Line Interface (AWS CLI) (sous LinuxmacOS, ouWindows Server) pour afficher le nombre agrégé de demandes de modification. 

**Pour afficher les nombres agrégés de demandes de modifications**

1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

   Pour de plus amples informations, consultez [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Exécutez une des commandes suivantes : 

   **Compte et région uniques**

   Cette commande renvoie le décompte de toutes les demandes de modification Région AWS pour Compte AWS et pour lesquelles votre AWS CLI session est configurée.

------
#### [ 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
   ```

------

   L'appel renvoie des informations telles que les suivantes.

   ```
   {
       "Entities": [
           {
               "Data": {
                   "AWS:OpsItem": {
                       "Content": [
                           {
                               "Count": "38",
                               "Status": "Open"
                           }
                       ]
                   }
               }
           }
       ]
   }
   ```

   **Plusieurs comptes et and/or régions**

   Cette commande renvoie le décompte de toutes les demandes de modification pour Comptes AWS et Régions AWS spécifiées dans la synchronisation des données de ressource.

------
#### [ 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
   ```

------

   L'appel renvoie des informations telles que les suivantes.

   ```
   {
       "Entities": [
           {
               "Data": {
                   "AWS:OpsItem": {
                       "Content": [
                           {
                               "Count": "43",
                               "Status": "Open"
                           },
                           {
                               "Count": "2",
                               "Status": "Resolved"
                           }
                       ]
                   }
               }
           }
       ]
   }
   ```

   **Plusieurs comptes et une région spécifique**

   Cette commande renvoie un nombre de toutes les demandes de modifications pour les Comptes AWS spécifiés dans la synchronisation des données de ressources. Elle renvoie toutefois uniquement les données de la région spécifiée dans la commande.

------
#### [ 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
   ```

------

   **Comptes et régions multiples avec une sortie groupée par région**

   Cette commande renvoie le décompte de toutes les demandes de modification pour Comptes AWS et Régions AWS spécifiées dans la synchronisation des données de ressource. La sortie affiche les informations de comptage par région.

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

------

   L'appel renvoie des informations telles que les suivantes.

   ```
   {
           "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"
                               }
                           ]
                       }
                   }
               }
           ]
       }
   ```

   **Comptes et régions multiples avec une sortie groupée par comptes et par régions**

   Cette commande renvoie le décompte de toutes les demandes de modification pour Comptes AWS et Régions AWS spécifiées dans la synchronisation des données de ressource. La sortie regroupe les informations de nombres, par comptes et par régions.

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

------

   L'appel renvoie des informations telles que les suivantes.

   ```
   {
       "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"
                           }
                       ]
                   }
               }
           }
       ]
   }
   ```

# Audit et journalisation de l'activité de Change Manager
<a name="change-manager-auditing"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Vous pouvez auditer l'activité dans Change Manager un outil AWS Systems Manager en utilisant Amazon CloudWatch et des AWS CloudTrail alarmes.

Pour de plus amples informations sur les options d'audit et de journalisation de Systems Manager, veuillez consulter [Connexion et surveillance AWS Systems Manager](monitoring.md).

## Change ManagerActivité d'audit à l'aide d' CloudWatch alarmes
<a name="change-manager-logging-auditing-alarms"></a>

Vous pouvez configurer et attribuer une CloudWatch alarme à un modèle de modification. Si les conditions définies dans l'alarme sont remplies, les actions spécifiées pour l'alarme sont effectuées. Dans la configuration de l'alarme, vous pouvez spécifier une rubrique Amazon Simple Notification Service (Amazon SNS), qui enverra une notification lorsqu'une condition d'alarme sera remplie. 

Pour de plus amples informations sur la création d'un modèle Change Manager, veuillez consulter [Utilisation des modèles de modification](change-templates.md).

Pour plus d'informations sur la création d' CloudWatch alarmes, consultez la section [Utilisation des CloudWatch alarmes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) dans le *guide de CloudWatch l'utilisateur Amazon*.

## Change ManagerActivité d'audit à l'aide de CloudTrail
<a name="change-manager-logging-auditing-cloudtrail"></a>

CloudTrail capture les appels d'API effectués dans la console Systems Manager, le AWS Command Line Interface (AWS CLI) et le SDK Systems Manager. Vous pouvez consulter les informations dans la CloudTrail console ou dans un compartiment Amazon Simple Storage Service (Amazon S3), où elles sont stockées. Un compartiment est utilisé pour tous les CloudTrail journaux de votre compte.

Les journaux d'actions Change Manager montrent la création de document de modèle de modification, les approbations et les refus des modèles de modifications et des demandes de modifications, l'activité générée par les runbooks Automation, etc. Pour plus d'informations sur l'affichage et l'utilisation des CloudTrail journaux d'activité de Systems Manager, consultez[Journalisation des appels d' AWS Systems Manager API avec AWS CloudTrail](monitoring-cloudtrail-logs.md).

# Résolution des problèmes de Change Manager
<a name="change-manager-troubleshooting"></a>

**Change Managerchangement de disponibilité**  
AWS Systems ManagerChange Managerne sera plus ouvert aux nouveaux clients à compter du 7 novembre 2025. Si vous souhaitez l'utiliserChange Manager, inscrivez-vous avant cette date. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [AWS Systems ManagerChange Managerla section Modification de la disponibilité](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html). 

Utilisez les informations suivantes pour résoudre les problèmes liés à Change Manager, un outil de AWS Systems Manager.

**Topics**
+ [Erreur « Groupe *\$1GUID\$1* introuvable » lors de l'approbation des demandes de modification lors de l'utilisation d'Active Directory (groupes)](#change-manager-troubleshooting-sso)

## Erreur « Groupe *\$1GUID\$1* introuvable » lors de l'approbation des demandes de modification lors de l'utilisation d'Active Directory (groupes)
<a name="change-manager-troubleshooting-sso"></a>

**Problème** : lorsque AWS IAM Identity Center (IAM Identity Center) est utilisé pour la gestion de l'identité des utilisateurs, un membre d'un groupe Active Directory auquel des autorisations d'approbation ont été accordées Change Manager reçoit un message d'erreur « non autorisé » ou « groupe introuvable ».
+ **Solution** : Lorsque vous sélectionnez des groupes Active Directory dans IAM Identity Center pour y accéder AWS Management Console, le système planifie une synchronisation périodique qui copie les informations de ces groupes Active Directory dans IAM Identity Center. Ce processus doit se terminer avant que les utilisateurs autorisés via l'appartenance à un groupe Active Directory puissent approuver une demande. Pour plus d'informations, consultez [Connexion à votre annuaire Microsoft AD](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-ad.html) dans le *Guide de l'utilisateur AWS IAM Identity Center *.

# AWS Systems Manager Documents
<a name="documents"></a>

Un AWS Systems Manager document (document SSM) définit les actions que Systems Manager exécute sur vos instances gérées. Systems Manager inclut plus d'une centaine de documents préconfigurés que vous pouvez utiliser en spécifiant des paramètres lors de l'exécution. Vous pouvez trouver des documents préconfigurés dans la console Documents de Systems Manager en sélectionnant l'onglet **Propriété d'Amazon** ou en spécifiant Amazon comme filtre `Owner` lors de l'appel de l'opération d'API `ListDocuments`. Les documents utilisent la notation d' JavaScript objet (JSON) ou YAML, et ils incluent des étapes et des paramètres que vous spécifiez. 

Pour une sécurité renforcée, depuis le 14 juillet 2025, les documents SSM prennent en charge l’interpolation des variables d’environnement lors du traitement des paramètres. Cette fonctionnalité, disponible dans la version 2.2 du schéma et dans SSM Agent version 3.3.2746.0 ou ultérieure, permet de prévenir les attaques par injection de commandes.

Pour vos premiers pas dans SSM documents, ouvrez [Systems Manager console](https://console.aws.amazon.com/systems-manager/documents). Dans le panneau de navigation, cliquez sur **Documents**.

**Important**  
Dans Systems Manager, un document SSM *appartenant à Amazon* est un document créé et géré par Amazon Web Services lui-même. Les documents *appartenant à Amazon* comprennent un préfixe tel que `AWS-*` dans le nom du document. Le propriétaire du document est considéré comme Amazon, et non comme un compte utilisateur spécifique au sein de celui-ci AWS. Ces documents sont accessibles à tous.

## En quoi l’outil Documents peut-il être utile à mon organisation ?
<a name="ssm-docs-benefits"></a>

Documents, un outil de AWS Systems Manager, offre les avantages suivants :
+ **Catégories de documents**

  Pour vous aider à trouver les documents dont vous avez besoin, sélectionnez une catégorie en fonction du type de document que vous recherchez. Pour élargir votre recherche, vous pouvez choisir plusieurs catégories du même type de document. Le choix de catégories de différents types de documents n'est pas pris en charge. Les catégories ne sont prises en charge que pour les documents appartenant à Amazon.
+  **Version de document** 

  Vous pouvez créer et enregistrer différentes versions des documents. Vous pouvez ensuite spécifier une version par défaut pour chaque document. La version par défaut d'un document peut être mise à jour vers une version plus récente ou rétablie vers une version plus ancienne du document. Lorsque vous modifiez le contenu d'un document, Systems Manager incrémente automatiquement la version du document. Vous pouvez récupérer ou utiliser n'importe quelle version d'un document en spécifiant la version du document dans la console, les commandes AWS Command Line Interface (AWS CLI) ou les appels d'API.
+  **Personnaliser les documents selon vos besoins** 

  Si vous souhaitez personnaliser les étapes et les actions dans un document, vous pouvez créer votre propre document. Le système enregistre le document Compte AWS dans le fichier dans Région AWS lequel vous le créez. Pour de plus amples informations sur la création d'un document SSM, veuillez consulter [Création du contenu du document SSM](documents-creating-content.md).
+  **Baliser les documents** 

  Vous pouvez baliser vos documents pour vous aider à identifier rapidement un ou plusieurs documents en fonction des balises que vous lui avez affectées. Par exemple, vous pouvez baliser des documents pour des environnements, des services, des utilisateurs, des groupes ou des périodes spécifiques. Vous pouvez également restreindre l'accès aux documents en créant une politique Gestion des identités et des accès AWS (IAM) qui spécifie les balises auxquelles un utilisateur ou un groupe peut accéder.
+  **Partager les documents** 

  Vous pouvez rendre vos documents publics ou les partager avec des Comptes AWS spécifiques de la même Région AWS. Le partage des documents entre plusieurs comptes peut être utile si, par exemple, vous souhaitez que toutes les instances Amazon Elastic Compute Cloud (Amazon EC2) que vous fournissez aux clients ou aux employés aient la même configuration. En plus de maintenir des applications ou des correctifs sur les instances à jour, il se peut que vous souhaitiez limiter les instances du client à partir de certaines activités. Il est également possible de s'assurer que les employés utilisés par des comptes au sein de toute votre organisation aient accès à certaines ressources internes. Pour de plus amples informations, veuillez consulter [Partage de documents SSM](documents-ssm-sharing.md).

## Qui devrait utiliser les documents ?
<a name="documents-who"></a>
+ Tout AWS client qui souhaite utiliser les outils de Systems Manager pour améliorer son efficacité opérationnelle à grande échelle, réduire les erreurs associées aux interventions manuelles et réduire le temps nécessaire à la résolution des problèmes courants.
+ Experts en infrastructure qui souhaitent automatiser les tâches de déploiement et de configuration.
+ Les administrateurs qui souhaitent résoudre de manière fiable les problèmes courants, améliorer l'efficacité du dépannage et réduire les opérations répétitives.
+ Les utilisateurs qui souhaitent automatiser une tâche qu'ils exécutent normalement manuellement.

## Quels sont les types de documents SSM ?
<a name="what-are-document-types"></a>

Le tableau suivant décrit les différents types de documents SSM et leur utilisation.


****  

| Type | A utiliser avec | Détails | 
| --- | --- | --- | 
|  ApplicationConfiguration ApplicationConfigurationSchema  |   [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html)   |  AWS AppConfig, un outil de AWS Systems Manager, vous permet de créer, de gérer et de déployer rapidement des configurations d'applications. Vous pouvez stocker des données de configuration dans un document SSM en créant un document qui utilise le type de document `ApplicationConfiguration`. Pour plus d'informations, consultez [Configurations libres](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-configuration-and-profile.html#free-form-configurations) dans le *Guide de l'utilisateur AWS AppConfig *. Si vous créez une configuration dans un document SSM, vous devez spécifier un schéma JSON correspondant. Le schéma utilise le type de document `ApplicationConfigurationSchema` et, comme un ensemble de règles, définit les propriétés autorisées pour chaque paramètre de configuration de l'application. Pour de plus amples informations, veuillez consulter [À propos des validateurs](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-configuration-and-profile-validators.html) dans le *Guide de l'utilisateur AWS AppConfig *.  | 
|  Runbook Automation  |   [Automation](systems-manager-automation.md)   [State Manager](systems-manager-state.md)   [Maintenance Windows](maintenance-windows.md)   |  Utilisez des runbooks Automation lors de l'exécution de tâches de maintenance et de déploiement courantes, telles que la création ou la mise à jour d'une Amazon Machine Image (AMI). State Manager utilise des runbooks Automation pour appliquer une configuration. Ces actions peuvent être exécutées sur une ou plusieurs cibles lors du cycle de vie d'une instance. Maintenance Windows utilise des runbooks Automation pour effectuer les tâches courantes de maintenance et de déploiement en fonction de la planification spécifiée. Tous les runbooks Automation pris en charge sur les systèmes d'exploitation Linux sont également pris en charge sur les instances EC2 pour macOS.  | 
|  Document Change Calendar  |   [Change Calendar](systems-manager-change-calendar.md)   |  Change Calendar, un outil dans AWS Systems Manager, utilise le type de `ChangeCalendar` document. Un document Change Calendar stocke une entrée de calendrier et les événements associés qui peuvent autoriser ou empêcher les actions Automation de modifier votre environnement. Dans Change Calendar, un document stocke les données [iCalendar 2.0](https://icalendar.org/) au format texte brut. Change Calendar n'est pas pris en charge sur les instances EC2 pour macOS.  | 
|  AWS CloudFormation modèle  |   [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)   |  AWS CloudFormation les modèles décrivent les ressources que vous souhaitez mettre à disposition dans vos CloudFormation piles. En stockant les CloudFormation modèles sous forme de documents Systems Manager, vous pouvez bénéficier des fonctionnalités des documents de Systems Manager. Cela inclut la création et la comparaison de plusieurs versions de votre modèle, ainsi que le partage de votre modèle avec d'autres comptes dans la même Région AWS. Vous pouvez créer et modifier des CloudFormation modèles et des piles à l'aide Application Manager d'un outil dans Systems Manager. Pour de plus amples informations, veuillez consulter [Utilisation de CloudFormation modèles et de piles dans Application Manager](application-manager-working-stacks.md).  | 
|  Document de commande  |   [Run Command](run-command.md)   [State Manager](systems-manager-state.md)   [Maintenance Windows](maintenance-windows.md)   |  Run Command, un outil dans AWS Systems Manager, utilise des documents de commande pour exécuter des commandes. State Manager, un outil dans AWS Systems Manager, utilise des documents de commande pour appliquer une configuration. Ces actions peuvent être exécutées sur une ou plusieurs cibles à tout moment du cycle de vie d'une instance. Maintenance Windows, un outil dans AWS Systems Manager, utilise les documents de commande pour appliquer une configuration en fonction du calendrier spécifié. La plupart des documents Command sont pris en charge sur tous les systèmes d'exploitation Linux et Windows Server pris en charge par Systems Manager. Les documents Command suivants sont pris en charge sur les instances EC2 pour macOS : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/documents.html)  | 
|  AWS Config modèle de pack de conformité  |   [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)   |  AWS Config les modèles de pack de conformité sont des documents au format YAML utilisés pour créer des packs de conformité contenant la liste des règles AWS Config gérées ou personnalisées et des actions correctives. Pour plus d'informations, consultez [Pack de conformité](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html).  | 
|  Document de package  |   [Distributor](distributor.md)   |  Dans Distributor, un outil d’ AWS Systems Manager, un package est représenté par un document SSM. Un document de package inclut des fichiers d'archive ZIP attachés qui contiennent des logiciels ou des ressources à installer sur les instances gérées. La création d'un package dans Distributor crée le document de package. Distributor n'est pas pris en charge sur les instances gérées Oracle Linux et macOS.  | 
|  Document de politique  |   [State Manager](systems-manager-state.md)   |  Inventory, un outil de AWS Systems Manager, utilise le document `AWS-GatherSoftwareInventory` de politique avec une State Manager association pour collecter des données d'inventaire à partir d'instances gérées. Lors de la création de vos propres documents SSM, les runbooks Automation et les documents Command constituent la méthode privilégiée pour appliquer une politique à une instance gérée. Systems Manager Inventory et le document de politique `AWS-GatherSoftwareInventory` sont pris en charge sur tous les systèmes d'exploitation pris en charge par Systems Manager.  | 
|  Modèle d'analyse post-incident  |   [Analyse post-incident d'Incident Manager](https://docs.aws.amazon.com/incident-manager/latest/userguide/analysis.html)   |  Incident Manager utilise le modèle d'analyse post-incident pour créer une analyse basée sur les meilleures pratiques de gestion des AWS opérations. Utilisez le modèle pour créer une analyse qui aidera votre équipe à identifier les améliorations à apporter à votre réponse aux incidents.   | 
|  Document de session  |   [Session Manager](session-manager.md)   |  Session Manager, un outil de AWS Systems Manager, utilise des documents de session pour déterminer le type de session à démarrer, par exemple une session de redirection de port, une session pour exécuter une commande interactive ou une session pour créer un tunnel SSH. Les documents Session sont pris en charge sur tous les systèmes d'exploitation Linux et Windows Server pris en charge par Systems Manager. Les documents Command suivants sont pris en charge sur les instances EC2 pour macOS : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/documents.html)  | 

**Quotas de documents SSM**  
Pour plus d'informations sur les quotas de document SSM, veuillez consulter la rubrique [Quotas de service Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm) dans la *Référence générale d'Amazon Web Services*.

**Topics**
+ [En quoi l’outil Documents peut-il être utile à mon organisation ?](#ssm-docs-benefits)
+ [Qui devrait utiliser les documents ?](#documents-who)
+ [Quels sont les types de documents SSM ?](#what-are-document-types)
+ [Composants de document](documents-components.md)
+ [Création du contenu du document SSM](documents-creating-content.md)
+ [Utilisation de documents](documents-using.md)
+ [Résolution des problèmes de gestion des paramètres](parameter-troubleshooting.md)

# Composants de document
<a name="documents-components"></a>

Cette section comprend des informations sur les éléments qui composent les documents SSM.

**Topics**
+ [Schémas, fonctionnalités et exemples](documents-schemas-features.md)
+ [Éléments de données et paramètres](documents-syntax-data-elements-parameters.md)
+ [Référence de plug-in de document Command](documents-command-ssm-plugin-reference.md)

# Schémas, fonctionnalités et exemples
<a name="documents-schemas-features"></a>

AWS Systems Manager Les documents (SSM) utilisent les versions de schéma suivantes.
+ Les documents de type `Command` peuvent utiliser la version de schéma 1.2, 2.0, et 2.2. Si vous utilisez des documents de schéma 1.2, nous vous recommandons de créer des documents qui utilisent la version de schéma 2.2.
+ Les documents de type `Policy` doivent utiliser la version de schéma 2.0 ou ultérieure.
+ Les documents de type `Automation` doivent utiliser la version de schéma 0.3.
+ Les documents de type `Session` doivent utiliser la version de schéma 1.0.
+ Vous pouvez créer des documents au format JSON ou YAML.

Pour plus d’informations sur le schéma de document `Session`, consultez [Schéma de document de session](session-manager-schema.md).

En utilisant la dernière version de schéma pour les documents `Command` et `Policy`, vous pouvez profiter des fonctions suivantes.


**Fonctionnalités d'un document de version de schéma 2.2**  

| Fonctionnalité | Détails | 
| --- | --- | 
|  Modification du document  |  Les documents peuvent désormais être mis à jour. Avec la version 1.2, la mise à jour d'un document nécessitait qu'il soit enregistré sous un autre nom.  | 
|  Gestion automatique des versions  |  Toute mise à jour d'un document crée une nouvelle version. Il ne s'agit pas d'une version de schéma, mais d'une version du document.  | 
|  Version par défaut  |  Si vous disposez de plusieurs versions d'un document, vous pouvez spécifier la version qui est le document par défaut.  | 
|  Séquençage  |  Les plug-ins ou *étapes* dans un document s'exécutent dans l'ordre que vous avez spécifié.  | 
|  Support multiplateforme  |  Le support multiplateforme vous permet de spécifier un système d'exploitation différent pour différents plugins dans le même document SSM. Le support multiplateforme utilise le même paramètre `precondition` dans une étape.   | 
| Interpolation des paramètres | L’interpolation consiste à insérer ou à remplacer une valeur de variable dans une chaîne. C’est comme si vous remplissiez un espace vide avec des valeurs réelles avant que la chaîne soit utilisée. Dans le contexte des documents SSM, l’interpolation des paramètres permet d’interpoler des paramètres de chaîne dans des variables d’environnement avant l’exécution des commandes, offrant ainsi une meilleure sécurité contre les injections de commandes. Si défini sur `ENV_VAR`, l’agent crée une variable d’environnement nommée `SSM_parameter-name` qui contient la valeur du paramètre. | 

**Note**  
Vous devez maintenir AWS Systems Manager SSM Agent vos instances à jour avec la dernière version afin d'utiliser les nouvelles fonctionnalités de Systems Manager et les fonctionnalités du document SSM. Pour de plus amples informations, veuillez consulter [Mise à jour de SSM Agent à l'aide de Run Command](run-command-tutorial-update-software.md#rc-console-agentexample).

Le tableau suivant répertorie les différences entre les versions majeures du schéma.


****  

| Version 1.2 | Version 2.2 (dernière version) | Détails | 
| --- | --- | --- | 
|  runtimeConfig  |  mainSteps  |  Dans la version 2.2, la section `mainSteps` remplace `runtimeConfig`. La section `mainSteps` permet à Systems Manager d'exécuter des étapes en séquence.  | 
|  propriétés  |  inputs  |  Dans la version 2.2, la section `inputs` remplace la section `properties` . La section `inputs` accepte des paramètres pour les étapes.  | 
|  commands  |  runCommand  |  Dans la version 2.2, la section `inputs` prend le paramètre `runCommand` au lieu du paramètre `commands`.  | 
|  id  |  action  |  Dans la version 2.2, `Action` remplace `ID`. Il s'agit simplement d'une modification de nom.  | 
|  non applicable  |  name  |  Dans la version 2.2, `name` est tout nom défini par l'utilisateur pour une étape.  | 

**Utilisation du paramètre de condition préalable**  
Avec la version de schéma 2.2 ou une version ultérieure, vous pouvez utiliser le paramètre `precondition` pour spécifier le système d'exploitation cible pour chaque plugin ou pour valider les paramètres d'entrée que vous avez définis dans votre document SSM. Le paramètre `precondition` prend en charge le référencement des paramètres d'entrée de votre document SSM, et le `platformType` en utilisant les valeurs de`Linux`, `MacOS` et `Windows`. Seul l'opérateur `StringEquals` est pris en charge.

Pour les documents utilisant la version de schéma 2.2 ou une version ultérieure, si `precondition` n'est pas spécifié, chaque plugin est soit exécuté, soit ignoré en fonction de sa compatibilité avec le système d'exploitation. La compatibilité du plugin avec le système d'exploitation est évaluée avant la `precondition`. Pour les documents utilisant le schéma 2.0 ou antérieur, les plug-ins incompatibles entraînent une erreur.

Par exemple, dans un document de version de schéma 2.2, si `precondition` n'est pas spécifié et que le plugin `aws:runShellScript` figure dans la liste, l'étape s'exécute sur les instances Linux, mais le système l'ignore sur les instances Windows Server, car le `aws:runShellScript` n'est pas compatible avec les instances Windows Server. Néanmoins, pour un document de version de schéma 2.0., si vous spécifiez le plug-in `aws:runShellScript`, puis exécutez le document sur des instances Windows Server, l'exécution échoue. Un exemple du paramètre de condition préalable dans un document SSM est fourni plus loin dans cette section.

## Version de schéma 2.2
<a name="documents-schema-twox"></a>

**Éléments de niveau supérieur**  
L'exemple suivant présente les éléments supérieurs d'un document SSM qui utilise la version de schéma 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 }}"
         }
      }
   ]
}
```

------

**Exemple de version de schéma 2.2**  
L'exemple suivant utilise le `aws:runPowerShellScript` plugin pour exécuter une PowerShell commande sur les instances cibles.

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

------

**Exemples de paramètre de condition préalable dans la version de schéma 2.2**  
La version de schéma 2.2 fournit le support multiplateforme. Cela signifie que dans un même document SSM, vous pouvez spécifier un système d'exploitation différent pour différents plugins. Le support multiplateforme utilise le même paramètre `precondition` dans une étape, tel que décrit dans l'exemple suivant. Vous pouvez également utiliser le paramètre `precondition` pour valider les paramètres d'entrée que vous avez définis dans votre document SSM. Cela apparaît dans le second des exemples suivants.

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

------

**Exemple d’interpolation du schéma version 2.2 avec des versions de SSM Agent antérieures à 3.3.2746.0**  
Dans les versions de SSM Agent antérieures à 3.3.2746.0, l’agent ignore le paramètre `interpolationType` et effectue à la place une substitution de chaîne brute. Si vous faites référence à `SSM_parameter-name` de manière explicite, vous devez le définir explicitement. Dans l’exemple suivant pour Linux, la variable d’environnement `SSM_Message` est référencée explicitement.

```
{
    "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"
            ]
        }
    }
}
```

**Note**  
`allowedPattern` n’est pas techniquement obligatoire si un document SSM n’utilise pas de doubles accolades : `{{ }}`

**Exemple de version de schéma 2.2 State Manager**  
Vous pouvez utiliser le document SSM suivant avec State Manager, un des outils de Systems Manager, pour télécharger et installer le logiciel antivirus ClamAV. State Manager applique une configuration spécifique, ce qui signifie qu’à chaque fois que l’association State Manager est exécutée, le système vérifie si le logiciel ClamAV est installé. Si tel n'est pas le cas, State Manager réexécute ce document.

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

------

**Exemple d'inventaire de version de schéma 2.2**  
Vous pouvez utiliser le document SSM suivant avec State Manager pour collecter les métadonnées d'inventaire relatives à vos instances.

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

------

**Exemple de version de schéma 2.2 `AWS-ConfigureAWSPackage`**  
L'exemple suivant présente le document `AWS-ConfigureAWSPackage`. La section `mainSteps` inclut le plugin `aws:configurePackage` à l'étape `action`.

**Note**  
Sur les systèmes d'exploitation Linux, seuls les packages `AmazonCloudWatchAgent` et `AWSSupport-EC2Rescue` sont pris en charge.

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

------

## Version de schéma 1.2
<a name="documents-schema-onex"></a>

L'exemple suivant présente les éléments supérieurs d'un document de version de schéma 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"
            }
         ]
      }
   }
}
```

**Exemple de version de schéma 1.2 `aws:runShellScript`**  
L'exemple suivant montre le document SSM `AWS-RunShellScript`. La section **runtimeConfig** inclut le 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 }}"
                }
            ]
        }
    }
}
```

## Version de schéma 0.3
<a name="automation-doc-syntax-examples"></a>

**Éléments de niveau supérieur**  
L'exemple suivant présente les éléments supérieurs d'un runbook de version de schéma 0.3 ou ultérieur au format 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
        }
    }
}
```

**Exemple de runbook Automation YAML**  
L'exemple suivant montre le contenu d'un runbook Automation, au format YAML. Cet exemple fonctionnel de la version 0.3 du schéma de document illustre également l'utilisation de Markdown pour formater les descriptions de documents.

```
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
```

## Exemples de gestion sécurisée des paramètres
<a name="secure-parameter-examples"></a>

Les exemples suivants illustrent la gestion sécurisée des paramètres à l’aide de la variable d’environnement `interpolationType`.

### Exécution sécurisée de base des commandes
<a name="basic-secure-command"></a>

Cet exemple montre comment gérer un paramètre de commande de façon sécurisée :

**Note**  
`allowedPattern` n’est pas techniquement obligatoire dans les documents SSM qui n’utilisent pas de doubles accolades : `{{ }}` 

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

------

### Utilisation de paramètres dans les langages interprétés
<a name="interpreted-language-example"></a>

Cet exemple illustre la gestion sécurisée des paramètres en 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")
          '
```

------

### Exemple de rétrocompatibilité
<a name="backwards-compatibility-example"></a>

Cet exemple montre comment gérer les paramètres de façon sécurisée tout en préservant la rétrocompatibilité :

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

------

**Note**  
`allowedPattern` n’est pas techniquement obligatoire dans les documents SSM qui n’utilisent pas de doubles accolades : `{{ }}` 

## Bonnes pratiques de sécurité pour les paramètres
<a name="parameter-security-best-practices"></a>

Suivez ces bonnes pratiques lors de la gestion des paramètres dans les documents SSM :
+ **Utiliser l’interpolation des variables d’environnement** : utilisez toujours `interpolationType: "ENV_VAR"` pour les paramètres de chaîne qui seront utilisés lors de l’exécution des commandes.
+ **Implémenter la validation des entrées** : utilisez `allowedPattern` pour limiter les valeurs des paramètres à des modèles sûrs.
+ **Gérer les systèmes hérités** : incluez une logique de secours pour les anciennes versions de SSM Agent qui ne prennent pas en charge l’interpolation des variables d’environnement.
+ **Échapper les caractères spéciaux** : lorsque vous utilisez des valeurs de paramètres dans des commandes, échappez correctement les caractères spéciaux pour empêcher toute interprétation par le shell.
+ **Limiter la portée des paramètres** : utilisez les modèles de paramètres les plus restrictifs possibles pour votre cas d’utilisation.

# Éléments de données et paramètres
<a name="documents-syntax-data-elements-parameters"></a>

Cette rubrique décrit les éléments de données utilisés dans les documents SSM. La version du schéma utilisée pour créer un document définit la syntaxe et les éléments de données que le document accepte. Nous vous recommandons l'utilisation de la version de schéma 2.2 ou celle ultérieure pour les documents de Commande. Les runbooks Automation utilisent la version de schéma 0.3. De plus, les runbooks Automation prennent en charge l'utilisation de Markdown, un langage de balisage, qui vous permet d'ajouter des descriptions de style wiki aux documents et des étapes individuelles au sein du document. Pour plus d'informations relatives à l'utilisation de Markdown, consultez [Utilisation de Markdown dans la console](https://docs.aws.amazon.com/general/latest/gr/aws-markdown.html) dans le *Guide de mise en route AWS Management Console *.

La section suivante décrit les éléments de données pouvant être inclut dans un document SSM.

## Éléments de données niveau supérieur
<a name="top-level"></a>

**schemaVersion**  
Version de schéma à utiliser.  
Type : Version  
Obligatoire : oui

**description**  
Informations que vous fournissez pour décrire l'objectif du document. Vous pouvez également utiliser ce champ pour spécifier si un paramètre nécessite une valeur pour qu'un document s'exécute ou si la fourniture d'une valeur pour le paramètre est facultative. Les paramètres obligatoires et facultatifs peuvent être consultés dans les exemples de cette rubrique.  
Type : chaîne  
Obligatoire : non

**parameters**  
Structure qui définit les paramètres acceptés par le document.   
Pour améliorer la sécurité lors de la gestion des paramètres de chaîne, vous pouvez utiliser l’interpolation des variables d’environnement en spécifiant la propriété `interpolationType`. Si défini sur `ENV_VAR`, le système crée une variable d’environnement nommée `SSM_parameter-name` contenant la valeur du paramètre.  
Voici un exemple de paramètre utilisant la variable d’environnement `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` n’est pas techniquement obligatoire dans les documents SSM qui n’utilisent pas de doubles accolades : `{{ }}` 
Pour les paramètres souvent utilisés, nous vous recommandons de les stocker dans Parameter Store, un outil d’ AWS Systems Manager. Ensuite, définissez les paramètres de votre document faisant référence aux paramètres Parameter Store comme valeur par défaut. Pour référencer un paramètre Parameter Store, utilisez la syntaxe suivante.   

```
{{ssm:parameter-name}}
```
Utilisez un paramètre faisant référence à un paramètre Parameter Store similaire à tout autre paramètre du document. Dans l'exemple suivant, la valeur par défaut du paramètre `commands` est le paramètre Parameter Store `myShellCommands`. En spécifiant le paramètre `commands` en tant que chaîne `runCommand`, le document exécute les commandes stockées dans le paramètre `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 }}"
          ]
        }
      }
    ]
  }
```
Vous pouvez référencer les paramètres `String` et `StringList` Parameter Store dans la section `parameters` d'un document. Vous ne pouvez pas référencer les paramètres Parameter Store `SecureString`.
Pour plus d’informations sur Parameter Store, consultez [AWS Systems Manager Parameter Store](systems-manager-parameter-store.md).  
Type : Structure  
La structure `parameters` accepte les champs et valeurs suivants :  
+ `type` : (Obligatoire) les valeurs autorisées sont : `String`, `StringList`, `Integer`, `Boolean`, `MapList` et `StringMap`. Pour consulter des exemples de chaque type, consultez [Exemples de paramètres `type` de document SSM](#top-level-properties-type) dans la section suivante.
**Note**  
Les documents de type Command ne prennent en charge que les types de paramètres `String` et `StringList`.
+ `description` : (Facultatif) Description du paramètre.
+ `default` : (Facultatif) Valeur par défaut du paramètre ou référence à un paramètre dans Parameter Store.
+ `allowedValues` : (facultatif) tableau de valeurs autorisées pour le paramètre. La définition des valeurs autorisées pour le paramètre valide l'entrée utilisateur. Si un utilisateur saisit une valeur non autorisée, l'exécution échoue.

------
#### [ 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` : (facultatif) expression régulière qui valide si l'entrée utilisateur correspond au modèle défini pour le paramètre. Si l'entrée utilisateur ne correspond pas au modèle autorisé, l'exécution échoue.
**Note**  
Systems Manager effectue deux validations pour `allowedPattern`. La première validation est effectuée à l'aide de la [bibliothèque Java regex](https://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html) au niveau de l'API lorsque vous utilisez un document. La deuxième validation est effectuée sur SSM Agent en utilisant la [bibliothèque Go regexp](https://pkg.go.dev/regexp)avant de traiter le document. 

------
#### [ 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`: (Facultatif) Utilisé pour afficher un `textfield` ou un `textarea` dans le AWS Management Console. `textfield`est une zone de texte d'une seule ligne. `textarea`est une zone de texte multiligne.
+ `minItems` : (Facultatif) Nombre minimum d'éléments autorisés.
+ `maxItems` : (Facultatif) Nombre maximum d'éléments autorisés.
+ `minChars` : (Facultatif) Nombre minimum d'éléments autorisés.
+ `maxChars` : (Facultatif) Nombre maximum de caractères de paramètre autorisés.
+ `interpolationType` : (facultatif) définit la manière dont les valeurs des paramètres sont traitées avant l’exécution de la commande. Si défini sur `ENV_VAR`, la valeur du paramètre est rendue disponible sous forme de variable d’environnement nommée `SSM_parameter-name`. Cette fonctionnalité permet d’empêcher l’injection de commandes en traitant les valeurs des paramètres comme des chaînes littérales.

  Type : Chaîne

  Valeurs valides : `ENV_VAR`
Obligatoire : non

**variables**  
(Schéma version 0.3 uniquement) Valeurs que vous pouvez référencer ou mettre à jour tout au long des étapes d’un runbook d’Automation. Les variables sont similaires aux paramètres, mais diffèrent d’une manière très importante. Les valeurs des paramètres sont statiques dans le contexte d’un runbook, mais les valeurs des variables peuvent être modifiées dans le contexte du runbook. Lors de la mise à jour de la valeur d’une variable, le type de données doit correspondre au type de données défini. Pour plus d’informations sur la mise à jour des valeurs de variables dans une automatisation, veuillez consulter [`aws:updateVariable` : met à jour la valeur d’une variable runbook](automation-action-update-variable.md).  
Type : booléen \$1 Entier \$1 \$1 Chaîne MapList \$1 \$1 StringList StringMap  
Obligatoire : non  

```
variables:
    payload:
        type: StringMap
        default: "{}"
```

```
{
    "variables": [
        "payload": {
            "type": "StringMap",
            "default": "{}"
        }
    ]
}
```

**runtimeConfig**  
(Version de schéma 1.2 seulement) Configuration de l'instance telle qu'appliquée par un ou plusieurs plugins Systems Manager. L'exécution en séquence des plugins n'est pas garantie.   
Type : Dictionnaire<String, > PluginConfiguration  
Obligatoire : non

**mainSteps**  
(Version de schéma 0.3, 2.0 et 2.2 uniquement) Objet pouvant inclure plusieurs étapes (plug-ins). Les plug-ins sont définis en étapes. Les étapes s'exécutent par ordre séquentiel telles que listées dans le document.   
Type : Dictionnaire<String, > PluginConfiguration  
Obligatoire : oui

**outputs**  
(Version de schéma 0.3 uniquement) Données générées par l'exécution de ce document pouvant être utilisées dans d'autres processus. Par exemple, si votre document en crée un nouveauAMI, vous pouvez spécifier « »CreateImage. ImageId« comme valeur de sortie, puis utilisez cette sortie pour créer de nouvelles instances lors d'une exécution d'automatisation ultérieure. Pour plus d'informations sur les sorties, consultez [Utilisation des sorties d'action comme entrées](automation-action-outputs-inputs.md).  
Type : Dictionnaire<String, > OutputConfiguration  
Obligatoire : non

**files**  
(Version de schéma 0.3 uniquement) Les fichiers de script (et leurs sommes de contrôle) attachés au document et exécutés lors d'une exécution Automation. S'applique uniquement aux documents qui incluent l'action `aws:executeScript` et pour lesquels des pièces jointes ont été spécifiées dans une ou plusieurs étapes.   
Pour en savoir plus sur les durées d’exécution prises en charge par les dossiers d’exploitation Automation, consultez [`aws:executeScript` - Exécuter un script](automation-action-executeScript.md). Pour de plus amples informations sur l'inclusion de scripts dans les runbooks Automation, veuillez consulter [Utilisation de scripts dans des runbooks](automation-document-script-considerations.md) et [Expérience de conception visuelle pour les runbooks d’Automatisation](automation-visual-designer.md).  
Lorsque vous créez un runbook d'automatisation avec des pièces jointes, vous devez également spécifier les fichiers joints à l'aide de l'`--attachments`option (pour AWS CLI) ou `Attachments` (pour l'API et le SDK). Vous pouvez spécifier l’emplacement du fichier pour les documents SSM et les fichiers stockés dans les compartiments Amazon Simple Storage Service (Amazon S3). Pour plus d'informations, consultez la section [Pièces jointes](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateDocument.html#systemsmanager-CreateDocument-request-Attachments) dans le Guide de référence de AWS Systems Manager l'API.  

```
---
files:
  launch.py:
    checksums:
      sha256: 18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE
```

```
"files": {
    "launch.py": {
        "checksums": {
            "sha256": "18871b1311b295c43d0f...[truncated]...772da97b67e99d84d342ef4aEXAMPLE"
        }
    }
}
```
Type : Dictionnaire<String, > FilesConfiguration  
Obligatoire : non

## Exemples de paramètres `type` de document SSM
<a name="top-level-properties-type"></a>

Les types de paramètres des documents SSM sont statiques. Cela signifie que le type de paramètre ne peut pas être modifié après avoir été défini. Lorsque vous utilisez des paramètres avec des plugins de document SSM, le type d'un paramètre ne peut pas être modifié dynamiquement dans l'entrée d'un plugin. Par exemple, vous ne pouvez pas référencer un paramètre `Integer` dans l'entrée `runCommand` du plugin `aws:runShellScript`, car cette entrée accepte une chaîne ou une liste de chaînes. Pour utiliser un paramètre pour une entrée de plugin, le type de paramètre doit correspondre au type accepté. Par exemple, vous devez spécifier un type de paramètre `Boolean` pour l'entrée `allowDowngrade` du plugin `aws:updateSsmAgent`. Si votre type de paramètre ne correspond pas au type d'entrée d'un plugin, le document SSM n'est pas validé et le système ne crée pas le document. Cela est également vrai lorsque vous utilisez des paramètres en aval dans les entrées pour d'autres plugins ou actions AWS Systems Manager d'automatisation. Par exemple, vous ne pouvez pas référencer un paramètre `StringList` dans l'entrée `documentParameters` du plugin `aws:runDocument`. L'entrée `documentParameters` accepte une carte de chaînes même si le type de paramètre de document SSM en aval est un paramètre `StringList` et correspond au paramètre auquel vous faites référence.

Lorsque vous utilisez des paramètres avec des actions Automation, dans la plupart des cas les types de paramètres ne sont pas validés lorsque vous créez le document SSM. Ce n'est que lorsque vous utilisez l'action `aws:runCommand` que les types de paramètres sont validés lors de la création du document SSM. Dans tous les autres cas, la validation des paramètres se produit pendant l'exécution d'automatisation lorsque l'entrée d'une action est vérifiée avant d'exécuter cette dernière. Par exemple, si votre paramètre d'entrée est une `String` et que vous le référencez comme valeur pour l'entrée `MaxInstanceCount` de l'action `aws:runInstances`, le document SSM est créé. Toutefois, lors de l'exécution du document, l'automatisation échoue lors de la validation de l'action `aws:runInstances`, car l'entrée `MaxInstanceCount` nécessite un `Integer`.

Voici des exemples de chaque `type` de paramètre.

String  
Une séquence de zéro ou plusieurs caractères Unicode entre guillemets. Par exemple, « i-1234567890abcdef0". Utilisez des barres obliques inverses comme caractères d'échappement.  
Les paramètres de chaîne peuvent inclure un champ facultatif `interpolationType` avec la valeur `ENV_VAR` pour permettre l’interpolation des variables d’environnement afin d’améliorer la sécurité.  

```
---
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  
Liste d'éléments String séparés par des virgules. Par exemple, ["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"
}
```

Booléen  
Accepte uniquement `true` ou `false`. N'accepte pas la valeur « true », ni 0.  

```
---
canRun:
  type: Boolean
  description: ''
  default: true
```

```
"canRun": {
  "type": "Boolean",
  "description": "",
  "default": true
}
```

Entier  
Nombres entiers. N'accepte pas de nombres décimaux, par exemple 3,14159, ni de nombres entre guillemets, par exemple « 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  
Mappage de clés à des valeurs. Les clés et les valeurs doivent être des chaînes. Par exemple, \$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  
Liste d' StringMap objets.  

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

## Affichage du contenu du document SSM Command
<a name="viewing-ssm-document-content"></a>

Pour prévisualiser les paramètres obligatoires et facultatifs d'un document de commande AWS Systems Manager (SSM), outre les actions exécutées par le document, vous pouvez consulter le contenu du document dans la console Systems Manager.

**Pour afficher le contenu d'un document SSM Command**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Dans la zone de recherche, sélectionnez **Type de document**, puis sélectionnez **Command**.

1. Sélectionnez le nom d'un document, puis l'onglet **Content (Contenu)**. 

1. Dans le champ Contenu, vérifiez les paramètres disponibles et les étapes d'action du document.

   Par exemple, l'image suivante montre que (1) `version` et (2) `allowDowngrade` sont des paramètres facultatifs pour le document `AWS-UpdateSSMAgent`, et que la première action exécutée par le document est (3) `aws:updateSsmAgent`.  
![\[Afficher le contenu d'un document SSM dans la console Systems Manager\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/view-document-content.png)

# Référence de plug-in de document Command
<a name="documents-command-ssm-plugin-reference"></a>

Cette référence décrit les plugins que vous pouvez spécifier dans un document de type commande AWS Systems Manager (SSM). Ces plugins ne peuvent pas être utilisés dans les runbooks Automation SSM qui utilisent des actions Automation. Pour plus d'informations sur les actions AWS Systems Manager d'automatisation, consultez[Référence sur les actions Systems Manager Automation](automation-actions.md).

Systems Manager détermine les actions à effectuer sur une instance gérée en lisant le contenu d'un document SSM. Chaque document comprend une section d'exécution de code. En fonction de la version de schéma de votre document, cette section d'exécution de code peut inclure un ou plusieurs plug-ins, ou bien une ou plusieurs étapes. Dans le cadre de cette rubrique d'aide, les plug-ins et les étapes sont appelés *plug-ins*. Cette section comprend des informations sur chacun des plugins Systems Manager. Pour plus d'informations sur les documents, la création de documents et les différences entre les versions de schéma, consultez [AWS Systems Manager Documents](documents.md).

Pour les plug-ins qui acceptent des paramètres de chaîne, comme `aws:runShellScript` et `aws:runPowerShellScript`, le paramètre `interpolationType` peut être utilisé pour améliorer la sécurité en traitant les entrées de paramètres comme des chaînes littérales plutôt que comme des commandes potentiellement exécutables. Par exemple :

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

**Note**  
Certains plug-ins décrits ici s'exécutent uniquement sur des instances Windows Server ou sur des instances Linux. Les dépendances de plate-forme sont notées pour chaque plug-in.   
Les plugins de document suivants sont pris en charge sur les instances Amazon Elastic Compute Cloud (Amazon EC2) pour macOS :  
`aws:refreshAssociation`
`aws:runShellScript`
`aws:runPowerShellScript`
`aws:softwareInventory`
`aws:updateSsmAgent`

**Topics**
+ [Entrées partagées](#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)

## Entrées partagées
<a name="shared-inputs"></a>

Avec SSM Agent version 3.0.502 et ultérieure uniquement, tous les plugins peuvent utiliser les entrées suivantes :

**finallyStep**  
La dernière étape que le document doit exécuter. Si cette entrée est définie pour une étape, elle a priorité sur une valeur `exit` spécifiée dans les entrées `onFailure` ou `onSuccess`. Pour qu'une étape avec cette entrée s'exécute comme prévu, elle doit être la dernière étape définie dans les `mainSteps` de votre document.  
Type : Boolean  
Valeurs valides : `true` \$1 `false`  
Obligatoire : non

**onFailure**  
Si vous spécifiez cette entrée pour un plugin avec la valeur `exit` et que l'étape échoue, le statut de l'étape reflète l'échec et le document n'exécute pas les étapes restantes sauf si une `finallyStep` a été définie. Si vous spécifiez cette entrée pour un plugin avec la valeur `successAndExit` et que l'étape échoue, le statut de l'étape affiche la réussite et le document n'exécute pas les étapes restantes sauf si une `finallyStep` a été définie.  
Type : Chaîne  
Valeurs valides : `exit` \$1 `successAndExit`  
Obligatoire : non

**onSuccess**  
Si vous spécifiez cette entrée pour un plugin et que l'étape s'exécute correctement, le document n'exécute pas les étapes restantes sauf si une `finallyStep` a été définie.  
Type : Chaîne  
Valeurs valides : `exit`  
Obligatoire : non

------
#### [ 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>

Installer, réparer ou désinstaller des applications sur une instance EC2. Ce plug-in s'exécute uniquement sur les systèmes d'exploitation Windows Server.

### Syntaxe
<a name="applications-syntax"></a>

#### Schéma 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 }}"
      }
    }
  ]
}
```

------

#### Schéma 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 }}"
            }
         ]
      }
   }
}
```

------

### Propriétés
<a name="applications-properties"></a>

**action**  
Action à effectuer.  
Type : énumération  
Valeurs valides : `Install` \$1 `Repair` \$1 `Uninstall`  
Obligatoire : oui

**parameters**  
Paramètres pour le programme d'installation.  
Type : chaîne  
Obligatoire : non

**source**  
URL du fichier `.msi` pour l'application.  
Type : Chaîne  
Obligatoire : oui

**sourceHash**  
Le SHA256 hachage du `.msi` fichier.  
Type : chaîne  
Obligatoire : non

## `aws:cloudWatch`
<a name="aws-cloudWatch"></a>

Exportez des données depuis Windows Server Amazon CloudWatch ou Amazon CloudWatch Logs et surveillez-les à l'aide de CloudWatch métriques. Ce plug-in s'exécute uniquement sur les systèmes d'exploitation Windows Server. Pour plus d'informations sur la configuration de CloudWatch l'intégration avec Amazon Elastic Compute Cloud (Amazon EC2), [consultez la section Collecter des métriques, des journaux et des traces avec CloudWatch l'agent dans le guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html) de l'utilisateur *Amazon CloudWatch *.

**Important**  
L' CloudWatch agent unifié a été remplacé SSM Agent en tant qu'outil d'envoi des données de journal à Amazon CloudWatch Logs. Le plugin SSM Agent aws:cloudWatch n'est pas pris en charge. Nous vous recommandons de n'utiliser que l' CloudWatch agent unifié pour vos processus de collecte de journaux. Pour plus d’informations, consultez les rubriques suivantes :  
[Envoi des journaux des nœuds vers CloudWatch des journaux unifiés (CloudWatch agent)](monitoring-cloudwatch-agent.md)
[Migrer la collecte des journaux des nœuds Windows Server vers l' CloudWatch agent](monitoring-cloudwatch-agent.md#monitoring-cloudwatch-agent-migrate)
[Collecte de métriques, de journaux et de traces avec l' CloudWatch agent](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html) dans le *guide de CloudWatch l'utilisateur Amazon*.

Vous pouvez exporter et contrôler les types de données suivants :

**ApplicationEventLog**  
Envoie les données du journal des événements de l'application à CloudWatch Logs.

**CustomLogs**  
Envoie n'importe quel fichier journal sous forme de texte à Amazon CloudWatch Logs. Le CloudWatch plugin crée une empreinte digitale pour les fichiers journaux. Le système associe ensuite un décalage des données à chaque empreinte. Le plug-in charge les fichiers en cas de modifications, enregistre le décalage et associe celui-ci à une empreinte. Cette méthode est utilisée pour éviter que le système charge tous le fichiers si un utilisateur active le plugin et associe le service à un répertoire contenant un grand nombre de fichiers.  
N'oubliez pas que si votre application tronque ou tente de nettoyer des journaux au cours d'une interrogation, tous les journaux spécifiés pour `LogDirectoryPath` peuvent perdre des entrées. Si, par exemple, vous souhaitez limiter la taille des fichiers journaux, créez un nouveau fichier lorsque cette limite est atteinte, puis continuez à écrire les données dans le nouveau fichier.

**ETW**  
Envoie les données de suivi des événements pour Windows (ETW) aux CloudWatch journaux.

**IIS**  
Envoie les données du journal IIS à CloudWatch Logs.

**PerformanceCounter**  
Envoie les compteurs de performance Windows à. CloudWatch Vous pouvez sélectionner différentes catégories dans lesquelles vous souhaitez effectuer le téléchargement CloudWatch sous forme de statistiques. Pour chaque compteur de performance que vous souhaitez télécharger, créez une **PerformanceCounter**section avec un identifiant unique (par exemple, « PerformanceCounter 2 », « PerformanceCounter 3 », etc.) et configurez ses propriétés.  
Si le plugin AWS Systems Manager SSM Agent ou le CloudWatch plugin est arrêté, les données du compteur de performance ne sont pas enregistrées CloudWatch. Ce comportement est différent des journaux personnalisés ou des journaux d'événements Windows. Les journaux personnalisés et les journaux d'événements Windows préservent les données des compteurs de performance et les CloudWatch téléchargent SSM Agent une fois que le CloudWatch plug-in est disponible.

**SecurityEventLog**  
Envoie les données du journal des événements de sécurité à CloudWatch Logs.

**SystemEventLog**  
Envoie les données du journal des événements du système à CloudWatch Logs.

Vous pouvez définir les destinations suivantes pour les données :

**CloudWatch**  
La destination où vos données de métriques de compteur de performances sont envoyées. Vous pouvez ajouter d'autres sections avec un identifiant unique IDs (par exempleCloudWatch, « 2 », CloudWatch 3, etc.) et spécifier une région différente pour chaque nouvel identifiant afin d'envoyer les mêmes données à différents emplacements.

**CloudWatchLogs**  
La destination où vos données de journaux sont envoyées. Vous pouvez ajouter d'autres sections avec un identifiant unique IDs (par exempleCloudWatchLogs, « 2 », CloudWatchLogs 3, etc.) et spécifier une région différente pour chaque nouvel identifiant afin d'envoyer les mêmes données à différents emplacements.

### Syntaxe
<a name="cloudWatch-syntax"></a>

```
"runtimeConfig":{
        "aws:cloudWatch":{
            "settings":{
                "startType":"{{ status }}"
            },
            "properties":"{{ properties }}"
        }
    }
```

### Paramètres et propriétés
<a name="cloudWatch-properties"></a>

**AccessKey**  
Votre ID de clé d’accès . Cette propriété est obligatoire, sauf si vous avez lancé votre instance par l'intermédiaire d'une rôle IAM. Elle ne peut pas être utilisée avec SSM.  
Type : chaîne  
Obligatoire : non

**CategoryName**  
Catégorie du compteur de performances en provenance de Performance Monitor.  
Type : Chaîne  
Obligatoire : oui

**CounterName**  
Nom du compteur de performances en provenance de Performance Monitor.  
Type : Chaîne  
Obligatoire : oui

**CultureName**  
Paramètres régionaux où l'horodatage est consigné. S'il **CultureName**est vide, il utilise par défaut les mêmes paramètres régionaux que ceux utilisés par votre Windows Server instance.  
Type : Chaîne  
Valeurs valides : pour obtenir une liste des valeurs prises en charge, consultez [Support des langues nationales](https://msdn.microsoft.com/en-us/library/cc233982.aspx) sur le site Web de Microsoft. Les valeurs **div**, **div-MV**, **hu**, et **hu-HU** ne sont pas prises en charge.  
Obligatoire : non

**DimensionName**  
Une dimension pour votre CloudWatch métrique Amazon. Si vous spécifiez `DimensionName`, vous devez spécifier `DimensionValue`. Ces paramètres offrent une autre vue lors de la création de listes de métriques. Vous pouvez utiliser la même dimension pour plusieurs métriques afin d'afficher toutes les métriques appartenant à une dimension spécifique.  
Type : chaîne  
Obligatoire : non

**DimensionValue**  
Une valeur de dimension pour votre CloudWatch métrique Amazon.  
Type : chaîne  
Obligatoire : non

**Encodage**  
Encodage de fichier à utiliser (par exemple, UTF-8). Utilisez le nom d'encodage, pas le nom complet.  
Type : Chaîne  
Valeurs valides : pour obtenir une liste des valeurs prises en charge, veuillez consulter la rubrique [Classe d'encodage](https://learn.microsoft.com/en-us/dotnet/api/system.text.encoding?view=net-7.0) dans la bibliothèque Microsoft Learn (langue française non garantie).  
Obligatoire : oui

**Filtre**  
Préfixe des noms de journaux. Laissez ce paramètre vide de façon à surveiller tous les fichiers.  
Type : Chaîne  
Valeurs valides : pour obtenir la liste des valeurs prises en charge, consultez la [FileSystemWatcherFilter propriété](http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.filter.aspx) dans la bibliothèque MSDN.  
Obligatoire : non

**Flux**  
Chaque type de données à télécharger, ainsi que la destination des données (CloudWatch ou CloudWatch journaux). Par exemple, pour envoyer un compteur de performance défini sous `"Id": "PerformanceCounter"` vers la CloudWatch destination définie sous`"Id": "CloudWatch"`, entrez **«PerformanceCounter, CloudWatch »**. De même, pour envoyer le journal personnalisé, le journal ETW et le journal système vers la destination CloudWatch des journaux définie ci-dessous`"Id": "ETW"`, entrez **« (ETW), CloudWatchLogs** ». En outre, vous pouvez envoyer le même compteur de performances ou fichier journal à plus d'une destination. Par exemple, pour envoyer le journal de l'application vers deux destinations différentes que vous avez définies sous `"Id": "CloudWatchLogs"` et`"Id": "CloudWatchLogs2"`, entrez **«ApplicationEventLog, (CloudWatchLogs, CloudWatchLogs 2) »**.  
Type : Chaîne  
Valeurs valides (source) : `ApplicationEventLog` \$1 `CustomLogs` \$1 `ETW` \$1 `PerformanceCounter` \$1 `SystemEventLog` \$1 `SecurityEventLog`   
Valeurs valides (destination) : `CloudWatch` \$1 `CloudWatchLogs` \$1 `CloudWatch` *n* \$1 `CloudWatchLogs` *n*   
Obligatoire : oui

**FullName**  
Nom complet du composant.  
Type : Chaîne  
Obligatoire : oui

**Id**  
Identifie la source ou la destination des données. Cet identificateur doit être unique au sein du fichier de configuration.  
Type : Chaîne  
Obligatoire : oui

**InstanceName**  
Nom de l'instance du compteur de performances. N'utilisez pas d'astérisque (\$1) pour indiquer toutes les instances, car chaque composant du compteur de performance prend en charge un seul élément. Cependant, vous pouvez utiliser **\$1Total**.  
Type : Chaîne  
Obligatoire : oui

**Niveaux**  
Les types de messages à envoyer à Amazon CloudWatch.  
Type : chaîne  
Valeurs valides :   
+ **1** - Uniquement les messages d'erreur chargés.
+ **2** - Uniquement les messages d'avertissement chargés.
+ **4** - Uniquement les messages d'information chargés.
Vous pouvez ajouter des valeurs pour inclure plusieurs types de message. Par exemple, **3** signifie que les messages d'erreur (**1**) et les messages d'avertissement (**2**) sont inclus. Une valeur de **7** signifie que les messages d'erreur (**1**), les messages d'avertissement (**2**) et les messages d'information (**4**) sont inclus.  
Obligatoire : oui  
Pour les journaux de sécurité Windows, Levels doit être défini sur 7.

**LineCount**  
Nombre de lignes de l'en-tête permettant d'identifier le fichier journal. Par exemple, les fichiers journaux IIS ont des en-têtes presque identiques. Vous pouvez entrer **3**, qui lirait les trois premières lignes de l'en-tête du fichier journal pour l'identifier. Dans les fichiers journaux IIS, la troisième ligne correspond à l'horodatage qui diffère d'un fichier journal à l'autre.  
Type : Integer  
Obligatoire : non

**LogDirectoryPath**  
Pour CustomLogs, le chemin où les journaux sont stockés sur votre instance EC2. Pour les journaux IIS, dossier dans lequel les journaux IIS sont stockés pour un site individuel (par exemple, **C : \$1 \$1 inetpub \$1 \$1 logs \$1 \$1 \$1 LogFiles \$1 *n* W3SVC**). Pour les journaux IIS, seul le format de journal W3C est pris en charge. Les formats IIS, NCSA et Personnalisé ne sont pas pris en charge.   
Type : Chaîne  
Obligatoire : oui

**LogGroup**  
Nom de votre groupe de journaux. Ce nom s'affiche sur l'écran **Groupes de journaux** dans la console CloudWatch.  
Type : Chaîne  
Obligatoire : oui

**LogName**  
Nom du fichier journal.  

1. Pour trouver le nom du journal, dans l'observateur d'événements, dans le panneau de navigation, sélectionnez **Applications and Services Logs (Journaux d'applications et de services)**.

1. Dans la liste des journaux, cliquez avec le bouton droit de la souris sur le journal que vous voulez télécharger (par exemple, `Microsoft` > `Windows` > `Backup` > `Operational`), puis cliquez sur **Créer une vue personnalisée**.

1. Dans la boîte de dialogue **Create Custom View (Créer une vue personnalisée)**, sélectionnez l'onglet **XML**. Cela **LogName**se trouve dans la balise <Select Path=> (par exemple,`Microsoft-Windows-Backup`). Copiez ce texte dans le **LogName**paramètre.
Type : Chaîne  
Valeurs valides : `Application` \$1 `Security` \$1 `System` \$1 `Microsoft-Windows-WinINet/Analytic`  
Obligatoire : oui

**LogStream**  
Flux de journal de destination. Si vous utilisez **\$1instance\$1id\$1**, la valeur par défaut, l'ID d'instance de cette instance est utilisée en tant que nom du flux de journal.  
Type : Chaîne  
Valeurs valides : `{instance_id}` \$1 `{hostname}` \$1 `{ip_address}` *<log\$1stream\$1name>*  
Si vous entrez un nom de flux de journal qui n'existe pas encore, CloudWatch Logs le crée automatiquement pour vous. Vous pouvez utiliser une chaîne littérale ou des variables prédéfinies (**\$1instance\$1id\$1**, **\$1hostname\$1**, **\$1ip\$1address\$1**), ou une combinaison des trois pour définir un nom de flux de journal.  
Le nom du flux de journal spécifié dans ce paramètre est affiché sur l'*<YourLogStream>*écran **Log Groups > Streams for** de la CloudWatch console.  
Obligatoire : oui

**MetricName**  
 CloudWatch Mesure dans laquelle vous souhaitez que les données de performance soient incluses.  
N'utilisez pas de caractères spéciaux dans ce nom. Sinon, la métrique et les alarmes associées risquent de ne pas fonctionner.
Type : Chaîne  
Obligatoire : oui

**NameSpace**  
Namespace de la métrique où vous voulez écrire les données des compteurs de performances.  
Type : Chaîne  
Obligatoire : oui

**PollInterval**  
Nombre de secondes avant qu'un nouveau compteur de performances et des données de journal soient chargés.  
Type : Integer  
Valeurs valides : indiquez une valeur égale ou supérieure à 5 secondes. La valeur recommandée est 15 secondes (00:00:15).  
Obligatoire : oui

**Région**  
L' Région AWS endroit où vous souhaitez envoyer les données du journal. Même si vous pouvez envoyer des compteurs de performances à une autre région où vous envoyez vos données de journal, nous vous recommandons de définir ce paramètre sur la même région où votre instance est en cours d'exécution.  
Type : Chaîne  
Valeurs valides : Régions IDs Régions AWS prises en charge à la fois par Systems Manager et CloudWatch Logs`us-east-2`, telles que`eu-west-1`, et`ap-southeast-1`. Pour obtenir la liste des points de terminaison Régions AWS pris en charge par chaque [service, consultez Amazon CloudWatch Logs Service Endpoints](https://docs.aws.amazon.com/general/latest/gr/cwl_region.html#cwl_region) [et Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) dans le. *Référence générale d'Amazon Web Services*   
Obligatoire : oui

**SecretKey**  
Clé d’accès secrète de votre compte . Cette propriété est obligatoire, sauf si vous avez lancé votre instance par l'intermédiaire d'une rôle IAM.  
Type : chaîne  
Obligatoire : non

**startType**  
Activez ou CloudWatch désactivez l'instance.  
Type : Chaîne  
Valeurs valides : `Enabled` \$1 `Disabled`  
Obligatoire : oui

**TimestampFormat**  
Format d'horodatage que vous voulez utiliser. Pour obtenir une liste des valeurs prises en charge, consultez [Chaînes de format de date et d'heure personnalisées](http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx) dans la bibliothèque MSDN.  
Type : Chaîne  
Obligatoire : oui

**TimeZoneKind**  
Fournit des informations de fuseau horaire si aucune n'est comprise dans l'horodatage de vos journaux. Si ce paramètre est laissé vide et si votre horodatage n'inclut aucune information de fuseau horaire, CloudWatch Logs utilise par défaut le fuseau horaire local. Ce paramètre est ignoré si votre horodatage contient déjà des informations de fuseau horaire.  
Type : Chaîne  
Valeurs valides : `Local` \$1 `UTC`  
Obligatoire : non

**Unit**  
Unité de mesure appropriée pour la métrique.  
Type : Chaîne  
Valeurs valides : secondes \$1 microsecondes \$1 millisecondes \$1 octets \$1 kilo-octets \$1 mégaoctets \$1 gigaoctets \$1 téraoctets \$1 bits \$1 kilobits \$1 mégabits \$1 gigabits \$1 gigabits \$1 térabits \$1 Pourcentage \$1 Nombre \$1 \$1 \$1 \$1 \$1 \$1 \$1 \$1 \$1 \$1 Aucun Bytes/Second Kilobytes/Second Megabytes/Second Gigabytes/Second Terabytes/Second Bits/Second Kilobits/Second Megabits/Second Gigabits/Second Terabits/Second Count/Second   
Obligatoire : oui

## `aws:configureDocker`
<a name="aws-configuredocker"></a>

(Version de schéma 2.0 ou ultérieure) Configuration d'une instance pour un fonctionnement avec des conteneurs et Docker. Ce plugin est pris en charge par la plupart des variantes de Linux et des systèmes d’exploitation Windows Server.

### Syntaxe
<a name="configuredocker-syntax"></a>

#### Schéma 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 }}"
      }
    }
  ]
}
```

------

### Inputs
<a name="configuredocker-properties"></a>

**action**  
Type d'action à effectuer.  
Type : énumération  
Valeurs valides : `Install` \$1 `Uninstall`  
Obligatoire : oui

## `aws:configurePackage`
<a name="aws-configurepackage"></a>

(Schema version 2.0 ou ultérieure) Installez ou désinstallez un AWS Systems Manager Distributor package. Vous pouvez installer la dernière version, la version par défaut ou une version du package que vous spécifiez. Les packages fournis par AWS sont également pris en charge. Ce plug-in s'exécute sur Windows Server et les systèmes d'exploitation Linux, mais tous les packages disponibles ne sont pas pris en charge sur les systèmes d'exploitation Linux.

Les AWS packages disponibles pour Windows Server incluent les suivants : `AWSPVDriver` `AWSNVMe``AwsEnaNetworkDriver`,`AwsVssComponents`,`AmazonCloudWatchAgent`,`CodeDeployAgent`, et `AWSSupport-EC2Rescue.`

 AWS Les packages disponibles pour les systèmes d'exploitation Linux sont les suivants : `AmazonCloudWatchAgent``CodeDeployAgent`, et`AWSSupport-EC2Rescue`.

### Syntaxe
<a name="configurepackage-syntax"></a>

#### Schéma 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\"}"
         }
      }
   ]
}
```

------

### Inputs
<a name="configurepackage-properties"></a>

**name**  
Nom du AWS package à installer ou à désinstaller. Les packages disponibles sont les suivants : `AWSPVDriver`, `AwsEnaNetworkDriver`, `AwsVssComponents` et `AmazonCloudWatchAgent`.  
Type : Chaîne  
Obligatoire : oui

**action**  
Installe ou désinstalle un package.  
Type : énumération  
Valeurs valides : `Install` \$1 `Uninstall`  
Obligatoire : oui

**Type d'installation**  
Type d'installation à effectuer. Si vous spécifiez `Uninstall and reinstall`, le package est complètement désinstallé, puis réinstallé. L'application n'est pas disponible tant que la réinstallation n'est pas terminée. Si vous spécifiez`In-place update`, seuls les fichiers nouveaux ou modifiés sont ajoutés à l'installation existante, conformément aux instructions que vous fournissez dans un script mis à jour. L'application reste disponible tout au long du processus de mise à jour. L'`In-place update`option n'est pas prise en charge pour les packages AWS publiés. `Uninstall and reinstall`est la valeur par défaut.  
Type : énumération  
Valeurs valides : `Uninstall and reinstall` \$1 `In-place update`  
Obligatoire : non

**AdditionalArguments**  
Une chaîne JSON de paramètres supplémentaires à ajouter à vos scripts d'installation, de désinstallation ou de mise à jour. Chaque paramètre doit être préfixé avec `SSM_`. Vous pouvez référencer un paramètre Parameter Store dans vos arguments supplémentaires en utilisant la convention `{{ssm:parameter-name}}`. Pour utiliser le paramètre supplémentaire dans vos scripts d'installation, de désinstallation ou de mise à jour, vous devez référencer le paramètre en tant que variable d'environnement en utilisant la syntaxe qui correspond au système d'exploitation. Par exemple, dans PowerShell, vous référencez l'`SSM_arg`argument comme`$Env:SSM_arg`. Le nombre d'arguments que vous définissez n'est pas limité, mais la saisie d'un argument supplémentaire est limitée à 4 096 caractères. Cette limite inclut l'ensemble des clés et des valeurs que vous définissez.  
Type : StringMap  
Obligatoire : non

**version**  
Version spécifique du package à installer ou désinstaller. Dans le cas d'une installation, le système installe par défaut la version publiée la plus récente. Dans le cas d'une désinstallation, le système désinstalle par défaut la version actuellement installée. Si aucune version installée n'est détectée, la version publiée la plus récente est téléchargée et l'action de désinstallation est exécutée.  
Type : chaîne  
Obligatoire : non

## `aws:domainJoin`
<a name="aws-domainJoin"></a>

Joindre une instance EC2 à un domaine. Ce plug-in s'exécute sur les systèmes d'exploitation Linux et Windows Server. Ce plugin remplace le nom d'hôte des instances Linux par le format EC2 AMAZ-. *XXXXXXX* Pour plus d'informations sur la jonction d'instances EC2, voir [Joindre une instance EC2 à votre répertoire AWS Microsoft AD géré](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_join_instance.html) dans le Guide d'*AWS Directory Service administration*.

### Syntaxe
<a name="domainJoin-syntax"></a>

#### Schéma 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 }}"
      }
    }
  ]
}
```

------

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

------

### Propriétés
<a name="domainJoin-properties"></a>

**directoryId**  
ID du répertoire.  
Type : Chaîne  
Obligatoire : oui  
Exemple : "directoryId": "d-1234567890"

**directoryName**  
Nom du domaine.  
Type : Chaîne  
Obligatoire : oui  
Exemple : "directoryName": "example.com"

**directoryOU**  
Unité d'organisation (UO).  
Type : chaîne  
Obligatoire : non  
Exemple : "directoryOU": "OU=test,DC=example,DC=com"

**dnsIpAddresses**  
Adresses IP des serveurs DNS.  
Type : StringList  
Obligatoire : oui  
Exemple : "dnsIpAddresses« : [" 198.51.100.1", "198.51.100.2"]

**hostname**  
Le nom d’hôte que vous voulez attribuer au nœud. Si aucune valeur n’est fournie, aucun changement de nom n’est effectué pour les instances Windows Server, tandis que les instances Linux utiliseront le modèle de dénomination par défaut. Si une valeur est fournie, les instances Windows Server utiliseront la valeur exacte fournie, tandis que pour les instances Linux, elle servira de préfixe (sauf si `keepHostName` est défini sur « true »).  
Type : chaîne  
Obligatoire : non

**keepHostName**  
Détermine si le nom d’hôte est modifié pour les instances Linux lorsqu’elles sont jointes au domaine. Il s’agit d’un paramètre réservé à Linux. Par défaut (sans saisie de `hostname``hostnameNumAppendDigits`, et avec `keepHostName` « false »), les hôtes Linux seront renommés selon le modèle EC2 AMAZ-XXXXXX. Si défini sur « true », il conserve le nom d’hôte d’origine et ignore les entrées dans `hostname` et `hostnameNumAppendDigits`.  
Type : booléen  
Obligatoire : non

**hostnameNumAppendChiffres**  
Définit le nombre de chiffres numériques aléatoires à ajouter après la valeur du nom d’hôte. Il s’agit d’un paramètre réservé à Linux qui est utilisé conjointement avec le paramètre `hostname`. Il est ignoré si `hostname` n’est pas fourni.  
Type : Chaîne  
Valeurs autorisées : 1 à 5  
Obligatoire : non

### Exemples
<a name="domainJoin-examples"></a>

Pour obtenir des exemples, consultez la rubrique [Join an Amazon EC2 Instance to your (Joindre une instance Amazon EC2 à votre) AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ec2-join-aws-domain.html) dans le *Guide d'administration AWS Directory Service *.

## `aws:downloadContent`
<a name="aws-downloadContent"></a>

(Schéma version 2.0 ou ultérieure) Téléchargez des documents et des scripts SSM à partir d’emplacements distants. Les référentiels GitHub Enterprise ne sont pas pris en charge. Ce plug-in est pris en charge sur les systèmes d'exploitation Linux et Windows Server.

### Syntaxe
<a name="downloadContent-syntax"></a>

#### Schéma 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 }}"
      }
    }
  ]
}
```

------

### Inputs
<a name="downloadContent-inputs"></a>

**sourceType**  
La source du téléchargement. Systems Manager prend en charge les types de source suivants pour le téléchargement de scripts et de documents SSM : `GitHub`, `Git`, `HTTP`, `S3` et `SSMDocument`.  
Type : Chaîne  
Obligatoire : oui

**sourceInfo**  
Informations obligatoires pour récupérer le contenu à partir de la source requise.  
Type : StringMap  
Obligatoire : oui  
 **Pour sourceType `GitHub,`, spécifiez les informations suivantes :**   
+ owner: propriétaire du référentiel.
+ repository: nom du référentiel.
+ path: chemin d'accès au fichier ou au répertoire que vous souhaitez télécharger.
+ getOptions : options supplémentaires pour récupérer le contenu d'une branche autre que master ou d'un commit spécifique dans le référentiel. getOptions peut être omise si vous utilisez la dernière validation dans la branche maître. Si votre référentiel a été créé après le 1er octobre 2020, la branche par défaut peut être nommée « main » au lieu de « master ». Dans ce cas, vous devrez spécifier des valeurs pour le paramètre getOptions.

  Ce paramètre utilise le format suivant :
  + branche : refs/heads/ *branch\$1name*

    La valeur par défaut est `master`.

    Pour spécifier une branche autre que celle par défaut, utilisez le format suivant :

    branche : refs/heads/ *branch\$1name*
  + CommitiD : *commitID*

    La valeur par défaut est `head`.

    Pour utiliser la version de votre document SSM dans un commit autre que le dernier, spécifiez l'ID de validation complet. Par exemple :

    ```
    "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
    ```
+ TokenInfo : le paramètre Systems Manager ( SecureStringun paramètre) dans lequel vous stockez les informations de GitHub votre jeton d'accès, au format. `{{ssm-secure:secure-string-token-name}}`
**Note**  
Ce `tokenInfo` champ est le seul champ du plugin de document SSM qui prend en charge un SecureString paramètre. SecureString les paramètres ne sont pris en charge pour aucun autre champ, ni pour aucun autre plugin de document SSM.

```
{
    "owner":"TestUser",
    "repository":"GitHubTest",
    "path":"scripts/python/test-script",
    "getOptions":"branch:master",
    "tokenInfo":"{{ssm-secure:secure-string-token}}"
}
```
 **Pour sourceType `Git`, vous devez spécifier les informations suivantes :**   
+ référentiels

  L'URL du référentiel Git vers le fichier ou le répertoire que vous souhaitez télécharger.

  Type : Chaîne
En outre, vous pouvez préciser les paramètres facultatifs suivants :  
+ getOptions

  Options supplémentaires pour récupérer le contenu d'une branche autre que master ou d'un commit spécifique dans le référentiel. getOptions peut être omise si vous utilisez la dernière validation dans la branche maître.

  Type : Chaîne

  Ce paramètre utilise le format suivant :
  + branche : refs/heads/ *branch\$1name*

    La valeur par défaut est `master`.

    `"branch"` n'est requis que si votre document SSM est stocké dans une branche autre que `master`. Par exemple :

    ```
    "getOptions": "branch:refs/heads/main"
    ```
  + CommitiD : *commitID*

    La valeur par défaut est `head`.

    Pour utiliser la version de votre document SSM dans un commit autre que le dernier, spécifiez l'ID de validation complet. Par exemple :

    ```
    "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
    ```
+ privé SSHKey

  Clé SSH à utiliser lors de la connexion au `repository` spécifié. Vous pouvez utiliser le format suivant pour référencer un paramètre `SecureString` pour la valeur de votre clé SSH : `{{ssm-secure:your-secure-string-parameter}}`.

  Type : Chaîne
+ skipHostKeyVérification

  Détermine la valeur de l' StrictHostKeyCheckingoption lors de la connexion à celle `repository` que vous spécifiez. La valeur par défaut est `false`.

  Type : Boolean
+ nom d’utilisateur

  Nom d'utilisateur à utiliser lors de la connexion au `repository` spécifié avec HTTP. Vous pouvez utiliser le format suivant pour référencer un paramètre `SecureString` pour la valeur de votre nom d'utilisateur : `{{ssm-secure:your-secure-string-parameter}}`.

  Type : Chaîne
+ mot de passe

  Mot de passe à utiliser lors de la connexion au `repository` spécifié avec HTTP. Vous pouvez utiliser le format suivant pour référencer un paramètre `SecureString` pour la valeur de votre mot de passe : `{{ssm-secure:your-secure-string-parameter}}`.

  Type : Chaîne
 **Pour sourceType `HTTP`, vous devez spécifier les informations suivantes :**   
+ url

  L'URL du fichier ou du répertoire que vous souhaitez télécharger.

  Type : Chaîne
En outre, vous pouvez préciser les paramètres facultatifs suivants :  
+ allowInsecureDownload

  Détermine si un téléchargement peut être effectué sur une connexion non chiffrée avec Secure Socket Layer (SSL) ou Transport Layer Security (TLS). La valeur par défaut est `false`. Nous vous déconseillons d'effectuer des téléchargements sans chiffrement. Si vous choisissez de le faire, vous en assumez les risques associés. La sécurité est une responsabilité partagée entre vous AWS et vous. Cela est décrit comme un modèle de responsabilité partagée. Pour en savoir plus, veuillez consulter le [Modèle de responsabilité partagée](https://aws.amazon.com/compliance/shared-responsibility-model/).

  Type : Boolean
+ authMethod

  Détermine si un nom d'utilisateur et un mot de passe sont utilisés pour l'authentification lors de la connexion au `url` spécifié. Si vous spécifiez `Basic` ou `Digest`, vous devez fournir des valeurs pour les paramètres `username` et `password`. Pour utiliser la méthode `Digest`, SSM Agent version 3.0.1181.0 ou une version ultérieure doit être installé sur votre instance. La `Digest` méthode prend en charge MD5 et SHA256 crypte.

  Type : Chaîne

  Valeurs valides : `None` \$1 `Basic` \$1 `Digest`
+ nom d’utilisateur

  Nom d'utilisateur à utiliser lors de la connexion au `url` spécifié avec l'authentification `Basic`. Vous pouvez utiliser le format suivant pour référencer un paramètre `SecureString` pour la valeur de votre nom d'utilisateur : `{{ssm-secure:your-secure-string-parameter}}`.

  Type : Chaîne
+ mot de passe

  Mot de passe à utiliser lors de la connexion au `url` spécifié avec l'authentification `Basic`. Vous pouvez utiliser le format suivant pour référencer un paramètre `SecureString` pour la valeur de votre mot de passe : `{{ssm-secure:your-secure-string-parameter}}`.

  Type : Chaîne
 **Pour sourceType `S3`, spécifiez les informations suivantes :**   
+ path: URL du fichier ou du répertoire que vous voulez télécharger à partir d'Amazon S3.
Lorsque vous téléchargez un fichier depuis un compartiment S3, les fichiers .etag sont générés dans le répertoire de téléchargement.

```
{
    "path": "https://s3.amazonaws.com/amzn-s3-demo-bucket/powershell/helloPowershell.ps1" 
}
```
 **Pour sourceType `SSMDocument`, spécifiez l'*une* des options suivantes :**   
+ name: nom et version du document au format suivant : `name:version`. La version est facultative. 

  ```
  {
      "name": "Example-RunPowerShellScript:3" 
  }
  ```
+ name : ARN du document au format suivant : `arn:aws:ssm:region:account_id:document/document_name`

  ```
  {
     "name":"arn:aws:ssm:us-east-2:3344556677:document/MySharedDoc"
  }
  ```

**destinationPath**  
Chemin local facultatif sur l'instance dans laquelle vous souhaitez télécharger le fichier. Si vous ne spécifiez pas de chemin, le contenu est téléchargé sur un chemin d'accès relatif à votre ID de commande.  
Type : chaîne  
Obligatoire : non

## `aws:psModule`
<a name="aws-psModule"></a>

Installez PowerShell des modules sur une instance Amazon EC2. Ce plug-in s'exécute uniquement sur les systèmes d'exploitation Windows Server.

### Syntaxe
<a name="psModule-syntax"></a>

#### Schéma 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 }}"
      }
    }
  ]
}
```

------

#### Schéma 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 }}"
            }
         ]
      }
   }
}
```

------

### Propriétés
<a name="psModule-properties"></a>

**runCommand**  
 PowerShell Commande à exécuter après l'installation du module.  
Type : StringList  
Obligatoire : non

**source**  
URL ou chemin d'accès sur l'instance du fichier `.zip` de l'application.  
Type : Chaîne  
Obligatoire : oui

**sourceHash**  
Le SHA256 hachage du `.zip` fichier.  
Type : chaîne  
Obligatoire : non

**timeoutSeconds**  
Nombre de secondes accordées à l'exécution d'une commande avant qu'elle soit considérée comme ayant échoué.  
Type : chaîne  
Obligatoire : non

**workingDirectory**  
Chemin d'accès au répertoire de travail sur votre instance.  
Type : chaîne  
Obligatoire : non

## `aws:refreshAssociation`
<a name="aws-refreshassociation"></a>

(Version de schéma 2.0 ou ultérieure) Actualisation (application forcée) d'une association à la demande. Cette action modifie l'état du système en fonction de ce qui est défini dans l'association sélectionnée ou dans toutes les associations liées aux cibles. Ce plug-in s'exécute sur les systèmes d'exploitation Linux et Microsoft Windows Server.

### Syntaxe
<a name="refreshassociation-syntax"></a>

#### Schéma 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 }}"
        ]
      }
    }
  ]
}
```

------

### Inputs
<a name="refreshassociation-properties"></a>

**associationIds**  
Liste des associations IDs Si ce paramètre est vide, toutes les associations liées à la cible spécifiée sont appliquées.  
Type : StringList  
Obligatoire : non

## `aws:runDockerAction`
<a name="aws-rundockeraction"></a>

(Version de schéma 2.0 ou ultérieure) Exécution des actions Docker sur les conteneurs. Ce plug-in s'exécute sur les systèmes d'exploitation Linux et Microsoft Windows Server.

### Syntaxe
<a name="rundockeraction-syntax"></a>

#### Schéma 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 }}"
         }
      }
   ]
}
```

------

### Inputs
<a name="rundockeraction-properties"></a>

**action**  
Type d'action à effectuer.  
Type : Chaîne  
Obligatoire : oui

**conteneur**  
ID du conteneur Docker.  
Type : chaîne  
Obligatoire : non

**image**  
Nom de l'image Docker.  
Type : chaîne  
Obligatoire : non

**cmd**  
Commande du conteneur.  
Type : chaîne  
Obligatoire : non

**memory**  
Limite de mémoire du conteneur.  
Type : chaîne  
Obligatoire : non

**cpuShares**  
Parts d'UC du conteneur (poids relatif).  
Type : chaîne  
Obligatoire : non

**volume**  
Montages de volume du conteneur.  
Type : StringList  
Obligatoire : non

**env**  
Variables d'environnement du conteneur.  
Type : chaîne  
Obligatoire : non

**user**  
Nom d'utilisateur du conteneur.  
Type : chaîne  
Obligatoire : non

**publication**  
Ports publiés du conteneur.  
Type : chaîne  
Obligatoire : non

**workingDirectory**  
Chemin d’accès au répertoire de travail sur votre nœud géré.  
Type : chaîne  
Obligatoire : non

**timeoutSeconds**  
Nombre de secondes accordées à l'exécution d'une commande avant qu'elle soit considérée comme ayant échoué.  
Type : chaîne  
Obligatoire : non

## `aws:runDocument`
<a name="aws-rundocument"></a>

(Version de schéma 2.0 ou ultérieure) Exécution des documents SSM stockés dans Systems Manager ou sur un partage local. Vous pouvez utiliser ce plugin avec le plugin [`aws:downloadContent`](#aws-downloadContent) pour télécharger un document SSM à partir d'un emplacement distant vers un partage local, puis l'exécuter. Ce plug-in est pris en charge sur les systèmes d'exploitation Linux et Windows Server. Ce plugin ne prend pas en charge l'exécution du document `AWS-UpdateSSMAgent` ou de tout autre document utilisant le plugin `aws:updateSsmAgent`.

### Syntaxe
<a name="rundocument-syntax"></a>

#### Schéma 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 }}"
      }
    }
  ]
}
```

------

### Inputs
<a name="rundocument-properties"></a>

**documentType**  
Type du document à exécuter. Vous pouvez exécuter des documents locaux (`LocalPath`) ou des documents stockés dans Systems Manager (`SSMDocument`).  
Type : Chaîne  
Obligatoire : oui

**documentPath**  
Chemin d'accès du document. Si `documentType` est `LocalPath`, spécifiez le chemin d'accès au document sur le partage local. Si `documentType` est `SSMDocument`, spécifiez le nom du document.  
Type : chaîne  
Obligatoire : non

**documentParameters**  
Paramètres pour le document.  
Type : StringMap  
Obligatoire : non

## `aws:runPowerShellScript`
<a name="aws-runPowerShellScript"></a>

Exécutez PowerShell des scripts ou spécifiez le chemin d'accès au script à exécuter. Ce plug-in s'exécute sur les systèmes d'exploitation Linux et Microsoft Windows Server.

### Syntaxe
<a name="runPowerShellScript-syntax"></a>

#### Schéma 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 }}"
        ]
      }
    }
  ]
}
```

------

#### Schéma 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 }}"
            }
         ]
      }
   }
}
```

------

### Propriétés
<a name="runPowerShellScript-properties"></a>

**runCommand**  
Spécifiez les commandes à exécuter ou le chemin d'accès à un script existant sur l'instance.  
Type : StringList  
Obligatoire : oui

**timeoutSeconds**  
Nombre de secondes accordées à l'exécution d'une commande avant qu'elle soit considérée comme ayant échoué. Une fois le délai atteint, Systems Manager arrête l'exécution de la commande.  
Type : chaîne  
Obligatoire : non

**workingDirectory**  
Chemin d'accès au répertoire de travail sur votre instance.  
Type : chaîne  
Obligatoire : non

## `aws:runShellScript`
<a name="aws-runShellScript"></a>

Exécution des scripts shell Linux ou spécification du chemin d'accès à un script à exécuter. Ce plug-in s'exécute uniquement sur les systèmes d'exploitation Linux.

### Syntaxe
<a name="runShellScript-syntax"></a>

#### Schéma 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 }}"
        ]
      }
    }
  ]
}
```

------

#### Schéma 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 }}"
            }
         ]
      }
   }
}
```

------

### Propriétés
<a name="runShellScript-properties"></a>

**runCommand**  
Spécifiez les commandes à exécuter ou le chemin d'accès à un script existant sur l'instance.  
Type : StringList  
Obligatoire : oui

**timeoutSeconds**  
Nombre de secondes accordées à l'exécution d'une commande avant qu'elle soit considérée comme ayant échoué. Une fois le délai atteint, Systems Manager arrête l'exécution de la commande.  
Type : chaîne  
Obligatoire : non

**workingDirectory**  
Chemin d'accès au répertoire de travail sur votre instance.  
Type : chaîne  
Obligatoire : non

## `aws:softwareInventory`
<a name="aws-softwareinventory"></a>

(Version de schéma 2.0 ou version ultérieure) Recueil des métadonnées sur des applications, des fichiers et des configurations sur vos instances gérées. Ce plug-in s'exécute sur les systèmes d'exploitation Linux et Microsoft Windows Server. Lorsque vous configurez la collecte d'inventaire, vous commencez par créer une AWS Systems Manager State Manager association. Systems Manager collecte les données d'inventaire lorsque l'association est exécutée. Si vous ne créez pas l'association en premier et essayez d'appeler le plugin `aws:softwareInventory`, le système renvoie l'erreur suivante :

```
The aws:softwareInventory plugin can only be invoked via ssm-associate.
```

Une instance ne peut avoir qu'une association d'inventaire configurée en même temps. Si vous configurez une instance avec plusieurs associations, l'association d'inventaire n'est pas exécutée et aucune donnée d'inventaire n'est collectée. Pour de plus amples informations sur la collecte de l'inventaire, veuillez consulter [AWS Systems Manager Inventory](systems-manager-inventory.md).

### Syntaxe
<a name="softwareinventory-syntax"></a>

#### Schéma 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**  
(Facultatif) Collecter les métadonnées pour les applications installées.  
Type : chaîne  
Obligatoire : non

**awsComponents**  
(Facultatif) Collectez des métadonnées pour AWS des composants tels que amazon-ssm-agent.  
Type : chaîne  
Obligatoire : non

**files**  
(Facultatif, nécessite la version de l'SSM Agent 2.2.64.0 ou d'une version ultérieure) Collectez les métadonnées pour les fichiers, notamment leurs noms, leur heure de création, l'heure de leur dernière modification et de leur dernier accès, leur taille, etc. Pour de plus amples informations sur la collecte de l'inventaire de fichiers, veuillez consulter [Utilisation de l'inventaire de fichiers et du registre Windows](inventory-file-and-registry.md).  
Type : chaîne  
Obligatoire : non

**networkConfig**  
(Facultatif) Collectez les métadonnées pour les configurations de réseau.  
Type : chaîne  
Obligatoire : non

**billingInfo**  
(Facultatif) Collectez des métadonnées pour les détails de la plateforme associée au code de facturation de l’AMI.  
Type : chaîne  
Obligatoire : non

**windowsUpdates**  
(Facultatif) Collectez les métadonnées pour toutes les mises à jour Windows.  
Type : chaîne  
Obligatoire : non

**instanceDetailedInformation**  
(Facultatif) Collectez plus d'informations d'instance que ce qui est fourni par le plugin d'inventaire par défaut (`aws:instanceInformation`), y compris le modèle d'UC, la vitesse et le nombre de cœurs, pour n'en citer que quelques-uns.  
Type : chaîne  
Obligatoire : non

**services**  
(Facultatif, système d'exploitation, Windows nécessite uniquement la version de l'SSM Agent 2.2.64.0 ou une version ultérieure) Collectez les métadonnées pour les configurations de service.  
Type : chaîne  
Obligatoire : non

**windowsRegistry**  
(Facultatif, système d'exploitation, Windows nécessite uniquement la version de l'SSM Agent 2.2.64.0 ou une version ultérieure) Collectez les valeurs et clés de registre Windows. Vous pouvez choisir un chemin de clé et collecter toutes les clés et valeurs de manière récursive. Vous pouvez également collecter une clé de registre spécifique et sa valeur pour un chemin donné. Inventory collecte le chemin de clé, le nom, le type et la valeur. Pour de plus amples informations sur la collecte de l'inventaire de fichiers et du registre Windows, veuillez consulter [Utilisation de l'inventaire de fichiers et du registre Windows](inventory-file-and-registry.md).  
Type : chaîne  
Obligatoire : non

**windowsRoles**  
(Facultatif, système d'exploitation, Windows nécessite uniquement la version de l'SSM Agent 2.2.64.0 ou une version ultérieure) Collectez les métadonnées pour les configurations de rôle Microsoft Windows.  
Type : chaîne  
Obligatoire : non

**customInventory**  
(Facultatif) Collectez les données d'inventaire personnalisées. Pour de plus amples informations sur l'inventaire personnalisé, veuillez consulter [Utilisation de l'inventaire personnalisé](inventory-custom.md).  
Type : chaîne  
Obligatoire : non

**customInventoryDirectory**  
(Facultatif) Collectez des données d’inventaire personnalisées à partir du répertoire spécifié. Pour de plus amples informations sur l'inventaire personnalisé, veuillez consulter [Utilisation de l'inventaire personnalisé](inventory-custom.md).  
Type : chaîne  
Obligatoire : non

## `aws:updateAgent`
<a name="aws-updateagent"></a>

Mettez à jour le service EC2 Config vers la dernière version ou spécifiez une version plus ancienne. Ce plug-in s'exécute uniquement sur les systèmes d'exploitation Microsoft Windows Server. Pour plus d'informations sur le service EC2 Config, consultez [Configuration d'une instance Windows à l'aide du service EC2 Config (ancien)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2config-service.html) dans le guide de l'*utilisateur Amazon EC2*.

### Syntaxe
<a name="updateagent-syntax"></a>

#### Schéma 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"
      }
    }
  ]
}
```

------

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

------

### Propriétés
<a name="updateagent-properties"></a>

**agentName**  
EC2Config. Il s'agit du nom de l'agent qui exécute le service EC2 Config.  
Type : Chaîne  
Obligatoire : oui

**allowDowngrade**  
Autoriser la rétrogradation du service EC2 Config vers une version antérieure. Si false est défini, le service peut uniquement être mis à jour vers des versions plus récentes (valeur par défaut). Si true est défini, vous devez spécifier la version antérieure.   
Type : booléen  
Obligatoire : non

**source**  
Emplacement où Systems Manager copie la version de EC2 Config à installer. Vous ne pouvez pas modifier cet emplacement.  
Type : Chaîne  
Obligatoire : oui

**targetVersion**  
Version spécifique du service EC2 Config à installer. Si vous ne spécifiez pas de version, le service est mis à jour avec la dernière version.  
Type : chaîne  
Obligatoire : non

## `aws:updateSsmAgent`
<a name="aws-updatessmagent"></a>

Mise à jour de l'SSM Agent à la version la plus récente ou spécification d'une version plus ancienne. Ce plug-in s'exécute sur les systèmes d'exploitation Linux et Windows Server. Pour de plus amples informations, veuillez consulter [Utilisation de l’option SSM Agent](ssm-agent.md). 

### Syntaxe
<a name="updateSSMagent-syntax"></a>

#### Schéma 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 }}"
      }
    }
  ]
}
```

------

#### Schéma 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 }}"
            }
         ]
      }
   }
}
```

------

### Propriétés
<a name="updateSSMagent-properties"></a>

**agentName**  
amazon-ssm-agent. Il s'agit du nom de l'agent Systems Manager qui traite les demandes et exécute les commandes sur l'instance.  
Type : Chaîne  
Obligatoire : oui

**allowDowngrade**  
Permet à l'SSM Agent d'être dégradé vers une version antérieure. Si false est défini, l'agent peut uniquement être mis à jour vers des versions plus récentes (valeur par défaut). Si true est défini, vous devez spécifier la version antérieure.   
Type : Boolean  
Obligatoire : oui

**source**  
Emplacement où Systems Manager copie la version de l'SSM Agent à installer. Vous ne pouvez pas modifier cet emplacement.  
Type : Chaîne  
Obligatoire : oui

**targetVersion**  
Version spécifique de SSM Agent à installer. Si vous ne spécifiez pas de version, l'agent est mis à jour avec la dernière version.  
Type : chaîne  
Obligatoire : non

# Création du contenu du document SSM
<a name="documents-creating-content"></a>

Si les documents AWS Systems Manager publics n'exécutent pas toutes les actions que vous souhaitez effectuer sur vos AWS ressources, vous pouvez créer vos propres documents SSM. Vous pouvez également cloner des documents SSM en utilisant la console. Le clonage de documents copie le contenu d'un document existant vers un nouveau document que vous pouvez modifier. Lors de la création ou du clonage d'un document, le contenu du document ne doit pas dépasser 64 Ko. Ce quota inclut également le contenu spécifié pour les paramètres d'entrée lors de l'exécution. Lorsque vous créez un nouveau `Command` ou document `Policy`, nous vous recommandons d'utiliser la version 2.2 ou ultérieure du schéma afin de tirer parti des fonctionnalités les plus récentes, telles que la mise à jour de documents, le contrôle de version automatique, le séquençage, etc.

## Rédaction du contenu du document SSM
<a name="writing-ssm-doc-content"></a>

Pour créer votre propre contenu de document SSM, il est important de comprendre les différents schémas, fonctionnalités, plugins et syntaxe disponibles pour les documents SSM. Nous vous recommandons de vous familiariser avec les ressources suivantes.
+  [Rédaction de vos propres AWS Systems Manager documents](https://aws.amazon.com/blogs//mt/writing-your-own-aws-systems-manager-documents/) 
+  [Éléments de données et paramètres](documents-syntax-data-elements-parameters.md) 
+  [Schémas, fonctionnalités et exemples](documents-schemas-features.md) 
+  [Référence de plug-in de document Command](documents-command-ssm-plugin-reference.md) 
+  [Référence sur les actions Systems Manager Automation](automation-actions.md) 
+  [Variables système Automation](automation-variables.md) 
+  [Exemples supplémentaires de runbook](automation-document-examples.md) 
+  [Utilisation de runbooks Systems Manager Automation](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/systems-manager-automation-docs.html) avec la AWS Toolkit for Visual Studio Code 
+  [Expérience de conception visuelle pour les runbooks d’Automatisation](automation-visual-designer.md) 
+  [Utilisation de scripts dans des runbooks](automation-document-script-considerations.md) 

AWS les documents SSM prédéfinis peuvent effectuer certaines des actions dont vous avez besoin. Vous pouvez appeler ces documents en utilisant les plugins `aws:runDocument`, `aws:runCommand` ou `aws:executeAutomation` dans votre document personnalisé SSM, selon le type de document. Vous pouvez également copier des parties de ces documents dans un document personnalisé SSM et modifier le contenu pour répondre à vos besoins.

**Astuce**  
Lors de la création du contenu du document SSM, vous pouvez modifier le contenu et mettre à jour le document SSM plusieurs fois pendant le test. Les commandes suivantes mettent à jour le document SSM avec votre dernier contenu et mettent à jour la version par défaut du document vers la dernière version du document.  
Les commandes Linux et Windows utilisent l'outil de ligne de commande `jq` pour filtrer les données de réponse 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
```

### Bonnes pratiques pour les documents SSM
<a name="ssm-document-security-practices"></a>

Lorsque vous créez des documents SSM, appliquez les bonnes pratiques de sécurité suivantes pour empêcher l’injection de commandes et garantir une gestion sécurisée des paramètres :
+ Utilisez l’interpolation des variables d’environnement pour les paramètres de chaîne qui seront utilisés dans les commandes ou les scripts. Ajoutez la propriété `interpolationType` avec la valeur `ENV_VAR` aux paramètres de votre chaîne :

  ```
  {
      "command": {
          "type": "String",
          "description": "Command to execute",
          "interpolationType": "ENV_VAR"
      }
  }
  ```

  Vous pouvez encore améliorer la sécurité de vos documents SSM en spécifiant que les guillemets ne sont pas acceptés dans les valeurs fournies par interpolation :

  ```
  {
      "command": {
          "type": "String",
          "description": "Command to execute",
          "interpolationType": "ENV_VAR",
              "allowedPattern": "^[^"]*$"
      }
  }
  ```
+ Lorsque vous utilisez des langages interprétés, comme Python, Ruby ou Node.js, référencez les paramètres à l’aide de la syntaxe de variable d’environnement appropriée :

  ```
  # Python example
  import os
  command = os.environ['SSM_Message']
  ```
+ Pour une compatibilité descendante avec les anciennes versions de SSM Agent (antérieures à la version 3.3.2746.0), incluez une logique de secours pour les variables d’environnement :

  ```
  if [ -z "${SSM_command+x}" ]; then
      export SSM_command="{{command}}"
  fi
  ```
+ Combinez l’interpolation des variables d’environnement avec `allowedPattern` pour une validation supplémentaire des entrées. Dans l’exemple suivant, la valeur `allowedPattern` `^[^"]*$` empêche spécifiquement les guillemets doubles dans la valeur de chaîne :

  ```
  {
      "command": {
          "type": "String",
          "interpolationType": "ENV_VAR",
          "allowedPattern": "^[a-zA-Z0-9_-]+$"
      }
  }
  ```
+ Avant d’implémenter votre document SSM, vérifiez les considérations de sécurité suivantes :
  + Tous les paramètres de chaîne qui acceptent les entrées utilisateur utilisent l’interpolation des variables d’environnement le cas échéant.
  + La validation des entrées est mise en œuvre en utilisant `allowedPattern` quand cela est possible.
  + Le document inclut la gestion des erreurs appropriée pour le traitement des paramètres.
  + La rétrocompatibilité est maintenue pour les environnements utilisant des versions plus anciennes de SSM Agent.

Pour plus d'informations sur les ressources AWS appartenant aux services auxquelles Systems Manager accède et sur la manière de configurer les politiques de périmètre des données, consultez. [Périmètres de données en AWS Systems Manager](data-perimeters.md)

## Clonage d'un document SSM
<a name="cloning-ssm-document"></a>

Vous pouvez cloner AWS Systems Manager des documents à l'aide de la console Systems Manager Documents pour créer des documents SSM. Le clonage de documents SSM copie le contenu d'un document existant vers un nouveau document que vous pouvez modifier. Vous ne pouvez pas cloner un document dont la taille est supérieure à 64 Ko.

**Pour cloner un document SSM**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Dans la zone de recherche, saisissez le nom du document que vous voulez cloner.

1. Sélectionnez le nom du document à cloner, puis sélectionnez **Clone document (Cloner un document)** dans le menu déroulant **Actions**. 

1. Modifiez le document selon vos préférences, puis sélectionnez **Create document (Créer un document)** pour enregistrer le document. 

Après avoir écrit le contenu du document SSM, vous pouvez utiliser votre contenu pour créer un document SSM à l'aide de l'une des méthodes suivantes.

**Topics**
+ [Rédaction du contenu du document SSM](#writing-ssm-doc-content)
+ [Clonage d'un document SSM](#cloning-ssm-document)
+ [Création de documents composites](#documents-creating-composite)

## Création de documents composites
<a name="documents-creating-composite"></a>

Un document *composite* AWS Systems Manager (SSM) est un document personnalisé qui exécute une série d'actions en exécutant un ou plusieurs documents SSM secondaires. Les documents composites favorisent l'*infrastructure en tant que code* en vous permettant de créer un jeu standard de documents SSM pour des tâches courantes telles que l'amorçage de logiciel ou la jonction d'instances à un domaine. Vous pouvez ensuite partager ces documents Comptes AWS dans un même document Région AWS afin de réduire la maintenance des documents SSM et de garantir la cohérence.

Par exemple, vous pouvez créer un document composite qui effectue les actions suivantes :

1. Installe tous les correctifs de la liste autorisée.

1. Installer un logiciel antivirus.

1. Télécharger des scripts à partir de GitHub et les exécuter.

Dans cet exemple, votre document SSM personnalisé inclut les plugins suivants pour effectuer ces actions :

1. Le plugin `aws:runDocument` pour exécuter le document `AWS-RunPatchBaseline`, qui installe tous les correctifs autorisés répertoriés.

1. Le plugin `aws:runDocument` pour exécuter le document `AWS-InstallApplication`, qui installe le logiciel antivirus.

1. Le plugin `aws:downloadContent` pour télécharger des scripts à partir de GitHub et les exécuter.

Les documents composites et secondaires peuvent être stockés dans Systems Manager, GitHub (référentiels publics et privés) ou dans Amazon S3. Les documents composites et secondaires peuvent être créés au format JSON ou YAML. 

**Note**  
Les documents composites peuvent exécuter une profondeur maximale de trois documents. Cela signifie qu'un document composite peut appeler un document enfant, et que celui-ci peut appeler un dernier document.

Pour créer un document composite, ajoutez le plugin [`aws:runDocument`](documents-command-ssm-plugin-reference.md#aws-rundocument) dans un document SSM personnalisé et spécifiez les entrées obligatoires. L'exemple suivant présente un document composite qui effectue les actions suivantes :

1. Exécute le plugin [`aws:downloadContent`](documents-command-ssm-plugin-reference.md#aws-downloadContent) pour télécharger un document SSM à partir d’un référentiel public GitHub vers un répertoire local appelé bootstrap. Le document SSM s'appelle StateManagerBootstrap .yml (un document YAML).

1. Exécute le `aws:runDocument` plugin pour exécuter le document StateManagerBootstrap .yml. Aucun paramètre n'est spécifié.

1. Exécute le plugin `aws:runDocument` pour exécuter le document SSM `AWS-ConfigureDocker pre-defined`. Les paramètres spécifiés installent Docker sur l'instance.

```
{
  "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\"}"
      }
    }
  ]
}
```

**Plus d'informations**  
+ Pour plus d'informations sur le redémarrage des serveurs et des instances en appelant des scripts à l'aide de Run Command, consultez [Gestion des redémarrages lors de l'exécution de commandes](send-commands-reboot.md).
+ Pour plus d'informations sur les plugins que vous pouvez ajouter à un document SSM personnalisé, consultez [Référence de plug-in de document Command](documents-command-ssm-plugin-reference.md).
+ Si vous souhaitez simplement exécuter un document à partir d'un emplacement distant (sans créer de document composite), consultez [Exécution de documents à partir d'emplacements distants](documents-running-remote-github-s3.md).

# Utilisation de documents
<a name="documents-using"></a>

Cette section inclut des informations sur l'utilisation des documents SSM.

**Topics**
+ [Comparer les versions d’un document SSM](comparing-versions.md)
+ [Créer un document SSM](create-ssm-console.md)
+ [Suppression de documents SSM personnalisés](deleting-documents.md)
+ [Exécution de documents à partir d'emplacements distants](documents-running-remote-github-s3.md)
+ [Partage de documents SSM](documents-ssm-sharing.md)
+ [Recherche de documents SSM](ssm-documents-searching.md)

# Comparer les versions d’un document SSM
<a name="comparing-versions"></a>

Vous pouvez comparer les différences de contenu entre les versions de documents AWS Systems Manager (SSM) dans la console Systems Manager Documents. Lorsque vous comparez des versions d'un document SSM, les différences entre le contenu des versions sont mises en surbrillance.

**Pour comparer le contenu d'un document SSM (console)**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Dans la liste de documents, chosissez le document dont vous voulez comparer le contenu.

1. Sous l'onglet **Content (Contenu)**, sélectionnez **Compare versions (Comparer des versions)**, puis sélectionnez la version du document auquel vous voulez comparer le contenu.

# Créer un document SSM
<a name="create-ssm-console"></a>

Après avoir créé le contenu pour votre document SSM personnalisé, comme décrit dans [Rédaction du contenu du document SSM](documents-creating-content.md#writing-ssm-doc-content), vous pouvez utiliser la console Systems Manager pour créer un document SSM à l'aide de votre contenu.

**Pour créer un document SSM**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Sélectionnez **Create command or session (Créer une commande ou une session)**.

1. Saisissez un nom descriptif pour le document.

1. (Facultatif) Pour **Type de cible**, spécifiez le type de ressources sur lequel le document peut s'exécuter.

1. Dans la liste **Types de document**, sélectionnez le type de document que vous souhaitez créer.

1. Supprimez les crochets du champ **Contenu**, puis copiez et collez le document que vous avez créé précédemment.

1. (Facultatif) Dans la section **Balises du document** appliquez une ou plusieurs paires nom/valeur de clé de balise au document.

   Les balises sont des métadonnées facultatives que vous affectez à une ressource. Les balises vous permettent de classer une ressource de différentes façons, par exemple, par objectif, par propriétaire ou par environnement. Par exemple, vous pouvez baliser un document pour identifier le type de tâches qu'il exécute, le type de systèmes d'exploitation qu'il cible et l'environnement dans lequel il s'exécute. Dans ce cas, vous pouvez spécifier les paires nom/valeur de clé suivantes :
   + `Key=TaskType,Value=MyConfigurationUpdate`
   + `Key=OS,Value=AMAZON_LINUX_2`
   + `Key=Environment,Value=Production`

1. Sélectionnez **Create document** pour enregistrer le document.

# Suppression de documents SSM personnalisés
<a name="deleting-documents"></a>

Si vous ne voulez plus utiliser un document SSM personnalisé, vous pouvez le supprimer à l’aide de la console AWS Systems Manager. 

**Pour supprimer un document SSM**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Sélectionnez le document que vous souhaitez supprimer.

1. Sélectionnez **Delete (Supprimer)**. Lorsque vous êtes invité à supprimer le document, sélectionnez **Delete (Supprimer)**.

Pour des exemples d’utilisation d’outils de ligne de commande ou de kits SDK pour supprimer des documents SSM, consultez [Utilisation `DeleteDocument` avec un AWS SDK ou une CLI](example_ssm_DeleteDocument_section.md).

# Exécution de documents à partir d'emplacements distants
<a name="documents-running-remote-github-s3"></a>

Vous pouvez exécuter des documents AWS Systems Manager (SSM) depuis des sites distants à l'aide du document SSM `AWS-RunDocument` prédéfini. Ce document prend en charge l'exécution de documents SSM stockés aux emplacements suivants :
+ Référentiels GitHub publics et privés (GitHub Enterprise n’est pas pris en charge)
+ Compartiments Amazon S3
+ Systems Manager

Bien que vous puissiez également exécuter des documents distants à l'aide des outils State Manager ou Automation AWS Systems Manager, la procédure suivante décrit uniquement comment exécuter des documents SSM distants AWS Systems Manager Run Command à l'aide de la console Systems Manager. 

**Note**  
`AWS-RunDocument` peut servir à exécuter des documents SSM de type commande, mais pas d'autres types du genre runbooks Automation. `AWS-RunDocument` utilise `aws:downloadContent`. Pour plus d'informations sur le plugin `aws:downloadContent`, consultez [`aws:downloadContent`](documents-command-ssm-plugin-reference.md#aws-downloadContent).

**Avertissement**  
`AWS-RunDocument`peut exécuter le contenu d'un document provenant de différentes sources (documents SSM GitHub, S3, URLs). Lors de l'exécution de documents distants, les autorisations IAM évaluées concernent ou non `ssm:GetDocument` le document distant. `ssm:SendCommand` `AWS-RunDocument` Si vous avez des politiques IAM qui refusent l'accès à des documents SSM spécifiques, les utilisateurs autorisés peuvent `AWS-RunDocument` toujours exécuter ces documents refusés en transmettant le contenu du document sous forme de paramètres, qui peuvent ne pas être soumis aux mêmes restrictions IAM spécifiques au document.  
Pour limiter correctement l'exécution du document, appliquez l'une des approches suivantes :  
**Autoriser les sources approuvées** : si vous devez utiliser l'exécution de documents imbriquée, limitez l'accès aux seules sources approuvées en utilisant des contrôles appropriés pour chaque type de source : politiques IAM `ssm:GetDocument` pour contrôler les sources de documents SSM, politiques IAM et de compartiment Amazon S3 pour les sources Amazon S3, et paramètres réseau (tels que les points de terminaison VPC ou les groupes de sécurité) pour les sources Internet publiques.
**Limitez l'accès à AWS- RunDocument** : Deny `ssm:SendCommand` on `AWS-RunDocument` et à tout autre document utilisant le `aws:runDocument` plug-in dans vos politiques IAM afin d'empêcher l'exécution de documents imbriqués.
**Utiliser des limites d'autorisation** : implémentez des limites d'autorisation IAM pour définir des autorisations maximales pour les utilisateurs, afin de les empêcher d'exécuter des documents non autorisés, quelle que soit la méthode d'exécution.
Pour plus d'informations sur les meilleures pratiques IAM et les limites d'autorisation, consultez la section [Limites d'autorisations pour les entités IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dans le guide de l'*Gestion des identités et des accès AWS utilisateur*.

**Avant de commencer**  
Avant d'exécuter un document distant, vous devez effectuer les tâches suivantes :
+ Créez un document Command SSM et enregistrez-le dans un emplacement distant. Pour de plus amples informations, consultez [Création du contenu du document SSM](documents-creating-content.md).
+ Si vous prévoyez d’exécuter un document distant stocké dans un référentiel GitHub privé, vous devez créer un paramètre Systems Manager `SecureString` pour votre jeton de droits d’accès GitHub. Vous ne pouvez pas accéder à un document distant stocké dans un référentiel GitHub privé en transmettant manuellement votre jeton via SSH. Le jeton d'accès doit être transmis en tant que paramètre Systems Manager `SecureString`. Pour plus d'informations sur la création d'un paramètre `SecureString`, consultez [Création de paramètres Parameter Store dans Systems Manager](sysman-paramstore-su-create.md).

## Exécuter un document distant (console)
<a name="documents-running-remote-github-s3-console"></a>

**Pour exécuter un document distant**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Run Command**.

1. Sélectionnez **Run Command (Exécuter la commande)**.

1. Dans la liste **Document**, sélectionnez **`AWS-RunDocument`**.

1. Dans **Paramètres de commande**, pour **Type de source**, sélectionnez une option. 
   + Si vous sélectionnez **GitHub**, spécifiez les informations **Source Info** dans le format suivant :

     ```
     {
         "owner": "owner_name",
         "repository": "repository_name",
         "path": "path_to_document",
         "getOptions":"branch:branch_name",
         "tokenInfo": "{{ssm-secure:secure-string-token}}"
     }
     ```

     Par exemple :

     ```
     {
         "owner":"TestUser",
         "repository":"GitHubTestExamples",
         "path":"scripts/python/test-script",
         "getOptions":"branch:exampleBranch",
         "tokenInfo":"{{ssm-secure:my-secure-string-token}}"
     }
     ```
**Note**  
`getOptions` sont des options supplémentaires pour récupérer le contenu d'une branche autre que master ou d'un commit spécifique dans le référentiel. `getOptions` peut être omise si vous utilisez la dernière validation dans la branche maître. Le paramètre `branch` n'est requis que si votre document SSM est stocké dans une branche autre que `master`.  
Pour utiliser la version d'un document SSM dans un *commit* particulier de votre référentiel, utilisez `commitID` avec `getOptions` au lieu de `branch`. Par exemple :  

     ```
     "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",
     ```
   + Si vous sélectionnez **S3**, spécifiez les informations **source** au format suivant :

     ```
     {"path":"URL_to_document_in_S3"}
     ```

     Par exemple :

     ```
     {"path":"https://s3.amazonaws.com/amzn-s3-demo-bucket/scripts/ruby/mySSMdoc.json"}
     ```
   + Si vous sélectionnez **SSMDocument**, spécifiez les informations **Source Info** dans le format suivant :

     ```
     {"name": "document_name"}
     ```

     Par exemple :

     ```
     {"name": "mySSMdoc"}
     ```

1. Dans le champ **Document Parameters (Paramètres du document)**, saisissez les paramètres du document SSM distant. Par exemple, si vous exécutez le document `AWS-RunPowerShell`, vous pouvez spécifier ce qui suit :

   ```
   {"commands": ["date", "echo \"Hello World\""]}
   ```

   Si vous exécutez le document `AWS-ConfigureAWSPack`, vous pouvez spécifier ce qui suit :

   ```
   {
      "action":"Install",
      "name":"AWSPVDriver"
   }
   ```

1. Dans la section **Targets (Cibles)**, sélectionnez les nœuds gérés sur lesquels vous souhaitez exécuter cette opération en spécifiant des balises, en sélectionnant des instances ou des appareils de périphérie manuellement ou en spécifiant un groupe de ressources.
**Astuce**  
Si, contrairement à vos attentes, un nœud géré ne figure pas dans la liste, consultez [Résolution des problèmes de disponibilité des nœuds gérés](fleet-manager-troubleshooting-managed-nodes.md) pour obtenir des conseils de dépannage.

1. Pour **Autres paramètres** :
   + Pour **Comment (Commentaire)**, saisissez des informations à propos de cette commande.
   + Pour **Délai (secondes)**, précisez le nombre de secondes durant lesquelles le système doit attendre avant de mettre en échec l'exécution de la commande globale. 

1. Pour **Rate control (Contrôle de débit)** :
   + Dans **Concurrency (Simultanéité)**, spécifiez un nombre ou un pourcentage de nœuds gérés sur lesquels exécuter simultanément la commande.
**Note**  
Si vous avez sélectionné des cibles en spécifiant des balises appliquées aux nœuds gérés ou en spécifiant AWS des groupes de ressources, et que vous n'êtes pas certain du nombre de nœuds gérés ciblés, limitez le nombre de cibles pouvant exécuter le document en même temps en spécifiant un pourcentage.
   + Dans **Error threshold (Seuil d'erreur)**, indiquez quand arrêter l'exécution de la commande sur les autres nœuds gérés après l'échec de celle-ci sur un certain nombre ou un certain pourcentage de nœuds. Si, par exemple, vous spécifiez trois erreurs, Systems Manager cesse d'envoyer la commande à la réception de la quatrième erreur. Les nœuds gérés sur lesquels la commande est toujours en cours de traitement peuvent également envoyer des erreurs.

1. (Facultatif) Pour **Output options (Options de sortie)**, pour enregistrer la sortie de la commande dans un fichier, cochez la case **Write command output to an S3 bucket (Écrire la sortie de commande vers un compartiment S3)**. Saisissez les noms de compartiment et de préfixe (dossier) dans les zones.
**Note**  
Les autorisations S3 qui accordent la possibilité d'écrire les données dans un compartiment S3 sont celles du profil d'instance (pour les instances EC2) ou de la fonction du service IAM (pour les machines activées par un système hybride) attribués à l'instance, et non celles de l'utilisateur IAM qui effectue cette tâche. Pour plus d’informations, consultez les sections [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md) et [Créer un rôle de service IAM pour un environnement hybride](hybrid-multicloud-service-role.md). En outre, si le compartiment S3 spécifié se trouve sur un autre Compte AWS, assurez-vous que le profil d'instance ou la fonction de service IAM associé au nœud géré dispose des autorisations nécessaires pour écrire dans ce compartiment.

1. Dans la section **SNS notifications (Notifications SNS)**, si vous souhaitez envoyer des notifications sur le statut d'exécution des commandes, cochez la case **Enable SNS notifications (Activer les notifications SNS)**.

   Pour plus d'informations sur la configuration des notifications Amazon SNS pour Run Command, consultez [Surveillance des changements d'état du Systems Manager à l'aide des notifications Amazon SNS](monitoring-sns-notifications.md).

1. Cliquez sur **Exécuter**.

**Note**  
Pour plus d'informations sur le redémarrage des serveurs et des instances en appelant des scripts à l'aide de Run Command, consultez [Gestion des redémarrages lors de l'exécution de commandes](send-commands-reboot.md).

# Partage de documents SSM
<a name="documents-ssm-sharing"></a>

Vous pouvez partager AWS Systems Manager (SSM) des documents en privé ou en public avec les comptes correspondants. Région AWS Pour partager un document de façon privée, modifiez les autorisations du document et autorisez des personnes spécifiques à y accéder en fonction de leur ID Compte AWS . Pour partager un document SSM publiquement, modifiez les autorisations du document et spécifiez `All`. Les documents ne peuvent pas être partagés simultanément publiquement et en privé.

**Avertissement**  
N'utilisez que des documents SSM partagés provenant de sources fiables. Lorsque vous utilisez un document partagé, étudiez soigneusement son contenu avant de l'utiliser afin de comprendre comment il va modifier la configuration de votre instance. Pour plus d'informations sur les bonnes pratiques en matière de documents partagés, consultez [Bonnes pratiques pour les documents SSM partagés](#best-practices-shared). 

**Limitations**  
Lorsque vous commencez à utiliser les documents SSM, vous devez connaître les limitations suivantes.
+ Seul le propriétaire peut partager un document.
+ Vous devez arrêter le partage d'un document pour pouvoir le supprimer. Pour de plus amples informations, veuillez consulter [Modification des autorisations d'un document SSM partagé](#modify-permissions-shared).
+ Vous pouvez partager un document avec un maximum de 1 000 Comptes AWS. Vous pouvez demander que cette limite soit augmentée dans le [Centre Support](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). Pour **Limit type (Type de limite)**, sélectionnez *EC2 Systems Manager* et décrivez le motif de votre demande.
+ Vous pouvez partager publiquement cinq documents SSM au maximum. Vous pouvez demander que cette limite soit augmentée dans le [Centre Support](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase). Pour **Limit type (Type de limite)**, sélectionnez *EC2 Systems Manager* et décrivez le motif de votre demande.
+ Les documents peuvent être partagés avec d'autres comptes Région AWS uniquement dans le même compte. Le partage inter-régions n'est pas pris en charge.

**Important**  
Dans Systems Manager, un document SSM *appartenant à Amazon* est un document créé et géré par Amazon Web Services lui-même. Les documents *appartenant à Amazon* comprennent un préfixe tel que `AWS-*` dans le nom du document. Le propriétaire du document est considéré comme Amazon, et non comme un compte utilisateur spécifique au sein de celui-ci AWS. Ces documents sont accessibles à tous.

Pour plus d'informations sur les quotas de service Systems Manager, consultez [Service Quotas AWS Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm).

**Topics**
+ [Bonnes pratiques pour les documents SSM partagés](#best-practices-shared)
+ [Bloquer le partage public de documents SSM](#block-public-access)
+ [Partager un document SSM](#ssm-how-to-share)
+ [Modification des autorisations d'un document SSM partagé](#modify-permissions-shared)
+ [Utilisation de documents SSM partagés](#using-shared-documents)

## Bonnes pratiques pour les documents SSM partagés
<a name="best-practices-shared"></a>

Passez en revue les consignes suivantes avant de partager un document ou d'utiliser un document partagé. 

**Supprimer les informations sensibles**  
Vérifiez attentivement votre document AWS Systems Manager (SSM) et supprimez toutes les informations sensibles. Par exemple, vérifiez que le document ne contient pas vos AWS informations d'identification. Si vous partagez un document avec des personnes spécifiques, ces personnes peuvent voir les informations contenues dans le document. Si vous partagez un document publiquement, tout le monde peut voir les informations contenues dans le document.

**Bloquer le partage public de documents**  
Examinez tous les documents SSM partagés publiquement dans votre compte et confirmez si vous voulez continuer à les partager. Pour arrêter de partager un document avec le public, vous devez modifier le paramètre d’autorisation du document comme décrit dans la section [Modification des autorisations d'un document SSM partagé](#modify-permissions-shared) de cette rubrique. L’activation du paramètre de blocage du partage public n’affecte pas les documents que vous partagez actuellement avec le public. À moins que votre cas d’utilisation n’exige que vous partagiez des documents avec le public, nous vous recommandons d’activer le paramètre de blocage du partage public pour vos documents SSM dans la section **Préférences** de la console Documents Systems Manager. L'activation de ce paramètre empêche l'accès non souhaité à vos documents SSM. Le paramètre de blocage du partage public est un paramètre de niveau compte qui peut varier selon la Région AWS.

**Limiter les actions Run Command à l'aide d'une politique d'approbation IAM**  
Créez une politique restrictive Gestion des identités et des accès AWS (IAM) pour les utilisateurs qui auront accès au document. La politique IAM détermine les documents SSM qu'un utilisateur peut voir dans la console Amazon Elastic Compute Cloud (Amazon EC2) ou en `ListDocuments` appelant à l'aide du () ou. AWS Command Line Interface AWS CLI AWS Tools for Windows PowerShell La politique limite également les actions que l'utilisateur peut effectuer avec un document SSM. Vous pouvez créer une politique restrictive pour qu'un utilisateur ne puisse utiliser que des documents spécifiques. Pour de plus amples informations, veuillez consulter [Exemples de politiques gérées par le client](security_iam_id-based-policy-examples.md#customer-managed-policies).

**Faites preuve de prudence lors de l'utilisation de documents SSM partagés**  
Étudiez le contenu de chaque document partagé avec vous, notamment des documents publics, afin de comprendre les commandes qui seront exécutées sur vos instances. Un document pourrait avoir, volontairement ou non, des répercussions négatives après son exécution. Si le document fait référence à un réseau externe, étudiez la source externe avant d'utiliser ce document. 

**Envoyer les commandes en utilisant le hachage de document**  
Lorsque vous partagez un document, le système crée un hachage Sha-256 et l'affecte au document. Le système enregistre également un instantané du contenu du document. Lorsque vous envoyez une commande à l'aide d'un document partagé, vous pouvez spécifier le hachage dans votre commande afin de garantir le respect des conditions suivantes :  
+ Vous exécutez la commande à partir du document Systems Manager approprié
+ Le contenu du document n'a pas changé depuis qu'il a été partagé avec vous.
Si le hachage ne correspond pas au document spécifié ou si le contenu du document partagé a changé, la commande renvoie une exception `InvalidDocument`. Le hachage ne peut pas vérifier le contenu du document à partir d'emplacements externes.

**Utiliser le paramètre d’interpolation pour améliorer la sécurité**  
Pour les paramètres de type `String` dans vos documents SSM, utilisez le paramètre et la valeur `interpolationType": "ENV_VAR` pour améliorer la sécurité contre les attaques par injection de commandes en traitant les entrées de paramètres comme des chaînes littérales plutôt que comme des commandes potentiellement exécutables. Dans ce cas, l’agent crée une variable d’environnement nommée `SSM_parameter-name` avec la valeur du paramètre. Nous vous recommandons de mettre à jour tous vos documents SSM existants qui incluent des paramètres de type `String` pour inclure `"interpolationType": "ENV_VAR"`. Pour de plus amples informations, veuillez consulter [Rédaction du contenu du document SSM](documents-creating-content.md#writing-ssm-doc-content).

## Bloquer le partage public de documents SSM
<a name="block-public-access"></a>

Avant de commencer, examinez tous les documents SSM partagés publiquement dans votre Compte AWS et confirmez si vous voulez continuer à les partager. Pour arrêter de partager un document SSM avec le public, vous devez modifier le paramètre d’autorisation du document comme décrit dans la section [Modification des autorisations d'un document SSM partagé](#modify-permissions-shared) de cette rubrique. L’activation du paramètre de blocage du partage public n’affecte pas les documents SSM que vous partagez actuellement avec le public. Lorsque le paramètre de blocage du partage public est activé, vous ne pouvez plus partager de documents SSM avec le public.

À moins que votre cas d’utilisation n’exige que vous partagiez des documents avec le public, nous vous recommandons d’activer le paramètre de blocage du partage public pour vos documents SSM. L'activation de ce paramètre empêche l'accès non souhaité à vos documents SSM. Le paramètre de blocage du partage public est un paramètre au niveau du compte qui peut varier d'un compte à l'autre Région AWS. Effectuez les tâches suivantes pour bloquer le partage public de tous les documents SSM que vous ne partagez pas actuellement.

### Bloquer le partage public (console)
<a name="block-public-access-console"></a>

**Pour bloquer le partage public de vos documents SSM**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Sélectionnez **Preferences (Préférences)**, puis **Edit (Modifier)** dans la section **Block public sharing (Bloquer le partage public)**.

1. Cochez la case **Block public sharing (Bloquer le partage public)**, puis sélectionnez **Save (Enregistrer)**. 

### Bloquer le partage public (ligne de commande)
<a name="block-public-access-cli"></a>

Ouvrez le AWS Command Line Interface (AWS CLI) ou AWS Tools for Windows PowerShell sur votre ordinateur local et exécutez la commande suivante pour bloquer le partage public de vos documents SSM.

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

```
aws ssm update-service-setting  \
    --setting-id /ssm/documents/console/public-sharing-permission \
    --setting-value Disable \
    --region 'The Région 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 Région AWS you want to block public sharing in"
```

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

```
Update-SSMServiceSetting `
    -SettingId /ssm/documents/console/public-sharing-permission `
    -SettingValue Disable `
    –Region The Région AWS you want to block public sharing in
```

------

Confirmez que la valeur du paramètre a été mise à jour en utilisant la commande suivante.

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

```
aws ssm get-service-setting   \
    --setting-id /ssm/documents/console/public-sharing-permission \
    --region The Région AWS you blocked public sharing in
```

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

```
aws ssm get-service-setting  ^
    --setting-id /ssm/documents/console/public-sharing-permission ^
    --region "The Région AWS you blocked public sharing in"
```

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

```
Get-SSMServiceSetting `
    -SettingId /ssm/documents/console/public-sharing-permission `
    -Region The Région AWS you blocked public sharing in
```

------

### Restreindre l'accès pour bloquer le partage public avec IAM
<a name="block-public-access-changes-iam"></a>

Vous pouvez créer des politiques Gestion des identités et des accès AWS (IAM) qui empêchent les utilisateurs de modifier le paramètre de blocage du partage public. Cela empêche les utilisateurs d'autoriser l'accès non souhaité à vos documents SSM. 

Voici un exemple de politique IAM qui empêche les utilisateurs de mettre à jour le paramètre de blocage du partage public. Pour utiliser cet exemple, vous devez remplacer l'exemple d'ID de compte Amazon Web Services par votre propre ID de compte.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "ssm:UpdateServiceSetting",
            "Resource": "arn:aws:ssm:*:444455556666:servicesetting/ssm/documents/console/public-sharing-permission"
        }
    ]
}
```

------

## Partager un document SSM
<a name="ssm-how-to-share"></a>

Vous pouvez partager des documents AWS Systems Manager (SSM) à l'aide de la console Systems Manager. Lors du partage de documents depuis la console, seule la version par défaut du document peut être partagée. Vous pouvez également partager des documents SSM par programmation en appelant l'opération d'`ModifyDocumentPermission`API à l'aide du AWS Command Line Interface (AWS CLI) ou du AWS Tools for Windows PowerShell SDK. AWS Avant de partager un document, identifiez Compte AWS IDs les personnes avec lesquelles vous souhaitez le partager. Vous spécifierez ces comptes IDs lorsque vous partagerez le document.

### Partager un document (console)
<a name="share-using-console"></a>

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Dans la liste des documents, sélectionnez le document que vous souhaitez partager, puis sélectionnez **Afficher les détails**. Sur l'onglet **Permissions (Autorisations)**, vérifiez que vous êtes le propriétaire du document. Seul le propriétaire d'un document peut le partager.

1. Sélectionnez **Edit** (Modifier).

1. Pour partager la commande publiquement, sélectionnez **Public**, puis **Save**. Pour partager la commande de façon privée, sélectionnez **Private (Privé)**, saisissez l'ID de compte Compte AWS , puis sélectionnez **Add permission (Ajouter une autorisation** et **Save (Enregistrer)**. 

### Partager un document (ligne de commande)
<a name="share-using-cli"></a>

La procédure suivante nécessite que vous spécifiiez un Région AWS pour votre session de ligne de commande.

1. Ouvrez le AWS CLI ou AWS Tools for Windows PowerShell sur votre ordinateur local et exécutez la commande suivante pour spécifier vos informations d'identification. 

   Dans la commande suivante, remplacez *region* par vos propres informations. Pour obtenir la liste des *region* valeurs prises en charge, consultez la colonne **Région** dans les [points de terminaison du service Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) dans le *Référence générale d'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. Utilisez la commande suivante pour répertorier tous les documents SSM qui sont disponibles. La liste inclut les documents que vous avez créés et ceux qui ont été partagés avec vous.

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

   ```
   aws ssm list-documents
   ```

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

   ```
   aws ssm list-documents
   ```

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

   ```
   Get-SSMDocumentList
   ```

------

1. Utilisez la commande suivante pour obtenir un document spécifique.

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

   ```
   aws ssm get-document \
       --name document name
   ```

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

   ```
   aws ssm get-document ^
       --name document name
   ```

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

   ```
   Get-SSMDocument `
       –Name document name
   ```

------

1. Utilisez la commande suivante pour obtenir la description du document.

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

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

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

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

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

   ```
   Get-SSMDocumentDescription `
       –Name document name
   ```

------

1. Utilisez la commande suivante pour afficher les autorisations définies pour le document.

------
#### [ 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. Utilisez la commande suivante pour modifier les autorisations définies pour le document et partager celui-ci. Vous devez être le propriétaire du document pour modifier les autorisations. Facultativement, pour les documents partagés avec des personnes spécifiques Compte AWS IDs, vous pouvez spécifier une version du document que vous souhaitez partager à l'aide du `--shared-document-version` paramètre. Si vous ne spécifiez pas de version, le système partage la version `Default` du document. Si vous partagez un document publiquement (avec `all`), toutes les versions du document spécifié sont partagées par défaut. L'exemple de commande suivant partage le document en privé avec une personne spécifique, en fonction de son Compte AWS identifiant.

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

   ```
   aws ssm modify-document-permission \
       --name document name \
       --permission-type Share \
       --account-ids-to-add Compte AWS ID
   ```

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

   ```
   aws ssm modify-document-permission ^
       --name document name ^
       --permission-type Share ^
       --account-ids-to-add Compte AWS ID
   ```

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

   ```
   Edit-SSMDocumentPermission `
       –Name document name `
       -PermissionType Share `
       -AccountIdsToAdd Compte AWS ID
   ```

------

1. Utilisez la commande suivante pour partager un document publiquement.
**Note**  
Si vous partagez un document publiquement (avec `all`), toutes les versions du document spécifié sont partagées par défaut. 

------
#### [ 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')
   ```

------

## Modification des autorisations d'un document SSM partagé
<a name="modify-permissions-shared"></a>

Si vous partagez une commande, les utilisateurs peuvent afficher et utiliser cette commande jusqu'à ce que vous supprimiez l'accès au document AWS Systems Manager (SSM) ou que vous supprimiez le document SSM. Cependant, vous ne pouvez pas supprimer un document tant qu'il est partagé. Vous devez d'abord arrêter le partage, puis supprimer le document.

### Arrêt du partage d'un document (console)
<a name="unshare-using-console"></a>

**Arrêt du partage d'un document**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Dans la liste des documents, sélectionnez le document que vous souhaitez arrêter de partager, puis sélectionnez **Détails**. Dans la section **Autorisations**, vérifiez que vous êtes le propriétaire du document. Seul le propriétaire d'un document peut arrêter le partage de celui-ci.

1. Sélectionnez **Edit** (Modifier).

1. Choisissez **X** pour supprimer l' Compte AWS identifiant qui ne devrait plus avoir accès à la commande, puis cliquez **sur Enregistrer**. 

### Arrêter le partage d'un document (ligne de commande)
<a name="unshare-using-cli"></a>

Ouvrez le AWS CLI ou AWS Tools for Windows PowerShell sur votre ordinateur local et exécutez la commande suivante pour arrêter de partager une commande.

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

```
aws ssm modify-document-permission \
    --name document name \
    --permission-type Share \
    --account-ids-to-remove 'Compte AWS ID'
```

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

```
aws ssm modify-document-permission ^
    --name document name ^
    --permission-type Share ^
    --account-ids-to-remove "Compte AWS ID"
```

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

```
Edit-SSMDocumentPermission `
    -Name document name `
    -PermissionType Share `
    –AccountIdsToRemove Compte AWS ID
```

------

## Utilisation de documents SSM partagés
<a name="using-shared-documents"></a>

Lorsque vous partagez un document AWS Systems Manager (SSM), le système génère un Amazon Resource Name (ARN) et l'attribue à la commande. Si vous sélectionnez et exécutez un document partagé à partir de la console Systems Manager, vous ne voyez pas l'ARN. Toutefois, si vous voulez exécuter un document SSM partagé à l'aide d'une méthode autre que la console Systems Manager, vous devez spécifier l'ARN complet du document pour le `DocumentName` paramètre de la requête. L'ARN complet d'un document SSM s'affiche lorsque vous exécutez la commande permettant de répertorier les documents. 

**Note**  
Vous n'êtes pas obligé de spécifier ARNs les documents AWS publics (documents commençant par`AWS-*`) ou les documents dont vous êtes le propriétaire.

### Utiliser un document SSM partagé (ligne de commande)
<a name="using-shared-documents-cli"></a>

 **Pour répertorier tous les documents SSM publics** 

------
#### [ 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)
```

------

 **Pour répertorier les documents SSM privés qui ont été partagés avec vous** 

------
#### [ 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)
```

------

 **Pour répertorier tous les documents SSM disponibles** 

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

```
aws ssm list-documents
```

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

```
aws ssm list-documents
```

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

```
Get-SSMDocumentList
```

------

 **Pour obtenir des informations sur un document SSM qui a été partagé avec vous** 

------
#### [ 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
```

------

 **Pour exécuter un document SSM partagé** 

------
#### [ 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
```

------

# Recherche de documents SSM
<a name="ssm-documents-searching"></a>

Vous pouvez rechercher des documents SSM dans la banque de documents AWS Systems Manager (SSM) en utilisant une recherche en texte libre ou une recherche basée sur des filtres. Vous pouvez également ajouter des documents à vos favoris pour retrouver les documents SSM fréquemment utilisés. Les sections suivantes décrivent comment utiliser ces fonctions.

## Utilisation de la recherche en texte libre
<a name="ssm-documents-searching-free-text"></a>

La zone de recherche de la page **Documents** de Systems Manager prend en charge la recherche en texte libre. La recherche en texte libre compare le ou les termes de recherche saisis au nom de document dans chaque document SSM. Si vous saisissez un seul terme de recherche, **ansible** par exemple, Systems Manager renvoie tous les documents SSM dans lesquels ce terme a été découvert. Si vous saisissez plusieurs termes de recherche, Systems Manager effectue une recherche en utilisant une instruction `OR`. Par exemple, si vous spécifiez **ansible** et **linux**, la recherche renvoie tous les documents dont le nom contient le mot-clé *either (l'un ou l'autre)*.

Si vous saisissez un terme de recherche en texte libre et que vous sélectionnez une option de recherche telle que **Platform type (Type de plateforme)**, la recherche utilise une instruction `AND` et renvoie tous les documents avec le mot clé dans leur nom et le type de plateforme spécifié.

**Note**  
Notez les détails suivants sur la recherche en texte libre.  
La recherche de texte libre recherche *n'est pas* sensible à la casse.
Les termes de recherche exigent un minimum de trois caractères et un maximum de 20 caractères.
La recherche en texte libre accepte jusqu'à cinq termes de recherche.
Si vous saisissez un espace entre les termes de recherche, le système inclut l'espace lors de la recherche.
Vous pouvez combiner la recherche en texte libre à d'autres options de recherche telles que **Document type (Type de document)** ou **Platform type (Type de plateforme)**.
Le filtre **Document Name Prefix (Préfixe de nom de document)** et la recherche en texte libre ne peuvent pas être utilisés ensemble. Ils s'excluent mutuellement.

**Pour rechercher un document SSM**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Saisissez vos termes de recherche dans la zone de recherche, puis appuyez sur Entrée.

### Effectuer une recherche dans un document texte libre à l'aide du AWS CLI
<a name="ssm-documents-searching-free-text-cli"></a>

**Pour effectuer une recherche de documents en texte libre en utilisant la CLI**

1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait.

   Pour de plus amples informations, consultez [Installation ou mise à jour de la version la plus récente de l' AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Pour effectuer une recherche de document en texte libre avec un seul terme, exécutez la commande suivante. Dans cette commande, remplacez *search\$1term* par vos propres informations.

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="search_term"
   ```

   Voici un exemple :

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="aws-asg" --region us-east-2
   ```

   Pour effectuer une recherche avec plusieurs termes qui créent une instruction `AND`, exécutez la commande suivante. Dans cette commande, remplacez *search\$1term\$11* et *search\$1term\$12* par vos propres informations.

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="search_term_1","search_term_2","search_term_3" --region us-east-2
   ```

   Voici un exemple :

   ```
   aws ssm list-documents --filters Key="SearchKeyword",Values="aws-asg","aws-ec2","restart" --region us-east-2
   ```

## Utilisation de filtres
<a name="ssm-documents-searching-filters"></a>

La page **Documents** de Systems Manager affiche automatiquement les filtres suivants lorsque vous sélectionnez la zone de recherche. 
+ Préfixe de nom de document
+ Types de plateforme
+ Type de document
+ Clé de balise

![\[Options de filtre sur la page Documents SSM.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/ssm-documents-filters-1.png)


Vous pouvez rechercher des documents SSM en utilisant un seul filtre. Si vous voulez renvoyer un ensemble plus spécifique de documents SSM, vous pouvez appliquer plusieurs filtres. Voici un exemple d'une recherche qui utilise les filtres **Types de plateforme** et **Préfixe de nom de document**.

![\[Application de plusieurs options de filtre sur la page Documents SSM.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/ssm-documents-filters-2.png)


Si vous appliquez plusieurs filtres, Systems Manager crée différentes instructions de recherche en fonction des filtres choisis : 
+ Si vous appliquez le *même* filtre plusieurs fois, **Préfixe de nom de document** par exemple, Systems Manager effectue une recherche en utilisant une instruction `OR`. Par exemple, si vous spécifiez un filtre de **Préfixe de nom de document**=**AWS** et un second filtre de **Préfixe de nom de document**=**Lambda**, la recherche renvoie tous les documents avec le préfixe « `AWS` » et tous les documents avec le préfixe « `Lambda` ».
+ Si vous appliquez *différents* filtres, par exemple, **Document name prefix** (Préfixe de nom de document) et **Platform types**, (Types de plateforme), alors Systems Manager effectuera une recherche en utilisant une instruction `AND`. Si vous indiquez par exemple un filtre **Document name prefix** (Préfixe de nom de document)=**AWS** et un filtre **Platform types** (Types de plateforme)=**Linux**, la recherche renverra alors tous les documents avec le préfixe « `AWS` » spécifiques à la plateforme Linux.

**Note**  
Les recherches qui utilisent des filtres sont sensibles à la casse. 

## Ajouter des documents à vos favoris
<a name="favorite-documents"></a>

Pour vous aider à trouver les documents SSM fréquemment utilisés, ajoutez des documents à vos favoris. Vous pouvez ajouter jusqu'à 20 documents à vos favoris par type de document, par Compte AWS et Région AWS. Vous pouvez choisir, modifier et consulter vos favoris à partir des documents de la AWS Management Console. Les procédures suivantes décrivent comment sélectionner, modifier et afficher vos favoris.

**Pour ajouter un document SSM aux favoris, procédez comme suit :**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Sélectionnez l'icône en forme d'étoile à côté du nom du document que vous souhaitez ajouter à vos favoris.

**Pour supprimer un document SSM de vos favoris, procédez comme suit :**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Désélectionnez l'icône en forme d'étoile à côté du nom du document que vous souhaitez supprimer de vos favoris.

**Pour afficher vos favoris à partir des documents AWS Management Console**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, cliquez sur **Documents**.

1. Sélectionnez l'onglet **Favoris**.

# Résolution des problèmes de gestion des paramètres
<a name="parameter-troubleshooting"></a>

## Problèmes courants de gestion des paramètres
<a name="common-parameter-issues"></a>

**Variables d’environnement non disponibles pendant l’exécution**  
**Problème :** les commandes échouent, car les variables d’environnement (`SSM_parameter-name`) sont introuvables.  
**Causes possibles :**  
+ La version de SSM Agent ne prend pas en charge l’interpolation des variables d’environnement
+ `interpolationType` n’est pas défini sur `ENV_VAR`
+ Le nom du paramètre ne correspond pas au nom de variable d’environnement attendu
**Solution :**  
+ Vérifiez que SSM Agent est à la version 3.3.2746.0 ou ultérieure
+ Ajoutez une logique de secours pour les anciennes versions de l’agent :

  ```
  if [ -z "${SSM_parameterName+x}" ]; then
      export SSM_parameterName="{{parameterName}}"
  fi
  ```

**Valeurs de paramètres contenant des caractères spéciaux**  
**Problème :** les commandes échouent lorsque les valeurs des paramètres contiennent des espaces, des guillemets ou d’autres caractères spéciaux.  
**Solution :**  
+ Utilisez des guillemets appropriés lorsque vous référencez les variables d’environnement :

  ```
  # Correct
  echo "$SSM_parameter-name"
  
  # Incorrect
  echo $SSM_parameter-name
  ```
+ Ajoutez la validation des entrées avec `allowedPattern` pour restreindre les caractères spéciaux

**Comportement incohérent entre plateformes**  
**Problème :** la gestion des paramètres fonctionne différemment sur les systèmes Linux et Windows Server.  
**Solution :**  
+ Utilisez une syntaxe de variable d’environnement spécifique à la plateforme :

  ```
  # PowerShell
  $env:SSM_parameter-name
  
  # Bash
  $SSM_parameter-name
  ```
+ Utilisez des vérifications de conditions préalables spécifiques à la plateforme dans votre document

**Les valeurs des paramètres ne sont pas correctement échappées**  
**Problème :** vulnérabilités d’injection de commandes malgré l’utilisation de l’interpolation de variables d’environnement.  
**Solution :**  
+ Utilisez toujours un échappement approprié lorsque vous incluez des valeurs de paramètre dans les commandes :

  ```
  # Correct
  mysql_command="mysql -u \"$SSM_username\" -p\"$SSM_password\""
  
  # Incorrect
  mysql_command="mysql -u $SSM_username -p$SSM_password"
  ```

## Conseils de validation des paramètres
<a name="parameter-validation"></a>

Utilisez ces techniques pour valider votre gestion des paramètres :

1. Disponibilité des variables de l’environnement de test :

   ```
   #!/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. Vérifiez les modèles des paramètres :

   ```
   parameters:
     myParameter:
       type: String
       allowedPattern: "^[a-zA-Z0-9_-]+$"
       description: "Test this pattern with sample inputs"
   ```

1. Incluez la gestion des erreurs :

   ```
   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, un outil de AWS Systems Manager, vous aide à définir un calendrier indiquant quand effectuer des actions potentiellement perturbatrices sur vos nœuds, telles que l'application de correctifs à un système d'exploitation, la mise à jour de pilotes ou l'installation de logiciels ou de correctifs.

**Note**  
State Manager et Maintenance Windows peuvent effectuer certains types de mises à jour similaires sur vos nœuds gérés. Votre choix dépend de la nécessité d'automatiser la conformité du système ou d'effectuer des tâches hautement prioritaires et sensibles au temps pendant les périodes que vous spécifiez.  
Pour de plus amples informations, veuillez consulter [Choisir entre State Manager et Maintenance Windows](state-manager-vs-maintenance-windows.md).

Vous pouvez ainsi planifier des actions sur de nombreux autres types de AWS ressources, tels que les buckets Amazon Simple Storage Service (Amazon S3), les AWS Key Management Service files d'attente Amazon Simple AWS KMS Queue Service (Amazon SQS), les clés (), etc. Maintenance Windows 

Pour obtenir la liste complète des types de ressources pris en charge que vous pouvez inclure dans une cible de fenêtre de maintenance, consultez les [sections Ressources que vous pouvez utiliser avec Groupes de ressources AWS et Éditeur de balises](https://docs.aws.amazon.com/ARG/latest/userguide/supported-resources.html#supported-resources-console) dans le *guide de Groupes de ressources AWS l'utilisateur*. Pour vos premiers pas dans Maintenance Windows, ouvrez [Systems Manager console](https://console.aws.amazon.com//systems-manager/maintenance-windows). Dans le panneau de navigation, sélectionnez **Maintenance Windows**.

Chaque fenêtre de maintenance comporte un calendrier, une durée maximale, un ensemble de cibles enregistrées (les nœuds gérés ou autres AWS ressources sur lesquelles on agit) et un ensemble de tâches enregistrées. Vous pouvez ajouter des balises à vos fenêtres de maintenance lorsque vous les créez ou les mettez à jour. Les balises sont des clés qui facilitent l'identification et le tri de vos ressources au sein de votre organisation. Vous pouvez également spécifier les dates avant ou après lesquelles une fenêtre de maintenance ne doit pas s'exécuter, et vous pouvez sélectionner le fuseau horaire international pour la planification de la fenêtre de maintenance. 

Pour obtenir une explication des relations entre les différentes options liées à la planification pour les fenêtres de maintenance, consultez [Options de planification de la fenêtre de maintenance et de période active](maintenance-windows-schedule-options.md).

Pour de plus amples informations sur l'utilisation de l'option `--schedule`, veuillez consulter [Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md).

**Types de tâches pris en charge**  
Avec les fenêtres de maintenance, vous pouvez exécuter quatre types de tâches :
+ Commands inRun Command, un outil de Systems Manager

  Pour plus d’informations sur Run Command, consultez [AWS Systems Manager Run Command](run-command.md).
+ Flux de travail dans Automation, un outil de Systems Manager

  Pour de plus amples informations sur les flux de travail Automation, veuillez consulter [AWS Systems Manager Automatisation](systems-manager-automation.md).
+ Fonctions dans AWS Lambda

  Pour plus d'informations sur les fonctions Lambda, consultez [Mise en route avec Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) dans le *Guide du développeur AWS Lambda *.
+ Tâches dans AWS Step Functions
**Note**  
Les tâches de fenêtre de maintenance prennent uniquement en charge les flux de travail de machine d’état Standard Step Functions. Elles ne prennent pas en charge les flux de travail de machine d’état Express. Pour plus d’informations sur les types de flux de travail de machine d’état, consultez [Flux de travail Standard vs. Express](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html) dans le *Guide du développeur AWS Step Functions *.

  Pour plus d'informations sur Step Functions, consultez le *[Guide du développeur AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/)*.

Cela signifie que vous pouvez utiliser les fenêtres de maintenance pour effectuer les tâches suivantes sur vos cibles sélectionnées.
+ Installer ou mettre à jour des applications.
+ Appliquer des correctifs.
+ Installer ou mettre à jour l'SSM Agent.
+ Exécutez PowerShell des commandes et des scripts shell Linux à l'aide d'une Run Command tâche Systems Manager.
+ Créer des Amazon Machine Images (AMIs), amorcer des logiciels et configurer des nœuds à l'aide d'une tâche Systems Manager Automation.
+ Exécutez AWS Lambda des fonctions qui appellent des actions supplémentaires, telles que l'analyse de vos nœuds à la recherche de mises à jour de correctifs.
+ Exécutez des machines d' AWS Step Functions état pour effectuer des tâches telles que la suppression d'un nœud d'un environnement Elastic Load Balancing, l'application de correctifs au nœud, puis le réajout du nœud dans l'environnement Elastic Load Balancing.
+ Ciblez les nœuds hors ligne en spécifiant un groupe de AWS ressources comme cible.

**Note**  
Une ou plusieurs cibles doivent être spécifiées pour des tâches de fenêtre de maintenance de type Run Command. En fonction de la tâche, les cibles sont facultatives pour les autres types de tâches de la fenêtre de maintenance (Automation AWS Lambda, et AWS Step Functions). Pour de plus amples informations sur l'exécution de tâches qui ne spécifient pas de cibles, consultez [Enregistrement de tâches de fenêtre de maintenance sans cibles](maintenance-windows-targetless-tasks.md).

**EventBridge soutien**  
Cet outil Systems Manager est pris en charge en tant que type d'*événement* dans les EventBridge règles d'Amazon. Pour plus d’informations, consultez [Surveillance des événements de Systems Manager avec Amazon EventBridge](monitoring-eventbridge-events.md) et [Référence : modèles et types d' EventBridge événements Amazon pour Systems Manager](reference-eventbridge-events.md).

**Topics**
+ [Configuration de Maintenance Windows](setting-up-maintenance-windows.md)
+ [Création et gestion de fenêtres de maintenance à l’aide de la console](sysman-maintenance-working.md)
+ [Didacticiels](maintenance-windows-tutorials.md)
+ [Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance](maintenance-window-tasks-pseudo-parameters.md)
+ [Options de planification de la fenêtre de maintenance et de période active](maintenance-windows-schedule-options.md)
+ [Enregistrement de tâches de fenêtre de maintenance sans cibles](maintenance-windows-targetless-tasks.md)
+ [Résolution des problèmes liés aux fenêtres de maintenance](troubleshooting-maintenance-windows.md)

# Configuration de Maintenance Windows
<a name="setting-up-maintenance-windows"></a>

Pour que les utilisateurs de votre Compte AWS puissent créer et planifier des tâches de fenêtre de maintenance à l’aide de Maintenance Windows, un des outils d’AWS Systems Manager, ils doivent bénéficier des autorisations nécessaires. De plus, vous devez créer un rôle de service IAM pour les fenêtres de maintenance ainsi que la politique IAM associée.

**Avant de commencer**  
Outre les autorisations que vous configurez dans cette section, les entités IAM (utilisateurs, rôles ou groupes) qui travailleront avec les fenêtres de maintenance devraient déjà disposer d’autorisations générales relatives aux fenêtres de maintenance. Vous pouvez accorder ces autorisations en attribuant la politique IAM `AmazonSSMFullAccess` aux entités, ou une politique IAM personnalisée qui fournit un ensemble plus restreint d’autorisations d’accès pour Systems Manager qui couvre les tâches de fenêtre de maintenance.

**Topics**
+ [Contrôler l’accès aux fenêtres de maintenance à l’aide de la console](configuring-maintenance-window-permissions-console.md)
+ [Contrôlez l'accès aux fenêtres de maintenance à l'aide du AWS CLI](configuring-maintenance-window-permissions-cli.md)

# Contrôler l’accès aux fenêtres de maintenance à l’aide de la console
<a name="configuring-maintenance-window-permissions-console"></a>

Les procédures suivantes décrivent comment utiliser la AWS Systems Manager console pour créer les autorisations et les rôles requis pour les fenêtres de maintenance.

**Topics**
+ [Tâche 1 : créer une politique personnalisée pour votre rôle de service de fenêtre de maintenance à l’aide de la console](#create-custom-policy-console)
+ [Tâche 2 : créer un rôle de service personnalisé pour les fenêtres de maintenance à l’aide de la console](#create-custom-role-console)
+ [Tâche 3 : accorder des autorisations aux utilisateurs spécifiés pour enregistrer les tâches de la fenêtre de maintenance à l’aide de la console](#allow-maintenance-window-access-console)
+ [Tâche 4 : empêcher les utilisateurs spécifiés d’enregistrer les tâches de la fenêtre de maintenance à l’aide de la console](#deny-maintenance-window-access-console)

## Tâche 1 : créer une politique personnalisée pour votre rôle de service de fenêtre de maintenance à l’aide de la console
<a name="create-custom-policy-console"></a>

Les tâches de la fenêtre de maintenance nécessitent un rôle IAM afin de fournir les autorisations requises pour s'exécuter sur les ressources cibles. Les autorisations sont fournies via une politique IAM attachée au rôle. Les types de tâches que vous exécutez et vos autres exigences opérationnelles déterminent le contenu de cette politique. Nous fournissons une politique de base que vous pouvez adapter à vos besoins. En fonction des tâches et des types de tâches exécutées par vos fenêtres de maintenance, il se peut que vous n'ayez pas besoin de toutes les autorisations de cette politique, et que vous deviez inclure des autorisations supplémentaires. Vous attachez cette politique au rôle que vous créez ultérieurement dans [Tâche 2 : créer un rôle de service personnalisé pour les fenêtres de maintenance à l’aide de la console](#create-custom-role-console).

**Pour créer une politique personnalisée à l’aide de la console**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, sélectionnez **Politiques**, puis **Créer une politique**.

1. Dans la zone **Éditeur de politique**, sélectionnez **JSON**.

1. Remplacez le contenu par défaut par ce qui suit :

------
#### [ 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. Modifiez le contenu JSON en fonction des besoins des tâches de maintenance que vous exécutez dans votre compte. Les modifications que vous apportez sont spécifiques à vos opérations planifiées. 

   Par exemple :
   + Vous pouvez fournir des Amazon Resource Names (ARNs) pour des fonctions et des machines d'état spécifiques au lieu d'utiliser des qualificatifs génériques (\$1).
   + Si vous ne prévoyez pas d'exécuter AWS Step Functions des tâches, vous pouvez supprimer les `states` autorisations et (ARNs).
   + Si vous ne prévoyez pas d'exécuter AWS Lambda des tâches, vous pouvez supprimer les `lambda` autorisations et ARNs.
   + Si vous ne prévoyez pas d'exécuter des tâches d'automatisation, vous pouvez supprimer les autorisations `ssm:GetAutomationExecution` et `ssm:StartAutomationExecution`.
   + Ajoutez des autorisations supplémentaires qui peuvent être nécessaires à l'exécution des tâches. Par exemple, certaines actions Automation utilisent des piles AWS CloudFormation . Par conséquent, les autorisations `cloudformation:CreateStack`, `cloudformation:DescribeStacks` et `cloudformation:DeleteStack` sont requises. 

     Autre exemple, le runbook d'automatisation `AWS-CopySnapshot` requiert des autorisations pour créer un instantané Amazon Elastic Block Store (Amazon EBS). Par conséquent, la fonction du service a besoin de l'autorisation `ec2:CreateSnapshot`. 

     Pour plus d’informations sur les autorisations de rôle requises par les dossiers d’exploitation d’automatisation, consultez les descriptions du dossier d’exploitation dans la [référence du dossier d’exploitation de AWS Systems Manager Automation](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html).

1. Une fois les révisions de la politique terminées, choisissez **Suivant**.

1. Dans la zone **Nom de la politique**, saisissez un nom qui identifie la politique attachée au rôle de service que vous créez. Par exemple : **my-maintenance-window-role-policy**.

1. (Facultatif) Dans la zone **Ajouter des balises**, ajoutez une ou plusieurs paires clé-valeur de balises pour organiser, suivre ou contrôler l’accès à cette politique. 

1. Choisissez **Create Policy** (Créer une politique).

   Notez le nom que vous avez spécifié pour la politique. Vous y faites référence dans la procédure suivante, [Tâche 2 : créer un rôle de service personnalisé pour les fenêtres de maintenance à l’aide de la console](#create-custom-role-console).

## Tâche 2 : créer un rôle de service personnalisé pour les fenêtres de maintenance à l’aide de la console
<a name="create-custom-role-console"></a>

La politique que vous avez créée dans la tâche précédente est attachée au rôle de service de fenêtre de maintenance que vous créez dans cette tâche. Lorsque les utilisateurs enregistrent une tâche de fenêtre de maintenance, ils spécifient ce rôle IAM dans le cadre de la configuration de la tâche. Les autorisations de ce rôle permettent à Systems Manager d'exécuter des tâches dans les fenêtres de maintenance en votre nom.

**Important**  
Auparavant, la console Systems Manager vous permettait de choisir le rôle lié au service IAM AWS géré `AWSServiceRoleForAmazonSSM` à utiliser comme rôle de maintenance pour vos tâches. L'utilisation de ce rôle et de la politique associée, `AmazonSSMServiceRolePolicy`, pour les tâches de la fenêtre de maintenance n'est plus recommandée. Si vous utilisez ce rôle pour des tâches de fenêtre de maintenance maintenant, nous vous encourageons à cesser de l'utiliser. Créez plutôt votre propre rôle IAM qui permet la communication entre Systems Manager et d'autres acteurs Services AWS lorsque les tâches de votre fenêtre de maintenance s'exécutent.

Utilisez la procédure suivante pour créer un rôle de service personnalisé pour les Maintenance Windows, afin que Systems Manager puisse exécuter des tâches Maintenance Windows en votre nom. Vous attachez la politique que vous avez créée dans la tâche précédente au rôle de service que vous créez.

**Pour créer un rôle de service personnalisé pour les fenêtres de maintenance à l’aide de la console**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, sélectionnez **Rôles**, puis **Créer un rôle**.

1. Pour **Select trusted entity** (Sélectionner une entité de confiance), effectuez les choix suivants :

   1. Pour **Type d’entité de confiance**, choisissez **Service AWS **.

   1. Pour **Cas d’utilisation**, choisissez **Systems Manager**

   1. Sélectionnez **Systems Manager**.

      L’image suivante met en évidence l’emplacement de l’option Systems Manager.  
![\[Systems Manager est l’une des options du cas d’utilisation.\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/iam_use_cases_for_MWs.png)

1. Choisissez **Suivant**. 

1. Dans la zone **Politiques d’autorisation**, dans le champ de recherche, saisissez le nom de la politique que vous avez créée dans [Tâche 1 : créer une politique personnalisée pour votre rôle de service de fenêtre de maintenance à l’aide de la console](#create-custom-policy-console), cochez la case en regard de son nom, puis sélectionnez **Suivant**.

1. Dans **Role name** (Nom du rôle), saisissez un nom qui identifie celui-ci en tant que rôle Maintenance Windows. Par exemple : **my-maintenance-window-role**.

1. (Facultatif) Modifiez la description du rôle par défaut pour refléter l'objectif de ce rôle. Par exemple : **Performs maintenance window tasks on your behalf**.

1. Pour **Étape 1 : sélectionner les entités approuvées**, vérifiez que la politique suivante est affichée dans la zone **Politique d’approbation**.

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

****  

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

------

1. Pour **Étape 2 : ajouter des autorisations**, vérifiez que la politique que vous avez créée dans [Tâche 1 : créer une politique personnalisée pour votre rôle de service de fenêtre de maintenance à l’aide de la console](#create-custom-policy-console) est présente.

1. (Facultatif) Dans **Étape 3 : ajouter des balises**, ajoutez une ou plusieurs paires clé-valeur de balises pour organiser, suivre ou contrôler l’accès pour ce rôle. 

1. Sélectionnez **Créer un rôle**. Le système vous renvoie à la page **Rôles**.

1. Sélectionnez le nom du rôle IAM que vous venez de créer.

1. Copier le nom du rôle et notez le nom de rôle et la valeur de l'**ARN** de la zone **Summary** (Récapitulatif). Les utilisateurs de votre compte spécifient ces informations lorsqu'ils créent des fenêtres de maintenance.

## Tâche 3 : accorder des autorisations aux utilisateurs spécifiés pour enregistrer les tâches de la fenêtre de maintenance à l’aide de la console
<a name="allow-maintenance-window-access-console"></a>

L’octroi aux utilisateurs d’autorisations pour accéder au rôle de service personnalisé de la fenêtre de maintenance leur permet de l’utiliser avec leurs tâches de fenêtre de maintenance. Cela s’ajoute aux autorisations que vous leur avez déjà accordées pour travailler avec les commandes de l’API Systems Manager pour l’outil Maintenance Windows. Ce rôle IAM indique les autorisations nécessaires pour exécuter une tâche de fenêtre de maintenance. Par conséquent, un utilisateur ne peut pas enregistrer de tâches avec une fenêtre de maintenance à l’aide de votre rôle de service personnalisé s’il n’a pas la possibilité de transmettre ces autorisations IAM.

Lorsque vous enregistrez une tâche avec une fenêtre de maintenance, vous spécifiez un rôle de service pour exécuter les opérations de la tâche. C'est le rôle que le service endossera lorsqu'il exécutera des tâches en votre nom. Avant cela, pour enregistrer la tâche elle-même, affectez la politique `PassRole` IAM à une entité IAM (comme un compte ou un groupe). Cela permet à l’entité IAM de spécifier, lors de l’enregistrement de ces tâches dans la fenêtre de maintenance, le rôle à utiliser lors de l’exécution des tâches. Pour en savoir plus, reportez-vous à [Octroi d’autorisations à un utilisateur pour transférer un rôle à un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) dans le *Guide de l’utilisateur IAM*.

**Pour configurer les autorisations permettant aux utilisateurs d’enregistrer les tâches de la fenêtre de maintenance**

Si une entité IAM (utilisateur, rôle ou groupe) est configurée avec des autorisations d’administrateur, l’utilisateur ou le rôle IAM a accès aux fenêtres de maintenance. Pour les entités IAM sans autorisations d'administrateur, un administrateur doit accorder les autorisations suivantes à l'entité IAM. Voici les autorisations minimales requises pour enregistrer des tâches dans une fenêtre de maintenance :
+ La politique gérée `AmazonSSMFullAccess`, ou une politique qui fournit des autorisations comparables.
+ Les autorisations `iam:PassRole` et `iam:ListRoles` suivantes.

------
#### [ 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*représente le nom du rôle de service de fenêtre de maintenance personnalisé que vous avez créé précédemment.

  *account-id*représente l'identifiant de votre Compte AWS. L'ajout de cette autorisation pour la ressource `arn:aws:iam::account-id:role/` permet à un utilisateur d'afficher et de choisir parmi les rôles client dans la console lorsqu'il crée une tâche de fenêtre de maintenance. L'ajout de cette autorisation pour `arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/` permet à un utilisateur de choisir le rôle lié au service Systems Manager dans la console lorsqu'il crée une tâche de fenêtre de maintenance. 

  Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :
  + Utilisateurs et groupes dans AWS IAM Identity Center :

    Créez un jeu d’autorisations. Suivez les instructions de la rubrique [Création d’un jeu d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) du *Guide de l’utilisateur AWS IAM Identity Center *.
  + Utilisateurs gérés dans IAM par un fournisseur d’identité :

    Créez un rôle pour la fédération d’identité. Suivez les instructions de la rubrique [Création d’un rôle pour un fournisseur d’identité tiers (fédération)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) dans le *Guide de l’utilisateur IAM*.
  + Utilisateurs IAM :
    + Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la rubrique [Création d’un rôle pour un utilisateur IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) dans le *Guide de l’utilisateur IAM*.
    + (Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la rubrique [Ajout d’autorisations à un utilisateur (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) du *Guide de l’utilisateur IAM*.

**Pour configurer des autorisations pour les groupes autorisés à enregistrer des tâches de fenêtre de maintenance en utilisant la console**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, sélectionnez **User groups** (Groupes d'utilisateurs).

1. Dans la liste des groupes, sélectionnez le nom du groupe auquel vous voulez attribuer l’autorisation `iam:PassRole`, ou créez d’abord un nouveau groupe si nécessaire 

1. Sous l'onglet **Permissions** (Autorisations), sélectionnez **Add permissions, create inline policy** (Ajouter des autorisations, Créer une politique en ligne).

1. Dans la zone **Éditeur de politique**, sélectionnez **JSON** et remplacez le contenu par défaut de la boîte par ce qui suit.

------
#### [ 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*représente le nom du rôle de fenêtre de maintenance personnalisé que vous avez créé précédemment.

   *account-id*représente l'identifiant de votre Compte AWS. L'ajout de cette autorisation pour la ressource `arn:aws:iam::account-id:role/` permet à un utilisateur d'afficher et de choisir parmi les rôles client dans la console lorsqu'il crée une tâche de fenêtre de maintenance. L'ajout de cette autorisation pour `arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/` permet à un utilisateur de choisir le rôle lié au service Systems Manager dans la console lorsqu'il crée une tâche de fenêtre de maintenance. 

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, saisissez un nom dans la zone **Nom de la politique** pour identifier la politique `PassRole`, tel que **my-group-iam-passrole-policy**, puis sélectionnez **Créer une politique**.

## Tâche 4 : empêcher les utilisateurs spécifiés d’enregistrer les tâches de la fenêtre de maintenance à l’aide de la console
<a name="deny-maintenance-window-access-console"></a>

Vous pouvez refuser l'`ssm:RegisterTaskWithMaintenanceWindow`autorisation aux utilisateurs de votre site Compte AWS auxquels vous ne souhaitez pas enregistrer des tâches dans les fenêtres de maintenance. Cela fournit une couche de prévention supplémentaire pour les utilisateurs qui ne devraient pas enregistrer les tâches de la fenêtre de maintenance.

**Pour configurer des autorisations pour les groupes qui ne sont pas autorisés à enregistrer des tâches de fenêtre de maintenance en utilisant la console**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, sélectionnez **User groups** (Groupes d'utilisateurs).

1. Dans la liste des groupes, sélectionnez le nom du groupe auquel vous voulez refuser l’autorisation `ssm:RegisterTaskWithMaintenanceWindow`, ou créez d’abord un nouveau groupe si nécessaire.

1. Sous l'onglet **Permissions** (Autorisations), sélectionnez **Add permissions, create inline policy** (Ajouter des autorisations, Créer une politique en ligne).

1. Dans la zone **Éditeur de politique**, choisissez **JSON**, puis remplacez le contenu par défaut de la boîte par ce qui suit.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "ssm:RegisterTaskWithMaintenanceWindow",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Choisissez **Suivant**.

1. Sur la page **Vérifier et créer**, saisissez un nom dans la zone **Nom de la politique** pour identifier cette politique, tel que **my-groups-deny-mw-tasks-policy**, puis sélectionnez **Créer une politique**.

# Contrôlez l'accès aux fenêtres de maintenance à l'aide du AWS CLI
<a name="configuring-maintenance-window-permissions-cli"></a>

Les procédures suivantes décrivent comment utiliser le AWS Command Line Interface (AWS CLI) pour créer les autorisations et les rôles requis pour Maintenance Windows un outil dans AWS Systems Manager.

**Topics**
+ [Tâche 1 : créer des fichiers de politique d’approbation et de politique gérée par le client au format JSON](#create-custom-policy-json-files-cli)
+ [Tâche 2 : créer et vérifier un rôle de service personnalisé pour les fenêtres de maintenance à l'aide du AWS CLI](#create-custom-role-cli)
+ [Tâche 3 : accorder des autorisations aux utilisateurs spécifiés pour enregistrer les tâches de la fenêtre de maintenance à l'aide du AWS CLI](#allow-maintenance-window-access-cli)
+ [Tâche 4 : Empêcher les utilisateurs spécifiés d'enregistrer les tâches de la fenêtre de maintenance à l'aide du AWS CLI](#deny-maintenance-window-access-cli)

## Tâche 1 : créer des fichiers de politique d’approbation et de politique gérée par le client au format JSON
<a name="create-custom-policy-json-files-cli"></a>

Les tâches de la fenêtre de maintenance nécessitent un rôle IAM afin de fournir les autorisations requises pour s'exécuter sur les ressources cibles. Les autorisations sont fournies via une politique IAM attachée au rôle. Les types de tâches que vous exécutez et vos autres exigences opérationnelles déterminent le contenu de cette politique. Nous fournissons une politique de base que vous pouvez adapter à vos besoins. En fonction des tâches et des types de tâches exécutées par vos fenêtres de maintenance, il se peut que vous n'ayez pas besoin de toutes les autorisations de cette politique, et que vous deviez inclure des autorisations supplémentaires. 

Dans cette tâche, vous spécifiez les autorisations nécessaires pour votre rôle de fenêtre de maintenance personnalisé dans une paire de fichiers JSON. Vous attachez cette politique au rôle que vous créez ultérieurement dans [Tâche 2 : créer et vérifier un rôle de service personnalisé pour les fenêtres de maintenance à l'aide du AWS CLI](#create-custom-role-cli). 

**Pour créer des fichiers de politique d’approbation et de politique gérée par le client**

1. Copiez et collez la politique d'approbation suivante dans un fichier texte. Enregistrez ce fichier avec le nom et l’extension de fichier suivants : **mw-role-trust-policy.json**.

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

****  

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

------

1. Copiez et collez la politique JSON suivante dans un autre fichier texte. Dans le même répertoire où vous avez créé le premier fichier, enregistrez ce fichier avec le nom et l’extension de fichier suivants : **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. Modifiez le contenu de `mw-role-custom-policy.json` en fonction des besoins des tâches de maintenance que vous exécutez dans votre compte. Les modifications que vous apportez sont spécifiques à vos opérations planifiées. 

   Par exemple :
   + Vous pouvez fournir des Amazon Resource Names (ARNs) pour des fonctions et des machines d'état spécifiques au lieu d'utiliser des qualificatifs génériques (\$1).
   + Si vous ne prévoyez pas d'exécuter AWS Step Functions des tâches, vous pouvez supprimer les `states` autorisations et (ARNs).
   + Si vous ne prévoyez pas d'exécuter AWS Lambda des tâches, vous pouvez supprimer les `lambda` autorisations et ARNs.
   + Si vous ne prévoyez pas d'exécuter des tâches d'automatisation, vous pouvez supprimer les autorisations `ssm:GetAutomationExecution` et `ssm:StartAutomationExecution`.
   + Ajoutez des autorisations supplémentaires qui peuvent être nécessaires à l'exécution des tâches. Par exemple, certaines actions Automation utilisent des piles AWS CloudFormation . Par conséquent, les autorisations `cloudformation:CreateStack`, `cloudformation:DescribeStacks` et `cloudformation:DeleteStack` sont requises. 

     Autre exemple, le runbook d'automatisation `AWS-CopySnapshot` requiert des autorisations pour créer un instantané Amazon Elastic Block Store (Amazon EBS). Par conséquent, la fonction du service a besoin de l'autorisation `ec2:CreateSnapshot`. 

     Pour plus d’informations sur les autorisations de rôle requises par les dossiers d’exploitation d’automatisation, consultez les descriptions du dossier d’exploitation dans la [référence du dossier d’exploitation de AWS Systems Manager Automation](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html).

   Enregistrez à nouveau le fichier après avoir effectué les modifications nécessaires.

## Tâche 2 : créer et vérifier un rôle de service personnalisé pour les fenêtres de maintenance à l'aide du AWS CLI
<a name="create-custom-role-cli"></a>

La politique que vous avez créée dans la tâche précédente est attachée au rôle de service de fenêtre de maintenance que vous créez dans cette tâche. Lorsque les utilisateurs enregistrent une tâche de fenêtre de maintenance, ils spécifient ce rôle IAM dans le cadre de la configuration de la tâche. Les autorisations de ce rôle permettent à Systems Manager d'exécuter des tâches dans les fenêtres de maintenance en votre nom.

**Important**  
Auparavant, la console Systems Manager vous permettait de choisir le rôle lié au service IAM AWS géré `AWSServiceRoleForAmazonSSM` à utiliser comme rôle de maintenance pour vos tâches. L'utilisation de ce rôle et de la politique associée, `AmazonSSMServiceRolePolicy`, pour les tâches de la fenêtre de maintenance n'est plus recommandée. Si vous utilisez ce rôle pour des tâches de fenêtre de maintenance maintenant, nous vous encourageons à cesser de l'utiliser. Créez plutôt votre propre rôle IAM qui permet la communication entre Systems Manager et les autres Services AWS lorsque les tâches de votre fenêtre de maintenance sont exécutées.

Dans cette tâche, vous exécutez des commandes CLI pour créer votre rôle de service pour les fenêtres de maintenance, en ajoutant le contenu de la politique à partir des fichiers JSON que vous avez créés. 

**Créez un rôle de service personnalisé pour les fenêtres de maintenance à l'aide du AWS CLI**

1. Ouvrez le AWS CLI et exécutez la commande suivante dans le répertoire où vous avez placé `mw-role-custom-policy.json` et`mw-role-trust-policy.json`. La commande crée un rôle de service de fenêtre de maintenance appelé `my-maintenance-window-role` et y attache la *politique d’approbation*.

------
#### [ 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
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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"
       }
   }
   ```
**Note**  
Notez les valeurs de `RoleName` et `Arn`. Vous les incluez dans la commande suivante.

1. Exécutez la commande suivante pour attacher la *politique gérée par le client* au rôle. Remplacez l'*account-id*espace réservé par votre propre identifiant Compte 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. Exécutez la commande suivante pour vérifier que votre rôle a été créé et que la politique d’approbation a été attachée.

   ```
   aws iam get-role --role-name my-maintenance-window-role
   ```

   La commande renvoie des informations semblables à ce qui suit :

   ```
   {
       "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. Exécutez la commande suivante pour vérifier que la politique gérée par le client a été attachée au rôle.

   ```
   aws iam list-attached-role-policies --role-name my-maintenance-window-role
   ```

   La commande renvoie des informations semblables à ce qui suit :

   ```
   {
       "AttachedPolicies": [
           {
               "PolicyName": "mw-role-custom-policy",
               "PolicyArn": "arn:aws:iam::123456789012:policy/mw-role-custom-policy"
           }
       ]
   }
   ```

## Tâche 3 : accorder des autorisations aux utilisateurs spécifiés pour enregistrer les tâches de la fenêtre de maintenance à l'aide du AWS CLI
<a name="allow-maintenance-window-access-cli"></a>

L’octroi aux utilisateurs d’autorisations pour accéder au rôle de service personnalisé de la fenêtre de maintenance leur permet de l’utiliser avec leurs tâches de fenêtre de maintenance. Cela s’ajoute aux autorisations que vous leur avez déjà accordées pour travailler avec les commandes de l’API Systems Manager pour l’outil Maintenance Windows. Ce rôle IAM indique les autorisations nécessaires pour exécuter une tâche de fenêtre de maintenance. Par conséquent, un utilisateur ne peut pas enregistrer de tâches avec une fenêtre de maintenance à l’aide de votre rôle de service personnalisé s’il n’a pas la possibilité de transmettre ces autorisations IAM.

Lorsque vous enregistrez une tâche avec une fenêtre de maintenance, vous spécifiez un rôle de service pour exécuter les opérations de la tâche. C'est le rôle que le service endossera lorsqu'il exécutera des tâches en votre nom. Avant cela, pour enregistrer la tâche elle-même, affectez la politique `PassRole` IAM à une entité IAM (comme un compte ou un groupe). Cela permet à l’entité IAM de spécifier, lors de l’enregistrement de ces tâches dans la fenêtre de maintenance, le rôle à utiliser lors de l’exécution des tâches. Pour en savoir plus, reportez-vous à [Octroi d’autorisations à un utilisateur pour transférer un rôle à un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) dans le *Guide de l’utilisateur IAM*.

**Pour configurer les autorisations pour les utilisateurs autorisés à enregistrer les tâches de la fenêtre de maintenance à l'aide du AWS CLI**

1. Copiez et collez la politique Gestion des identités et des accès AWS (IAM) suivante dans un éditeur de texte et enregistrez-la sous le nom et l'extension de fichier suivants :`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/"
           }
       ]
   }
   ```

------

   *my-maintenance-window-role*Remplacez-le par le nom du rôle de fenêtre de maintenance personnalisé que vous avez créé précédemment.

   Remplacez *account-id* par l'identifiant de votre Compte AWS. L'ajout de cette autorisation pour la ressource `arn:aws:iam::account-id:role/` permet aux utilisateurs du groupe d'afficher et de choisir parmi les rôles clients dans la console lorsqu'ils créent une tâche de fenêtre de maintenance. L'ajout de cette autorisation pour `arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/` permet aux utilisateurs du groupe de choisir le rôle lié au service Systems Manager dans la console lorsqu'ils créent une tâche de fenêtre de maintenance. 

1. Ouvrez le AWS CLI.

1. Selon que vous attribuez l’autorisation à une entité IAM (utilisateur ou groupe), exécutez l’une des commandes suivantes.
   + **Pour une 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
     ```

------

     Pour*user-name*, spécifiez l'utilisateur qui affecte les tâches aux fenêtres de maintenance. Pour*policy-name*, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemple**my-iam-passrole-policy**. Pour*path-to-document*, spécifiez le chemin d'accès au fichier que vous avez enregistré à l'étape 1. Par exemple : `file://C:\Temp\mw-passrole-policy.json`
**Note**  
Pour autoriser un utilisateur à enregistrer des tâches pour les fenêtres de maintenance à l’aide de la console Systems Manager, vous devez également affecter la politique `AmazonSSMFullAccess` à votre compte (ou une politique IAM qui fournit un ensemble plus petit d’autorisations d’accès pour Systems Manager qui couvre les tâches de la fenêtre de maintenance). Exécutez la commande suivante pour attribuer la politique `AmazonSSMFullAccess` à votre utilisateur.  

     ```
     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"
     ```
   + **Pour un groupe 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
     ```

------

     Pour*group-name*, spécifiez le groupe dont les membres attribuent des tâches aux fenêtres de maintenance. Pour*policy-name*, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemple**my-iam-passrole-policy**. Pour*path-to-document*, spécifiez le chemin d'accès au fichier que vous avez enregistré à l'étape 1. Par exemple : `file://C:\Temp\mw-passrole-policy.json`
**Note**  
Pour autoriser les membres d'un groupe à enregistrer des tâches pour les fenêtres de maintenance à l'aide de la console Systems Manager, vous devez également affecter la politique `AmazonSSMFullAccess` à votre groupe. Exécutez la commande suivante pour attribuer cette politique à votre groupe.  

     ```
     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. Exécutez la commande suivante pour vérifier que la politique a bien été attribuée au groupe.

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

   ```
   aws iam list-group-policies \
       --group-name "group-name"
   ```

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

   ```
   aws iam list-group-policies ^
       --group-name "group-name"
   ```

------

## Tâche 4 : Empêcher les utilisateurs spécifiés d'enregistrer les tâches de la fenêtre de maintenance à l'aide du AWS CLI
<a name="deny-maintenance-window-access-cli"></a>

Vous pouvez refuser l'`ssm:RegisterTaskWithMaintenanceWindow`autorisation aux utilisateurs de votre site Compte AWS auxquels vous ne souhaitez pas enregistrer des tâches dans les fenêtres de maintenance. Cela fournit une couche de prévention supplémentaire pour les utilisateurs qui ne devraient pas enregistrer les tâches de la fenêtre de maintenance.

Selon que vous refusez l'autorisation `ssm:RegisterTaskWithMaintenanceWindow` à un utilisateur individuel ou à un groupe, utilisez l'une des procédures suivantes pour empêcher les utilisateurs d'enregistrer des tâches avec une fenêtre de maintenance. 

**Pour configurer les autorisations pour les utilisateurs qui ne sont pas autorisés à enregistrer les tâches de la fenêtre de maintenance à l'aide du AWS CLI**

1. Copiez et collez la politique IAM suivante dans un éditeur de texte et enregistrez-la avec le nom et l'extension suivants : **deny-mw-tasks-policy.json**.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "ssm:RegisterTaskWithMaintenanceWindow",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Ouvrez le AWS CLI.

1. Selon que vous attribuez l’autorisation à une entité IAM (utilisateur ou groupe), exécutez l’une des commandes suivantes.
   + **Pour un utilisateur :**

------
#### [ 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
     ```

------

     Pour*user-name*, spécifiez l'utilisateur pour empêcher l'attribution de tâches aux fenêtres de maintenance. Pour*policy-name*, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemple**my-deny-mw-tasks-policy**. Pour*path-to-document*, spécifiez le chemin d'accès au fichier que vous avez enregistré à l'étape 1. Par exemple : `file://C:\Temp\deny-mw-tasks-policy.json`
   + **Pour un groupe :**

------
#### [ 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
     ```

------

     Pour*group-name*, spécifiez le groupe dont vous souhaitez empêcher l'attribution de tâches aux fenêtres de maintenance. Pour*policy-name*, spécifiez le nom que vous souhaitez utiliser pour identifier la politique, par exemple**my-deny-mw-tasks-policy**. Pour*path-to-document*, spécifiez le chemin d'accès au fichier que vous avez enregistré à l'étape 1. Par exemple : `file://C:\Temp\deny-mw-tasks-policy.json`

1. Exécutez la commande suivante pour vérifier que la politique a bien été attribuée au groupe.

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

   ```
   aws iam list-group-policies \
       --group-name "group-name"
   ```

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

   ```
   aws iam list-group-policies ^
       --group-name "group-name"
   ```

------

# Création et gestion de fenêtres de maintenance à l’aide de la console
<a name="sysman-maintenance-working"></a>

Cette section explique comment créer, configurer, mettre à jour et supprimer des fenêtres de maintenance à l'aide de la AWS Systems Manager console. Cette section fournit également des informations sur la gestion des cibles et des tâches d'une fenêtre de maintenance.

**Important**  
Nous vous recommandons de créer et de configurer au préalable des fenêtres de maintenance dans un environnement de test. 

**Avant de commencer**  
Avant de créer une fenêtre de maintenance, vous devez configurer l'accès à Maintenance Windows un outil dans AWS Systems Manager. Pour de plus amples informations, veuillez consulter [Configuration de Maintenance Windows](setting-up-maintenance-windows.md).

**Topics**
+ [Création d’une fenêtre de maintenance à l’aide de la console](sysman-maintenance-create-mw.md)
+ [Affectation de cibles à une fenêtre de maintenance à l’aide de la console](sysman-maintenance-assign-targets.md)
+ [Affectation de tâches à une fenêtre de maintenance à l’aide de la console](sysman-maintenance-assign-tasks.md)
+ [Désactivation ou activation d’une fenêtre de maintenance à l’aide de la console](sysman-maintenance-disable.md)
+ [Mise à jour ou suppression des ressources de fenêtre de maintenance à l’aide de la console](sysman-maintenance-update.md)

# Création d’une fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-create-mw"></a>

Dans cette procédure, vous créez une fenêtre de maintenance dans Maintenance Windows, un outil d’ AWS Systems Manager. Vous pouvez spécifier ses options de base, telles que le nom, la planification et la durée. Dans les étapes ultérieures, vous allez choisir les cibles, ou les ressources, qu'elle met à jour, ainsi que les tâches qui s'exécutent lors de l'exécution de cette fenêtre de maintenance.

**Note**  
Pour obtenir une explication des relations entre les différentes options liées à la planification pour les fenêtres de maintenance, consultez [Options de planification de la fenêtre de maintenance et de période active](maintenance-windows-schedule-options.md).  
Pour de plus amples informations sur l'utilisation de l'option `--schedule`, consultez [Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md).

**Pour créer une fenêtre de maintenance à l’aide de la console**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Maintenance Windows**. 

1. Sélectionnez **Create maintenance window (Créer une fenêtre de maintenance)**.

1. Pour **Name (Nom)**, saisissez un nom évocateur pour vous aider à identifier cette fenêtre de maintenance.

1. (Facultatif) Pour **Description**, saisissez une description pour définir la façon dont cette fenêtre de maintenance sera utilisée.

1. (Facultatif) Si vous souhaitez autoriser l'exécution d'une tâche de fenêtre de maintenance sur des nœuds gérés, même si vous n'avez pas enregistré ces nœuds comme cibles, sélectionnez **Allow unregistered targets** (Autoriser les cibles non enregistrées). 

   Lorsque vous sélectionnez cette option, vous pouvez sélectionner les nœuds non enregistrés (par ID de nœud) lorsque vous enregistrez une tâche auprès de la fenêtre de maintenance. 

   Si vous ne sélectionnez pas cette option, vous devez choisir des cibles enregistrées au préalable lorsque vous enregistrez une tâche avec la fenêtre de maintenance.

1. Spécifiez un programme pour la fenêtre de maintenance à l'aide d'une des trois options de programmation.

   Pour plus d'informations sur la création d' cron/rate expressions, consultez[Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md).

1. Pour **Durée**, entrez le nombre d'heures pendant lequel la fenêtre de maintenance devra s'exécuter. La valeur que vous spécifiez détermine l'heure de fin de la fenêtre de maintenance en fonction de l'heure de démarrage. Aucune tâche de fenêtre de maintenance n'est autorisée à démarrer après l'heure de fin résultante moins le nombre d'heures que vous spécifiez pour **Stop initiating tasks (Arrêt de l'initialisation de tâches)** à l'étape suivante.

   Par exemple, si la fenêtre de maintenance commence à 15 h, que la durée est de trois heures et que la valeur de **Stop initiating tasks (Arrêt de l'initialisation de tâches)** est d'une heure, aucune tâche de fenêtre de maintenance ne peut commencer après 17 h.

1. Dans le champ **Stop initiating tasks (Arrêter le lancement des tâches)**, entrez le nombre d'heures avant la fin de la fenêtre de maintenance pendant lequel le système doit cesser de planifier l'exécution de nouvelles tâches.

1. (Facultatif) Pour **Window start date** (Fenêtre de date de début), spécifiez la date et l'heure, au format ISO-8601 étendu, où vous voulez que la fenêtre de maintenance devienne active. Cela vous permet de retarder l'activation de la fenêtre de maintenance jusqu'à la date ultérieure spécifiée.
**Note**  
Vous ne pouvez pas spécifier une date et une heure de début antérieures à l’heure et à la date actuelles.

1. (Facultatif) Pour **Window start date** (Fenêtre de date de début), spécifiez la date et l'heure, au format ISO-8601 étendu, où vous voulez que la fenêtre de maintenance devienne inactive. Cela vous permet de définir une date et une heure futures après lesquelles la fenêtre de maintenance ne s'exécutera plus.

1. (Facultatif) Dans **Schedule timezone** (Fuseau horaire de planification), indiquez le fuseau horaire sur lequel doit se baser l'exécution des fenêtres de maintenance planifiées, au format IANA (Internet Assigned Numbers Authority). Par exemple : « America/Los\$1Angeles", "etc/UTC", or "Asia/Seoul ».

   Pour plus d'informations sur les formats valides, consultez [Time Zone Database](https://www.iana.org/time-zones) sur le site web de l'IANA.

1. (Facultatif) Pour **Schedule offset** (Décalage de planification), saisissez le nombre de jours à attendre après la date et l'heure spécifiées par une expression cron ou rate avant d'exécuter la fenêtre de maintenance. Vous pouvez spécifier une valeur entre un et six jours.
**Note**  
Cette option n'est disponible que si vous avez spécifié une planification en saisissant manuellement une expression cron ou rate.

1. (Facultatif) Dans la zone **Gérer les balises**, appliquez une ou plusieurs name/value paires de clés de balise à la fenêtre de maintenance.

   Les balises sont des métadonnées facultatives que vous affectez à une ressource. Les balises vous permettent de classer une ressource de différentes façons, par exemple, par objectif, par propriétaire ou par environnement. Par exemple, vous pouvez baliser une fenêtre de maintenance pour identifier le type de tâches qu'elle exécute, les types de cibles et l'environnement dans lequel elle s'exécute. Dans ce cas, vous pouvez spécifier les name/value paires de clés suivantes :
   + `Key=TaskType,Value=AgentUpdate`
   + `Key=OS,Value=Windows`
   + `Key=Environment,Value=Production`

1. Sélectionnez **Create maintenance window (Créer une fenêtre de maintenance)**. Le système vous renvoie à la page de la fenêtre de maintenance. L'état de la fenêtre de maintenance que vous venez de créer est **Enabled (Activé)**.

# Affectation de cibles à une fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-assign-targets"></a>

Dans cette procédure, vous pouvez enregistrer une cible avec une fenêtre de maintenance. En d'autres termes, vous spécifiez sur quelles ressources la fenêtre de maintenance effectue des actions.

**Note**  
Si une seule tâche de fenêtre de maintenance est enregistrée avec plusieurs cibles, ses appels de tâches se produisent en séquence et non en parallèle. Si votre tâche doit s'exécuter sur plusieurs cibles simultanément, enregistrez une tâche pour chaque cible individuellement et attribuez à chaque tâche le même niveau de priorité.

**Pour affecter des cibles à une fenêtre de maintenance à l’aide de la console**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Maintenance Windows**. 

1. Dans la liste des fenêtres de maintenance, sélectionnez la fenêtre de maintenance à laquelle ajouter les cibles.

1. Sélectionnez **Actions**, puis **Register targets (Enregistrer les cibles)**.

1. (Facultatif) Pour **Target Name (Nom de cible)**, saisissez un nom pour les cibles.

1. (Facultatif) Sous **Description**, entrez une description.

1. (Facultatif) Pour les **informations sur le propriétaire**, spécifiez les informations à inclure dans tout EventBridge événement Amazon déclenché lors de l'exécution de tâches pour ces cibles dans cette fenêtre de maintenance.

   Pour plus d'informations sur l'utilisation EventBridge pour surveiller les événements de Systems Manager, consultez[Surveillance des événements de Systems Manager avec Amazon EventBridge](monitoring-eventbridge-events.md).

1. Dans la zone **Targets (Cibles)**, sélectionnez l'une des options décrites dans le tableau suivant.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/sysman-maintenance-assign-targets.html)

1. Sélectionnez **Register target (Enregistrer la cible)**.

Si vous souhaitez attribuer d'autres cibles à cette fenêtre de maintenance, sélectionnez l'onglet **Targets (Cibles)**, puis sélectionnez **Register targets (Enregistrer des cibles)**. Avec cette option, vous pouvez choisir d'autres méthodes de ciblage. Par exemple, si vous cibliez auparavant les nœuds par ID de nœud, vous pouvez enregistrer de nouvelles cibles et de nouveaux nœuds cibles en spécifiant les balises appliquées aux nœuds gérés ou en choisissant des types de ressources dans un groupe de ressources.

# Affectation de tâches à une fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-assign-tasks"></a>

Dans cette procédure, vous ajoutez une tâche à une fenêtre de maintenance. Les tâches sont les actions qui sont effectuées lors de l'exécution d'une fenêtre de maintenance.

Les quatre types de tâches peuvent être ajoutés à une fenêtre de maintenance :
+ Commandes de l'AWS Systems Manager Run Command
+ Flux de travail Systems Manager Automation
+ AWS Step Functions tâches
+ AWS Lambda fonctions
**Important**  
La politique IAM pour Maintenance Windows exige que vous donniez un préfixe `SSM` à la fonction Lambda (ou alias). Avant de procéder à l'enregistrement de ce type de tâche, mettez à jour son nom AWS Lambda pour inclure`SSM`. Par exemple, si votre nom de fonction Lambda est `MyLambdaFunction`, remplacez-le par `SSMMyLambdaFunction`.

**Pour attribuer des tâches à une fenêtre de maintenance**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Maintenance Windows**. 

1. Dans la liste des fenêtres de maintenance, sélectionnez une fenêtre de maintenance.

1. Sélectionnez **Actions**, puis sélectionnez l'option pour le type de tâche que vous voulez enregistrer avec la fenêtre de maintenance.
   + **Enregistrer une tâche d'exécution de commande**
   + **Enregistrer la tâche Automation**
   + **Enregistrer une tâche Lambda**
   + **Enregistrer la tâche Step Functions**
**Note**  
Les tâches de fenêtre de maintenance prennent uniquement en charge les flux de travail de machine d’état Standard Step Functions. Elles ne prennent pas en charge les flux de travail de machine d’état Express. Pour plus d’informations sur les types de flux de travail de machine d’état, consultez [Flux de travail Standard vs. Express](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html) dans le *Guide du développeur AWS Step Functions *.

1. (Facultatif) Pour **Name (Nom)**, saisissez un nom pour la tâche.

1. (Facultatif) Sous **Description**, entrez une description.

1. Dans **New task invocation cutoff (Nouvelle limite d'appel de tâches)**, si vous ne souhaitez pas que de nouveaux appels de tâches soient lancés une fois le délai attribué à la fenêtre de maintenance écoulé, sélectionnez **Enabled (Activé)**.

   Lorsque cette option n'est *pas* activée, la tâche continue de s'exécuter une fois le délai écoulé et lance de nouveaux appels de tâches jusqu'à ce que celles-ci soient accomplies. 
**Note**  
L'état des tâches qui ne sont pas terminées lorsque vous activez cette option est `TIMED_OUT`. 

1. Pour cette étape, choisissez l’onglet correspondant au type de tâche sélectionné.

------
#### [ Fonctionnalité Exécuter la commande ]

   1. Dans la liste des **documents Command**, choisissez le document Command Systems Manager (document SSM) qui définit les tâches à exécuter.

   1. Pour **Version du document**, sélectionnez la version de document à utiliser.

   1. Pour **Priorité de tâche**, spécifiez la priorité de cette tâche. Zéro (`0`) est la priorité la plus élevée. Les tâches d'une fenêtre de maintenance sont planifiées par ordre de priorité des tâches qui ont la même priorité planifiée en parallèle.

------
#### [ Automation ]

   1.  Dans la liste des **documents Automation**, choisissez le dossier d’exploitation Automation qui définit les tâches à exécuter.

   1. Pour **Document version (Version du document)**, sélectionnez la version du runbook à utiliser.

   1. Pour **Priorité de tâche**, spécifiez la priorité de cette tâche. Zéro (`0`) est la priorité la plus élevée. Les tâches d'une fenêtre de maintenance sont planifiées par ordre de priorité des tâches qui ont la même priorité planifiée en parallèle.

------
#### [ Lambda ]

   1. Dans **Paramètres Lambda**, sélectionnez une fonction Lambda dans la liste.

   1. (Facultatif) Indiquez un contenu pour **Payload** (Charge utile), **Client Context** (Contexte client) ou **Qualifier** (Qualificateur) que vous souhaitez inclure.
**Note**  
Dans certains cas, vous pouvez utiliser un *pseudo‑paramètre* dans votre valeur `Payload`. Une fois que la tâche de fenêtre de maintenance s’exécute, elle transmet les valeurs correctes au lieu des paramètres fictifs. Pour plus d'informations, consultez [Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance](maintenance-window-tasks-pseudo-parameters.md).

   1. Pour **Priorité de tâche**, spécifiez la priorité de cette tâche. Zéro (`0`) est la priorité la plus élevée. Les tâches d'une fenêtre de maintenance sont planifiées par ordre de priorité des tâches qui ont la même priorité planifiée en parallèle.

------
#### [ Step Functions ]

   1. Dans **Paramètres Step Functions**, sélectionnez une machine d’état dans la liste.

   1. (Facultatif) Indiquez un nom pour l'exécution de la machine d'état et tout contenu pour **Input** (Entrée) que vous souhaitez inclure.
**Note**  
Dans certains cas, vous pouvez utiliser un *pseudo‑paramètre* dans votre valeur `Input`. Une fois que la tâche de fenêtre de maintenance s’exécute, elle transmet les valeurs correctes au lieu des paramètres fictifs. Pour plus d'informations, consultez [Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance](maintenance-window-tasks-pseudo-parameters.md).

   1. Pour **Priorité de tâche**, spécifiez la priorité de cette tâche. Zéro (`0`) est la priorité la plus élevée. Les tâches d'une fenêtre de maintenance sont planifiées par ordre de priorité des tâches qui ont la même priorité planifiée en parallèle.

------

1. Dans la zone **Cibles**, sélectionnez l'une des options suivantes :
   + **Sélection de groupes cibles enregistrés** : sélectionnez une ou plusieurs cibles de fenêtre de maintenance que vous avez enregistrées avec la fenêtre de maintenance actuelle.
   + **Sélection de cibles non enregistrées** : sélectionnez les ressources disponibles une par une comme cibles pour la tâche.

     Si, contrairement à vos attentes, un nœud géré ne figure pas dans la liste, consultez [Résolution des problèmes de disponibilité des nœuds gérés](fleet-manager-troubleshooting-managed-nodes.md) pour obtenir des conseils de dépannage.
   + **Cible de tâche non requise** : les cibles de la tâche peuvent déjà être spécifiées dans d'autres fonctions pour toutes les tâches à l'exception des tâches de type Run Command.

     Spécifiez une ou plusieurs cibles pour des tâches de fenêtre de maintenance de type Run Command. En fonction de la tâche, les cibles sont facultatives pour les autres types de tâches de la fenêtre de maintenance (Automation AWS Lambda, et AWS Step Functions). Pour de plus amples informations sur l'exécution de tâches qui ne spécifient pas de cibles, consultez [Enregistrement de tâches de fenêtre de maintenance sans cibles](maintenance-windows-targetless-tasks.md).
**Note**  
Dans la plupart des cas, il est inutile de spécifier explicitement une cible pour une tâche d'automatisation. Par exemple, supposons que vous créiez une tâche de type Automation pour mettre à jour une Amazon Machine Image (AMI) pour Linux à l'aide du runbook `AWS-UpdateLinuxAmi`. Lorsque la tâche s'exécute, l'AMI est mise à jour avec les derniers packages de distribution Linux et les logiciels Amazon disponibles. Ces mises à jour sont déjà installées sur les nouvelles instances créées à partir de l'AMI. Comme l'ID de l'AMI à mettre à jour est spécifié dans les paramètres d'entrée du runbook, il est inutile de spécifier à nouveau une cible dans la tâche de la fenêtre de maintenance.

1. *Tâches Automation uniquement :*

   Dans **Paramètres d'entrée**, fournissez des valeurs pour tous les paramètres requis ou facultatifs nécessaires à l'exécution de votre tâche.
**Note**  
Dans certains cas, vous pouvez utiliser un *pseudo‑paramètre* pour certaines valeurs de paramètres d’entrée. Une fois que la tâche de fenêtre de maintenance s’exécute, elle transmet les valeurs correctes au lieu des paramètres fictifs. Pour plus d'informations, consultez [Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance](maintenance-window-tasks-pseudo-parameters.md).

1. Pour **Rate control (Contrôle de débit)** :
   + Dans **Concurrency (Simultanéité)**, spécifiez un nombre ou un pourcentage de nœuds gérés sur lesquels exécuter simultanément la commande.
**Note**  
Si vous avez sélectionné des cibles en spécifiant des balises appliquées aux nœuds gérés ou en spécifiant AWS des groupes de ressources, et que vous n'êtes pas certain du nombre de nœuds gérés ciblés, limitez le nombre de cibles pouvant exécuter le document en même temps en spécifiant un pourcentage.
   + Dans **Error threshold (Seuil d'erreur)**, indiquez quand arrêter l'exécution de la commande sur les autres nœuds gérés après l'échec de celle-ci sur un certain nombre ou un certain pourcentage de nœuds. Si, par exemple, vous spécifiez trois erreurs, Systems Manager cesse d'envoyer la commande à la réception de la quatrième erreur. Les nœuds gérés sur lesquels la commande est toujours en cours de traitement peuvent également envoyer des erreurs.

1. (Facultatif) Pour **rôle de service IAM**, choisissez un rôle pour permettre à Systems Manager d’exécuter les tâches de fenêtre de maintenance.

   Si vous ne spécifiez pas d’ARN de rôle de service, Systems Manager utilise un rôle lié à un service dans votre compte. Ce rôle n’apparaît pas dans le menu déroulant. S’il n’existe aucun rôle lié au service approprié pour Systems Manager dans votre compte, il sera créé lors de l’enregistrement de la tâche. 
**Note**  
Pour améliorer la posture de sécurité, nous vous recommandons vivement de créer une politique personnalisée et un rôle de service personnalisé pour exécuter les tâches de votre fenêtre de maintenance. La politique peut être conçue de manière à fournir uniquement les autorisations nécessaires pour les tâches spécifiques de votre fenêtre de maintenance. Pour de plus amples informations, veuillez consulter [Configuration de Maintenance Windows](setting-up-maintenance-windows.md).

1. *Tâches Run Command uniquement :*

   (Facultatif) Pour **Output options** (Options de sortie), procédez de l'une des manières suivantes :
   + Cochez la case **Activer l'écriture dans S3** pour enregistrer la sortie de la commande dans un fichier. Saisissez les noms de compartiment et de préfixe (dossier) dans les zones.
   + Cochez la case **CloudWatch de sortie** pour écrire la sortie complète dans Amazon CloudWatch Logs. Entrez le nom d'un groupe de CloudWatch journaux Logs.
**Note**  
Les autorisations qui permettent d'écrire des données dans un compartiment S3 ou dans CloudWatch des journaux sont celles du profil d'instance attribué au nœud, et non celles de l'utilisateur IAM effectuant cette tâche. Pour plus d’informations, consultez la section [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md). En outre, si le compartiment ou le groupe de journaux S3 spécifié se trouve dans un autre compartiment Compte AWS, vérifiez que le profil d'instance associé au nœud dispose des autorisations nécessaires pour écrire dans ce compartiment.

1. *Tâches Run Command uniquement :*

   Dans la section **SNS notifications (Notifications SNS)**, si vous souhaitez envoyer des notifications sur le statut d'exécution des commandes, cochez la case **Enable SNS notifications (Activer les notifications SNS)**.

   Pour plus d'informations sur la configuration des notifications Amazon SNS pour Run Command, consultez [Surveillance des changements d'état du Systems Manager à l'aide des notifications Amazon SNS](monitoring-sns-notifications.md).

1. *Tâches Run Command uniquement :*

   Dans la section **Parameters (Paramètres)**, spécifiez les paramètres du document. 
**Note**  
Dans certains cas, vous pouvez utiliser un *pseudo‑paramètre* pour certaines valeurs de paramètres d’entrée. Une fois que la tâche de fenêtre de maintenance s’exécute, elle transmet les valeurs correctes au lieu des paramètres fictifs. Pour plus d'informations, consultez [Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance](maintenance-window-tasks-pseudo-parameters.md).

1. *Tâches Automation et Run Command uniquement :*

   (Facultatif) Dans la zone **CloudWatch d'****alarme, pour Nom** de l'alarme, choisissez une CloudWatch alarme existante à appliquer à votre tâche de surveillance. 

   Si l’alarme s’active, la tâche est arrêtée.
**Note**  
Pour associer une CloudWatch alarme à votre tâche, le principal IAM qui exécute la tâche doit être autorisé à effectuer l'`iam:createServiceLinkedRole`action. Pour plus d'informations sur les CloudWatch alarmes, consultez la section [Utilisation des CloudWatch alarmes Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html).

1. En fonction de votre type de tâche, choisissez l’une des options suivantes :
   + **Enregistrer une tâche d'exécution de commande**
   + **Enregistrer la tâche Automation**
   + **Enregistrer une tâche Lambda**
   + **Enregistrer la tâche Step Functions**

# Désactivation ou activation d’une fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-disable"></a>

Vous pouvez désactiver ou activer une fenêtre de maintenance dans Maintenance Windows, un des outils d’ AWS Systems Manager. Vous pouvez choisir une fenêtre de maintenance à la fois pour désactiver ou activer son exécution. Vous pouvez également sélectionner plusieurs ou toutes les fenêtres de maintenance pour les activer et les désactiver.

Cette section explique comment désactiver ou activer une fenêtre de maintenance à l'aide de la console Systems Manager. Pour des exemples illustrant comment procéder à l'aide de AWS Command Line Interface (AWS CLI), voir[Tutoriel : Mettre à jour une fenêtre de maintenance à l'aide du AWS CLI](maintenance-windows-cli-tutorials-update.md). 

**Topics**
+ [Désactivation d’une fenêtre de maintenance à l’aide de la console](#sysman-maintenance-disable-mw)
+ [Activation d’une fenêtre de maintenance à l’aide de la console](#sysman-maintenance-enable-mw)

## Désactivation d’une fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-disable-mw"></a>

Vous pouvez désactiver une fenêtre de maintenance pour suspendre une tâche pendant une période spécifiée, et elle restera disponible pour être réactivée ultérieurement.

**Pour désactiver une fenêtre de maintenance**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Maintenance Windows**. 

1. À l'aide de la case en regard de la fenêtre de maintenance à désactiver, sélectionnez une ou plusieurs fenêtres de maintenance.

1. Choisissez **Désactiver la fenêtre de maintenance** dans le menu **Actions**. Le système vous invite à confirmer vos actions. 

## Activation d’une fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-enable-mw"></a>

Vous pouvez activer une fenêtre de maintenance pour reprendre une tâche.

**Note**  
Si la fenêtre de maintenance utilise une planification de fréquence et que la date de début est actuellement définie sur une date et une heure passées, la date et l’heure actuelles sont utilisées comme date de début de la fenêtre de maintenance. Vous pouvez modifier la date de début de la fenêtre de maintenance avant ou après son activation. Pour plus d'informations, consultez [Mise à jour ou suppression des ressources de fenêtre de maintenance à l’aide de la console](sysman-maintenance-update.md).

**Pour activer une fenêtre de maintenance**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Maintenance Windows**. 

1. Cochez la case correspondant à la fenêtre de maintenance pour l’activer.

1. Choisissez **Actions, Activer la fenêtre de maintenance**. Le système vous invite à confirmer vos actions. 

# Mise à jour ou suppression des ressources de fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-update"></a>

Vous pouvez mettre à jour ou supprimer une fenêtre dans Maintenance Windows, un outil d’ AWS Systems Manager. Vous pouvez également mettre à jour ou supprimer les cibles ou tâches d'une fenêtre de maintenance. Si vous modifiez les détails d'une fenêtre de maintenance, vous pouvez modifier le programme, les cibles et les tâches. Vous pouvez également spécifier les noms et descriptions des fenêtres, cibles et tâches, ce qui vous aide à mieux comprendre leur utilité et facilite la gestion de votre file d'attente de fenêtres.

Cette section présente comment mettre à jour ou supprimer une fenêtre de maintenance, des cibles et des tâches à l'aide de la console Systems Manager. Pour voir des exemples de la façon de procéder à l'aide de l' AWS Command Line Interface (AWS CLI), consultez [Tutoriel : Mettre à jour une fenêtre de maintenance à l'aide du AWS CLI](maintenance-windows-cli-tutorials-update.md). 

**Topics**
+ [Mise à jour ou suppression d’une fenêtre de maintenance à l’aide de la console](#sysman-maintenance-update-mw)
+ [Mise à jour ou désenregistrement de cibles de fenêtre de maintenance à l’aide de la console](#sysman-maintenance-update-target)
+ [Mise à jour ou désenregistrement de tâches de fenêtre de maintenance à l’aide de la console](#sysman-maintenance-update-tasks)

## Mise à jour ou suppression d’une fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-update-mw"></a>

Vous pouvez mettre à jour une fenêtre de maintenance pour modifier son nom, sa description et sa planification, et si la fenêtre doit autoriser les cibles non enregistrées ou non.

**Pour mettre à jour ou supprimer une fenêtre de maintenance**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Maintenance Windows**. 

1. Sélectionnez le bouton en regard de la fenêtre de maintenance à mettre à jour ou supprimer, puis exécutez l'une des tâches suivantes :
   + Sélectionnez **Delete (Supprimer)**. Le système vous invite à confirmer vos actions. 
   + Sélectionnez **Edit** (Modifier). Sur la page **Edit maintenance window** (Modifier la fenêtre de maintenance), modifiez les valeurs et options souhaitées, puis sélectionnez **Save changes** (Enregistrer les modifications).

     Pour de plus amples informations sur les choix de configuration que vous pouvez effectuer, veuillez consulter [Création d’une fenêtre de maintenance à l’aide de la console](sysman-maintenance-create-mw.md).

## Mise à jour ou désenregistrement de cibles de fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-update-target"></a>

Vous pouvez mettre à jour les cibles d'une fenêtre de maintenance ou annuler leur enregistrement. Si vous choisissez de mettre à jour une cible de fenêtre de maintenance, vous pouvez spécifier un nouveau nom, une nouvelle description ou un nouveau propriétaire. Vous pouvez également choisir différentes cibles. 

**Pour mettre à jour ou supprimer les cibles d'une fenêtre de maintenance**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Maintenance Windows**. 

1. Sélectionnez le nom de la fenêtre de maintenance à mettre à jour, puis l'onglet **Tabs** (Onglets), et exécutez l'une des tâches suivantes :
   + Pour mettre à jour les cibles, sélectionnez le bouton en regard de la cible à mettre à jour, puis **Edit** (Modifier).
   + Pour annuler l'enregistrement de cibles, cliquez sur le bouton à côté de la cible dont l'enregistrement doit être annulé, puis sélectionnez **Deregister target** (Désenregistrer la cible). Dans la boite de dialogue **Désenregistrer une cible de fenêtre de maintenance**, sélectionnez **Annuler l'enregistrement**.

## Mise à jour ou désenregistrement de tâches de fenêtre de maintenance à l’aide de la console
<a name="sysman-maintenance-update-tasks"></a>

Vous pouvez mettre à jour les tâches d'une fenêtre de maintenance ou annuler leur enregistrement. Si vous choisissez de mettre à jour une tâche, vous pouvez spécifier un nouveau nom de tâche, une nouvelle description ou un nouveau propriétaire. Pour les tâches Automation et Run Command, vous pouvez choisir un autre document SSM pour les tâches. Toutefois, vous ne pouvez pas modifier une tâche pour modifier son type. Par exemple, si vous avez créé une tâche Automation, vous ne pouvez pas modifier cette tâche et la remplacer par une tâche Run Command. 

**Pour mettre à jour ou supprimer les tâches d’une fenêtre de maintenance à l’aide de la console**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Maintenance Windows**. 

1. Sélectionnez le nom de la fenêtre de maintenance que vous souhaitez mettre à jour.

1. Sélectionnez l'onglet **Tasks** (Tâches), puis le bouton en regard de la tâche à mettre à jour.

1. Effectuez l'une des actions suivantes :
   + Pour annuler l'enregistrement d'une tâche, sélectionnez **Deregister task** (Annuler l'enregistrement de la tâche).
   + Pour modifier la tâche, sélectionnez **Edit (Modifier)**. Modifiez les valeurs et options de votre choix, puis sélectionnez **Edit task** (Modifier la tâche).

# Didacticiels
<a name="maintenance-windows-tutorials"></a>

Les tutoriels de cette section vous montrent comment effectuer des tâches courantes lorsque vous travaillez avec des fenêtres de maintenance.

**Exécuter les opérations prérequises**  
Avant d'essayer ces didacticiels, exécutez les opérations prérequises suivantes :
+ **Configurer l'AWS CLI sur votre machine locale** – Avant de pouvoir exécuter des commandes sur l'AWS CLI, vous devez installer et configurer l'interface de ligne de commande sur votre ordinateur local. Pour plus d'informations, consultez la section [Installation ou mise à jour de la version la plus récente de l'AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [Installation d'Outils AWS pour PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).
+ **Vérifier les rôles et les autorisations des fenêtres de maintenance** – Un administrateur AWS de votre compte doit accorder à l'Gestion des identités et des accès AWS (IAM) les autorisations dont vous avez besoin pour gérer les fenêtres de maintenance depuis l'interface de ligne de commande. Pour plus d'informations, consultez [Configuration de Maintenance Windows](setting-up-maintenance-windows.md).
+ **Créer ou configurer une instance compatible avec Systems Manager** – Pour suivre les didacticiels, vous avez besoin d'au moins une instance Amazon Elastic Compute Cloud (Amazon EC2), configurée pour une utilisation avec Systems Manager. Cela signifie que SSM Agent est installé sur l'instance et qu'un profil d'instance IAM pour Systems Manager est attaché à l'instance. 

  Nous vous recommandons de lancer une instance à partir d'une instance Amazon Machine Image (AMI) géré par AWS avec l'agent préinstallé. Pour de plus amples informations, consultez [Trouver les AMIs avec SSM Agent préinstallé](ami-preinstalled-agent.md).

  Pour plus d'informations sur l'installation de SSM Agent sur une instance, consultez les rubriques suivantes :
  + [Installation et désinstallation manuelles de SSM Agent sur les instances EC2 pour Windows Server](manually-install-ssm-agent-windows.md)
  + [Installation et désinstallation manuelles de SSM Agent sur les instances EC2 pour Linux](manually-install-ssm-agent-linux.md)

  Pour plus d’informations sur la configuration des autorisations IAM pour Systems Manager sur votre instance, consultez la section [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md).
+ **Créer des ressources supplémentaires en fonction des besoins** – Run Command, un outil de Systems Manager, inclut nombreuses tâches ne nécessitent pas la création de ressources autres que celles répertoriées dans cette rubrique sur les prérequis. Pour cette raison, nous fournissons une tâche Run Command simple que vous pourrez utiliser lors de votre première utilisation des didacticiels. Comme décrit précédemment dans cette rubrique, vous avez également besoin d'une instance (EC2) configurée pour une utilisation avec Systems Manager. Une fois que vous avez configuré cette instance, vous pouvez enregistrer une simple tâche Run Command. 

  L’outil Maintenance Windows de Systems Manager prend en charge les quatre types de tâches suivants : 
  + Commandes de l'Run Command
  + Flux de travail Systems Manager Automation
  + Fonctions AWS Lambda
  + Tâches AWS Step Functions

  En général, si une tâche de fenêtre de maintenance que vous souhaitez exécuter nécessite des ressources supplémentaires, vous devez les créer en premier. Par exemple, si vous souhaitez une fenêtre de maintenance qui exécute une fonction AWS Lambda, créez la fonction Lambda avant de commencer ; pour une tâche Run Command, créez le compartiment S3 dans lequel vous pouvez enregistrer la sortie de commande (si vous envisagez de le faire) ; et ainsi de suite.

**Topics**
+ [Tutoriels : Créez et gérez des fenêtres de maintenance à l'aide du AWS CLI](maintenance-window-tutorial-cli.md)
+ [Tutoriel : créer une fenêtre de maintenance pour l’application de correctifs à l’aide de la console](maintenance-window-tutorial-patching.md)

# Tutoriels : Créez et gérez des fenêtres de maintenance à l'aide du AWS CLI
<a name="maintenance-window-tutorial-cli"></a>

Cette section inclut des didacticiels qui vous aident à apprendre à utiliser l' AWS Command Line Interface (AWS CLI) pour effectuer les opérations suivantes :
+ Créer et configurer une fenêtre de maintenance
+ Afficher des informations concernant une fenêtre de maintenance
+ Afficher des informations sur les tâches des fenêtres de maintenance et l'exécution des tâches
+ Mettre à jour une fenêtre de maintenance
+ Supprimer une fenêtre de maintenance

**Gardez une trace des ressources IDs**  
Au fur et à mesure que vous effectuez les tâches de ces AWS CLI didacticiels, suivez les ressources IDs générées par les commandes que vous exécutez. Vous utilisez un grand nombre de ceux-ci comme entrées pour les commandes ultérieures. Par exemple, lors de la création de la fenêtre de maintenance, le système vous fournit un ID de fenêtre de maintenance dans le format suivant :

```
{
   "WindowId":"mw-0c50858d01EXAMPLE"
}
```

Notez les éléments suivants générés par le système, IDs car les didacticiels de cette section les utilisent :
+ `WindowId`
+ `WindowTargetId`
+ `WindowTaskId`
+ `WindowExecutionId`
+ `TaskExecutionId`
+ `InvocationId`
+ `ExecutionId`

Vous avez également besoin de l’ID de l’instance EC2 que vous prévoyez d’utiliser dans les tutoriels. Par exemple : `i-02573cafcfEXAMPLE`

**Topics**
+ [Tutoriel : Création et configuration d'une fenêtre de maintenance à l'aide du AWS CLI](maintenance-windows-cli-tutorials-create.md)
+ [Tutoriel : Afficher les informations relatives aux fenêtres de maintenance à l'aide du AWS CLI](maintenance-windows-cli-tutorials-describe.md)
+ [Tutoriel : Afficher les informations relatives aux tâches et à leur exécution à l'aide du AWS CLI](mw-cli-tutorial-task-info.md)
+ [Tutoriel : Mettre à jour une fenêtre de maintenance à l'aide du AWS CLI](maintenance-windows-cli-tutorials-update.md)
+ [Tutoriel : Supprimer une fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-delete-mw.md)

# Tutoriel : Création et configuration d'une fenêtre de maintenance à l'aide du AWS CLI
<a name="maintenance-windows-cli-tutorials-create"></a>

Ce didacticiel explique comment utiliser le AWS Command Line Interface (AWS CLI) pour créer et configurer une fenêtre de maintenance, ses cibles et ses tâches. Le parcours principal tout au long de ce didacticiel se compose d'étapes simples. Vous pouvez créer une fenêtre de maintenance simple, identifier une cible unique et configurer une tâche simple pour la fenêtre de maintenance à exécuter. Au fil du parcours, nous fournissons des informations que vous pouvez utiliser pour essayer des scénarios plus complexes.

Au fur et à mesure que vous suivez les étapes de ce didacticiel, remplacez les valeurs en *red* italique par vos propres options et. IDs Par exemple, remplacez l'ID de fenêtre de maintenance *mw-0c50858d01EXAMPLE* et l'ID d'instance *i-02573cafcfEXAMPLE* par IDs des ressources que vous créez.

**Topics**
+ [Étape 1 : Créez la fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-create-mw.md)
+ [Étape 2 : Enregistrez un nœud cible dans la fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-targets.md)
+ [Étape 3 : enregistrer une tâche dans la fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-tasks.md)

# Étape 1 : Créez la fenêtre de maintenance à l'aide du AWS CLI
<a name="mw-cli-tutorial-create-mw"></a>

Au cours de cette étape, vous allez créer une fenêtre de maintenance et spécifier ses options de base, tels que le nom, la planification et la durée. Dans les étapes ultérieures, vous choisirez l'instance qu'elle met à jour et la tâche qu'elle exécute.

Dans notre exemple, vous allez créer une fenêtre de maintenance qui s'exécute toutes les cinq minutes. Normalement, vous n'exécutez pas une fenêtre de maintenance aussi fréquemment. Toutefois, cette fréquence vous permet de voir rapidement les résultats de votre didacticiel. Nous allons vous montrer comment passer à un taux moins fréquent après que la tâche a été exécutée avec succès.

**Note**  
Pour obtenir une explication des relations entre les différentes options liées à la planification pour les fenêtres de maintenance, consultez [Options de planification de la fenêtre de maintenance et de période active](maintenance-windows-schedule-options.md).  
Pour de plus amples informations sur l'utilisation de l'option `--schedule`, consultez [Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md).

**Pour créer une fenêtre de maintenance à l'aide du AWS CLI**

1. Ouvrez le AWS Command Line Interface (AWS CLI) et exécutez la commande suivante sur votre machine locale pour créer une fenêtre de maintenance qui effectue les opérations suivantes :
   + S'exécute toutes les cinq minutes pendant un maximum de deux heures (si nécessaire).
   + Empêche le démarrage de nouvelles tâches dans l'heure qui suit la fin de l'opération de fenêtre de maintenance.
   + Autorise les cibles non associées (instances que vous n'avez pas enregistrées avec la fenêtre de maintenance).
   + Indique par l'utilisation de balises personnalisées que son créateur a l'intention de l'utiliser dans un didacticiel.

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

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
      "WindowId":"mw-0c50858d01EXAMPLE"
   }
   ```

1. Maintenant, exécutez la commande suivante pour afficher les informations détaillées sur les fenêtres de maintenance de votre compte.

   ```
   aws ssm describe-maintenance-windows
   ```

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
      "WindowIdentities":[
         {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "Name": "My-First-Maintenance-Window",
               "Enabled": true,
               "Duration": 2,
               "Cutoff": 1,
               "NextExecutionTime": "2019-05-11T16:46:16.991Z"
         }
      ]
   }
   ```

Passez au [Étape 2 : Enregistrez un nœud cible dans la fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-targets.md).

# Étape 2 : Enregistrez un nœud cible dans la fenêtre de maintenance à l'aide du AWS CLI
<a name="mw-cli-tutorial-targets"></a>

Au cours de cette étape, vous allez enregistrer une cible avec votre nouvelle fenêtre de maintenance. Dans ce cas, vous devez spécifier le nœud à mettre à jour pendant l'exécution de la fenêtre de maintenance. 

Pour un exemple d'enregistrement de plusieurs nœuds à la fois à l'aide d'un nœud IDs, des exemples d'utilisation de balises pour identifier plusieurs nœuds et des exemples de spécification de groupes de ressources en tant que cibles, consultez[Exemples : Enregistrement de cibles avec une fenêtre de maintenance](mw-cli-tutorial-targets-examples.md).

**Note**  
Vous devez déjà avoir créé une instance Amazon Elastic Compute Cloud (Amazon EC2) à utiliser dans cette étape, comme décrit dans les [Prérequis du didacticiel Maintenance Windows](maintenance-windows-tutorials.md).

**Pour enregistrer un nœud cible avec une fenêtre de maintenance à l'aide du AWS CLI**

1. Exécutez la commande suivante sur votre machine locale. Remplacez chaque *example resource placeholder* par vos propres informations.

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

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
      "WindowTargetId":"e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
   }
   ```

1. Maintenant, exécutez la commande suivante sur votre machine locale pour afficher les détails relatifs à la cible de votre fenêtre de maintenance.

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

   ```
   aws ssm describe-maintenance-window-targets \
       --window-id "mw-0c50858d01EXAMPLE"
   ```

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

   ```
   aws ssm describe-maintenance-window-targets ^
       --window-id "mw-0c50858d01EXAMPLE"
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "Targets": [
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE",
               "ResourceType": "INSTANCE",
               "Targets": [
                   {
                       "Key": "InstanceIds",
                       "Values": [
                           "i-02573cafcfEXAMPLE"
                       ]
                   }
               ]
           }
       ]
   }
   ```

Passez au [Étape 3 : enregistrer une tâche dans la fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-tasks.md). 

# Exemples : Enregistrement de cibles avec une fenêtre de maintenance
<a name="mw-cli-tutorial-targets-examples"></a>

Vous pouvez enregistrer un nœud individuel comme cible à l'aide de son ID de nœud, comme démontré dans [Étape 2 : Enregistrez un nœud cible dans la fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-targets.md). Vous pouvez également enregistrer un ou plusieurs nœuds comme cibles à l'aide des commandes présentées sur cette page.

En général, deux méthodes permettent d'identifier les nœuds à utiliser comme cibles de fenêtre de maintenance : spécifier des nœuds individuels ou utiliser des balises de ressources. La méthode de balises de ressources offre davantage d'options, comme illustré dans les exemples 2 à 3. 

Vous pouvez également spécifier un ou plusieurs groupes de ressources en tant que cible d'une fenêtre de maintenance. Un groupe de ressources peut inclure des nœuds et de nombreux autres types de AWS ressources prises en charge. Les exemples 4 et 5 ci-après montrent comment ajouter des groupes de ressources à vos cibles de fenêtre de maintenance.

**Note**  
Si une seule tâche de fenêtre de maintenance est enregistrée avec plusieurs cibles, ses appels de tâches se produisent en séquence et non en parallèle. Si votre tâche doit s'exécuter sur plusieurs cibles simultanément, enregistrez une tâche pour chaque cible individuellement et attribuez à chaque tâche le même niveau de priorité.

Pour plus d'informations sur la création et la gestion des groupes de ressources, consultez [Que sont les groupes de ressources ?](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html) dans le *Guide de l'utilisateur Groupes de ressources AWS * et [Groupes de ressources et balisage pour AWS](https://aws.amazon.com/blogs/aws/resource-groups-and-tagging/) dans *AWS News Blog*.

Pour plus d'informations sur les quotas pour Maintenance Windows un outil AWS Systems Manager, outre ceux spécifiés dans les exemples suivants, consultez la section [Quotas de service Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#limits_ssm) dans le *Référence générale d'Amazon Web Services*.

## Exemple 1 : enregistrer plusieurs cibles à l'aide d'un nœud IDs
<a name="mw-target-example-1"></a>

Exécutez la commande suivante sur le format de votre machine locale pour enregistrer plusieurs nœuds en tant que cibles à l'aide de leur nœud IDs. Remplacez chaque *example resource placeholder* par vos propres informations.

------
#### [ 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
```

------

**Utilisation recommandée** : particulièrement utile lorsque vous enregistrez pour la première fois un groupe unique de nœuds auprès d'une fenêtre de maintenance et qu'ils ne *partagent pas* de balise de nœud commune.

**Quotas :** vous pouvez spécifier un maximum de 50 nœuds pour chaque cible de fenêtre de maintenance.

## Exemple 2 : Enregistrement de cibles à l'aide des balises de ressources appliquées aux nœuds
<a name="mw-target-example-2"></a>

Exécutez la commande suivante sur votre machine locale pour enregistrer les nœuds qui sont déjà balisés avec une paire clé-valeur que vous avez attribuée. Remplacez chaque *example resource placeholder* par vos propres informations.

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

------

**Utilisation recommandée** : particulièrement utile lorsque vous enregistrez pour la première fois un groupe unique de nœuds auprès d'une fenêtre de maintenance et qu'ils *partagent* une balise de nœud commune.

**Quotas :** vous pouvez spécifier jusqu'à cinq paires clé-valeur au total pour chaque cible. Si vous spécifiez plusieurs paires clé-valeur, un nœud doit être balisé avec *toutes* les clés et valeurs de balise que vous décidez d'inclure dans le groupe cible.

**Note**  
Vous pouvez baliser un groupe de noeuds avec la clé de balise : `Patch Group`ou`PatchGroup` et attribuer les noeuds d'une valeur de clé commune, comme `my-patch-group`. (Utilisez `PatchGroup`, sans espace, si vous avez [autorisé les balises dans les métadonnées d’instance EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#allow-access-to-tags-in-IMDS).) Patch Manager, un outil de Systems Manager, évalue la clé `Patch Group` ou `PatchGroup` sur les nœuds afin d’aider à déterminer le référentiel de correctifs applicable à ces nœuds. Si votre tâche exécutera le document SSM `AWS-RunPatchBaseline` (ou le document SSM `AWS-ApplyPatchBaseline` hérité), spécifiez la même paire clé-valeur `Patch Group` ou `PatchGroup` lors de l'enregistrement des cibles avec une fenêtre de maintenance. Par exemple : `--target "Key=tag:PatchGroup,Values=my-patch-group`. Cela vous permet d'utiliser une fenêtre de maintenance pour mettre à jour les correctifs d'un groupe de nœuds qui sont déjà associés au même référentiel de correctifs. Pour de plus amples informations, veuillez consulter [Groupes de correctifs](patch-manager-patch-groups.md).

## Exemple 3 : Enregistrement de cibles à l'aide d'un groupe de clés de balise (sans valeurs de balise)
<a name="mw-target-example-3"></a>

Exécutez la commande suivante sur votre machine locale pour enregistrer les nœuds qui disposent tous d'une ou plusieurs clés de balise, indépendamment de leurs valeurs de clé. Remplacez chaque *example resource placeholder* par vos propres informations.

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

------

**Utilisation recommandée :** utile lorsque vous souhaitez cibler des nœuds en spécifiant plusieurs *clés* de balise (sans leurs valeurs) plutôt qu'une seule clé de balise ou une paire clé-valeur de balise.

**Quotas :** vous pouvez spécifier jusqu'à cinq clés de balise au total pour chaque cible. Si vous spécifiez plusieurs clés de balise, un nœud doit être balisé avec *toutes* les clés de balise que vous décidez d'inclure dans le groupe cible.

## Exemple 4 : Enregistrement de cibles à l'aide d'un nom de groupe de ressources
<a name="mw-target-example-4"></a>

Exécutez la commande suivante sur votre machine locale pour enregistrer un groupe de ressources spécifié, quel que soit le type des ressources que celui-ci contient. Remplacez *mw-0c50858d01EXAMPLE* par vos propres informations. Si les tâches que vous attribuez à la fenêtre de maintenance n'agissent pas sur un type de ressource inclus dans le groupe de ressources, le système peut signaler une erreur. Les tâches pour lesquelles un type de ressource pris en charge est trouvé continuent de s'exécuter malgré ces erreurs.

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

------

**Utilisation recommandée** : Utile lorsque vous souhaitez spécifier rapidement un groupe de ressources en tant que cible sans évaluer si tous ses types de ressource seront ciblés par une fenêtre de maintenance, ou lorsque vous savez que le groupe de ressources contient uniquement les types de ressource sur lesquelles vos tâches exécutent des actions.

**Quotas :** Vous pouvez spécifier un seul groupe de ressources comme cible.

## Exemple 5 : Enregistrement de cibles en filtrant des types de ressource dans un groupe de ressources
<a name="mw-target-example-5"></a>

Exécutez la commande suivante sur votre machine locale pour enregistrer uniquement certains types de ressource qui appartiennent à un groupe de ressources que vous spécifiez. Remplacez *mw-0c50858d01EXAMPLE* par vos propres informations. Avec cette option, même si vous ajoutez une tâche pour un type de ressource qui appartient au groupe de ressources, la tâche ne s'exécute pas si vous n'avez pas ajouté explicitement ce type de ressource au filtre.

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

------

**Usage recommandé** : Utile lorsque vous souhaitez conserver un contrôle strict sur les types de AWS ressources sur lesquels votre fenêtre de maintenance peut exécuter des actions, ou lorsque votre groupe de ressources contient un grand nombre de types de ressources et que vous souhaitez éviter de signaler des erreurs inutiles dans les journaux de vos fenêtres de maintenance.

**Quotas :** Vous pouvez spécifier un seul groupe de ressources comme cible.

# Étape 3 : enregistrer une tâche dans la fenêtre de maintenance à l'aide du AWS CLI
<a name="mw-cli-tutorial-tasks"></a>

Dans cette étape du didacticiel, vous enregistrez une AWS Systems Manager Run Command tâche qui exécute la `df` commande sur votre instance Amazon Elastic Compute Cloud (Amazon EC2) pour Linux. Les résultats de cette commande Linux standard montrent la quantité d'espace disponible et la quantité d'espace utilisée sur le système de fichiers du disque de votre instance.

-ou-

Si vous ciblez une instance Amazon EC2 pour Windows Server au lieu de Linux, remplacez **df** dans la commande suivante par **ipconfig**. Le résultat de cette commande répertorie les détails relatifs à l'adresse IP, le masque de sous-réseau et la passerelle par défaut pour les adaptateurs sur l'instance cible.

Lorsque vous êtes prêt à enregistrer d'autres types de tâches ou à utiliser plusieurs des options Systems Manager Run Command disponibles, consultez [Exemples : Enregistrement de tâches avec une fenêtre de maintenance](mw-cli-register-tasks-examples.md). Là, nous fournissons plus d'informations sur les quatre types de tâches, et certaines de leurs principales options, pour vous aider à planifier des scénarios concrets plus vastes. 

**Pour enregistrer une tâche avec une fenêtre de maintenance**

1. Exécutez la commande suivante sur votre machine locale. Remplacez chaque *example resource placeholder* par vos propres informations. La version à exécuter à partir d'une machine Windows locale inclut les caractères d'échappement (« / ») dont vous avez besoin pour exécuter la commande à partir de votre outil de ligne de commande.

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

------

   Le système renvoie des informations similaires à ce qui suit :

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

1. Maintenant, exécutez la commande suivante pour afficher les détails relatifs à la tâche de fenêtre de maintenance que vous avez créée. 

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

   ```
   aws ssm describe-maintenance-window-tasks \
       --window-id mw-0c50858d01EXAMPLE
   ```

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

   ```
   aws ssm describe-maintenance-window-tasks ^
       --window-id mw-0c50858d01EXAMPLE
   ```

------

1. Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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. Attendez que la tâche ait eu le temps d'être exécutée, conformément à la planification que vous avez spécifiée dans [Étape 1 : Créez la fenêtre de maintenance à l'aide du AWS CLI](mw-cli-tutorial-create-mw.md). Par exemple, si vous avez spécifié **--schedule "rate(5 minutes)"**, attendez cinq minutes. Ensuite, exécutez la commande suivante pour afficher des informations sur toutes les exécutions qui se sont produites pour cette tâche. 

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

   ```
   aws ssm describe-maintenance-window-executions \
       --window-id mw-0c50858d01EXAMPLE
   ```

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

   ```
   aws ssm describe-maintenance-window-executions ^
       --window-id mw-0c50858d01EXAMPLE
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "WindowExecutions": [
           {
               "WindowId": "mw-0c50858d01EXAMPLE",
               "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
               "Status": "SUCCESS",
               "StartTime": 1557593493.096,
               "EndTime": 1557593498.611
           }
       ]
   }
   ```

**Astuce**  
Une fois que la tâche s'est terminée avec succès, vous pouvez diminuer la fréquence à laquelle la fenêtre de maintenance s'exécute. Par exemple, exécutez la commande suivante pour réduire la fréquence à une fois par semaine. Remplacez *mw-0c50858d01EXAMPLE* par vos propres informations.  

```
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)"
```
Pour de plus amples informations sur la planification des fenêtres de maintenance, veuillez consulter [Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md) et [Options de planification de la fenêtre de maintenance et de période active](maintenance-windows-schedule-options.md).  
Pour plus d'informations sur l'utilisation du AWS Command Line Interface (AWS CLI) pour modifier une fenêtre de maintenance, consultez[Tutoriel : Mettre à jour une fenêtre de maintenance à l'aide du AWS CLI](maintenance-windows-cli-tutorials-update.md).

Pour vous entraîner à exécuter AWS CLI des commandes afin d'obtenir plus de détails sur votre tâche de fenêtre de maintenance et ses exécutions, passez à[Tutoriel : Afficher les informations relatives aux tâches et à leur exécution à l'aide du AWS CLI](mw-cli-tutorial-task-info.md).

**Accès à la sortie des commandes du tutoriel**  
L'utilisation du pour afficher le *résultat* de la Run Command commande associée AWS CLI à l'exécution des tâches de votre fenêtre de maintenance n'entre pas dans le cadre de ce didacticiel.

Vous pouvez toutefois consulter ces données à l'aide du AWS CLI. (Vous pouvez également afficher la sortie dans la console Systems Manager ou dans un fichier journal stocké dans un compartiment Amazon Simple Storage Service [Amazon S3], si vous avez configuré la fenêtre de maintenance afin qu'elle stocke la sortie de commande à cet endroit.) Vous constaterez que la sortie de la commande **df** sur une instance EC2 pour Linux est similaire à ce qui suit.

```
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% /
```

La sortie de la commande **ipconfig** sur une instance EC2 pour Windows Server est similaire à ce qui suit :

```
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  . :
```

# Exemples : Enregistrement de tâches avec une fenêtre de maintenance
<a name="mw-cli-register-tasks-examples"></a>

Vous pouvez enregistrer une tâche dansRun Command, un outil dans AWS Systems Manager, avec une fenêtre de maintenance à l'aide du AWS Command Line Interface (AWS CLI), comme illustré dans [Enregistrer des tâches dans la fenêtre de maintenance](mw-cli-tutorial-tasks.md). Vous pouvez également enregistrer des tâches pour les flux de travail, les AWS Lambda fonctions et les AWS Step Functions tâches de Systems Manager Automation, comme expliqué plus loin dans cette rubrique.

**Note**  
Spécifiez une ou plusieurs cibles pour des tâches de fenêtre de maintenance de type Run Command. En fonction de la tâche, les cibles sont facultatives pour les autres types de tâches de la fenêtre de maintenance (Automation AWS Lambda, et AWS Step Functions). Pour de plus amples informations sur l'exécution de tâches qui ne spécifient pas de cibles, consultez [Enregistrement de tâches de fenêtre de maintenance sans cibles](maintenance-windows-targetless-tasks.md).

Dans cette rubrique, nous donnons des exemples d'utilisation de la commande AWS Command Line Interface (AWS CLI) `register-task-with-maintenance-window` pour enregistrer chacun des quatre types de tâches pris en charge avec une fenêtre de maintenance. Les exemples sont uniquement fournis à titre de démonstration. Mais vous pouvez les modifier afin de créer des commandes réelles d'enregistrement des tâches. 

**Utilisation de l'cli-input-json option --**  
Afin de mieux gérer vos options de tâches, vous pouvez utiliser l'option de commande `--cli-input-json`, avec les valeurs d'options référencées dans un fichier JSON. 

Pour utiliser l'exemple de contenu de fichier JSON que nous fournissons dans les exemples suivants, effectuez les opérations suivantes sur votre machine locale :

1. Créez un fichier portant un nom comme `MyRunCommandTask.json`, `MyAutomationTask.json` ou tout autre nom de votre choix.

1. Copiez le contenu de notre exemple JSON dans le fichier.

1. Modifiez le contenu du fichier pour l'enregistrement de vos tâches, puis enregistrez le fichier.

1. Dans le répertoire où vous avez stocké le fichier, exécutez la commande suivante. Remplacez le nom de votre fichier par*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 paramètres dans les tâches de la fenêtre de maintenance**  
Dans certains exemples, nous utilisons des *pseudo-paramètres* comme méthode pour transmettre des informations d'ID à vos tâches. Par exemple, il `{{TARGET_ID}}` `{{RESOURCE_ID}}` peut être utilisé pour transmettre IDs des AWS ressources aux tâches Automation, Lambda et Step Functions. Pour plus d'informations sur les pseudo-paramètres dans les contenus `--task-invocation-parameters`, consultez [Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance](maintenance-window-tasks-pseudo-parameters.md). 

**Plus d'informations**  
+ [Options de paramètres pour la commande 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) dans la *référence de commande de l'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) dans la *Référence d'API AWS Systems Manager *

## Exemples d'enregistrement de tâches
<a name="task-examples"></a>

Les sections suivantes fournissent un exemple de AWS CLI commande pour enregistrer un type de tâche pris en charge et un exemple JSON qui peut être utilisé avec l'`--cli-input-json`option.

### Enregistrer une tâche Systems Manager Run Command
<a name="register-tasks-tutorial-run-command"></a>

Les exemples suivants montrent comment enregistrer des tâches Systems Manager Run Command avec une fenêtre de maintenance à l'aide de 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\"]}}}"
```

------

**Contenu JSON à utiliser avec l'option de fichier `--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
        }
    }
}
```

### Enregistrer une tâche Systems Manager Automation
<a name="register-tasks-tutorial-automation"></a>

Les exemples suivants montrent comment enregistrer des tâches Automation Systems Manager avec une fenêtre de maintenance à l'aide de l' AWS CLI : 

**AWS CLI commande :**

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

------

**Contenu JSON à utiliser avec l'option de fichier `--cli-input-json` :**

```
{
    "WindowId": "mw-0c50858d01EXAMPLE",
        "TaskArn": "AWS-PatchInstanceWithRollback",
    "TaskType": "AUTOMATION","TaskInvocationParameters": {
        "Automation": {
            "DocumentVersion": "1",
            "Parameters": {
                "instanceId": [
                    "{{RESOURCE_ID}}"
                ]
            }
        }
    }
}
```

### Enregistrer une AWS Lambda tâche
<a name="register-tasks-tutorial-lambda"></a>

Les exemples suivants montrent comment enregistrer des tâches de fonctions Lambda avec une fenêtre de maintenance à l'aide de la AWS CLI. 

Pour ces exemples, l'utilisateur qui a créé la fonction Lambda l'a nommée `SSMrestart-my-instances` et a créé deux paramètres appelés `instanceId` et `targetType`.

**Important**  
La politique IAM pour Maintenance Windows exige que vous donniez un préfixe `SSM` à la fonction Lambda (ou alias). Avant de procéder à l'enregistrement de ce type de tâche, mettez à jour son nom AWS Lambda pour inclure`SSM`. Par exemple, si votre nom de fonction Lambda est `MyLambdaFunction`, remplacez-le par `SSMMyLambdaFunction`.

**AWS CLI commande :**

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

**Important**  
Si vous utilisez la version 2 du AWS CLI, vous devez inclure l'option `--cli-binary-format raw-in-base64-out` dans la commande suivante si votre charge utile Lambda n'est pas codée en base64. L'option `cli_binary_format` n'est disponible que dans la version 2. Pour plus d'informations à ce sujet et sur d'autres paramètres de AWS CLI `config` fichier, consultez la section [Paramètres de `config` fichiers pris en charge](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-settings) dans le *Guide de AWS Command Line Interface l'utilisateur*.

```
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 ]

**Important**  
Si vous utilisez la version 2 du AWS CLI, vous devez inclure l'option `--cli-binary-format raw-in-base64-out` dans la commande suivante si votre charge utile Lambda n'est pas codée en base64. L'option `cli_binary_format` n'est disponible que dans la version 2. Pour plus d'informations à ce sujet et sur d'autres paramètres de AWS CLI `config` fichier, consultez la section [Paramètres de `config` fichiers pris en charge](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-settings) dans le *Guide de AWS Command Line Interface l'utilisateur*.

```
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\"}}'
```

------

**Contenu JSON à utiliser avec l'option de fichier `--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
}
```

### Enregistrer une tâche Step Functions
<a name="register-tasks-tutorial-step-functions"></a>

Les exemples suivants montrent comment enregistrer des tâches de machine d'état Step Functions avec une fenêtre de maintenance à l'aide de la AWS CLI.

**Note**  
Les tâches de fenêtre de maintenance prennent uniquement en charge les flux de travail de machine d’état Standard Step Functions. Elles ne prennent pas en charge les flux de travail de machine d’état Express. Pour plus d’informations sur les types de flux de travail de machine d’état, consultez [Flux de travail Standard vs. Express](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html) dans le *Guide du développeur AWS Step Functions *.

Pour ces exemples, l'utilisateur qui a créé la machine d'état Step Functions à créé une machine d'état nommée `SSMMyStateMachine` avec un paramètre appelé `instanceId`.

**Important**  
La politique Gestion des identités et des accès AWS (IAM) pour Maintenance Windows exige que vous préfixiez les noms des machines d'état Step Functions par. `SSM` Avant de procéder à l'enregistrement de ce type de tâche, vous devez mettre à jour son nom dans AWS Step Functions pour inclure `SSM`. Par exemple, si le nom de votre machine d'état est `MyStateMachine`, remplacez-le par `SSMMyStateMachine`.

**AWS CLI commande :**

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

------

**Contenu JSON à utiliser avec l'option de fichier `--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
}
```

# Options de paramètres pour la commande register-task-with-maintenance -windows
<a name="mw-cli-task-options"></a>

La commande **register-task-with-maintenance-window** fournit plusieurs options pour configurer une tâche en fonction de vos besoins. Certaines sont requises, certaines sont facultatives et d'autres s'appliquent à un seul type de tâche de fenêtre de maintenance.

Cette rubrique fournit des informations sur certaines de ces options pour vous aider à utiliser les exemples de cette section du didacticiel. Pour plus d'informations sur les autres options de commande, consultez **[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)** dans la *Référence Command AWS CLI *.

**Option de commande : `--task-arn`**  
L'option `--task-arn` est utilisée pour spécifier la ressource sur laquelle la tâche opère. La valeur que vous spécifiez dépend du type de tâche que vous enregistrez, comme décrit dans le tableau suivant.


**TaskArn formats pour les tâches de la fenêtre de maintenance**  

| Type de tâche de fenêtre de maintenance | TaskArn valeur | 
| --- | --- | 
|  **`RUN_COMMAND`** et ** `AUTOMATION`**  |  `TaskArn` correspond au nom ou à l'Amazon Resource Name (ARN) du nom du document SSM. Par exemple :  `AWS-RunBatchShellScript`  -ou- `arn:aws:ssm:region:111122223333:document/My-Document`.  | 
|  **`LAMBDA`**  |  `TaskArn` est le nom de fonction ou l'ARN. Par exemple :  `SSMMy-Lambda-Function` -ou- `arn:aws:lambda:region:111122223333:function:SSMMyLambdaFunction`.  La politique IAM pour Maintenance Windows exige que vous donniez un préfixe `SSM` à la fonction Lambda (ou alias). Avant de procéder à l'enregistrement de ce type de tâche, mettez à jour son nom AWS Lambda pour inclure`SSM`. Par exemple, si votre nom de fonction Lambda est `MyLambdaFunction`, remplacez-le par `SSMMyLambdaFunction`.   | 
|  **`STEP_FUNCTIONS`**  |  `TaskArn` est l'ARN de la machine d'état. Par exemple :  `arn:aws:states:us-east-2:111122223333:stateMachine:SSMMyStateMachine`.  La politique IAM pour les fenêtres de maintenance exige que vous donniez un préfixe aux noms de machines d'état Step Functions avec `SSM`. Avant d'enregistrer ce type de tâche, vous devez mettre à jour son nom dans AWS Step Functions pour inclure `SSM`. Par exemple, si le nom de votre machine d'état est `MyStateMachine`, remplacez-le par `SSMMyStateMachine`.   | 

**Option de commande : `--service-role-arn`**  
Le rôle AWS Systems Manager à assumer lors de l'exécution de la tâche de fenêtre de maintenance. 

Pour de plus amples informations, consultez [Configuration de Maintenance Windows](setting-up-maintenance-windows.md).

**Option de commande : `--task-invocation-parameters`**  
L'option `--task-invocation-parameters` permet de spécifier les paramètres qui sont spécifiques à chacun des quatre types de tâches. Les paramètres pris en charge pour chacun des quatre types de tâches sont décrits dans le tableau suivant.

**Note**  
Pour plus d'informations sur l'utilisation des pseudo-paramètres dans le contenu `--task-invocation-parameters`, comme \$1\$1TARGET\$1ID\$1\$1, consultez [Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance](maintenance-window-tasks-pseudo-parameters.md). 

Options de paramètres d’invocation de tâches pour les tâches de fenêtres de maintenance


| Type de tâche de fenêtre de maintenance | Paramètres disponibles  | Exemple | 
| --- | --- | --- | 
|  **`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>  | 

# Tutoriel : Afficher les informations relatives aux fenêtres de maintenance à l'aide du AWS CLI
<a name="maintenance-windows-cli-tutorials-describe"></a>

Ce didacticiel inclut des commandes pour vous aider à mettre à jour ou obtenir les informations sur vos fenêtres de maintenance, tâches, exécutions et appels. Les exemples sont organisés par commande pour montrer comment utiliser les options de commande afin de filtrer le type de détail que vous souhaitez afficher.

Au fur et à mesure que vous suivez les étapes de ce didacticiel, remplacez les valeurs en *red* italique par vos propres options et. IDs Par exemple, remplacez l'ID de fenêtre de maintenance *mw-0c50858d01EXAMPLE* et l'ID d'instance *i-02573cafcfEXAMPLE* par IDs des ressources que vous créez.

Pour plus d'informations sur l'installation et la configuration du AWS Command Line Interface (AWS CLI), voir [Installation, mise à jour et désinstallation du AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) et [Configuration du AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

**Topics**
+ [Exemples pour « describe-maintenance-windows »](#mw-cli-tutorials-describe-maintenance-windows)
+ [Exemples pour « describe-maintenance-window-targets »](#mw-cli-tutorials-describe-maintenance-window-targets)
+ [Exemples pour « describe-maintenance-window-tasks »](#mw-cli-tutorials-describe-maintenance-window-tasks)
+ [Exemples pour « describe-maintenance-windows-for -target »](#mw-cli-tutorials-describe-maintenance-windows-for-target)
+ [Exemples pour « describe-maintenance-window-executions »](#mw-cli-tutorials-describe-maintenance-window-executions)
+ [Exemples pour « describe-maintenance-window-schedule »](#mw-cli-tutorials-describe-maintenance-window-schedule)

## Exemples pour « describe-maintenance-windows »
<a name="mw-cli-tutorials-describe-maintenance-windows"></a>

**Répertoriez toutes les fenêtres de maintenance de votre Compte AWS**  
Exécutez la commande suivante.

```
aws ssm describe-maintenance-windows
```

Le système renvoie des informations similaires à ce qui suit :

```
{
   "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"        
      },
   ]
}
```

**Affichage de toutes les fenêtres de maintenance activées**  
Exécutez la commande suivante.

```
aws ssm describe-maintenance-windows --filters "Key=Enabled,Values=true"
```

Le système renvoie des informations similaires à ce qui suit :

```
{
   "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"        
      },
   ]
}
```

**Affichage de toutes les fenêtres de maintenance désactivées**  
Exécutez la commande suivante.

```
aws ssm describe-maintenance-windows --filters "Key=Enabled,Values=false"
```

Le système renvoie des informations similaires à ce qui suit :

```
{
    "WindowIdentities": [
        {
            "WindowId": "mw-6e5c9d4b7cEXAMPLE",
            "Name": "My-Disabled-Maintenance-Window",
            "Enabled": false,
            "Duration": 2,
            "Cutoff": 1
        }
    ]
}
```

**Répertorier toutes les fenêtres de maintenance dont les noms commencent par un préfixe donné**  
Exécutez la commande suivante.

```
aws ssm describe-maintenance-windows --filters "Key=Name,Values=My"
```

Le système renvoie des informations similaires à ce qui suit :

```
{
    "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
        }
    ]
}
```

## Exemples pour « describe-maintenance-window-targets »
<a name="mw-cli-tutorials-describe-maintenance-window-targets"></a>

**Affichage des cibles d'une fenêtre de maintenance correspondant à une valeur d'Information d'un propriétaire spécifique**  
Exécutez la commande suivante.

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

------

**Note**  
Les clés de filtres prises en charge sont `Type`, `WindowTargetId` et `OwnerInformation`.

Le système renvoie des informations similaires à ce qui suit :

```
{
    "Targets": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE",
            "ResourceType": "INSTANCE",
            "Targets": [
                {
                    "Key": "tag:Name",
                    "Values": [
                        "Production"
                    ]
                }
            ],
            "OwnerInformation": "CostCenter1",
            "Name": "Target1"
        }
    ]
}
```

## Exemples pour « describe-maintenance-window-tasks »
<a name="mw-cli-tutorials-describe-maintenance-window-tasks"></a>

**Afficher toutes les tâches enregistrées qui appellent le document de commande SSM `AWS-RunPowerShellScript`**  
Exécutez la commande suivante.

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

------

Le système renvoie des informations similaires à ce qui suit :

```
{
   "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"
            }
         ]
      }
   ]
}
```

**Afficher toutes les tâches enregistrées qui ont une priorité égale à « 3 »**  
Exécutez la commande suivante.

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

------

Le système renvoie des informations similaires à ce qui suit :

```
{
   "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"
            }
         ]
      }
   ]
}
```

**Afficher toutes les tâches enregistrées qui ont une priorité égale à « 1 » et qui utilisent la fonctionnalité Run Command**  
Exécutez la commande suivante.

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

------

Le système renvoie des informations similaires à ce qui suit :

```
{
    "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"
        }
    ]
}
```

## Exemples pour « describe-maintenance-windows-for -target »
<a name="mw-cli-tutorials-describe-maintenance-windows-for-target"></a>

**Répertorier les informations relatives aux cibles ou tâches de fenêtre de maintenance associées à un nœud spécifique**  
Exécutez la commande suivante.

------
#### [ 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
```

------

Le système renvoie des informations similaires à ce qui suit :

```
{
    "WindowIdentities": [
        {
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Name": "My-First-Maintenance-Window"
        },
        {
            "WindowId": "mw-9a8b7c6d5eEXAMPLE",
            "Name": "My-Second-Maintenance-Window"
        }
    ]
}
```

## Exemples pour « describe-maintenance-window-executions »
<a name="mw-cli-tutorials-describe-maintenance-window-executions"></a>

**Répertorier toutes les tâches exécutées avant une date donnée**  
Exécutez la commande suivante.

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

------

Le système renvoie des informations similaires à ce qui suit :

```
{
    "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
        }
    ]
}
```

**Répertorier toutes les tâches exécutées après une date donnée**  
Exécutez la commande suivante.

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

------

Le système renvoie des informations similaires à ce qui suit :

```
{
    "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
        }
    ]
}
```

## Exemples pour « describe-maintenance-window-schedule »
<a name="mw-cli-tutorials-describe-maintenance-window-schedule"></a>

**Afficher les dix exécutions de fenêtre de maintenance planifiées suivantes pour un nœud particulier**  
Exécutez la commande suivante.

------
#### [ 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
```

------

Le système renvoie des informations similaires à ce qui suit :

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

**Afficher le calendrier des fenêtres de maintenance pour les nœuds balisés avec une paire clé-valeur donnée**  
Exécutez la commande suivante.

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

------

Le système renvoie des informations similaires à ce qui suit :

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

**Afficher les heures de début des quatre prochaines exécutions d'une fenêtre de maintenance**  
Exécutez la commande suivante.

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

------

Le système renvoie des informations similaires à ce qui suit :

```
{
    "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"
                }
            ]
        }
    ]
}
```

# Tutoriel : Afficher les informations relatives aux tâches et à leur exécution à l'aide du AWS CLI
<a name="mw-cli-tutorial-task-info"></a>

Ce didacticiel explique comment utiliser le AWS Command Line Interface (AWS CLI) pour afficher les détails des tâches de votre fenêtre de maintenance terminées. 

Si vous passez directement à ce didacticiel à partir de [Tutoriel : Création et configuration d'une fenêtre de maintenance à l'aide du AWS CLI](maintenance-windows-cli-tutorials-create.md), assurez-vous d'avoir laissé assez de temps à votre fenêtre de maintenance pour qu'elle s'exécute au moins une fois afin de pouvoir afficher ses résultats d'exécution.

Au fur et à mesure que vous suivez les étapes de ce didacticiel, remplacez les valeurs en *red* italique par vos propres options et. IDs Par exemple, remplacez l'ID de fenêtre de maintenance *mw-0c50858d01EXAMPLE* et l'ID d'instance *i-02573cafcfEXAMPLE* par IDs des ressources que vous créez.

**Pour afficher des informations sur les tâches et leur exécution à l'aide du AWS CLI**

1. Exécutez la commande suivante pour afficher la liste des exécutions de tâche pour une fenêtre de maintenance spécifique.

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

   ```
   aws ssm describe-maintenance-window-executions \
       --window-id "mw-0c50858d01EXAMPLE"
   ```

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

   ```
   aws ssm describe-maintenance-window-executions ^
       --window-id "mw-0c50858d01EXAMPLE"
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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. Exécutez la commande suivante pour obtenir des informations sur une exécution de tâche d'une fenêtre de maintenance.

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

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "WindowExecutionId": "14bea65d-5ccc-462d-a2f3-e99c8EXAMPLE",
       "TaskIds": [
           "c9b05aba-197f-4d8d-be34-e73fbEXAMPLE"
       ],
       "Status": "SUCCESS",
       "StartTime": 1557593493.096,
       "EndTime": 1557593498.611
   }
   ```

1. Exécutez la commande suivante pour afficher les tâches exécutées dans le cadre de l'exécution d'une fenêtre de maintenance.

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

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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. Exécutez la commande suivante pour obtenir les détails d'une exécution de tâche.

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

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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. Exécutez la commande suivante pour obtenir les appels de tâche spécifiques exécutés pendant une exécution de tâche.

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

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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
           }
       ]
   }
   ```

# Tutoriel : Mettre à jour une fenêtre de maintenance à l'aide du AWS CLI
<a name="maintenance-windows-cli-tutorials-update"></a>

Ce didacticiel explique comment utiliser le AWS Command Line Interface (AWS CLI) pour mettre à jour une fenêtre de maintenance. Il vous montre également comment mettre à jour différents types de tâches, y compris celles pour AWS Systems Manager Run Command et Automation AWS Lambda, et AWS Step Functions. 

Les exemples de cette section utilisent les actions Systems Manager suivantes pour la mise à jour d'une fenêtre de maintenance :
+ [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)

Pour des informations sur l'utilisation de la console Systems Manager afin de mettre à jour une fenêtre de maintenance, consultez [Mise à jour ou suppression des ressources de fenêtre de maintenance à l’aide de la console](sysman-maintenance-update.md). 

Au fur et à mesure que vous suivez les étapes de ce didacticiel, remplacez les valeurs en *red* italique par vos propres options et. IDs Par exemple, remplacez l'ID de fenêtre de maintenance *mw-0c50858d01EXAMPLE* et l'ID d'instance *i-02573cafcfEXAMPLE* par IDs des ressources que vous créez.

**Pour mettre à jour une fenêtre de maintenance à l'aide du AWS CLI**

1. Ouvrez le AWS CLI et exécutez la commande suivante pour mettre à jour une cible afin d'inclure un nom et une description.

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

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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. Exécutez la commande suivante pour utiliser l'option `replace` afin de supprimer le champ de description et d'ajouter une cible supplémentaire. Le champ de description est supprimé, car la mise à jour ne l'inclut pas (valeur nulle). Veillez à spécifier un nœud supplémentaire configuré pour être utilisé avec 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
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE",
       "Targets": [
           {
               "Key": "InstanceIds",
               "Values": [
                   "i-02573cafcfEXAMPLE",
                   "i-0471e04240EXAMPLE"
               ]
           }
       ],
       "Name": "My-Maintenance-Window-Target"
   }
   ```

1. L'option `start-date` vous permet de retarder l'activation d'une fenêtre de maintenance jusqu'à une date ultérieure spécifiée. L'option `end-date` vous permet de définir une date et une heure futures après lesquelles la fenêtre de maintenance ne s'exécutera plus. Spécifiez les options au format ISO-8601 étendu.

   Exécutez la commande suivante pour spécifier une plage de dates et d'heures pour les exécutions de fenêtre de maintenance régulièrement planifiées.

------
#### [ 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. Exécutez la commande suivante pour mettre à jour une tâche Run Command.
**Astuce**  
Si votre cible est une instance Amazon Elastic Compute Cloud (Amazon EC2) pour Windows Server, changez `df` à `ipconfig`, et `AWS-RunShellScript` à `AWS-RunPowerShellScript` dans la commande suivante.

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

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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. Adaptez et exécutez la commande suivante pour mettre à jour une tâche 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"
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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. Si vous mettez à jour une tâche Step Functions, adaptez et exécutez la commande suivante pour la mettre à jour 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"
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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. Exécutez la commande suivante pour annuler l'enregistrement d'une cible depuis une fenêtre de maintenance. Cet exemple utilise le paramètre `safe` pour déterminer si la cible est référencée par toute tâche et si il est donc sécurisé d'annuler son enregistrement.

------
#### [ 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
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   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. Exécutez la commande suivante pour annuler l'enregistrement d'une cible depuis une fenêtre de maintenance même si la cible est référencée par une tâche. Vous pouvez forcer l'opération d'annulation d'enregistrement à l'aide du paramètre `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
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "WindowId": "mw-0c50858d01EXAMPLE",
       "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
   }
   ```

1. Exécutez la commande suivante pour mettre à jour une tâche Run Command. Cet exemple utilise un paramètre Systems Manager Parameter Store appelé `UpdateLevel`, qui est formaté comme suit : '`{{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}}'}}"
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

   ```
   {
       "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. Exécutez la commande suivante pour mettre à jour une tâche Automation afin qu'elle spécifie les paramètres `WINDOW_ID` et `WINDOW_TASK_ID` pour le paramètre `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
   ```

------

   Le système renvoie des informations similaires à ce qui suit :

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

# Tutoriel : Supprimer une fenêtre de maintenance à l'aide du AWS CLI
<a name="mw-cli-tutorial-delete-mw"></a>

Pour supprimer une fenêtre de maintenance que vous avez créée dans ces didacticiels, exécutez la commande suivante.

```
aws ssm delete-maintenance-window --window-id "mw-0c50858d01EXAMPLE"
```

Le système renvoie des informations similaires à ce qui suit :

```
{
   "WindowId":"mw-0c50858d01EXAMPLE"
}
```

# Tutoriel : créer une fenêtre de maintenance pour l’application de correctifs à l’aide de la console
<a name="maintenance-window-tutorial-patching"></a>

**Important**  
Vous pouvez continuer à utiliser cette rubrique existante pour créer une fenêtre de maintenance afin d'appliquer des correctifs. Toutefois, nous vous recommandons plutôt d'utiliser une politique de correctifs. Pour plus d'informations, consultez [Configurations de la politique de correctifs dans Quick Setup](patch-manager-policies.md) et [Configurer les applications de correctifs pour les instances d’une organisation à l’aide d’une politique de correctif Quick Setup](quick-setup-patch-manager.md). 

Pour minimiser l'impact sur la disponibilité de votre serveur, nous vous recommandons de configurer une fenêtre de maintenance pour exécuter l'application des correctifs au cours de périodes qui ne perturberont pas vos opérations professionnelles.

Vous devez configurer les rôles et les autorisations pour Maintenance Windows un outil dans AWS Systems Manager, avant de commencer cette procédure. Pour de plus amples informations, veuillez consulter [Configuration de Maintenance Windows](setting-up-maintenance-windows.md). 

**Pour créer une fenêtre de maintenance pour l'application des correctifs**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Maintenance Windows**.

1. Sélectionnez **Create maintenance window (Créer une fenêtre de maintenance)**.

1. Dans **Name (Nom)**, entrez un nom désignant la fenêtre de maintenance pour l'application des correctifs correspondant aux mises à jour critiques et importantes.

1. (Facultatif) Sous **Description**, entrez une description. 

1. Sélectionnez **Allow unregistered targets (Autoriser les cibles non enregistrées)** si vous souhaitez autoriser l'exécution d'une tâche de fenêtre de maintenance sur des nœuds gérés, même si vous n'avez pas enregistré ces nœuds comme cibles.

   Lorsque vous sélectionnez cette option, vous pouvez sélectionner les nœuds non enregistrés (par ID de nœud) lorsque vous enregistrez une tâche auprès de la fenêtre de maintenance.

   Si vous ne sélectionnez pas cette option, vous devez choisir des cibles enregistrées au préalable lorsque vous enregistrez une tâche avec la fenêtre de maintenance. 

1. En haut de la section **Schedule (Planification)** spécifiez un programme pour la fenêtre de maintenance à l'aide de l'une des trois options de planification.

   Pour plus d'informations sur la création d' cron/rate expressions, consultez[Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md).

1. Pour **Durée**, entrez le nombre d'heures pendant lequel la fenêtre de maintenance devra s'exécuter. La valeur que vous spécifiez détermine l'heure de fin de la fenêtre de maintenance en fonction de l'heure de démarrage. Aucune tâche de fenêtre de maintenance n'est autorisée à démarrer après l'heure de fin résultante moins le nombre d'heures que vous spécifiez pour **Stop initiating tasks (Arrêt de l'initialisation de tâches)** à l'étape suivante. 

   Par exemple, si la fenêtre de maintenance commence à 15 h, que la durée est de trois heures et que la valeur de **Stop initiating tasks (Arrêt de l'initialisation de tâches)** est d'une heure, aucune tâche de fenêtre de maintenance ne peut commencer après 17 h. 

1. Dans le champ **Stop initiating tasks (Arrêter le lancement des tâches)**, entrez le nombre d'heures avant la fin de la fenêtre de maintenance pendant lequel le système doit cesser de planifier l'exécution de nouvelles tâches. 

1. (Facultatif) Pour **Window start date** (Fenêtre de date de début), spécifiez la date et l'heure, au format ISO-8601 étendu, où vous voulez que la fenêtre de maintenance devienne active. Cela vous permet de retarder l'activation de la fenêtre de maintenance jusqu'à la date ultérieure spécifiée.

1. (Facultatif) Pour **Window start date** (Fenêtre de date de début), spécifiez la date et l'heure, au format ISO-8601 étendu, où vous voulez que la fenêtre de maintenance devienne inactive. Cela vous permet de définir une date et une heure futures après lesquelles la fenêtre de maintenance ne s'exécutera plus.

1. (Facultatif) Pour **Fuseau horaire de la planification**, spécifiez le fuseau horaire sur lequel baser les exécutions de fenêtre de maintenance planifiées, au format IANA (Internet Assigned Numbers Authority). Par exemple : « America/Los\$1Angeles", "etc/UTC", or "Asia/Seoul ».

   Pour plus d'informations sur les formats valides, consultez [Time Zone Database](https://www.iana.org/time-zones) sur le site web de l'IANA.

1. (Facultatif) Dans la zone **Gérer les balises**, appliquez une ou plusieurs name/value paires de clés de balise à la fenêtre de maintenance.

   Les balises sont des métadonnées facultatives que vous affectez à une ressource. Les balises vous permettent de classer une ressource de différentes façons, par exemple, par objectif, par propriétaire ou par environnement. Par exemple, vous pourriez vouloir baliser cette fenêtre de maintenance pour identifier le type de tâches qu’elle exécute. Dans ce cas, vous pouvez spécifier la name/value paire de clés suivante :
   + `Key=TaskType,Value=Patching`

1. Sélectionnez **Create maintenance window (Créer une fenêtre de maintenance)**.

1. Dans la liste des fenêtres de maintenance, sélectionnez la fenêtre de maintenance que vous venez de créer, puis sélectionnez **Actions**, **Register targets (Enregistrer les cibles)**.

1. (Facultatif) Dans la section **Maintenance window target details (Détails de la cible de la fenêtre de maintenance)**, fournissez un nom, une description et des informations sur le propriétaire (votre nom ou pseudo) pour cette cible.

1. Pour **Sélection de la cible**, choisissez **Spécifier les balises d’instance**.

1. Dans **Spécification de balises d’instance**, saisissez une clé et une valeur de balise pour identifier les nœuds à enregistrer auprès de la fenêtre de maintenance, puis sélectionnez **Ajouter**.

1. Sélectionnez **Register target (Enregistrer la cible)**. Le système crée une cible de fenêtre de maintenance.

1. Dans la page des détails de la fenêtre de maintenance que vous avez créée, sélectionnez **Actions**, **Register run command task (Enregistrer une tâche d'exécution de commande)**.

1. (Facultatif) Dans **Maintenance window task details (Détails de la tâche de fenêtre de maintenance)**, attribuez un nom et une description à cette tâche.

1. Pour **Command document (Document de commande)**, sélectionnez `AWS-RunPatchBaseline`.

1. Pour **Task priority (Priorité de tâche)**, sélectionnez une priorité. Zéro (`0`) est la priorité la plus élevée.

1. Dans **Targets (Cibles)**, sous **Target by (Cible par)**, sélectionnez la cible de fenêtre de maintenance que vous avez créée précédemment dans cette procédure.

1. Pour **Rate control (Contrôle de débit)** :
   + Dans **Concurrency (Simultanéité)**, spécifiez un nombre ou un pourcentage de nœuds gérés sur lesquels exécuter simultanément la commande.
**Note**  
Si vous avez sélectionné des cibles en spécifiant des balises appliquées aux nœuds gérés ou en spécifiant AWS des groupes de ressources, et que vous n'êtes pas certain du nombre de nœuds gérés ciblés, limitez le nombre de cibles pouvant exécuter le document en même temps en spécifiant un pourcentage.
   + Dans **Error threshold (Seuil d'erreur)**, indiquez quand arrêter l'exécution de la commande sur les autres nœuds gérés après l'échec de celle-ci sur un certain nombre ou un certain pourcentage de nœuds. Si, par exemple, vous spécifiez trois erreurs, Systems Manager cesse d'envoyer la commande à la réception de la quatrième erreur. Les nœuds gérés sur lesquels la commande est toujours en cours de traitement peuvent également envoyer des erreurs.

1. (Facultatif) Pour **rôle de service IAM**, choisissez un rôle pour permettre à Systems Manager d’exécuter les tâches de fenêtre de maintenance.

   Si vous ne spécifiez pas d’ARN de rôle de service, Systems Manager utilise un rôle lié à un service dans votre compte. S’il n’existe aucun rôle lié au service approprié pour Systems Manager dans votre compte, il sera créé lors de l’enregistrement de la tâche.
**Note**  
Pour améliorer la posture de sécurité, nous vous recommandons vivement de créer une politique personnalisée et un rôle de service personnalisé pour exécuter les tâches de votre fenêtre de maintenance. La politique peut être conçue de manière à fournir uniquement les autorisations nécessaires pour les tâches spécifiques de votre fenêtre de maintenance. Pour de plus amples informations, veuillez consulter [Configuration de Maintenance Windows](setting-up-maintenance-windows.md).

1. (Facultatif) Dans **Output options (Options de sortie)**, pour enregistrer la sortie de la commande dans un fichier, sélectionnez **Enable writing to an S3 bucket (Autoriser l'écriture dans un compartiment S3)** Saisissez les noms de compartiment et de préfixe (dossier) dans les zones.
**Note**  
Les autorisations S3 qui donnent la possibilité d'écrire les données dans un compartiment S3 sont celles du profil d'instance attribué au nœud géré, et non celles de l'utilisateur IAM qui effectue cette tâche. Pour plus d’informations, consultez les sections [Configurer des autorisations d’instance requises pour Systems Manager](setup-instance-permissions.md) et [Créer un rôle de service IAM pour un environnement hybride](hybrid-multicloud-service-role.md). En outre, si le compartiment S3 spécifié se trouve sur un autre Compte AWS, vérifiez que le profil d'instance ou la fonction de service IAM associé au nœud géré dispose des autorisations nécessaires pour écrire dans ce compartiment.

   Pour diffuser la sortie vers un groupe de CloudWatch journaux Amazon Logs, cochez la case **CloudWatch de sortie**. Saisissez le nom du groupe de journaux dans la zone.

1. Dans la section **SNS notifications (Notifications SNS)**, si vous souhaitez envoyer des notifications sur le statut d'exécution des commandes, cochez la case **Enable SNS notifications (Activer les notifications SNS)**.

   Pour plus d'informations sur la configuration des notifications Amazon SNS pour Run Command, consultez [Surveillance des changements d'état du Systems Manager à l'aide des notifications Amazon SNS](monitoring-sns-notifications.md).

1. Pour **Parameters (Paramètres)** :
   + Pour **Operation (Opération)**, sélectionnez **Scan (Analyser)** afin de rechercher les correctifs manquants, ou sélectionnez **Install (Installer)** pour rechercher et installer les correctifs manquants.
   + Vous n'avez pas besoin de spécifier quoi que ce soit dans le champ **Snapshot Id (ID d'instantané)**. Ce système génère et fournit ce paramètre automatiquement.
   + Vous n'avez pas besoin de saisir quoi que ce soit dans le champ **Install Override List (Liste de remplacement d'installation)** sauf si vous souhaitez que Patch Manager utilise un jeu de correctifs différent de celui spécifié pour le référentiel de correctifs. Pour plus d'informations, consultez [Nom du paramètre: `InstallOverrideList`](patch-manager-aws-runpatchbaseline.md#patch-manager-aws-runpatchbaseline-parameters-installoverridelist).
   + Pour **RebootOption**, spécifiez si vous souhaitez que les nœuds redémarrent si des correctifs sont installés pendant l'`Install`opération ou s'ils Patch Manager détectent d'autres correctifs installés depuis le dernier redémarrage du nœud. Pour plus d'informations, consultez [Nom du paramètre: `RebootOption`](patch-manager-aws-runpatchbaseline.md#patch-manager-aws-runpatchbaseline-parameters-norebootoption).
   + (Facultatif) Pour **Comment (Commentaire)**, entrez une note de suivi ou un rappel concernant cette commande.
   + Pour **Timeout (seconds) (Délai (secondes))**, entrez le nombre de secondes durant lesquelles le système doit attendre que l'opération se termine avant que celle-ci ne soit considérée comme ayant échoué.

1. Sélectionnez **Register run command task (Enregistrer une tâche d'exécution de commande)**.

Une fois la tâche de la fenêtre de maintenance terminée, vous pouvez afficher les détails de la conformité des correctifs dans la console Systems Manager, dans l’outil [Fleet Manager](fleet-manager.md). 

Vous pouvez également consulter les informations de conformité dans l’outil [Patch Manager](patch-manager.md), dans l’onglet **Rapport de conformité**. 

Vous pouvez également utiliser le [DescribePatchGroupState](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribePatchGroupState.html)et [DescribeInstancePatchStatesForPatchGroup](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeInstancePatchStatesForPatchGroup.html) APIs pour consulter les détails de conformité. Pour plus d'informations sur les données de conformité des correctifs, consultez [A propos de la conformité des correctifs](compliance-about.md#compliance-monitor-patch).

# Planification d’application de correctifs à l’aide de fenêtres de maintenance
<a name="sysman-patch-scheduletasks"></a>

Une fois que vous avez configuré un référentiel de correctifs (et éventuellement un groupe de correctifs), vous pouvez appliquer des correctifs à votre nœud à l'aide d'une fenêtre de maintenance. Une fenêtre de maintenance peut réduire l'impact sur la disponibilité du serveur en vous permettant de spécifier une heure de réalisation du processus d'application des correctifs de manière à ne pas interrompre les opérations professionnelles. Une fenêtre de maintenance fonctionne comme suit :

1. Créez une fenêtre de maintenance avec un calendrier pour vos opérations d'application de correctifs.

1. Choisissez les cibles de la fenêtre de maintenance en indiquant la `Patch Group` ou `PatchGroup` balise pour le nom de celle-ci, et toute valeur pour laquelle vous avez défini des balises Amazon Elastic Compute Cloud (Amazon EC2), par exemple, "serveurs web" ou "US-EAST-PROD". (Utilisez `PatchGroup`, sans espace, si vous avez [ autorisé les balises dans les métadonnées d'instance EC2.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#allow-access-to-tags-in-IMDS).

1. Créez une nouvelle tâche de fenêtre de maintenance et spécifiez le document `AWS-RunPatchBaseline`. 

Lorsque vous configurez la tâche, vous pouvez choisir de procéder à une simple analyse des nœuds, ou bien de les analyser et d'y installer les correctifs. Si vous choisissez de procéder à une simple analyse des nœuds, l’outil Patch Manager d’ AWS Systems Manager analyse chaque nœud et génère une liste de correctifs manquants que vous devez passer en revue.

Si vous choisissez d'analyser les nœuds et d'y installer les correctifs, Patch Manager analyse chaque nœud et compare la liste des correctifs installés avec celle des correctifs approuvés dans le référentiel. Patch Manager identifie les correctifs manquants, puis télécharge et installe tous les correctifs manquants et approuvés.

Si vous souhaitez effectuer une analyse unique ou procéder à une installation pour résoudre un problème, vous pouvez utiliser la fonctionnalité Run Command afin d'appeler directement le document `AWS-RunPatchBaseline`.

**Important**  
Une fois les correctifs installés, Systems Manager redémarre chaque nœud. Ce redémarrage est nécessaire pour vérifier que les correctifs sont correctement installés et que le système n'a pas laissé le nœud dans un état potentiellement incorrect. (Exception : si le paramètre `RebootOption` est défini sur `NoReboot` dans le document `AWS-RunPatchBaseline`, le nœud géré n'est pas redémarré après l'exécution de Patch Manager. Pour plus d'informations, consultez [Nom du paramètre: `RebootOption`](patch-manager-aws-runpatchbaseline.md#patch-manager-aws-runpatchbaseline-parameters-norebootoption)). 

# Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance
<a name="maintenance-window-tasks-pseudo-parameters"></a>

Lorsque vous enregistrez une tâche dans Maintenance Windows, un outil d’ AWS Systems Manager, vous spécifiez les paramètres qui sont spécifiques à chacun des quatre types de tâches. (Dans les commandes CLI, ces paramètres sont fournis à l’aide de l’option `--task-invocation-parameters`.)

 Vous pouvez également référencer certaines valeurs en utilisant la syntaxe du *pseudo-paramètre*, comme `{{RESOURCE_ID}}`, `{{TARGET_TYPE}}` et `{{WINDOW_TARGET_ID}}`. Une fois que la tâche de la fenêtre de maintenance s'exécute, elle transmet les valeurs correctes au lieu des espaces réservés des pseudo-paramètres. La liste complète des pseudo paramètres que vous pouvez utiliser est fournie plus loin dans cette rubrique dans [Pseudo-paramètres pris en charge](#pseudo-parameters).

**Important**  
Pour le type de cible `RESOURCE_GROUP`, selon le format d'ID requis pour la tâche, vous pouvez choisir entre utiliser `{{TARGET_ID}}` et `{{RESOURCE_ID}}` pour référencer la ressource lors de l'exécution de la tâche. `{{TARGET_ID}}` renvoie l'ARN complet de la ressource. `{{RESOURCE_ID}}` renvoie uniquement un nom ou un ID plus court de la ressource, comme indiqué dans ces exemples.  
Format `{{TARGET_ID}}` : `arn:aws:ec2:us-east-1:123456789012:instance/i-02573cafcfEXAMPLE`
Format `{{RESOURCE_ID}}` : `i-02573cafcfEXAMPLE`
Pour le type de cible `INSTANCE`, les paramètres `{{TARGET_ID}}` et `{{RESOURCE_ID}}` ne donnent que l'ID d'instance. Pour de plus amples informations, veuillez consulter [Pseudo-paramètres pris en charge](#pseudo-parameters).  
`{{TARGET_ID}}`et `{{RESOURCE_ID}}` peut être utilisé pour transmettre IDs des AWS ressources uniquement aux tâches Automation, Lambda et Step Functions. Ces deux pseudo-paramètres ne peuvent pas être utilisés avec des tâches Run Command.

## Exemples de pseudo-paramètres
<a name="pseudo-parameter-examples"></a>

Supposons que votre charge utile pour une AWS Lambda tâche doive référencer une instance par son ID.

Que vous utilisiez un `INSTANCE` ou une cible de fenêtre de maintenance `RESOURCE_GROUP`, cela peut être réalisé en utilisant le pseudo-paramètre `{{RESOURCE_ID}}`. Par exemple :

```
"TaskArn": "arn:aws:lambda:us-east-2:111122223333:function:SSMTestFunction",
    "TaskType": "LAMBDA",
    "TaskInvocationParameters": {
        "Lambda": {
            "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE",
            "Payload": "{ \"instanceId\": \"{{RESOURCE_ID}}\" }",
            "Qualifier": "$LATEST"
        }
    }
```

Si votre tâche Lambda est destinée à s'exécuter sur un autre type de cible pris en charge en plus des instances Amazon Elastic Compute Cloud (Amazon EC2), par exemple une table Amazon DynamoDB, la même syntaxe peut être utilisée et `{{RESOURCE_ID}}` donne le nom de la table uniquement. Toutefois, si vous avez besoin de l'ARN complet de la table, utilisez `{{TARGET_ID}}`, comme indiqué dans l'exemple suivant.

```
"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 même syntaxe fonctionne pour les instances de ciblage ou d'autres types de ressources. Lorsque plusieurs types de ressources ont été ajoutés à un groupe de ressources, la tâche s'exécute sur chacune des ressources appropriées. 

**Important**  
Tous les types de ressources qui peuvent être inclus dans un groupe de ressources ne donnent pas de valeur pour le paramètre `{{RESOURCE_ID}}`. Pour afficher la liste des types de ressources pris en charge, consultez [Pseudo-paramètres pris en charge](#pseudo-parameters).

Autre exemple, pour exécuter une tâche Automation qui arrête vos instances EC2, vous spécifiez le document Systems Manager (document SSM) `AWS-StopEC2Instance` comme valeur `TaskArn` et vous utilisez le pseudo-paramètre `{{RESOURCE_ID}}` :

```
"TaskArn": "AWS-StopEC2Instance",
    "TaskType": "AUTOMATION"
    "TaskInvocationParameters": {
        "Automation": {
            "DocumentVersion": "1",
            "Parameters": {
                "instanceId": [
                    "{{RESOURCE_ID}}"
                ]
            }
        }
    }
```

Pour exécuter une tâche Automation qui copie un instantané d'un volume Amazon Elastic Block Store (Amazon EBS), spécifiez le document SSM `AWS-CopySnapshot` comme valeur `TaskArn` et utilisez le pseudo-paramètre `{{RESOURCE_ID}}`.

```
"TaskArn": "AWS-CopySnapshot",
    "TaskType": "AUTOMATION"
    "TaskInvocationParameters": {
        "Automation": {
            "DocumentVersion": "1",
            "Parameters": {
                "SourceRegion": "us-east-2",
                "targetType":"RESOURCE_GROUP",
                "SnapshotId": [
                    "{{RESOURCE_ID}}"
                ]
            }
        }
    }
```

## Pseudo-paramètres pris en charge
<a name="pseudo-parameters"></a>

La liste suivante décrit les pseudo-paramètres que vous pouvez spécifier à l'aide de la syntaxe `{{PSEUDO_PARAMETER}}` dans l'option `--task-invocation-parameters`.
+ **`WINDOW_ID`** : ID de la fenêtre de maintenance cible.
+ **`WINDOW_TASK_ID`** : ID de la tâche de fenêtre en cours d'exécution.
+ **`WINDOW_TARGET_ID`** : ID de la cible de la fenêtre qui inclut la cible (ID de cible).
+ **`WINDOW_EXECUTION_ID`** : ID de l'exécution de fenêtre actuelle.
+ **`TASK_EXECUTION_ID`** : ID de l'exécution de tâche actuelle.
+ **`INVOCATION_ID`** : ID de l’invocation en cours.
+ **`TARGET_TYPE`** : type de la cible. Les types pris en charge incluent `RESOURCE_GROUP` et `INSTANCE`.
+ **`TARGET_ID`**: 

  Si le type de cible que vous spécifiez est `INSTANCE`, le pseudo-paramètre `TARGET_ID` est remplacé par l'ID de l'instance. Par exemple, `i-078a280217EXAMPLE`.

  Si le type de cible que vous spécifiez est `RESOURCE_GROUP`, la valeur référencée pour l'exécution de la tâche est l'ARN complet de la ressource. Par exemple : `arn:aws:ec2:us-east-1:123456789012:instance/i-078a280217EXAMPLE`. Le tableau suivant fournit des exemples de valeurs `TARGET_ID` pour des types de ressources particuliers d'un groupe de ressources. 
**Note**  
`TARGET_ID` n'est pas pris en charge pour des tâches Run Command.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/maintenance-window-tasks-pseudo-parameters.html)
+ **`RESOURCE_ID`** : ID court d'un type de ressource contenu dans un groupe de ressources. Le tableau suivant fournit des exemples de valeurs `RESOURCE_ID` pour des types de ressources particuliers d'un groupe de ressources. 
**Note**  
`RESOURCE_ID` n'est pas pris en charge pour des tâches Run Command.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/maintenance-window-tasks-pseudo-parameters.html)
**Note**  
Si le groupe de AWS ressources que vous spécifiez inclut des types de ressources qui ne génèrent aucune `RESOURCE_ID` valeur et ne figurent pas dans le tableau précédent, le `RESOURCE_ID` paramètre n'est pas renseigné. Une invocation d'exécution se produira toujours pour cette ressource. Dans ces cas, utilisez plutôt le pseudo-paramètre `TARGET_ID`, qui sera remplacé par l'ARN complet de la ressource.

# Options de planification de la fenêtre de maintenance et de période active
<a name="maintenance-windows-schedule-options"></a>

Lorsque vous créez une fenêtre de maintenance, vous devez spécifier la fréquence à laquelle celle-ci s'exécute à l'aide d'une [expression Cron ou Rate](reference-cron-and-rate-expressions.md). Si vous le souhaitez, vous pouvez spécifier une plage de dates pendant laquelle la fenêtre de maintenance peut s'exécuter conformément à une planification régulière, ainsi qu'un fuseau horaire sur lequel baser cette dernière. 

Vous devez cependant savoir que l'option de fuseau horaire et les options de date de début et date de fin n'ont aucune influence les unes sur les autres. Toutes les dates de début et de fin que vous spécifiez (avec ou sans décalage par rapport à votre fuseau horaire) déterminent uniquement la *période de validité* pendant laquelle la fenêtre de maintenance peut s'exécuter aux dates et heures prévues. Une option de fuseau horaire détermine le fuseau horaire international sur lequel est basée la planification de la fenêtre de maintenance *pendant* sa période de validité.

**Note**  
Vous spécifiez les dates de début et de fin au format d'horodatage ISO 8601. Par exemple : `2021-04-07T14:29:00-08:00`  
Vous spécifiez les fuseaux horaires au format IANA (Internet Assigned Numbers Authority). Par exemple : `America/Chicago`, `Europe/Berlin` ou `Asia/Tokyo`

**Topics**
+ [Exemple 1 : Spécification d'une date de début de fenêtre de maintenance](#schedule-example-start-date)
+ [Exemple 2 : Spécification de la date de début et de la date de fin d'une fenêtre de maintenance](#schedule-example-start-end-date)
+ [Exemple 3 : Création d'une fenêtre de maintenance ne s'exécutant qu'une seule fois](#schedule-example-one-time)
+ [Exemple 4 : Spécifiez le nombre de jours de décalage programmé pour une fenêtre de maintenance](#schedule-example-schedule-offset)

## Exemple 1 : Spécification d'une date de début de fenêtre de maintenance
<a name="schedule-example-start-date"></a>

Supposons que vous utilisiez le AWS Command Line Interface (AWS CLI) pour créer une fenêtre de maintenance avec les options suivantes :
+ `--start-date 2021-01-01T00:00:00-08:00`
+ `--schedule-timezone "America/Los_Angeles"`
+ `--schedule "cron(0 09 ? * WED *)"`

Par exemple :

------
#### [ 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 *)"
```

------

Cela signifie que la première exécution de la fenêtre de maintenance n'aura lieu qu'*après* la date et l'heure de début spécifiées, c'est-à-dire le vendredi 1er janvier 2021 à minuit heure des États-Unis/Pacifique. (Ce fuseau horaire a huit heures de retard par rapport à l'heure UTC.) Dans ce cas, la date et l'heure de début de la période de fenêtre ne représentent pas le moment où les fenêtres de maintenance s'exécutent pour la première fois. Si l'on considère les deux valeurs ensemble, les valeurs `--schedule-timezone` et `--schedule` signifient que la fenêtre de maintenance démarrera à 9 heures tous les mercredis dans le fuseau horaire États-Unis/Pacifique (représenté par « America/Los Angeles » en format IANA). La première exécution durant la période d'activité aura lieu le mercredi 4 janvier 2021, à 9 heures, heure des États-Unis/Pacifique.

## Exemple 2 : Spécification de la date de début et de la date de fin d'une fenêtre de maintenance
<a name="schedule-example-start-end-date"></a>

Supposons que vous créiez une fenêtre de maintenance avec les options suivantes :
+ `--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)"`

Par exemple :

------
#### [ 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)"
```

------

La période activée pour cette fenêtre de maintenance commence à 15 h 15, heure normale du Japon, le 1er janvier 2019. La période de validité de cette fenêtre de maintenance se termine à 6 h 15, heure normale du Japon, le dimanche 30 juin 2019. (Ce fuseau horaire à neuf heures d'avance par rapport à l'heure UTC.) Si l'on considère les deux valeurs ensemble, les valeurs `--schedule-timezone` et `--schedule` signifient que la fenêtre de maintenance s'exécutera à 3 h 15 tous les mardis dans le fuseau horaire standard du Japon (représenté par « Asia/Tokyo » en format IANA). Cela est dû au fait que la fenêtre de maintenance s'exécute tous les sept jours et qu'elle devient active à 3 h 15 le mardi 1er janvier. La dernière exécution aura lieu à 3 h 15, heure normale du Japon, le mardi 25 juin 2019. Il s'agit du dernier mardi avant que la période de la fenêtre de maintenance activée se termine cinq jours plus tard.

## Exemple 3 : Création d'une fenêtre de maintenance ne s'exécutant qu'une seule fois
<a name="schedule-example-one-time"></a>

Vous avez à présent créé une fenêtre de maintenance avec cette option :
+ `--schedule "at(2020-07-07T15:55:00)"`

Par exemple :

------
#### [ 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
```

------

Cette fenêtre de maintenance s'exécute une seule fois, à 15 h 55 (UTC), le 7 juillet 2020. La fenêtre de maintenance est activée pour s'exécuter pendant près de cinq heures, selon les besoins, mais aucune nouvelle tâche ne peut démarrer deux heures avant la fin de la période de la fenêtre de maintenance.

## Exemple 4 : Spécifiez le nombre de jours de décalage programmé pour une fenêtre de maintenance
<a name="schedule-example-schedule-offset"></a>

Vous avez à présent créé une fenêtre de maintenance avec cette option :

```
--schedule-offset 2
```

Par exemple :

------
#### [ 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 décalage de planification est le nombre de jours à attendre après la date et l'heure spécifiées par une expression CRON avant d'exécuter la fenêtre de maintenance.

Dans l'exemple ci-dessus, l'expression CRON planifie une fenêtre de maintenance à exécuter le troisième mardi de chaque mois à 23h30 : 

```
--schedule "cron(0 30 23 ? * TUE#3 *)
```

Cependant, l'inclusion de `--schedule-offset 2` signifie que la fenêtre de maintenance ne sera pas exécutée avant 23h30 deux jours *après* le troisième mardi de chaque mois. 

Les décalages de planification sont pris en charge uniquement pour les expressions CRON. 

**Plus d'informations**  
+ [Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md)
+ [Création d’une fenêtre de maintenance à l’aide de la console](sysman-maintenance-create-mw.md)
+ [Tutoriel : Création et configuration d'une fenêtre de maintenance à l'aide du AWS CLI](maintenance-windows-cli-tutorials-create.md)
+ [CreateMaintenanceWindow](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateMaintenanceWindow.html) dans la *Référence d'API 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)dans la *AWS Systems Manager section de la référence de AWS CLI commande*
+ [Time Zone Database](https://www.iana.org/time-zones) sur le site web de l'IANA

# Enregistrement de tâches de fenêtre de maintenance sans cibles
<a name="maintenance-windows-targetless-tasks"></a>

Pour chaque fenêtre de maintenance créée, vous pouvez spécifier une ou plusieurs tâches à effectuer lors de l'exécution de la fenêtre de maintenance. Dans la plupart des cas, vous devez spécifier les ressources, ou cibles, sur lesquelles la tâche doit s'exécuter. Dans certains cas, cependant, vous n'avez pas à spécifier explicitement des cibles dans la tâche.

Une ou plusieurs cibles doivent être spécifiées pour des tâches de fenêtre de maintenance de type Systems Manager Run Command. Selon la nature de la tâche, les cibles sont facultatives pour les autres types de tâches de la fenêtre de maintenance (Systems Manager Automation AWS Lambda, et AWS Step Functions). 

Pour les types de tâches Lambda et Step Functions, la nécessité d'une cible dépend du contenu de la fonction ou de la machine d'état que vous avez créée.

**Note**  
Lorsqu'une tâche a enregistré des cibles AWS Lambda, Automation et AWS Step Functions Tasks résolvent les cibles à partir de groupes de ressources et de balises et envoient un appel par ressource résolue, ce qui entraîne plusieurs invocations de tâches. Mais supposons, par exemple, que vous ne souhaitiez qu’un seul appel pour une tâche Lambda enregistrée auprès d’un groupe de ressources contenant plusieurs instances. Dans ce cas, si vous travaillez dans la AWS Management Console, choisissez l’option **Cible de tâche non requise** dans la page **Enregistrer une tâche Lambda** ou **Modifier la tâche Lambda**. Si vous utilisez la AWS CLI commande, ne spécifiez pas de cibles à l'aide du `--targets` paramètre lors de l'exécution de la [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)commande ou de la [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)commande.

Dans la plupart des cas, il est inutile de spécifier explicitement une cible pour une tâche d'automatisation. Par exemple, supposons que vous créiez une tâche de type Automation pour mettre à jour une Amazon Machine Image (AMI) pour Linux à l'aide du runbook `AWS-UpdateLinuxAmi`. Lorsque la tâche s'exécute, l'AMI est mise à jour avec les derniers packages de distribution Linux et les logiciels Amazon disponibles. Ces mises à jour sont déjà installées sur les nouvelles instances créées à partir de l'AMI. Comme l'ID de l'AMI à mettre à jour est spécifié dans les paramètres d'entrée du runbook, il est inutile de spécifier à nouveau une cible dans la tâche de la fenêtre de maintenance.

De même, supposons que vous utilisiez le AWS Command Line Interface (AWS CLI) pour enregistrer une tâche d'automatisation de la fenêtre de maintenance qui utilise le `AWS-RestartEC2Instance` runbook. Comme le nœud à redémarrer est spécifié dans l'argument `--task-invocation-parameters`, l'option `--targets` n'est pas nécessaire. 

**Note**  
Pour les tâches de la fenêtre de maintenance qui n'ont pas de cible spécifiée, vous ne pouvez pas fournir de valeurs pour `--max-errors` et `--max-concurrency`. Au lieu de cela, le système insère une valeur d'espace réservé de `1`, qui peut être rapportée dans la réponse à des commandes telles que [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) et [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). Ces valeurs n'affectent pas l'exécution de votre tâche et peuvent être ignorées.

Les exemples suivants montrent également que les options `--targets`, `--max-errors` et `--max-concurrency` peuvent être omises pour une tâche de fenêtre de maintenance sans cible.

------
#### [ 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
```

------

**Note**  
Pour les tâches du créneau de maintenance enregistrées avant le 23 décembre 2020 : si vous avez spécifié des cibles pour la tâche et que l'une d'elles n'est plus nécessaire, vous pouvez mettre à jour cette tâche pour supprimer les cibles à l'aide de la console Systems Manager ou de la [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 commande.

**Plus d'informations**  
+ [Messages d'erreur : « Les tâches de la fenêtre de maintenance sans cibles ne prennent pas en charge MaxConcurrency les valeurs » et « Les tâches de la fenêtre de maintenance sans cibles ne prennent pas en charge MaxErrors les valeurs »](troubleshooting-maintenance-windows.md#maxconcurrency-maxerrors-not-supported)

# Résolution des problèmes liés aux fenêtres de maintenance
<a name="troubleshooting-maintenance-windows"></a>

Consultez les informations suivantes pour tenter de résoudre les problèmes liés aux fenêtres de maintenance.

**Topics**
+ [Erreur de modification de tâche : sur la page de modification de tâche de fenêtre de maintenance, la liste de rôles IAM affiche un message d'erreur : « We couldn't find the IAM maintenance window role specified for this task. It might have been deleted, or it might not have been created yet. » (Nous n'avons pas pu trouver le rôle de fenêtre de maintenance IAM spécifié pour cette tâche. Il a peut-être été supprimé ou il n'a peut-être pas encore été créé.)](#maintenance-window-role-troubleshooting)
+ [Toutes les cibles de fenêtre de maintenance ne sont pas mises à jour](#targets-not-updated)
+ [La tâche échoue avec le statut d'invocation de tâche : « The provided role does not contain the correct SSM permissions. » (Le rôle fourni ne contient pas les autorisations SSM correctes).](#incorrect-ssm-permissions)
+ [La tâche échoue avec le message d'erreur : « L'étape échoue lorsqu'elle valide et résout les entrées de l'étape »](#step-fails)
+ [Messages d'erreur : « Les tâches de la fenêtre de maintenance sans cibles ne prennent pas en charge MaxConcurrency les valeurs » et « Les tâches de la fenêtre de maintenance sans cibles ne prennent pas en charge MaxErrors les valeurs »](#maxconcurrency-maxerrors-not-supported)

## Erreur de modification de tâche : sur la page de modification de tâche de fenêtre de maintenance, la liste de rôles IAM affiche un message d'erreur : « We couldn't find the IAM maintenance window role specified for this task. It might have been deleted, or it might not have been created yet. » (Nous n'avons pas pu trouver le rôle de fenêtre de maintenance IAM spécifié pour cette tâche. Il a peut-être été supprimé ou il n'a peut-être pas encore été créé.)
<a name="maintenance-window-role-troubleshooting"></a>

**Problème 1** : Le rôle de fenêtre de maintenance Gestion des identités et des accès AWS (IAM) que vous avez initialement spécifié a été supprimé après la création de la tâche.

**Correctifs possibles** : 1) sélectionnez un autre rôle de fenêtre de maintenance IAM, s'il existe pour votre compte, ou créez-en un nouveau et sélectionnez-le pour cette tâche. 

**Problème 2** : Si la tâche a été créée à l'aide du AWS Command Line Interface (AWS CLI) ou d'un AWS SDK AWS Tools for Windows PowerShell, un nom de rôle de fenêtre de maintenance IAM inexistant aurait pu être spécifié. Par exemple, il est possible que le rôle de fenêtre de maintenance IAM ait été supprimé avant de créer la tâche, ou que le nom de rôle ait été saisi de façon incorrecte, par exemple, **myrole** au lieu de **my-role**.

**Correctifs possibles** : sélectionnez le nom correct du rôle de fenêtre de maintenance IAM que vous souhaitez utiliser, ou créez-en un nouveau à spécifier pour cette tâche. 

## Toutes les cibles de fenêtre de maintenance ne sont pas mises à jour
<a name="targets-not-updated"></a>

**Problème :** vous remarquez que des tâches de fenêtre de maintenance ne se sont pas exécutées sur toutes les ressources ciblées par votre fenêtre de maintenance. Par exemple, dans les résultats d'exécution de la fenêtre de maintenance, la tâche de cette ressource est marquée comme ayant échoué ou expiré.

**Solution:** les raisons les plus courantes pour lesquelles une tâche de fenêtre de maintenance ne s'exécute pas sur une ressource cible concernent la connectivité et la disponibilité. Par exemple :
+ Systems Manager a perdu la connexion avec la ressource avant ou pendant l'opération de la fenêtre de maintenance.
+ La ressource était hors ligne ou arrêtée pendant l'opération de la fenêtre de maintenance.

Vous pouvez attendre la prochaine fenêtre de maintenance planifiée pour exécuter des tâches sur les ressources. Vous pouvez exécuter manuellement les tâches de fenêtre de maintenance sur les ressources qui n'étaient pas disponibles ou qui étaient hors connexion.

## La tâche échoue avec le statut d'invocation de tâche : « The provided role does not contain the correct SSM permissions. » (Le rôle fourni ne contient pas les autorisations SSM correctes).
<a name="incorrect-ssm-permissions"></a>

**Problème** : Vous avez spécifié une fonction du service de fenêtre de maintenance pour une tâche, mais la tâche ne s'exécute pas correctement et le statut d'invocation de la tâche indique que « The provided role does not contain the correct SSM permissions. » (Le rôle fourni ne contient pas les autorisations SSM correctes). 
+ **Solution** : Dans [Tâche 1 : créer une politique personnalisée pour votre rôle de service de fenêtre de maintenance à l’aide de la console](configuring-maintenance-window-permissions-console.md#create-custom-policy-console), nous fournissons une politique de base que vous pouvez attacher à votre [fonction du service de fenêtre de maintenance personnalisée](configuring-maintenance-window-permissions-console.md#create-custom-role-console). Cette politique comprend les autorisations nécessaires pour de nombreux scénarios de tâches. Cependant, en raison de la grande variété de tâches que vous pouvez exécuter, vous devrez peut-être fournir des autorisations supplémentaires dans la politique pour votre rôle de fenêtre de maintenance.

  Par exemple, certaines actions d'automatisation fonctionnent avec des AWS CloudFormation piles. Par conséquent, vous devrez peut-être ajouter les autorisations supplémentaires `cloudformation:CreateStack`, `cloudformation:DescribeStacks`, et `cloudformation:DeleteStack` à la politique pour votre fonction du service de fenêtre de maintenance. 

  Autre exemple, le runbook d'automatisation `AWS-CopySnapshot` requiert des autorisations pour créer un instantané Amazon Elastic Block Store (Amazon EBS). Par conséquent, vous devrez peut-être ajouter l'autorisation `ec2:CreateSnapshot`.

  Pour plus d'informations sur les autorisations de rôle requises par un runbook d'automatisation AWS géré, consultez les descriptions du runbook dans la référence des [runbooks AWS Systems Manager d'automatisation](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html).

  Pour plus d'informations sur les autorisations de rôle requises par un document SSM AWS géré, consultez le contenu du document dans la section [Documents](https://console.aws.amazon.com//systems-manager/documents) de la console Systems Manager.

  Pour plus d'informations sur les autorisations de rôle nécessaires pour les tâches Step Functions, les tâches Lambda, les runbooks d'automatisation personnalisés et les documents SSM, vérifiez les autorisations requises auprès de l'auteur de ces ressources.

## La tâche échoue avec le message d'erreur : « L'étape échoue lorsqu'elle valide et résout les entrées de l'étape »
<a name="step-fails"></a>

**Problème** : un runbook Automation ou un document de commande Systems Manager utilisé dans une tâche exige que vous spécifiez des entrées telles que `InstanceId` ou `SnapshotId`, mais une valeur n'est pas fournie ou n'est pas fournie correctement.
+ **Solution 1** : si votre tâche ne cible qu'une seule ressource, telle qu'un nœud ou un instantané, saisissez son ID dans les paramètres d'entrée de la tâche.
+ **Solution 2** : si votre tâche cible plusieurs ressources, par exemple en créant des images à partir de plusieurs nœuds lorsque vous utilisez le runbook`AWS-CreateImage`, vous pouvez utiliser l'un des pseudo-paramètres pris en charge pour les tâches de la fenêtre de maintenance dans les paramètres d'entrée pour représenter le nœud IDs dans la commande. 

  Les commandes suivantes enregistrent une tâche Systems Manager Automation auprès d'une fenêtre de maintenance en utilisant la AWS CLI. La valeur `--targets` indique un ID de cible de fenêtre de maintenance. En outre, même si le paramètre `--targets` spécifie un ID de cible de fenêtre, les paramètres du runbook Automation exigent qu'un ID de nœud soit fourni. Dans ce cas, la commande utilise le pseudo paramètre `{{RESOURCE_ID}}` en tant que la valeur `InstanceId`.

  **AWS CLI commande :**

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

  L'exemple de commande suivant redémarre les instances Amazon Elastic Compute Cloud (Amazon EC2) appartenant au groupe cible de fenêtre de maintenance portant l'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"
  ```

------

  Pour de plus amples informations sur l'utilisation de pseudo-paramètres pour les tâches de fenêtre de maintenance, veuillez consulter [Utiliser des pseudo paramètres lors de l’enregistrement des tâches de la fenêtre de maintenance](maintenance-window-tasks-pseudo-parameters.md) et [Exemples d'enregistrement de tâches](mw-cli-register-tasks-examples.md#task-examples).

## Messages d'erreur : « Les tâches de la fenêtre de maintenance sans cibles ne prennent pas en charge MaxConcurrency les valeurs » et « Les tâches de la fenêtre de maintenance sans cibles ne prennent pas en charge MaxErrors les valeurs »
<a name="maxconcurrency-maxerrors-not-supported"></a>

**Problème :** lorsque vous enregistrez une tâche de type Run Command, vous devez spécifier au moins une cible sur laquelle la tâche doit s'exécuter. Pour les autres types de tâches (Automatisation AWS Lambda, et AWS Step Functions), selon la nature de la tâche, les cibles sont facultatives. Les options `MaxConcurrency` (le nombre de ressources sur lesquelles exécuter une tâche simultanément) et `MaxErrors` (le nombre d'échecs d'exécution de la tâche sur les ressources cibles avant que la tâche n'échoue) ne sont ni requises, ni prises en charge pour les tâches de fenêtre de maintenance qui ne spécifient pas de cibles. Le système génère ces messages d'erreur si des valeurs sont spécifiées pour l'une ou l'autre de ces options alors qu'aucune cible de tâche n'est spécifiée.

**Solution** : si vous recevez l'une de ces erreurs, supprimez les valeurs de concomitance et de seuil d'erreur avant de poursuivre l'enregistrement ou de mettre à jour la tâche de fenêtre de maintenance.

Pour de plus amples informations sur l'exécution des tâches qui ne spécifient pas de cibles, veuillez consulter [Enregistrement de tâches de fenêtre de maintenance sans cibles](maintenance-windows-targetless-tasks.md) dans le *Guide de l'utilisateur AWS Systems Manager *.

# AWS Systems Manager Quick Setup
<a name="systems-manager-quick-setup"></a>

Utilisez Quick Setup un outil pour configurer rapidement les services et fonctionnalités Amazon Web Services fréquemment utilisés conformément aux meilleures pratiques recommandées. AWS Systems ManagerQuick Setupsimplifie la configuration des services, notamment Systems Manager, en automatisant les tâches courantes ou recommandées. Ces tâches incluent, par exemple, la création de rôles de profil d'instance Gestion des identités et des accès AWS (IAM) requis et la mise en place de meilleures pratiques opérationnelles, telles que des analyses de correctifs périodiques et la collecte d'inventaire. Aucun frais d'utilisation Quick Setup. Toutefois, des coûts peuvent être encourus en fonction du type de services configuré et des limites d'utilisation, sans frais pour les services utilisés pour la configuration de votre service. Pour vos premiers pas dans Quick Setup, ouvrez [Systems Manager console](https://console.aws.amazon.com/systems-manager/quick-setup). Dans le panneau de navigation, sélectionnez **Quick Setup**.

**Note**  
Si vous avez été dirigé vers Quick Setup pour vous aider dans la configuration de vos instances de sorte qu'elles soient gérées par Systems Manager, suivez la procédure dans [Configurer la gestion des hôtes Amazon EC2 à l’aide d’Quick Setup](quick-setup-host-management.md).

## Quels sont les avantages d'Quick Setup ?
<a name="quick-setup-features"></a>

Les avantages d'Quick Setup sont les suivants :
+ **Simplification de la configuration des services et des fonctions**

  Quick Setup vous guide tout au long de la configuration des bonnes pratiques opérationnelles et déploie ces configurations automatiquement. Le tableau de bord Quick Setup affiche une vue en temps réel du statut de déploiement de votre configuration. 
+ **Déploiement des configurations automatiquement sur plusieurs comptes**

  Vous pouvez l'utiliser de Quick Setup manière individuelle Compte AWS ou multiple Comptes AWS et Régions AWS en intégrant à AWS Organizations. L'utilisation de Quick Setup sur plusieurs comptes garantit le maintien de configurations cohérentes dans votre organisation.
+ **Élimination de la dérive de configuration**

  Une dérive de configuration se produit chaque fois qu'une modification apportée par un utilisateur à un service ou une fonction entre en conflit avec les sélections effectuées via Quick Setup. Quick Setup vérifie périodiquement la dérive de configuration et tente de la corriger.

## À qui est destiné Quick Setup ?
<a name="quick-setup-audience"></a>

Quick Setup convient particulièrement aux clients déjà familiarisés avec les services et fonctions qu'ils configurent et désireux de simplifier leur processus d'installation. Si vous ne connaissez pas le service avec lequel Service AWS vous effectuez la configurationQuick Setup, nous vous recommandons d'en savoir plus sur le service. Étudiez le contenu du Guide de l'utilisateur correspondant avant de créer une configuration avec Quick Setup.

## Disponibilité de Quick Setup dans Régions AWS
<a name="quick-setup-getting-started-regions"></a>

Dans ce qui suit Régions AWS, vous pouvez utiliser tous les types de Quick Setup configuration pour l'ensemble d'une organisation, tels que configurés dans AWS Organizations, ou uniquement pour les comptes d'organisation et les régions que vous choisissez. Vous pouvez également l'utiliser Quick Setup avec un seul compte dans ces régions.
+ USA Est (Ohio)
+ USA Est (Virginie du Nord)
+ USA Ouest (Californie du Nord)
+ USA Ouest (Oregon)
+ Asie-Pacifique (Mumbai)
+ Asie-Pacifique (Séoul)
+ Asie-Pacifique (Singapour)
+ Asie-Pacifique (Sydney)
+ Asie-Pacifique (Tokyo)
+ Canada (Centre)
+ Europe (Francfort)
+ Europe (Stockholm)
+ Europe (Irlande)
+ Europe (Londres)
+ Europe (Paris)
+ Amérique du Sud (São Paulo)

Dans les régions suivantes, seul le type de configuration [Gestion des hôtes](quick-setup-host-management.md) est disponible pour les comptes individuels :
+ Europe (Milan)
+ Asie-Pacifique (Hong Kong)
+ Middle East (Bahrain)
+ Chine (Beijing)
+ Chine (Ningxia)
+ AWS GovCloud (USA Est)
+ AWS GovCloud (US-Ouest)

 Pour obtenir une liste de toutes les régions prises en charge pour Systems Manager, consultez la colonne **Région** dans [Points de terminaison de service Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) dans le *Référence générale d'Amazon Web Services*.

# Démarrer avec Quick Setup
<a name="quick-setup-getting-started"></a>

Utilisez les informations de cette rubrique pour vous aider à vous préparer à utiliser Quick Setup.

**Topics**
+ [Rôles et autorisations IAM pour l'intégration de Quick Setup](#quick-setup-getting-started-iam)
+ [Intégration manuelle pour utiliser l’API Quick Setup par programmation](#quick-setup-api-manual-onboarding)

## Rôles et autorisations IAM pour l'intégration de Quick Setup
<a name="quick-setup-getting-started-iam"></a>

Quick Setup a lancé une nouvelle expérience de console et une nouvelle API. Vous pouvez désormais interagir avec cette API à l'aide de la console AWS CLI, CloudFormation, et SDKs. Si vous optez pour la nouvelle expérience, vos configurations existantes sont recréées à l’aide de la nouvelle API. En fonction du nombre de configurations existantes dans votre compte, ce processus peut prendre plusieurs minutes.

Pour utiliser la nouvelle console Quick Setup, vous devez disposer des autorisations pour effectuer les actions suivantes :

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

------

Pour limiter les utilisateurs aux autorisations de lecture seule, autorisez uniquement les opérations `ssm-quicksetup:List*` et `ssm-quicksetup:Get*` pour l’API Quick Setup.

Lors de l'intégration, Quick Setup crée les rôles Gestion des identités et des accès AWS (IAM) suivants en votre nom :
+ `AWS-QuickSetup-LocalExecutionRole` : octroie à CloudFormation les autorisations pour utiliser n’importe quel modèle (à l’exception du modèle de politique de correctif) et créer les ressources nécessaires.
+ `AWS-QuickSetup-LocalAdministrationRole`— Accorde l'autorisation AWS CloudFormation d'assumer`AWS-QuickSetup-LocalExecutionRole`.
+ `AWS-QuickSetup-PatchPolicy-LocalExecutionRole`— Accorde l'autorisation AWS CloudFormation d'utiliser le modèle de politique de correctifs et de créer les ressources nécessaires.
+ `AWS-QuickSetup-PatchPolicy-LocalAdministrationRole`— Accorde l'autorisation AWS CloudFormation d'assumer`AWS-QuickSetup-PatchPolicy-LocalExecutionRole`.

Si vous créez un compte de gestion, le compte dans lequel vous créez une organisation, crée Quick Setup également les rôles suivants en AWS Organizations votre nom :
+ `AWS-QuickSetup-SSM-RoleForEnablingExplorer` : octroie des autorisations au runbook Automation `AWS-EnableExplorer`. Le `AWS-EnableExplorer` runbook configureExplorer, un outil dans Systems Manager, pour afficher des informations pour plusieurs Comptes AWS et. Régions AWS
+ `AWSServiceRoleForAmazonSSM`— Un rôle lié à un service qui donne accès aux AWS ressources gérées et utilisées par Systems Manager.
+ `AWSServiceRoleForAmazonSSM_AccountDiscovery`— Rôle lié à un service qui autorise Systems Manager à appeler pour découvrir des Compte AWS informations lors Services AWS de la synchronisation des données. Pour de plus amples informations, veuillez consulter [Utilisation des rôles pour collecter des Compte AWS informations pour OpsCenter et Explorer](using-service-linked-roles-service-action-2.md).

Lors de l'intégration d'un compte de gestion, Quick Setup permet un accès fiable entre AWS Organizations et CloudFormation pour déployer des Quick Setup configurations au sein de votre organisation. Pour activer l'accès approuvé, votre compte de gestion doit disposer d'autorisations d'administrateur. Après l'intégration, vous n'avez plus besoin d'autorisations d'administrateur. Pour de plus amples informations, consultez [Activer l'accès approuvé avec Organizations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html).

Pour plus d'informations sur les types de AWS Organizations comptes, consultez [AWS Organizations la terminologie et les concepts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) du *Guide de AWS Organizations l'utilisateur*.

**Note**  
Quick Setuputilise CloudFormation StackSets pour déployer vos configurations dans toutes Comptes AWS les régions. Si le nombre de comptes cibles multiplié par le nombre de régions dépasse 10 000, le déploiement de la configuration échoue. Nous vous recommandons de revoir votre cas d'utilisation et de créer des configurations qui utilisent moins de cibles pour s'adapter à la croissance de votre organisation. Les instances de piles ne sont pas déployées sur le compte de gestion de votre organisation. Pour plus d'informations, consultez [Considérations lors de la création d'un ensemble de piles avec des autorisations gérées par le service](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-getting-started-create.html?icmpid=docs_cfn_console#stacksets-orgs-considerations). 

## Intégration manuelle pour utiliser l’API Quick Setup par programmation
<a name="quick-setup-api-manual-onboarding"></a>

Si vous employez la console pour utiliser Quick Setup, le service gère les étapes d’intégration pour vous. Si vous envisagez d'utiliser SDKs ou d' AWS CLI utiliser l'Quick SetupAPI, vous pouvez toujours utiliser la console pour effectuer les étapes d'intégration à votre place afin de ne pas avoir à les exécuter manuellement. Cependant, certains clients doivent effectuer les étapes d’intégration pour Quick Setup par programmation sans interagir avec la console. Si cette méthode correspond à votre cas d’utilisation, vous devez suivre les étapes suivantes. Toutes ces étapes doivent être effectuées depuis votre compte AWS Organizations de gestion.

**Pour finaliser l’intégration manuelle pour Quick Setup**

1. Activez un accès sécurisé pour CloudFormation les Organisations. Cela fournit au compte de gestion les autorisations nécessaires pour créer et gérer StackSets pour votre organisation. Vous pouvez utiliser CloudFormation l'action de l'`ActivateOrganizationsAccess`API pour terminer cette étape. Pour plus d’informations, consultez [ActivateOrganizationsAccess](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ActivateOrganizationsAccess.html) dans la *Référence d’API AWS CloudFormation *.

1. Activez l’intégration de Systems Manager avec Organizations. Cela permet à Systems Manager de créer un rôle lié à un service dans tous les comptes de votre organisation. Cela permet également à Systems Manager d’effectuer en votre nom les opérations dans votre organisation et ses comptes. Vous pouvez utiliser AWS Organizations l'action de l'`EnableAWSServiceAccess`API pour terminer cette étape. Le principal service de Systems Manager est `ssm.amazonaws.com` .Pour plus d'informations, consultez la section [Activer l'AWSServiceaccès](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html) dans la *référence des AWS Organizations API*.

1. Créez le rôle IAM requis pour Explorer. Cela permet à Quick Setup de créer des tableaux de bord pour vos configurations afin que vous puissiez visualiser les statuts de déploiement et d’association. Créez un rôle IAM et attachez‑y la politique gérée `AWSSystemsManagerEnableExplorerExecutionPolicy`. Modifiez la politique d’approbation pour le rôle pour qu’elle corresponde à ce qui suit. Remplacez chacune *account ID* par vos informations.

------
#### [ 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. Mettez à jour le paramètre de service Quick Setup pour Explorer. Vous pouvez utiliser l’action d’API `UpdateServiceSettings` d’Quick Setup pour finaliser cette étape. Spécifiez l’ARN du rôle IAM que vous avez créé à l’étape précédente pour le paramètre de demande `ExplorerEnablingRoleArn`. Pour plus d’informations, consultez [UpdateServiceSettings](https://docs.aws.amazon.com/quick-setup/latest/APIReference/API_UpdateServiceSettings.html) dans la *Référence d’API Quick Setup*.

1. Créez les rôles IAM requis CloudFormation StackSets à utiliser. Vous devez créer un rôle d’*exécution* et un rôle d’*administration*.

   1. Créer le rôle d'exécution. Au moins l’une des politiques gérées `AWSQuickSetupDeploymentRolePolicy` ou `AWSQuickSetupPatchPolicyDeploymentRolePolicy` doit être attachée au rôle d’exécution. Si vous créez uniquement des configurations de politiques de correctifs, vous pouvez utiliser la politique gérée `AWSQuickSetupPatchPolicyDeploymentRolePolicy`. Toutes les autres configurations utilisent la politique `AWSQuickSetupDeploymentRolePolicy`. Modifiez la politique d’approbation pour le rôle pour qu’elle corresponde à ce qui suit. Remplacez chacun *account ID* et *administration role name* par vos informations.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/administration role name"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. Créez le rôle d’administration. La politique d’autorisations doit correspondre à ce qui suit. Remplacez chacun *account ID* et *execution role name* par vos informations.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Action": [
                      "sts:AssumeRole"
                  ],
                  "Resource": "arn:*:iam::111122223333:role/execution role name",
                  "Effect": "Allow"
              }
          ]
      }
      ```

------

      Modifiez la politique d’approbation pour le rôle pour qu’elle corresponde à ce qui suit. Remplacez chacune *account ID* par vos informations.

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

------

# Configuration pour Assumer le rôle de Systems Manager
<a name="quick-setup-assume-role"></a>

## Pour créer un rôle d'assume pour la configuration rapide de Systems Manager, procédez comme suit :
<a name="create-assume-role"></a>

La configuration rapide de Systems Manager nécessite un rôle qui permet à Systems Manager d'effectuer des actions en toute sécurité sur votre compte. Ce rôle accorde à Systems Manager les autorisations nécessaires pour exécuter des commandes sur vos instances et configurer des EC2 instances, des rôles IAM et d'autres ressources de Systems Manager en votre nom.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation, choisissez **Policies**, puis **Create Policy**

1. Ajoutez la `SsmOnboardingInlinePolicy` politique à l'aide du code JSON ci-dessous. (Cette politique active les actions requises pour associer des autorisations de profil d'instance aux instances que vous spécifiez. Par exemple, autoriser la création de profils d'instance et leur association à EC2 des instances).

1. Une fois terminé, dans le volet de navigation, sélectionnez **Rôles**, puis sélectionnez **Créer un rôle**.

1. Pour le **type d'entité fiable**, conservez-le par défaut (service).

1. Sous **Cas d'utilisation**, choisissez **Systems Manager**, puis **Next**.

1. Sur la page **Ajouter des autorisations** :

1. Ajoutez la `SsmOnboardingInlinePolicy` politique

1. Choisissez **Next** (Suivant)

1. Dans **Nom du rôle**, entrez un nom descriptif (par exemple,`AmazonSSMRoleForAutomationAssumeQuickSetup`).

1. (Facultatif) Ajoutez des balises pour identifier et organiser le rôle.

1. Choisissez **Créer un rôle**.

**Important**  
Le rôle doit inclure une relation de confiance avec`ssm.amazonaws.com`. Ceci est automatiquement configuré lorsque vous sélectionnez Systems Manager comme service à l'étape 4.

Après avoir créé le rôle, vous pouvez le sélectionner lors de la configuration de la configuration rapide. Ce rôle permet à Systems Manager de gérer les EC2 instances, les rôles IAM et les autres ressources de Systems Manager et d'exécuter des commandes en votre nom tout en garantissant la sécurité grâce à des autorisations spécifiques et limitées.

## Stratégies d'autorisations
<a name="permissions-policies"></a>

**`SsmOnboardingInlinePolicy`**  
La politique suivante définit les autorisations pour la configuration rapide de 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"
                }
            }
        }
    ]
        }
```

**Relation d'approbation**  
*Ceci est ajouté automatiquement via les étapes ci-dessus*

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

# Utilisation d’un administrateur délégué pour Quick Setup
<a name="quick-setup-delegated-administrator"></a>

Après avoir enregistré un compte d'administrateur délégué pourQuick Setup, les utilisateurs disposant des autorisations appropriées sur ce compte peuvent créer, mettre à jour, consulter et supprimer des gestionnaires de configuration qui ciblent les unités organisationnelles au sein de votre AWS Organizations structure. Ce compte d’administrateur délégué peut également gérer les gestionnaires de configuration créés par le compte de gestion de votre organisation.

Le compte de gestion dans Organizations peut désigner un compte au sein de votre organisation en tant qu’administrateur délégué. Lorsque vous enregistrez un compte en tant qu'administrateur délégué pourQuick Setup, ce compte devient automatiquement administrateur délégué pour AWS CloudFormation StackSets Systems Manager Explorer également, car ces services sont nécessaires pour déployer et surveiller les Quick Setup configurations.

**Note**  
À l’heure actuelle, le type de configuration de la politique de correctifs n’est pas pris en charge par l’administrateur délégué pour Quick Setup. Les configurations de politique de correctif pour une organisation doivent être créées et mises à jour dans le compte de gestion de l’organisation. Pour de plus amples informations, veuillez consulter [Création d'une politique de correctif](quick-setup-patch-manager.md#create-patch-policy).

Les rubriques suivantes décrivent comment enregistrer et désenregistrer un administrateur délégué pour Quick Setup.

**Topics**
+ [Enregistrer un administrateur délégué pour Quick Setup](quick-setup-register-delegated-administrator.md)
+ [Désenregistrer un administrateur délégué pour Quick Setup](quick-setup-deregister-delegated-administrator.md)

# Enregistrer un administrateur délégué pour Quick Setup
<a name="quick-setup-register-delegated-administrator"></a>

Utilisez la procédure suivante pour enregistrer un administrateur délégué pour Quick Setup.

**Pour enregistrer un administrateur délégué Quick Setup**

1. Connectez-vous à votre compte AWS Organizations de gestion.

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Cliquez sur **Paramètres**.

1. Dans la section **Administrateur délégué pour Quick Setup**, vérifiez que vous avez configuré les options de rôle lié au service et d'accès au service requis. Si nécessaire, sélectionnez les boutons **Create role (Créer un rôle)** et **Enable access (Activer l'accès)** pour configurer ces options.

1. Pour **ID de compte**, Compte AWS saisissez-le. Ce compte doit être un compte de membre dans AWS Organizations.

1. Sélectionnez **Enregistrer l'administrateur délégué**.

# Désenregistrer un administrateur délégué pour Quick Setup
<a name="quick-setup-deregister-delegated-administrator"></a>

Suivez la procédure suivante pour désenregistrer un administrateur délégué pour Quick Setup.

**Pour annuler l’enregistrement d’un administrateur délégué Quick Setup**

1. Connectez-vous à votre compte AWS Organizations de gestion.

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Cliquez sur **Paramètres**.

1. Dans la section **Administrateur délégué pour Quick Setup**, sélectionnez **Désenregistrer** dans le menu déroulant **Actions**.

1. Sélectionnez **Confirm (Confirmer)**.

# Découvrir la terminologie et les détails de Quick Setup
<a name="quick-setup-using"></a>

Quick Setup, un outil dans AWS Systems Manager, affiche les résultats de tous les gestionnaires de configuration que vous avez créés Régions AWS dans le tableau des **gestionnaires de configuration** de la page d'Quick Setupaccueil. À partir de cette page, vous pouvez sélectionner **View details** (Afficher les détails) de chaque configuration, supprimer des configurations à partir de la liste déroulante **Actions** ou sélectionner **Create** (Créer) pour en créer. Le tableau **Gestionnaires de configuration** contient les informations suivantes :
+ **Nom** – Le nom du gestionnaire de configuration, s’il a été fourni lors de la création.
+ **Configuration type** (Type de configuration) – Type de configuration choisi lors de la création de la configuration. 
+ **Version** – La version du type de configuration actuellement déployée.
+ **Unités organisationnelles** : affiche les unités organisationnelles (OUs) vers lesquelles la configuration est déployée si vous avez choisi un ensemble **personnalisé** de cibles. Les unités d'organisation et les cibles personnalisées ne sont disponibles que pour le compte principal de votre organisation. Le compte de gestion est le compte que vous utilisez pour créer une organisation dans AWS Organizations.
+ **Type de déploiement** : indique si le déploiement s'applique à l'ensemble de l'organisation (`Organizational`) ou uniquement à votre compte (`Local`).
+ **Regions** (Régions) – Régions vers lesquelles la configuration est déployée si vous avez choisi un ensemble de cibles **Custom** (Personnalisé) ou des cibles au sein de votre **Current account** (Compte actuel). 
+ **État du déploiement** — L'état du déploiement indique si l'instance cible ou la pile a été déployée AWS CloudFormation avec succès. Les instances cible et de pile contiennent les options de configuration que vous avez choisies lors de la création de la configuration.
+ **Association status** (Statut d'association) – Le statut de l'association est l'état de toutes les associations créées par la configuration que vous avez créée. Les associations pour toutes les cibles doivent s'exécuter correctement. Sinon, le statut est **Failed** (Échec).

  Quick Setup crée et exécute une association State Manager pour chaque cible de configuration. State Manager est un outil d’ AWS Systems Manager.

Pour afficher les configurations déployées dans la région que vous êtes en train de parcourir, sélectionnez l’onglet **Configurations**.

## Détails de configuration
<a name="quick-setup-details"></a>

La page **Configuration details** (Détails de la configuration) affiche des informations sur le déploiement de la configuration et de ses associations. À partir de cette page, vous pouvez modifier les options de configuration, mettre à jour des cibles ou supprimer la configuration. Vous pouvez également afficher les détails de chaque déploiement de configuration pour obtenir plus d'informations sur les associations. 

Selon le type de configuration, un ou plusieurs des graphiques d'état suivants s'affichent :

**Statut du déploiement de configuration**  
Affiche le nombre de déploiements qui ont réussi, échoué, sont en cours d'exécution ou en attente. Les déploiements se produisent dans les comptes et régions des cibles spécifiés qui contiennent des nœuds concernés par la configuration. 

**Statut de l'association de configuration**  
Affiche le nombre d'associations State Manager qui ont réussi, échoué ou sont en attente. Quick Setup crée une association dans chaque déploiement pour les options de configuration sélectionnées.

**Statut de la configuration**  
Affiche le nombre d'actions effectuées par type de configuration et leur statut actuel. 

**Conformité des ressources**  
Affiche le nombre de ressources qui sont conformes à la politique de configuration spécifiée.

Le tableau **Configuration details** (Détails de la configuration) affiche les informations sur le déploiement de votre configuration. Vous pouvez afficher plus de détails sur chaque déploiement en sélectionnant le déploiement, puis l'option **View details** (Afficher les détails). La page des détails de chaque déploiement affiche les associations déployées sur les nœuds de ce déploiement.

## Modification et suppression de votre configuration
<a name="quick-setup-edit-delete"></a>

Vous pouvez modifier les options de configuration d'une configuration à partir de la page **Configuration details** (Détails de la configuration) en sélectionnant **Actions**, puis **Edit configuration options** (Modifier les options de configuration). Lorsque vous ajoutez de nouvelles options à la configuration, Quick Setup exécute vos déploiements et crée d'autres associations. Lorsque vous supprimez des options d'une configuration, Quick Setup exécute vos déploiements et supprime toutes les associations liées.

**Note**  
Vous pouvez modifier les configurations Quick Setup à tout moment pour votre compte. Pour modifier la configuration **Organization**, le **Configuration status** (Statut de la configuration) doit être **Success** (Succès) ou **Failed** (Échec). 

Vous pouvez également mettre à jour les cibles incluses dans vos configurations en choisissant **Actions** et **Ajouter OUs**, **Ajouter des régions** OUs, **Supprimer** ou **Supprimer des régions**. Si votre compte n'est pas configuré en tant que compte de gestion ou si vous avez créé la configuration uniquement pour le compte actuel, vous ne pouvez pas mettre à jour les unités organisationnelles cibles (OUs). La suppression d'une région ou d'une unité d'organisation supprime les associations associées à ces régions ou OUs. 

Périodiquement, Quick Setup publie de nouvelles versions de configurations. Vous pouvez sélectionner l’option **Mettre à niveau la configuration** pour mettre à niveau votre configuration vers la dernière version.

Vous pouvez supprimer une configuration de Quick Setup en sélectionnant la configuration, puis **Actions**, puis **Delete configuration** (Supprimer la configuration). Vous pouvez également supprimer la configuration depuis la page **Détails de la configuration** dans le menu déroulant **Actions**, puis **Supprimer la configuration**. Quick Setupvous invite ensuite à **tout supprimer OUs et à supprimer les régions**, ce qui peut prendre un certain temps. La suppression d'une configuration supprime également toutes les associations liées. Ce processus de suppression en deux étapes supprime toutes les ressources déployées de tous les comptes et régions, puis supprime la configuration.

## Conformité de la configuration
<a name="quick-setup-compliance"></a>

Vous pouvez voir si vos instances sont conformes aux associations créées par vos configurations dans Explorer ou Conformité, tous deux des outils d’ AWS Systems Manager. Pour en savoir plus sur la conformité, consultez [En savoir plus sur la conformité](compliance-about.md). Pour en savoir plus sur l'affichage de la conformité Explorer, consultez [AWS Systems Manager Explorer](Explorer.md).

# Utilisation de l’API Quick Setup pour gérer les configurations et les déploiements
<a name="quick-setup-api"></a>

Vous pouvez utiliser l'API fournie par Quick Setup pour créer et gérer des configurations et des déploiements à l'aide du SDK AWS CLI ou de votre choix. Vous pouvez également l'utiliser CloudFormation pour créer une ressource de gestionnaire de configuration qui déploie des configurations. L’utilisation de l’API vous permet de créer des gestionnaires de configuration qui déploient des *définitions* de configuration. Les définitions de configuration contiennent toutes les informations nécessaires pour déployer un type de configuration particulier. Pour plus d’informations sur l’API Quick Setup, consultez la [Référence de l’API de configuration rapide](https://docs.aws.amazon.com/quick-setup/latest/APIReference/).

Les exemples suivants montrent comment créer des gestionnaires de configuration à l'aide du AWS CLI et 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
```

Voici un exemple de chaîne JSON contenant une définition de configuration pour une politique de correctifs.

```
'{"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"
```

------

# Types de configuration Quick Setup pris en charge
<a name="quick-setup-config-types"></a>

**Types de configuration pris en charge**  
Quick Setupvous explique comment configurer les meilleures pratiques opérationnelles pour un certain nombre de Systems Manager et autres Services AWS, et comment déployer automatiquement ces configurations. Le tableau de bord Quick Setup affiche une vue en temps réel du statut de déploiement de votre configuration. 

Vous pouvez l'utiliser Quick Setup individuellement Compte AWS ou dans plusieurs Comptes AWS régions en intégrant à AWS Organizations. L'utilisation de Quick Setup sur plusieurs comptes garantit le maintien de configurations cohérentes dans votre organisation.

Quick Setup prend en charge les types de configuration suivants.
+ [Configurer la gestion des hôtes Amazon EC2 à l’aide d’Quick Setup](quick-setup-host-management.md)
+ [Configurer la configuration de gestion des hôtes par défaut pour une organisation à l’aide de Quick Setup](quick-setup-default-host-management-configuration.md)
+ [Créer un enregistreur de configuration AWS Configà l’aide de Quick Setup](quick-setup-config.md)
+ [Déployez le pack de AWS Config conformité à l'aide de Quick Setup](quick-setup-cpack.md)
+ [Configurer les applications de correctifs pour les instances d’une organisation à l’aide d’une politique de correctif Quick Setup](quick-setup-patch-manager.md)
+ [Configuration de l'organisation Change Manager](change-manager-organization-setup.md)
+ [Configurer DevOps Guru à l’aide de Quick Setup](quick-setup-devops.md)
+ [Déployer les packages Distributor en utilisant Quick Setup](quick-setup-distributor.md)
+ [Arrêter et démarrer les instances EC2 automatiquement selon un calendrier en utilisant Quick Setup](quick-setup-scheduler.md)
+ [Configuration de l'organisation OpsCenter](OpsCenter-quick-setup-cross-account.md)
+ [Configuration à Explorateur de ressources AWS l'aide de Quick Setup](Resource-explorer-quick-setup.md)

# Configurer la gestion des hôtes Amazon EC2 à l’aide d’Quick Setup
<a name="quick-setup-host-management"></a>

Utilisez Quick Setup un outil pour configurer rapidement AWS Systems Manager les rôles de sécurité requis et les outils Systems Manager couramment utilisés sur vos instances Amazon Elastic Compute Cloud (Amazon EC2). Vous pouvez l'utiliser Quick Setup dans un compte individuel ou sur plusieurs comptes et Régions AWS en intégrant à AWS Organizations. Ces outils vous aident à gérer et à surveiller l’état de vos instances tout en fournissant les autorisations minimales requises pour démarrer. 

Si les services et fonctions Systems Manager sont nouveaux pour vous, nous vous recommandons d'étudier le *Guide de l'utilisateur AWS Systems Manager * avant de créer une configuration avec Quick Setup. Pour de plus amples informations sur Systems Manager, veuillez consulter [Qu'est-ce que c'est AWS Systems Manager ?](what-is-systems-manager.md).

**Important**  
Quick Setup n'est peut-être pas l'outil approprié à utiliser pour la gestion d'EC2 si l'une des conditions suivantes vous concerne :  
Vous essayez de créer une instance EC2 pour la première fois afin de tester les AWS fonctionnalités.
Vous débutez dans la gestion des instances EC2.
Nous vous recommandons plutôt de commencer par la configuration suivante :   
[Mise en route avec Amazon EC2](https://aws.amazon.com/ec2/getting-started)
[Lancer une instance à l’aide du nouvel assistant de lancement d’instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) dans le *Guide de l’utilisateur Amazon EC2*
[Tutoriel : démarrer avec les instances Amazon EC2 Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html) dans le *Guide de l’utilisateur Amazon EC2*
Si vous maitrisez déjà la gestion des instances EC2 et que vous souhaitez rationaliser la configuration ainsi que la gestion de plusieurs instances EC2, utilisez Quick Setup. Que votre entreprise possède des dizaines, des milliers ou des millions d'instances EC2, utilisez la procédure Quick Setup suivante pour configurer plusieurs options pour ces instances, en une seule fois.

**Note**  
Ce type de configuration vous permet de définir plusieurs options pour l'ensemble d'une organisation définie dans AWS Organizations, uniquement certains comptes d'organisation et certaines régions, ou pour un seul compte. L'une de ces options consiste à vérifier et à appliquer les mises à jour pour SSM Agent toutes les deux semaines. Si vous êtes administrateur d'une organisation, vous pouvez également choisir de mettre à jour *toutes* les instances EC2 de votre organisation avec des mises à jour de l'agent toutes les deux semaines en utilisant le type de Configuration de gestion des hôtes par défaut. Pour plus d'informations, consultez [Configurer la configuration de gestion des hôtes par défaut pour une organisation à l’aide de Quick Setup](quick-setup-default-host-management-configuration.md).

## Configuration des options de gestion des hôtes pour les instances EC2
<a name="host-management-configuration"></a>

Pour configurer la gestion des hôtes, effectuez les tâches suivantes dans la AWS Systems Manager Quick Setup console.

**Pour ouvrir la page de configuration de la gestion des hôtes**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **Gestion des hôtes**, sélectionnez **Créer**.
**Astuce**  
Si vous avez déjà une ou plusieurs configurations dans votre compte, choisissez d'abord l'onglet **Bibliothèque** ou le bouton **Créer** dans la section **Configurations** pour afficher les cartes.

**Pour configurer les options de gestion des hôtes de Systems Manager**
+ Pour configurer les fonctionnalités de Systems Manager, dans la section **Options de configuration**, choisissez les options du groupe **Systems Manager** que vous voulez activer pour votre configuration :

     
**Mettre à jour l’agent Systems Manager (SSM) toutes les deux semaines**  
Permet à Systems Manager de vérifier toutes les deux semaines la présence d’une nouvelle version de l’agent. S'il existe une nouvelle version, Systems Manager met automatiquement à jour l'agent sur votre nœud géré vers la dernière version publiée. Quick Setup n'installe pas l'agent sur les instances où il n'est pas déjà présent. Pour plus d'informations sur quelles AMIs ont SSM Agent de préinstallés, consultez [Trouver les AMIs avec SSM Agent préinstallé](ami-preinstalled-agent.md).  
Nous vous encourageons à choisir cette option pour vous assurer que vos nœuds exécutent toujours la up-to-date version la plus complète deSSM Agent. Pour de plus amples informations sur SSM Agent, y compris sur la façon d'installer manuellement l'agent, veuillez consulter [Utilisation de l’option SSM Agent](ssm-agent.md).  
**Collecter l’inventaire de vos instances toutes les 30 minutes**  
Permet à Quick Setup de configurer la collecte des types de métadonnées suivants :  
  + **AWS composants** : pilote EC2, agents, versions, etc.
  + **Applications** – noms des applications, éditeurs, versions, etc.
  + **Détails du nœud** – nom du système, nom du système d'exploitation, version du système d'exploitation, dernier démarrage, DNS, domaine, groupe de travail, architecture du système d'exploitation, etc.
  + **Configuration réseau** – adresse IP, adresse MAC, DNS, passerelle, masque de sous-réseau, etc. 
  + **Services** – nom, nom d'affichage, état, services dépendants, type de service, type de démarrage, etc. (nœuds Windows Server uniquement).
  + **Rôles Windows** – nom, nom d'affichage, chemin, type de fonctionnalité, état installé, etc. (nœuds Windows Server uniquement).
  + **Mises à jour Windows** – ID de correctif, installé par, date d'installation, etc. (nœuds Windows Server uniquement).
Pour plus d'informations sur Inventory, un outil AWS Systems Manager intégré, voir[AWS Systems Manager Inventory](systems-manager-inventory.md).  
L'exécution de l'option **Inventory collection (Collecte d'inventaire)** peut prendre jusqu'à 10 minutes pour s'exécuter, même si vous n'avez sélectionné que quelques nœuds.  
**Analyser quotidiennement les instances pour rechercher les correctifs manquants**  
Permet à Patch Manager, un outil de Systems Manager, d’analyser vos nœuds quotidiennement et de générer un rapport dans la page **Conformité**. Le rapport indique combien de nœuds sont conformes aux correctifs en fonction du référentiel* de correctifs par défaut*. Le rapport inclut une liste de chaque nœud et de son statut de conformité.   
Pour obtenir des informations sur les opérations d'application de correctifs et les référentiels de correctifs, veuillez consulter la rubrique [AWS Systems Manager Patch Manager](patch-manager.md).   
Pour obtenir des informations sur la conformité aux correctifs, veuillez consulter la page [Compliance](https://console.aws.amazon.com/systems-manager/compliance) (Conformité) de Systems Manager.  
Pour obtenir des informations sur l'application de correctifs à des nœuds gérés sur plusieurs comptes et dans plusieurs régions dans une seule configuration, veuillez consulter les rubriques [Configurations de la politique de correctifs dans Quick Setup](patch-manager-policies.md) et [Configurer les applications de correctifs pour les instances d’une organisation à l’aide d’une politique de correctif Quick Setup](quick-setup-patch-manager.md).  
Systems Manager prend en charge plusieurs méthodes d'analyse de conformité aux correctifs des nœuds gérés. Si vous implémentez plusieurs de ces méthodes à la fois, les informations de conformité aux correctifs que vous voyez sont toujours le résultat de l'analyse la plus récente. Les résultats des analyses précédentes sont remplacés. Si les méthodes d'analyse utilisent des référentiels de correctifs différents, avec des règles d'approbation différentes, les informations de conformité aux correctifs peuvent changer de manière inattendue. Pour de plus amples informations, veuillez consulter [Identification de l'exécution qui a créé les données de conformité des correctifs](patch-manager-compliance-data-overwrites.md).

**Pour configurer les options de gestion des CloudWatch hôtes Amazon**
+ Pour configurer les CloudWatch fonctionnalités, dans la section **Options de configuration**, choisissez les options du CloudWatch groupe **Amazon** que vous souhaitez activer pour votre configuration :

     
**Installation et configuration de l' CloudWatch agent**  
Installe la configuration de base de l' CloudWatch agent unifié sur vos instances Amazon EC2. L'agent collecte des métriques et des fichiers journaux à partir de vos instances pour Amazon CloudWatch. Ces informations sont consolidées pour vous permettre de déterminer rapidement l'état de vos instances. Pour plus d'informations sur la configuration de base de l' CloudWatch agent, consultez les [ensembles de mesures prédéfinis par l'CloudWatch agent](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html#cloudwatch-agent-preset-metrics). Des frais supplémentaires pourraient vous être facturés. Pour plus d'informations, consultez les [ CloudWatchtarifs Amazon](https://aws.amazon.com/cloudwatch/pricing/).  
**Mettez à jour l' CloudWatch agent une fois tous les 30 jours**  
Permet à Systems Manager de vérifier tous les 30 jours la présence d'une nouvelle version de l' CloudWatch agent. S'il existe une nouvelle version, Systems Manager met à jour l'agent sur votre instance. Nous vous encourageons à choisir cette option pour vous assurer que vos instances exécutent toujours la up-to-date version la plus complète de l' CloudWatch agent.

**Pour configurer les options de gestion des hôtes de l’agent de lancement Amazon EC2**
+ Pour configurer les fonctionnalités de l’agent de lancement Amazon EC2, dans la section **Options de configuration**, choisissez les options du groupe **Agent de lancement Amazon EC2** que vous voulez activer pour votre configuration :

     
**Mettre à jour l’agent de lancement EC2 une fois tous les 30 jours**  
Permet à Systems Manager de vérifier tous les 30 jours la présence d’une nouvelle version de l’agent de lancement installé sur votre instance. Si une nouvelle version est disponible, Systems Manager met à jour l'agent sur votre instance. Nous vous encourageons à choisir cette option pour vous assurer que vos instances exécutent toujours la up-to-date version la plus complète de l'agent de lancement applicable. Pour les instances Amazon EC2 Windows, cette option prend en charge EC2Launch, EC2Launch v2 et EC2Config. Pour les instances Linux Amazon EC2, cette option prend en charge `cloud-init`. Pour les instances Mac Amazon EC2, cette option est prise en charge. `ec2-macos-init` Quick Setupne prend pas en charge la mise à jour des agents de lancement installés sur des systèmes d'exploitation non pris en charge par l'agent de lancement, ou sur AL2023.  
Pour plus d'informations sur ces agents d'initialisation, consultez les rubriques suivantes :  
  +  [Configuration d'une instance Windows à l'aide de EC2 Launch v2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch-v2.html) 
  +  [Configuration d'une instance Windows à l'aide de EC2 Launch](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html) 
  +  [Configuration d'une instance Windows à l'aide du service EC2 Config](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2config-service.html) 
  +  [Documentation cloud-init](https://cloudinit.readthedocs.io/en/22.2.2/index.html) 
  +  [ec2-macos-init](https://github.com/aws/ec2-macos-init) 

**Pour sélectionner les instances EC2 à mettre à jour par la configuration de gestion des hôtes**
+ Dans la section **Cibles**, choisissez la méthode pour déterminer les comptes et les régions où la configuration doit être déployée :
**Note**  
Vous ne pouvez pas créer plusieurs configurations de gestion des hôtes Quick Setup ciblant la même Région AWS.

------
#### [ Entire organization ]

  Votre configuration est déployée dans toutes les unités organisationnelles (OUs) et Régions AWS au sein de votre organisation.

**Note**  
L'option **Ensemble de l'organisation** est disponible uniquement si vous configurez la gestion des hôtes à partir du compte de gestion de votre organisation.

------
#### [ Custom ]

  1. Dans la OUs section **Cible**, sélectionnez l' OUs endroit où vous souhaitez déployer cette configuration de gestion d'hôte.

  1. Dans la section **Régions cibles**, sélectionnez les régions où vous voulez déployer cette configuration de gestion des hôtes.

------
#### [ Current account ]

  Choisissez l’une des options de région et suivez les étapes de cette option.

   

**Région actuelle**  
Choisissez comment cibler les instances dans la région actuelle uniquement :  
  + **Toutes les instances** – La configuration de gestion d’hôte cible automatiquement chaque EC2 dans la région actuelle.
  + **Balise** – Choisissez **Ajouter** et saisissez la clé et la valeur facultative qui sont ajoutées aux instances à cibler.
  + **Groupe de ressources** – Pour **Groupe de ressources**, sélectionnez un groupe de ressources existant qui contient les instances EC2 à cibler.
  + **Manuel** – Dans la section **Instances**, cochez la case de chaque instance EC2 à cibler.

**Choisir les régions**  
Choisissez comment cibler les instances dans la région que vous spécifiez en choisissant l’une des options suivantes :  
  + **Toutes les instances** – Toutes les instances des régions spécifiées sont ciblées.
  + **Balise** – Choisissez **Ajouter** et saisissez la clé et la valeur facultative qui ont été ajoutées aux instances à cibler.
Dans la section **Régions cibles**, sélectionnez les régions où vous voulez déployer cette configuration de gestion des hôtes.

------

**Pour spécifier une option de profil d’instance**
+ ***Toute l’organisation** et Cibles **personnalisées** uniquement.*

  Dans la section **Options de profil d’instance**, sélectionnez si vous voulez ajouter les politiques IAM requises aux profils d’instance existants attachés à vos instances, ou autoriser Quick Setup à créer les politiques IAM et les profils d’instance avec les autorisations requises pour la configuration que vous sélectionnez.

Après avoir spécifié tous vos choix de configuration, sélectionnez **Créer**.

# Configurer la configuration de gestion des hôtes par défaut pour une organisation à l’aide de Quick Setup
<a name="quick-setup-default-host-management-configuration"></a>

À l'aide Quick Setup d'un outil AWS Systems Manager, vous pouvez activer la configuration de gestion d'hôte par défaut pour tous les comptes et régions ajoutés à votre organisation dans AWS Organizations. Cela garantit que SSM Agent est tenu à jour sur toutes les instances Amazon Elastic Compute Cloud (EC2) de l'organisation et qu'elles peuvent se connecter à Systems Manager.

**Avant de commencer**  
Vérifiez que les conditions suivantes sont respectées avant d'activer ce paramètre.
+ La dernière version de SSM Agent est déjà installée sur toutes les instances EC2 à gérer dans votre organisation.
+ Vos instances EC2 à gérer utilisent le service de métadonnées d'instance version 2 (IMDSv2).
+ Vous êtes connecté au compte de gestion de votre organisation, comme indiqué dans AWS Organizations, à l'aide d'une identité Gestion des identités et des accès AWS (IAM) (utilisateur, rôle ou groupe) avec des autorisations d'administrateur.

**Utilisation du rôle de gestion d'instance EC2 par défaut**  
La Configuration de gestion des hôtes par défaut utilise le paramètre de service `default-ec2-instance-management-role` pour Systems Manager. Il s'agit d'un rôle doté d'autorisations que vous souhaitez mettre à la disposition de tous les comptes de votre organisation afin de permettre la communication entre les SSM Agent sur l'instance et le service Systems Manager dans le cloud.

Si vous avez déjà défini ce rôle à l'aide de la commande 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 Configuration de gestion des hôtes par défaut utilise ce rôle. Si vous n'avez pas encore défini ce rôle, Quick Setup le créera et l'appliquera pour vous. 

Pour vérifier si ce rôle a déjà été spécifié pour votre organisation, utilisez la commande [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).

## Activer les mises à jour automatiques de SSM Agent toutes les deux semaines
<a name="dhmc-enable-automatic-updates"></a>

Utilisez la procédure suivante pour activer l'option de configuration de gestion d'hôte par défaut pour AWS Organizations l'ensemble de votre organisation.

**Pour activer les mises à jour automatiques de SSM Agent toutes les deux semaines**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **Configuration de gestion des hôtes par défaut**, sélectionnez **Créer**.
**Astuce**  
Si vous avez déjà une ou plusieurs configurations dans votre compte, choisissez d'abord l'onglet **Bibliothèque** ou le bouton **Créer** dans la section **Configurations** pour afficher les cartes.

1. Dans la section **Options de configuration**, sélectionnez **Activer les mises à jour automatiques de SSM Agent toutes les deux semaines**.

1. Sélectionnez **Create** (Créer).

# Créer un enregistreur de configuration AWS Configà l’aide de Quick Setup
<a name="quick-setup-config"></a>

Avec Quick Setup un outil intégré AWS Systems Manager, vous pouvez créer rapidement un enregistreur de configuration alimenté par AWS Config. Utilisez l'enregistreur de configuration pour détecter les changements apportés à vos configurations de ressources et capturer les changements en tant qu'éléments de configuration. Si vous ne le connaissez pas AWS Config, nous vous recommandons d'en savoir plus sur le service en consultant le contenu du *guide du AWS Config développeur* avant de créer une configuration avecQuick Setup. Pour plus d'informations AWS Config, voir [Qu'est-ce que c'est AWS Config ?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) dans le *Guide AWS Config du développeur*.

Par défaut, l'enregistreur de configuration enregistre toutes les ressources prises en charge dans Région AWS le AWS Config répertoire d'exécution. Vous pouvez personnaliser la configuration de sorte que seuls les types de ressources que vous spécifiez soient enregistrés. Pour plus d'informations, consultez la section [Sélection des ressources AWS Config enregistrées](https://docs.aws.amazon.com/config/latest/developerguide/select-resources.html) dans le *Guide du AWS Config développeur*.

Des frais d'utilisation du service vous sont facturés lorsque vous AWS Config commencez à enregistrer des configurations. Pour en savoir plus sur la tarification, consultez [Tarification AWS Config](https://aws.amazon.com/config/pricing/).

**Note**  
Si vous avez déjà créé un enregistreur de configuration, Quick Setup n'arrête pas l'enregistrement et n'apporte aucune modification aux types de ressources que vous enregistrez déjà. Si vous choisissez d'enregistrer des types de ressources supplémentaires à l'aide de Quick Setup, le service les ajoute à vos groupes d'enregistreurs existants. La suppression du type de configuration de l'**Enregistrement de config** Quick Setup n'arrête pas l'enregistreur de configuration. Les modifications continuent d'être enregistrées et des frais d'utilisation du service s'appliquent jusqu'à ce que vous arrêtiez l'enregistreur de configuration. Pour en savoir plus sur la gestion de l'enregistreur de configuration, veuillez consulter [Gestion de l'enregistreur de configuration](https://docs.aws.amazon.com/config/latest/developerguide/stop-start-recorder.html) dans le *Manuel du développeur AWS Config *.

Pour configurer AWS Config l'enregistrement, effectuez les tâches suivantes dans la AWS Systems Manager console.

**Pour configurer AWS Config l'enregistrement avec Quick Setup**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **Enregistrement de configuration**, sélectionnez **Créer**.
**Astuce**  
Si vous avez déjà une ou plusieurs configurations dans votre compte, choisissez d'abord l'onglet **Bibliothèque** ou le bouton **Créer** dans la section **Configurations** pour afficher les cartes.

1. Dans la section **Options de configuration**, procédez comme suit :

   1. Pour **Choisir les types de AWS ressources à enregistrer**, indiquez si vous souhaitez enregistrer toutes les ressources prises en charge ou uniquement les types de ressources que vous choisissez.

   1. Pour **Paramètres de livraison, indiquez s’il faut créer un nouveau compartiment Amazon Simple Storage Service (Amazon S3) ou choisir un compartiment existant pour y envoyer les instantanés de configuration. **

   1. Pour les **options de notification**, choisissez l'option de notification que vous préférez. AWS Config utilise Amazon Simple Notification Service (Amazon SNS) pour vous informer des événements AWS Config importants liés à vos ressources. Si vous choisissez l'option **Utiliser les rubriques SNS existantes**, vous devez fournir l' Compte AWS ID et le nom de la rubrique Amazon SNS existante dans le compte que vous souhaitez utiliser. Si vous ciblez plusieurs Régions AWS, les noms des rubriques doivent être identiques dans chaque Région.

1. Dans la section **Planification**, sélectionnez la fréquence à laquelle vous voulez que Quick Setup corrige les modifications apportées aux ressources qui diffèrent de votre configuration. L'option **Défaut (Par défaut)** s'exécute une seule fois. Si vous ne voulez pas que Quick Setup corrige les modifications apportées aux ressources qui diffèrent de votre configuration, sélectionnez **Disable remediation (Désactiver la correction)** sous **Personnalisé**.

1. Dans la section **Cibles**, choisissez l’une des options suivantes pour identifier les comptes et les régions à enregistrer.
**Note**  
Si vous travaillez avec un seul compte, les options permettant de travailler avec les organisations et les unités organisationnelles (OUs) ne sont pas disponibles. Vous pouvez choisir d'appliquer cette configuration à l'ensemble Régions AWS de votre compte ou uniquement aux régions que vous sélectionnez.
   + **Entire organization** (Organisation entière) : tous les comptes et toutes les régions de votre organisation.
   + **Personnalisé** : uniquement les régions OUs et que vous spécifiez.
     + Dans la OUs section **Cible**, sélectionnez l' OUs endroit où vous souhaitez autoriser l'enregistrement. 
     + Dans la section **Régions cibles**, sélectionnez les régions dans lesquelles vous voulez autoriser l’enregistrement. 
   + **Current account** (Compte actuel) : seules les régions que vous spécifiez dans le compte auquel vous êtes actuellement connecté sont ciblées. Sélectionnez l'une des méthodes suivantes :
     + **Current Region** (Région actuelle) : seuls les nœuds gérés de la région sélectionnée dans la console sont ciblés. 
     + **Choisir les régions** – Choisissez les régions individuelles auxquelles appliquer la configuration d’enregistrement.

1. Choisissez **Créer**.

# Déployez le pack de AWS Config conformité à l'aide de Quick Setup
<a name="quick-setup-cpack"></a>

Un pack de conformité est un ensemble de AWS Config règles et d'actions correctives. Avec Quick Setup, vous pouvez déployer un pack de conformité en tant qu'entité unique dans un compte et une Région AWS , ou dans une organisation, dans AWS Organizations. Cela vous permet de gérer la conformité de la configuration de vos AWS ressources à grande échelle, de la définition des politiques à l'audit et aux rapports agrégés, en utilisant un cadre et un modèle de packaging communs. 

Pour déployer des packs de conformité, effectuez les tâches suivantes dans la AWS Systems Manager Quick Setup console.

**Note**  
Vous devez activer AWS Config l'enregistrement avant de déployer cette configuration. Pour plus d'informations, consultez [Packs de conformité](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html) dans le *Guide du développeur AWS Config *.

**Pour déployer des packs de conformité avec Quick Setup**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **Packs de conformité**, sélectionnez **Créer**.
**Astuce**  
Si vous avez déjà une ou plusieurs configurations dans votre compte, choisissez d'abord l'onglet **Bibliothèque** ou le bouton **Créer** dans la section **Configurations** pour afficher les cartes.

1. Dans la section **Choisir les packs de conformité**, sélectionnez les packs de conformité que vous voulez déployer.

1. Dans la section **Planification**, sélectionnez la fréquence à laquelle vous voulez que Quick Setup corrige les modifications apportées aux ressources qui diffèrent de votre configuration. L'option **Défaut (Par défaut)** s'exécute une seule fois. Si vous ne voulez pas que Quick Setup corrige les modifications apportées aux ressources qui diffèrent de votre configuration, sélectionnez **Disabled (Désactivé)** sous **Custom (Personnalisé)**.

1. Dans la section **Cibles**, choisissez de déployer des packs de conformité sur l'ensemble de votre organisation, sur certaines Régions AWS d'entre elles ou sur le compte auquel vous êtes actuellement connecté.

   Si vous sélectionnez **Entire organization (Ensemble de l'organisation)**, passez à l'étape 8.

   Si vous sélectionnez **Personnalisé**, passez à l'étape 7.

1. Dans la section **Target Regions (Régions cibles)**, cochez les cases des régions dans lesquelles vous voulez déployer des packs de conformité.

1. Choisissez **Créer**.

# Configurer les applications de correctifs pour les instances d’une organisation à l’aide d’une politique de correctif Quick Setup
<a name="quick-setup-patch-manager"></a>

À Quick Setup l'aide d'un outil AWS Systems Manager, vous pouvez créer des politiques de correctif basées surPatch Manager. Une politique de correctifs définit la planification et le référentiel à utiliser lorsque des correctifs sont automatiquement appliqués à vos instances Amazon Elastic Compute Cloud (Amazon EC2) et à d'autres nœuds gérés. À l'aide d'une configuration de politique de correctifs unique, vous pouvez définir l'application de correctifs pour tous les comptes de plusieurs Régions AWS de votre organisation, uniquement pour les comptes et les régions de votre choix, ou pour une seule paire compte-région. Pour plus d'informations sur les politiques de correctifs, consultez la rubrique [Configurations de la politique de correctifs dans Quick Setup](patch-manager-policies.md).

**Prérequis**  
Pour définir une politique de correctifs pour un nœud avec Quick Setup, le nœud doit être un *nœud géré*. Pour plus d'informations sur la gestion de vos nœuds, consultez la rubrique [Configuration de la console unifiée Systems Manager pour une organisation](systems-manager-setting-up-organizations.md).

**Important**  
**Méthodes d’analyse de la conformité des correctifs** – Systems Manager prend en charge plusieurs méthodes d’analyse des nœuds gérés pour vérifier la conformité des correctifs. Si vous implémentez plusieurs de ces méthodes à la fois, les informations de conformité aux correctifs que vous voyez sont toujours le résultat de l'analyse la plus récente. Les résultats des analyses précédentes sont remplacés. Si les méthodes d'analyse utilisent des référentiels de correctifs différents, avec des règles d'approbation différentes, les informations de conformité aux correctifs peuvent changer de manière inattendue. Pour de plus amples informations, veuillez consulter [Identification de l'exécution qui a créé les données de conformité des correctifs](patch-manager-compliance-data-overwrites.md).  
**Statut de conformité de l’association et politiques de correctifs** : le statut de l’application des correctifs pour un nœud géré soumis à une politique de correctifs Quick Setup correspond au statut de l’exécution de l’association State Manager pour ce nœud. Si le statut d’exécution de l’association est `Compliant`, le statut d’application des correctifs pour le nœud géré est également marqué `Compliant`. Si le statut d’exécution de l’association est `Non-Compliant`, le statut d’application des correctifs pour le nœud géré est également marqué `Non-Compliant`. 

## Régions prises en charge pour les configurations des politiques de correctif
<a name="patch-policies-supported-regions"></a>

Actuellement, les configurations d'application de correctifs de Quick Setup sont prises en charge dans les régions suivantes :
+ USA Est (Ohio) (us-east-2)
+ USA Est (Virginie du Nord) (us-east-1)
+ USA Ouest (Californie du Nord) (us-west-1)
+ USA Ouest (Oregon) (us-west-2)
+ Asie-Pacifique (Mumbai) (ap-south-1)
+ Asie-Pacifique (Séoul) (ap-northeast-2)
+ Asie-Pacifique (Singapour) (ap-southeast-1)
+ Asie-Pacifique (Sydney) (ap-southeast-2)
+ Asie-Pacifique (Tokyo) (ap-northeast-1)
+ Canada (Centre) (ca-central-1)
+ Europe (Francfort) (eu-central-1)
+ Europe (Irlande) (eu-west-1)
+ Europe (Londres) (eu-west-2)
+ Europe (Paris) (eu-west-3)
+ Europe (Stockholm) (eu-north-1)
+ Amérique du Sud (São Paulo) (sa-east-1)

## Autorisations pour le compartiment S3 de la politique de correctifs
<a name="patch-policy-s3-bucket-permissions"></a>

Lorsque vous créez une politique de correctifs, Quick Setup crée un compartiment Amazon S3 qui contient un fichier nommé `baseline_overrides.json`. Ce fichier contient des informations sur les référentiels de correctifs que vous avez spécifiées pour votre politique de correctifs.

Le compartiment S3 est nommé au format `aws-quicksetup-patchpolicy-account-id-quick-setup-configuration-id`. 

Par exemple : `aws-quicksetup-patchpolicy-123456789012-abcde`

Si vous créez une politique de correctifs pour une organisation, le compartiment est créé dans le compte de gestion de votre organisation. 

Il existe deux cas d'utilisation dans lesquels vous devez autoriser d'autres AWS ressources à accéder à ce compartiment S3 à l'aide de politiques Gestion des identités et des accès AWS (IAM) :
+ [Cas 1 : utiliser votre propre profil d'instance ou fonction du service avec vos nœuds gérés au lieu d'un profil fourni par Quick Setup](#patch-policy-instance-profile-service-role)
+ [Cas 2 : utiliser les points de terminaison d'un VPC pour se connecter à Systems Manager](#patch-policy-vpc)

La politique d'autorisations dont vous avez besoin dans les deux cas se trouve dans la section ci-dessous, [Autorisations des politiques pour les compartiments S3 Quick Setup](#patch-policy-bucket-permissions).

### Cas 1 : utiliser votre propre profil d'instance ou fonction du service avec vos nœuds gérés au lieu d'un profil fourni par Quick Setup
<a name="patch-policy-instance-profile-service-role"></a>

Les configurations des politiques de correctifs comprennent une option pour **Ajouter les politiques IAM requises aux profils d'instance existants attachés à vos instances**. 

Si vous ne choisissez pas cette option, mais que vous souhaitez que Quick Setup applique des correctifs à vos nœuds gérés à l'aide de cette politique de correctif, vous devez vous assurer que les éléments suivants sont mis en œuvre :
+ La politique `AmazonSSMManagedInstanceCore` gérée par IAM doit être associée au [profil d'instance IAM](setup-instance-permissions.md) ou à la [fonction du service IAM](hybrid-multicloud-service-role.md) utilisé pour fournir des autorisations Systems Manager à vos nœuds gérés.
+ Vous devez ajouter au profil d'instance IAM ou à la fonction du service IAM des autorisations d'accès à votre compartiment de politiques de correctifs en tant que politique en ligne. Vous pouvez fournir un accès générique à tous les compartiments `aws-quicksetup-patchpolicy` ou uniquement au compartiment spécifique créé pour votre organisation ou votre compte, comme indiqué dans les exemples de code précédents.
+ Vous devez baliser votre profil d'instance IAM ou votre fonction du service IAM à l'aide de la paire clé-valeur suivante.

  `Key: QSConfigId-quick-setup-configuration-id, Value: quick-setup-configuration-id`

  *quick-setup-configuration-id*représente la valeur du paramètre appliqué à la AWS CloudFormation pile utilisée pour créer la configuration de votre politique de correctifs. Pour récupérer cet ID, procédez comme suit :

  1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

  1. Sélectionnez le nom de la pile utilisée pour créer votre stratégie de correctif. Le nom est dans un format tel que `StackSet-AWS-QuickSetup-PatchPolicy-LA-q4bkg-52cd2f06-d0f9-499e-9818-d887cEXAMPLE`.

  1. Sélectionnez l'onglet **Paramètres**.

  1. Dans la liste des **paramètres**, dans la colonne **Clé**, recherchez l'**QSConfigurationID** de la clé. Dans la colonne **Valeur** de sa ligne, recherchez l'ID de configuration, tel que `abcde`.

     Dans cet exemple, pour que la balise s'applique à votre profil d'instance ou à votre fonction du service, la clé est `QSConfigId-abcde` et la valeur est `abcde`.

Pour plus d'informations sur l'ajout de balises à un rôle IAM, consultez les sections [Balisage des rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_roles.html#id_tags_roles_procs-console) et [Gestion des balises sur les profils d'instance (AWS CLI ou AWS API)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_instance-profiles.html#id_tags_instance-profile_procs-cli-api) dans le guide de l'utilisateur *IAM*.

### Cas 2 : utiliser les points de terminaison d'un VPC pour se connecter à Systems Manager
<a name="patch-policy-vpc"></a>

Si vous utilisez des points de terminaison d'un VPC pour vous connecter à Systems Manager, votre politique de point de terminaison d'un VPC pour S3 doit autorise l'accès au compartiment S3 de votre politique de correctifs Quick Setup.

Pour plus d'informations sur l'ajout d'autorisations à une politique de point de terminaison d'un VPC pour S3, consultez la section [Contrôle de l'accès depuis les points de terminaison d'un VPC avec des politiques de compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html) dans le *Guide de l'utilisateur Amazon S3*.

### Autorisations des politiques pour les compartiments S3 Quick Setup
<a name="patch-policy-bucket-permissions"></a>

Vous pouvez fournir un accès générique à tous les compartiments `aws-quicksetup-patchpolicy` ou uniquement au compartiment spécifique créé pour votre organisation ou votre compte. Pour fournir les autorisations nécessaires dans les deux cas décrits ci-dessous, utilisez l'un ou l'autre format.

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

------

**Note**  
Une fois la configuration de la politique de correctifs créée, vous pouvez localiser le nom complet de votre compartiment dans la console S3. Par exemple : `aws-quicksetup-patchpolicy-123456789012-abcde`

------

## Ligne de base de correctifs aléatoire IDs dans les opérations relatives aux politiques relatives aux correctifs
<a name="qs-patch-baselines-and-compliance"></a>

Les opérations d'application de correctifs pour les politiques de correctifs utilisent le paramètre `BaselineOverride` figurant dans le document de commande SSM `AWS-RunPatchBaseline`. 

Lorsque vous l'utilisez `AWS-RunPatchBaseline` pour appliquer des correctifs *en dehors* d'une politique de correctifs, vous pouvez utiliser `BaselineOverride` pour spécifier une liste de référentiels de correctifs à utiliser pendant l'opération qui sont différentes des valeurs par défaut spécifiées. Vous créez cette liste dans un fichier nommé `baseline_overrides.json` et vous l'ajoutez manuellement à un compartiment Amazon S3 que vous possédez, comme expliqué dans [Utilisation du BaselineOverride paramètre](patch-manager-baselineoverride-parameter.md).

Toutefois, pour les opérations d'application de correctifs basées sur des politiques de correctifs, Systems Manager crée automatiquement un compartiment S3 et y ajoute un fichier `baseline_overrides.json`. Ensuite, chaque fois que Quick Setup exécute une opération d’application de correctifs (à l’aide de l’outil Run Command), le système génère un ID aléatoire pour chaque référentiel de correctifs. Cet ID est différent pour chaque opération d'application de correctifs de la politique de correctifs et le référentiel de correctifs qu'il représente n'est ni stocké ni accessible dans votre compte. 

Par conséquent, vous ne verrez pas l'ID du référentiel de correctifs sélectionné dans votre configuration dans les journaux d'application de correctifs. Cela s'applique à la fois aux lignes de base de correctifs AWS gérées et aux lignes de base de correctifs personnalisées que vous avez peut-être sélectionnées. L'ID de référence indiqué dans le journal est plutôt celui qui a été généré pour cette opération spécifique d'application de correctifs.

En outre, si vous essayez d'afficher les détails dans Patch Manager concernant un référentiel de correctifs généré avec un ID aléatoire, le système indique que le référentiel de correctifs n'existe pas. Ce comportement est normal et peut être ignoré.

## Création d'une politique de correctif
<a name="create-patch-policy"></a>

Pour créer une politique de correctifs, exécutez les tâches suivantes dans la console Systems Manager.

**Créer une politique de correctifs avec Quick Setup**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

   Si vous configurez l'application de correctifs pour une organisation, assurez-vous d'être connecté au compte de gestion de l'organisation. Vous ne pouvez pas configurer la politique à l'aide du compte d'administrateur délégué ou d'un compte membre.

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **Patch Manager** (Gestionnaire de correctifs), choisissez **Create** (Créer).
**Astuce**  
Si vous avez déjà une ou plusieurs configurations dans votre compte, choisissez d'abord l'onglet **Bibliothèque** ou le bouton **Créer** dans la section **Configurations** pour afficher les cartes.

1. Pour **Configuration name** (Nom de configuration), saisissez un nom permettant d'identifier la politique de correctifs.

1. Dans la section **Scanning and installation** (Analyse et installation), sous **Patch operation** (Opération de correctif), choisissez si la politique de correctifs va **Scan** (Analyser) les cibles spécifiées ou **Scan and install** (Scanner et installer) des correctifs sur les cibles spécifiées.

1. Sous **Scanning schedule** (Planification d'analyse), choisissez **Use recommended defaults** (Utiliser les valeurs par défaut recommandées) ou **Custom scan schedule** (Planification d'analyse personnalisée). La planification d'analyse par défaut analysera vos cibles tous les jours à 1 h 00, UTC.
   + Si vous choisissez **Custom scan schedule** (Planification d'analyse personnalisée), sélectionnez la **Scanning frequency** (Fréquence d'analyse).
   + Si vous choisissez **Daily** (Quotidien), saisissez l'heure, au format UTC, à laquelle vous souhaitez analyser vos cibles. 
   + Si vous choisissez **Custom CRON Expression** (Expression CRON personnalisée), saisissez la planification en tant que **CRON expression** (Expression CRON). Pour plus d'informations sur le formatage des expressions CRON pour Systems Manager, consultez la rubrique [Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md).

     Sélectionnez également **Wait to scan targets until first CRON interval** (Attendre le premier intervalle CRON pour analyser les cibles). Par défaut, Patch Manager analyse immédiatement les nœuds lorsqu'ils deviennent des cibles.

1. Si vous avez choisi **Scan and install** (Analyser et installer), choisissez la **Installation schedule** (Planification d'installation) à utiliser lors de l'installation de correctifs sur les cibles spécifiées. Si vous choisissez **Use recommended defaults** (Utiliser les valeurs par défaut recommandées), Patch Manager installera des correctifs hebdomadaires le dimanche à 2 h 00, UTC.
   + Si vous choisissez **Custom install schedule** (Planification d'installation personnalisée), sélectionnez la **Installation frequency** (Fréquence d'installation).
   + Si vous choisissez **Daily** (Quotidien), saisissez l'heure, au format UTC, à laquelle vous souhaitez installer des mises à jour sur vos cibles.
   + Si vous choisissez **Custom CRON Expression** (Expression CRON personnalisée), saisissez la planification en tant que **CRON expression** (Expression CRON). Pour plus d'informations sur le formatage des expressions CRON pour Systems Manager, consultez la rubrique [Référence : Expressions Cron et Rate pour Systems Manager](reference-cron-and-rate-expressions.md).

     Désactivez également **Wait to install updates until first CRON interval** (Attendre le premier intervalle CRON pour installer les mises à jour) pour installer immédiatement les mises à jour sur les nœuds lorsqu'ils deviennent des cibles. Par défaut, Patch Manager attend le premier intervalle CRON pour installer les mises à jour.
   + Choisissez **Reboot if needed** (Redémarrer si nécessaire) pour redémarrer les nœuds après l'installation du correctif. Le redémarrage après l'installation est recommandé, mais peut entraîner des problèmes de disponibilité.

1. Dans la section **Patch baseline** (Référentiel de correctifs), choisissez les référentiels de correctifs à utiliser lors de l'analyse et de la mise à jour de vos cibles. 

   Par défaut, Patch Manager utilise les référentiels de correctifs prédéfinis. Pour de plus amples informations, veuillez consulter [Référentiels prédéfinis](patch-manager-predefined-and-custom-patch-baselines.md#patch-manager-baselines-pre-defined).

   Si vous choisissez une ligne de **base de correctifs personnalisée**, modifiez la ligne de base de correctifs sélectionnée pour les systèmes d'exploitation pour lesquels vous ne souhaitez pas utiliser une ligne de base de AWS correctifs prédéfinie.
**Note**  
Si vous utilisez des points de terminaison d'un VPC pour vous connecter à Systems Manager, assurez-vous que votre stratégie de point de terminaison d'un VPC pour S3 autorise l'accès à ce compartiment S3. Pour de plus amples informations, veuillez consulter [Autorisations pour le compartiment S3 de la politique de correctifs](#patch-policy-s3-bucket-permissions). 
**Important**  
Si vous utilisez une [configuration de politique de correctifs](patch-manager-policies.md) dans Quick Setup, les mises à jour que vous apportez aux référentiels de correctifs personnalisés sont synchronisées avec Quick Setup une fois par heure.   
Si un référentiel de correctifs personnalisé référencé dans une politique de correctifs est supprimé, une bannière s'affiche sur la page Quick Setup **Configuration details** (Détails de configuration) de votre politique de correctifs. La bannière vous informe que la politique de correctifs fait référence à un référentiel de correctifs qui n'existe plus et que les opérations d'application de correctifs suivantes échoueront. Dans ce cas, revenez à la page Quick Setup **Configurations**, sélectionnez la configuration Patch Manager, puis choisissez **Actions**, **Edit configuration** (Modifier la configuration). Le nom du référentiel de correctifs supprimé est surligné et vous devez sélectionner un nouveau référentiel de correctifs pour le système d'exploitation concerné.

1. (Facultatif) Dans la section **Patching log storage** (Application de correctifs au stockage des journaux), sélectionnez **Write output to S3 bucket** (Écrire la sortie dans le compartiment S3) pour stocker les journaux des opérations d'application de correctifs dans un compartiment Amazon S3. 
**Note**  
Si vous configurez une politique de correctifs pour une organisation, le compte de gestion de votre organisation doit disposer au moins d'autorisations en lecture seule pour ce compartiment. Toutes les unités organisationnelles incluses dans la politique doivent disposer d'un accès en écriture au compartiment. Pour plus d'informations sur l'octroi de l'accès aux compartiments à différents comptes, consultez l'[Exemple 2 : propriétaire d'un compartiment accordant à ses utilisateurs des autorisations entre comptes sur un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html) dans le *Guide de l'utilisateur Amazon Simple Storage Service*.

1. Choisissez **Parcourir S3** pour sélectionner le compartiment dans lequel vous souhaitez stocker les sorties de journaux des correctifs. Le compte de gestion doit avoir un accès en lecture à ce compartiment. Tous les comptes et cibles non liés à la gestion configurés dans la section **Targets** (Cibles) doivent disposer d'un accès en écriture au compartiment S3 fourni à des fins de journalisation.

1. Dans la section **Targets** (Cibles), choisissez l'une des options suivantes pour identifier les comptes et les régions concernés par cette opération de politique de correctifs.
**Note**  
Si vous travaillez avec un seul compte, les options permettant de travailler avec les organisations et les unités organisationnelles (OUs) ne sont pas disponibles. Vous pouvez choisir d’appliquer cette configuration à toutes les Régions AWS de votre compte ou uniquement aux régions que vous sélectionnez.  
Si vous avez précédemment spécifié une région d’origine pour votre compte et que vous n’avez pas encore adopté la nouvelle expérience de la console Quick Setup, vous ne pouvez pas exclure cette région de la configuration des **cibles**.
   + **Entire organization** (Organisation entière) : tous les comptes et toutes les régions de votre organisation.
   + **Personnalisé** : uniquement les régions OUs et que vous spécifiez.
     + Dans la OUs section **Cible**, sélectionnez l' OUs endroit où vous souhaitez configurer la politique de correctifs. 
     + Dans la section **Target Regions** (Régions cibles), sélectionnez les régions dans lesquelles vous souhaitez appliquer la politique de correctifs. 
   + **Current account** (Compte actuel) : seules les régions que vous spécifiez dans le compte auquel vous êtes actuellement connecté sont ciblées. Sélectionnez l'une des méthodes suivantes :
     + **Current Region** (Région actuelle) : seuls les nœuds gérés de la région sélectionnée dans la console sont ciblés. 
     + **Choose Regions** (Choisir les régions) : choisissez les régions individuelles auxquelles appliquer la politique de correctifs.

1. Pour **Choose how you want to target instances** (Choisissez la manière dont vous souhaitez cibler les instances), choisissez l'une des options suivantes pour identifier les nœuds auxquels appliquer des correctifs : 
   + **Tous les nœuds gérés** : tous les nœuds gérés dans les régions OUs et les régions sélectionnées.
   + **Specify the resource group** (Spécifier le groupe de ressources) : choisissez le nom d'un groupe de ressources dans la liste pour cibler les ressources qui lui sont associées.
**Note**  
Actuellement, la sélection de groupes de ressources n'est prise en charge que pour les configurations à compte unique. Pour appliquer des correctifs aux ressources de plusieurs comptes, choisissez une autre option de ciblage.
   + **Specify a node tag** (Spécifier une balise de nœud) : seuls les nœuds balisés avec la paire clé-valeur que vous spécifiez sont corrigés dans tous les comptes et régions que vous avez ciblés. 
   + **Manual** (Manuel) : choisissez manuellement les nœuds gérés parmi tous les comptes et régions spécifiés dans une liste.
**Note**  
Actuellement, cette option ne prend en charge que les instances Amazon EC2. Vous pouvez ajouter un maximum de 25 instances manuellement dans une configuration de politique de correctifs.

1. Dans la section **Rate control** (Contrôle de taux), procédez comme suit :
   + Pour **Concurrency** (Simultanéité), saisissez un nombre ou un pourcentage de nœuds sur lesquels exécuter la politique de correctifs en même temps.
   + Dans **Error threshold** (Seuil d'erreur), saisissez le nombre ou le pourcentage de nœuds susceptibles de rencontrer une erreur avant que la politique de correctifs n'échoue.

1. (Facultatif) Sélectionnez **Ajouter les politiques IAM requises aux profils d'instance existants affectés à vos instances**.

   Cette sélection applique les politiques IAM créées par cette configuration Quick Setup aux nœuds auxquels un profil d'instance (instances EC2) ou une fonction du service (nœuds activés par un système hybride) sont déjà affectés. Nous vous recommandons de sélectionner cette option lorsque vos nœuds gérés sont déjà associés à un profil d'instance ou à une fonction du service, mais que ce dernier ou cette dernière ne contient pas toutes les autorisations requises pour travailler avec Systems Manager.

   Votre sélection s'applique aux nœuds gérés créés ultérieurement dans les comptes et les régions auxquels cette configuration de politique de correctifs s'applique.
**Important**  
Si vous ne cochez pas cette case, mais que vous souhaitez que Quick Setup applique des correctifs à vos nœuds gérés à l'aide de cette stratégie de correctif, vous devez procéder comme suit :  
Ajoutez des autorisations à votre [profil d'instance IAM](setup-instance-permissions.md) ou à votre [Fonction du service IAM](hybrid-multicloud-service-role.md) pour accéder au compartiment S3 créé pour votre politique de correctifs  
Balisez votre profil d'instance IAM ou votre fonction du service IAM avec une paire clé-valeur spécifique.  
Pour plus d'informations, consultez [Cas 1 : utiliser votre propre profil d'instance ou fonction du service avec vos nœuds gérés au lieu d'un profil fourni par Quick Setup](#patch-policy-instance-profile-service-role).

1. Choisissez **Créer**.

   Pour vérifier le statut d'application des correctifs une fois la politique de correctifs créée, vous pouvez accéder à la configuration depuis la page [https://console.aws.amazon.com/systems-manager/quick-setup](https://console.aws.amazon.com/systems-manager/quick-setup).

# Configurer DevOps Guru à l’aide de Quick Setup
<a name="quick-setup-devops"></a>

Vous pouvez configurer rapidement des options DevOps Guru en utilisant Quick Setup. Amazon DevOps Guru est un service basé sur le machine learning (ML), qui facilite l'amélioration des performances opérationnelles et de la disponibilité d'une application. DevOps Guru détecte des comportements qui diffèrent des modèles d'exploitation normaux, ce qui vous permet d'identifier les problèmes opérationnels bien avant qu'ils n'affectent vos clients. DevOps Guru intègre automatiquement les données opérationnelles de vos applications AWS et fournit un tableau de bord unique pour visualiser les problèmes liés à vos données opérationnelles. Vous pouvez commencer à utiliser DevOps Guru pour améliorer la disponibilité et la fiabilité des applications, même sans expertise en configuration manuelle ou en machine learning.

La configuration de DevOps Guru avec Quick Setup est disponible dans les Régions AWS suivantes :
+ USA Est (Virginie du Nord)
+ USA Est (Ohio)
+ USA Ouest (Oregon)
+ Europe (Francfort)
+ Europe (Irlande)
+ Europe (Stockholm)
+ Asie-Pacifique (Singapour)
+ Asie-Pacifique (Sydney)
+ Asia Pacific (Tokyo)

Pour de plus amples informations sur la tarification, veuillez consulter [Tarification Amazon DevOps Guru](https://aws.amazon.com/devops-guru/pricing/).

Pour configurer DevOps Guru, exécutez les tâches suivantes dans la console AWS Systems Manager Quick Setup.

**Pour configurer DevOps Guru avec Quick Setup**

1. Ouvrez la console AWS Systems Manager à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **DevOps Guru**, sélectionnez **Créer**.
**Astuce**  
Si vous avez déjà une ou plusieurs configurations dans votre compte, choisissez d'abord l'onglet **Bibliothèque** ou le bouton **Créer** dans la section **Configurations** pour afficher les cartes.

1. Dans la section **Configuration options (Options de configuration)**, sélectionnez les types de ressources AWS que vous voulez analyser, ainsi que vos préférences de notification.

   Si vous ne sélectionnez pas l'option **Analyze all AWS resources in all the accounts in my organization (Analyser toutes les ressources AWS dans tous les comptes de mon organisation)**, vous pourrez choisir les ressources AWS à analyser ultérieurement dans la console DevOps Guru. DevOps Guru analyse différents types de ressources AWS (tels que des compartiments Amazon Simple Storage Service (Amazon S3) et des instances Amazon Elastic Compute Cloud (Amazon EC2)), qui sont classés en deux groupes de tarification. Vous payez les heures de ressources AWS analysées, pour chaque ressource active. Une ressource n'est active que si elle produit des métriques, des événements ou des entrées de journal dans un délai d'une heure. Le tarif qui vous est facturé pour un type de ressource AWS particulier dépend du groupe de tarification.

   Si vous sélectionnez l'option **Enable SNS notifications (Activer les notifications SNS)**, une rubrique Amazon Simple Notification Service (Amazon SNS) est créée dans chaque Compte AWS des unités organisationnelles (UO) que vous ciblez avec votre configuration. DevOps Guru utilise cette rubrique pour vous informer d'importants événements DevOps Guru, tels que la création d'une nouvelle information. Si vous n'activez pas cette option, vous pourrez ajouter une rubrique ultérieurement dans la console DevOps Guru.

   Si vous sélectionnez l'option **Enable AWS Systems Manager OpsItems** (Activer des OpsItems SYSlong), des éléments de travail opérationnels (OpsItems) seront créés pour les événements Amazon EventBridge et les alarmes Amazon CloudWatch associés.

1. Dans la section **Planification**, sélectionnez la fréquence à laquelle vous voulez que Quick Setup corrige les modifications apportées aux ressources qui diffèrent de votre configuration. L'option **Défaut (Par défaut)** s'exécute une seule fois. Si vous ne voulez pas que Quick Setup corrige les modifications apportées aux ressources qui diffèrent de votre configuration, sélectionnez **Disabled (Désactivé)** sous **Custom (Personnalisé)**.

1. Dans la section **Targets (Cibles)**, sélectionnez si vous voulez autoriser DevOps Guru à analyser les ressources de certaines de vos unités organisationnelles (UO) ou du compte auquel vous êtes actuellement connecté.

   Si vous sélectionnez **Custom (Personnalisé)**, passez à l'étape 8.

   Si vous sélectionnez **Compte actuel**, passez à l'étape 9.

1. Dans les sections **Target OU (UO cibles)** et **Target Regions (Régions cibles)**, cochez les cases des UO et des régions dans lesquelles vous voulez utiliser DevOps Guru.

1. Sélectionnez les régions dans lesquelles vous voulez utiliser DevOps Guru dans le compte actuel.

1. Choisissez **Créer**.

# Déployer les packages Distributor en utilisant Quick Setup
<a name="quick-setup-distributor"></a>

Distributorest un outil dans AWS Systems Manager. Un package Distributor est un ensemble de logiciels ou de ressources installables qui peuvent être déployés en tant qu'une entité unique. AvecQuick Setup, vous pouvez déployer un Distributor package dans une Compte AWS et une Région AWS ou plusieurs organisations dans AWS Organizations. Actuellement, seuls l'agent EC2 Launch v2, le package d'utilitaires Amazon Elastic File System (Amazon EFS) et CloudWatch l'agent Amazon peuvent être déployés avecQuick Setup. Pour plus d’informations sur Distributor, consultez [AWS Systems Manager Distributor](distributor.md).

Pour déployer Distributor des packages, effectuez les tâches suivantes dans la AWS Systems Manager Quick Setup console.

**Pour déployer des packages Distributor avec Quick Setup**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **Distributeur**, sélectionnez **Créer**.
**Astuce**  
Si vous avez déjà une ou plusieurs configurations dans votre compte, choisissez d'abord l'onglet **Bibliothèque** ou le bouton **Créer** dans la section **Configurations** pour afficher les cartes.

1. Dans la section **Configuration options (Options de configuration)**, sélectionnez le package que vous voulez déployer.

1. Dans la section **Cibles**, choisissez de déployer le package dans l'ensemble de votre organisation, dans certaines de vos unités organisationnelles (OUs) ou sur le compte auquel vous êtes actuellement connecté.

   Si vous sélectionnez **Entire organization (Ensemble de l'organisation)**, passez à l'étape 8.

   Si vous sélectionnez **Personnalisé**, passez à l'étape 7.

1. Dans la OUs section **Cible**, cochez les cases OUs et les régions dans lesquelles vous souhaitez déployer le package.

1. Choisissez **Créer**.

# Arrêter et démarrer les instances EC2 automatiquement selon un calendrier en utilisant Quick Setup
<a name="quick-setup-scheduler"></a>

À l'aide Quick Setup d'un outil AWS Systems Manager, vous pouvez configurer Resource Scheduler pour automatiser le démarrage et l'arrêt des instances Amazon Elastic Compute Cloud (Amazon EC2).

Cette configuration Quick Setup vous permet de réduire les coûts de fonctionnement en démarrant et en arrêtant les instances selon la planification que vous spécifiez. Cet outil vous permet d’éviter les coûts inutiles liés à l’exécution d’instances lorsqu’elles ne sont pas nécessaires. 

Par exemple, il est possible que vous laissiez vos instances s'exécuter en permanence, même si elles ne sont utilisées que 10 heures par jour, 5 jours par semaine. Vous pouvez plutôt planifier l'arrêt de vos instances tous les jours après les heures ouvrables. Ainsi, vous obtiendrez 70 % d'économies pour ces instances, car la durée d'exécution passerait de 168 à 50 heures. Aucun frais d'utilisation Quick Setup. Toutefois, des coûts peuvent être encourus en fonction des ressources configurées et des limites d'utilisation, sans frais pour les services utilisés pour votre configuration.

À l'aide du planificateur de ressources, vous pouvez choisir d'arrêter et de démarrer automatiquement des instances sur plusieurs instances Régions AWS et Comptes AWS selon un calendrier que vous définissez. La configuration Quick Setup cible les instances Amazon EC2 à l'aide de la clé et de la valeur de balise que vous spécifiez. Seules les instances dont la balise correspond à la valeur que vous spécifiez dans votre configuration sont arrêtées ou démarrées par le Planificateur de ressources. Notez que si les volumes Amazon EBS attachés à l'instance sont chiffrés, vous devez ajouter les autorisations requises pour la AWS KMS clé du rôle IAM afin que le Resource Scheduler démarre l'instance.

**Nombre maximal d’instances par configuration**  
Une configuration individuelle permet de planifier jusqu'à 5 000 instances par région. Si votre situation nécessite la planification de plus de 5 000 instances dans une région donnée, vous devez créer plusieurs configurations. Balisez vos instances en conséquence afin que chaque configuration gère jusqu'à 5 000 instances. Lorsque vous créez plusieurs configurations Quick Setup de Planificateur de ressources, vous devez spécifier différentes valeurs de clé de balise. Par exemple, une configuration peut utiliser la clé de balise `Environment` avec la valeur `Production`, tandis qu’une autre utilise `Environment` et `Development`.

**Comportements de planification**  
Les points suivants décrivent certains comportements des configurations de planification :
+ Le Planificateur de ressources démarre les instances balisées uniquement si elles sont à l'état `Stopped`. De même, les instances ne sont arrêtées que si elles sont à l'état `running`. Le Planificateur de ressources fonctionne selon un modèle piloté par les événements et ne démarre ou n'arrête les instances qu'aux heures que vous spécifiez. Par exemple, vous créez une planification qui démarre les instances à 9 h. Le Planificateur de ressources démarre toutes les instances associées à la balise que vous spécifiez et qui sont à l'état `Stopped` à 9 h. Si les instances sont arrêtées manuellement ultérieurement, le Planificateur de ressources ne les redémarrera pas pour maintenir l'état `Running`. De même, si une instance est démarrée manuellement après avoir été arrêtée conformément à votre planification, le Planificateur de ressources n'arrêtera pas l'instance à nouveau.
+ Si vous créez une planification avec une heure de début ultérieure à l’heure de fin dans un jour de 24 h, le Planificateur de ressources suppose que vos instances s’exécutent pendant la nuit. Par exemple, vous créez une planification qui démarre les instances à 21 h 00 et les arrête à 7 h 00. Le Planificateur de ressources démarre toutes les instances associées à la balise que vous spécifiez et qui sont à l'état `Stopped` à 21 h 00 et les arrête à 7 h 00 le lendemain. Pour les planifications de nuit, l'heure de début s'applique aux jours que vous sélectionnez pour votre planification. Toutefois, l'heure d'arrêt s'applique au jour suivant de votre planification.
+ Lorsque vous créez une configuration de planification, l’état actuel de vos instances peut être modifié pour répondre aux exigences de la planification.

  *Par exemple, supposons que nous sommes mercredi et que vous spécifiez un calendrier pour que vos instances gérées commencent à 9 h et s’arrêtent à 17 h les mardis et jeudis uniquement.* Comme votre heure actuelle est en dehors des heures prescrites pour l’exécution des instances, celles-ci seront arrêtées une fois la configuration créée. Les instances ne s’exécuteront pas à nouveau avant la prochaine heure prescrite, à 9 h le jeudi. 

  Si vos instances sont actuellement dans l’état `Stopped` et que vous spécifiez un calendrier dans lequel elles seront exécutées à l’heure actuelle, le Planificateur de ressources les démarre une fois la configuration créée.

Si vous supprimez votre configuration, les instances ne sont plus arrêtées ni démarrées selon la planification précédemment définie. Dans de rares cas, les instances peuvent ne pas s'arrêter ou démarrer correctement en raison d'échecs de fonctionnement de l'API.

Pour configurer la planification pour les instances Amazon EC2, effectuez les tâches suivantes dans la AWS Systems Manager Quick Setup console.

**Configurer la planification des instances avec Quick Setup**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **Planificateur de ressources**, sélectionnez **Créer**.
**Astuce**  
Si vous avez déjà une ou plusieurs configurations dans votre compte, choisissez d'abord l'onglet **Bibliothèque** ou le bouton **Créer** dans la section **Configurations** pour afficher les cartes.

1. Dans la section **Instance tag** (Balise d'instance), spécifiez la clé et la valeur de balise appliquées aux instances que vous souhaitez associer à votre planification.

1. Dans la section **Schedule options** (Options de planification), spécifiez le fuseau horaire, les jours et les heures auxquels vous souhaitez démarrer et arrêter vos instances.

1. Dans la section **Cibles**, choisissez de définir la planification pour un groupe **personnalisé** d'unités organisationnelles (OUs) ou pour le **compte actuel** auquel vous êtes connecté :
   + **Personnalisé** : dans la OUs section **Cible**, sélectionnez l' OUs endroit où vous souhaitez configurer la planification. Ensuite, dans la section **Target Regions** (Régions cibles), sélectionnez les régions dans lesquelles vous souhaitez configurer la planification.
   + **Compte actuel** : sélectionnez **Current Region (Région actuelle)** ou **Choose Regions (Choisir des régions)**. Si vous avez sélectionné **Choose Regions** (Choisir les régions), choisissez les **Target Regions** (Régions cibles) dans lesquelles vous souhaitez configurer la planification.

1. Vérifiez les informations de planification dans la section **Summary** (Résumé).

1. Choisissez **Créer**.

# Configuration à Explorateur de ressources AWS l'aide de Quick Setup
<a name="Resource-explorer-quick-setup"></a>

Grâce Quick Setup à un outil intégré AWS Systems Manager, vous pouvez rapidement le configurer Explorateur de ressources AWS pour rechercher et découvrir des ressources au sein de votre AWS organisation Compte AWS ou dans l'ensemble de celle-ci. Vous pouvez rechercher vos ressources à l'aide de métadonnées telles que les noms, les balises et IDs. Explorateur de ressources AWS fournit des réponses rapides à vos requêtes de recherche en utilisant *des index.* Resource Explorer crée et gère des index à l’aide de diverses sources de données pour recueillir des informations sur les ressources de votre Compte AWS. 

Quick Setup pour Resource Explorer automatise le processus de configuration de l’index. Pour plus d'informations Explorateur de ressources AWS, voir [Qu'est-ce que c'est Explorateur de ressources AWS ?](https://docs.aws.amazon.com/resource-explorer/latest/userguide/welcome.html) dans le guide de Explorateur de ressources AWS l'utilisateur.

Lors de Quick Setup, Resource Explorer effectue ce qui suit : 
+ Crée un index Région AWS dans chaque élément de votre Compte AWS.
+ Met à jour l’index dans la région que vous spécifiez comme index agrégateur pour le compte.
+ Crée une vue par défaut dans l’index agrégateur région. Cette vue ne comporte aucun filtre et renvoie donc toutes les ressources présentes dans l’index.

**Autorisations minimales**

Pour effectuer les étapes dans la procédure suivante, vous devez disposer des autorisations suivantes :
+ **Action** : `resource-explorer-2:*` – **Ressource** : aucune ressource spécifique (`*`)
+ **Action** : `iam:CreateServiceLinkedRole` – **Ressource** : aucune ressource spécifique (`*`)

**Pour configurer Resource Explorer**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, sélectionnez **Quick Setup**.

1. Sur la carte **Resource Explorer**, sélectionnez **Créer**.

1. Dans la section **Région de l’index agrégateur**, sélectionnez la région dans laquelle vous souhaitez placer l’**index agrégateur**. Vous devez sélectionner la région correspondant à l’emplacement géographique de vos utilisateurs.

1. (Facultatif) Cochez la case **Remplacer les index d’agrégation existants dans des régions autres que celle sélectionnée ci-dessus**. 

1. Dans la section **Cibles**, choisissez l'**organisation** cible ou des **unités organisationnelles spécifiques (OUs)** contenant les ressources que vous souhaitez découvrir. 

1. Dans la section **Régions**, sélectionnez les **Régions** à inclure dans la configuration. 

1. Examinez le résumé de la configuration et ensuite sélectionnez **Créer**. 

Sur la page **Explorateur de ressources**, vous pouvez surveiller le statut de la configuration.

# Résolution des problèmes liés aux résultats Quick Setup
<a name="quick-setup-results-troubleshooting"></a>

Utilisez les informations suivantes pour résoudre les problèmes liés à Quick Setup, un outil de AWS Systems Manager. Cette rubrique inclut des tâches spécifiques pour résoudre les problèmes en fonction du type de problème Quick Setup.

**Problème : échec du déploiement**  
Un déploiement échoue si le CloudFormation stack set a échoué lors de sa création. Suivez les étapes suivantes pour enquêter sur un échec de déploiement.

1. Accédez à la [console AWS CloudFormation](https://console.aws.amazon.com/cloudformation). 

1. Sélectionnez la pile créée par votre configuration Quick Setup. Le **Stack name** (Nom de la pile) comprend `QuickSetup` suivi du type de configuration que vous avez choisi, par exemple, `SSMHostMgmt`. 
**Note**  
CloudFormation supprime parfois les déploiements de stack ayant échoué. Si la pile n'est pas disponible dans le tableau **Stacks** (Piles), sélectionnez **Deleted** (Supprimé) dans la liste des filtres.

1. Affichez les éléments **Status** (Statut) et **Status reason** (Raison du statut). Pour plus d'informations sur les statuts de pile, consultez [Codes de statut de la pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html#cfn-console-view-stack-data-resources-status-codes) dans le *Guide de l'utilisateur AWS CloudFormation *. 

1. Pour comprendre l'étape exacte qui a échoué, consultez l'onglet **Events** (Événements) et passez en revue chaque **Status** (Statut) d'événement. 

1. Consultez la section [Dépannage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html) dans le *Guide de l'utilisateur AWS CloudFormation *.

1. Si vous ne parvenez pas à résoudre l'échec du déploiement à l'aide des étapes de CloudFormation dépannage, supprimez la configuration et reconfigurez-la.

**Problème : échec de l’association**  
Le tableau **Configuration details** (Détails de la configuration) dans la page **Configuration details** (Détails de la configuration) de vos paramètres affichera **Failed** (Échec) comme **Configuration status** (Statut de configuration) si l'une des associations a échoué pendant la configuration. Procédez comme suit pour résoudre les problèmes d'une association ayant échoué.

1. Dans **Configuration details** (Détails de la configuration), sélectionnez la configuration qui a échoué, puis sélectionnez **View details** (Afficher les détails).

1. Copiez le **Association name** (Nom de l'association).

1. Accédez à **State Manager** et collez le nom de l'association dans le champ de recherche. 

1. Sélectionnez l'association et sélectionnez l'onglet **Execution history** (Historique d'exécution).

1. Sous **Execution ID (ID d'exécution)**, sélectionnez l'exécution d'association qui a échoué.

1. La page **Association execution targets (Cibles d'exécution d'association)** répertorie tous les nœuds sur lesquels l'association s'est exécutée. Sélectionnez le bouton **Output (Sortie)** pour une exécution dont l'exécution a échoué.

1. Sur la page **Output (Sortie)**, sélectionnez **Step - Output (Étape - Sortie)** pour afficher le message d'erreur pour cette étape dans l'exécution de la commande. Chaque étape peut afficher un message d'erreur différent. Passez en revue les messages d'erreur de toutes les étapes afin de faciliter la résolution du problème.
Si l'affichage de la sortie de l'étape ne résout pas le problème, vous pouvez essayer de recréer l'association. Pour recréer l'association, supprimez d'abord l'association défaillante dans State Manager. Après avoir supprimé l'association, modifiez la configuration et sélectionnez l'option que vous avez supprimée, puis **Update** (Mettre à jour).  
Pour enquêter sur les associations au statut **Failed** (Échec) pour une configuration **Organization** (Organisation), vous devez vous connecter au compte avec l'association ayant échoué et utiliser la procédure d'association ayant échoué suivante, décrite précédemment. L'**ID d'association** n'est pas un hyperlien vers le compte cible lors de l'affichage des résultats à partir du compte de gestion.

**Problème : statut de dérive**  
Lorsque vous consultez la page détaillée d'une configuration, vous pouvez afficher le statut de l'écart de chaque déploiement. Une dérive de configuration se produit chaque fois qu'une modification apportée par un utilisateur à un service ou une fonction entre en conflit avec les sélections effectuées via Quick Setup. Si une association a changé après la configuration initiale, le tableau affiche une icône d'avertissement indiquant le nombre d'éléments présentant des écarts. Vous pouvez déterminer la cause de l'écart en survolant l'icône. 
Lorsqu'une association est supprimée dans State Manager, les déploiements associés affichent un avertissement d'écart. Pour résoudre ce problème, modifiez la configuration et sélectionnez l'option qui a été supprimée lorsque l'association a été supprimée. Sélectionnez **Update** (Mettre à jour) et attendez la fin du déploiement.