

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