

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

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