

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.

# Autres cas d'utilisation des scripts antérieurs et postérieurs à Data Lifecycle Manager
<a name="script-other-use-cases"></a>

Outre l’automatisation des instantanés cohérents par rapport à l’application, vous pouvez utiliser les pré-scripts et les post-scripts ensemble ou séparément pour automatiser d’autres tâches administratives avant ou après la création des instantanés. Par exemple :
+ Utilisation d’un pré-script pour appliquer des correctifs avant la création d’instantanés. Cela peut vous aider à créer des instantanés après avoir appliqué vos mises à jour logicielles hebdomadaires ou mensuelles régulières.
**Note**  
Si vous choisissez d’exécuter uniquement un pré-script, l’option **Prise par défaut d’instantanés en cas de panne** est activée par défaut.
+ Utilisation d’un post-script pour appliquer des correctifs après la création d’instantanés. Cela peut vous aider à créer des instantanés avant d’appliquer vos mises à jour logicielles hebdomadaires ou mensuelles régulières.

## Démarrage pour d’autres cas d’utilisation
<a name="dlm-script-other"></a>

Cette section explique les étapes à suivre lorsque vous utilisez des scripts de and/or pré-publication pour des **cas d'utilisation autres que des instantanés cohérents avec les applications**.

### Étape 1 : Préparer les instances cibles
<a name="dlm-script-other-prep-instance"></a>

**Pour préparer vos instances cibles pour les scripts de and/or pré-publication**

1. Installez l’agent SSM sur vos instances cibles, s’il n’est pas déjà installé. Si l’agent SSM est déjà installé sur vos instances cibles, ignorez cette étape. 
   + (Instances Linux) [Installation manuelle de l'agent SSM sur les instances EC2](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html) pour Linux
   + (instances Windows) [Utilisation de l'agent SSM sur les instances EC2 pour](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-windows.html) Windows Server

1. Assurez-vous que l’agent SSM est en cours d’exécution. Pour plus d’informations, consultez [Vérification du statut de l’SSM Agent et démarrage de l’agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-status-and-restart.html).

1. Configurez Systems Manager pour des instances Amazon EC2. Pour plus d’informations, consultez [Configuration de Systems Manager pour des instances Amazon EC2](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-ec2.html) dans le *Guide de l’utilisateur AWS Systems Manager *.

### Étape 2 : Préparer le document SSM
<a name="dlm-script-other-prep-document"></a>

Vous devez créer un document de commande SSM qui inclut les scripts de and/or pré-publication avec les commandes que vous souhaitez exécuter.

Vous pouvez créer un document SSM à l’aide du modèle de document SSM vide ci-dessous et ajouter vos commandes pré-script et post-script dans les sections de document appropriées.

**Notez ce qui suit :**  
Il est de votre responsabilité de vous assurer que le document SSM exécute les actions correctes et requises pour votre charge de travail.
Le document SSM doit inclure les champs obligatoires pour `allowedValues`, notamment `pre-script`, `post-script` et `dry-run`. Amazon Data Lifecycle Manager exécutera des commandes sur votre instance en fonction du contenu de ces sections. Si votre document SSM ne contient pas ces sections, Amazon Data Lifecycle Manager le considérera comme un échec d’exécution.

```
###===============================================================================###
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

# Permission is hereby granted, free of charge, to any person obtaining a copy of this
# software and associated documentation files (the "Software"), to deal in the Software
# without restriction, including without limitation the rights to use, copy, modify,
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
###===============================================================================###
schemaVersion: '2.2'
description: SSM Document Template for Amazon Data Lifecycle Manager Pre/Post script feature
parameters:
  executionId:
    type: String
    default: None
    description: (Required) Specifies the unique identifier associated with a pre and/or post execution
    allowedPattern: ^(None|[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})$
  command:
  # Data Lifecycle Manager will trigger the pre-script and post-script actions during policy execution. 
  # 'dry-run' option is intended for validating the document execution without triggering any commands
  # on the instance. The following allowedValues will allow Data Lifecycle Manager to successfully 
  # trigger pre and post script actions.
    type: String
    default: 'dry-run'
    description: (Required) Specifies whether pre-script and/or post-script should be executed.
    allowedValues:
    - pre-script
    - post-script
    - dry-run

mainSteps:
- action: aws:runShellScript
  description: Run Database freeze/thaw commands
  name: run_pre_post_scripts
  precondition:
    StringEquals:
    - platformType
    - Linux
  inputs:
    runCommand:
    - |
      #!/bin/bash

      ###===============================================================================###
      ### Error Codes
      ###===============================================================================###
      # The following Error codes will inform Data Lifecycle Manager of the type of error 
      # and help guide handling of the error. 
      # The Error code will also be emitted via AWS Eventbridge events in the 'cause' field.
      # 1 Pre-script failed during execution - 201
      # 2 Post-script failed during execution - 202
      # 3 Auto thaw occurred before post-script was initiated - 203
      # 4 Pre-script initiated while post-script was expected - 204
      # 5 Post-script initiated while pre-script was expected - 205
      # 6 Application not ready for pre or post-script initiation - 206

      ###===============================================================================###
      ### Global variables
      ###===============================================================================###
      START=$(date +%s)
      # For testing this script locally, replace the below with OPERATION=$1.
      OPERATION={{ command }}

      # Add all pre-script actions to be performed within the function below
      execute_pre_script() {
          echo "INFO: Start execution of pre-script"
      }

      # Add all post-script actions to be performed within the function below
      execute_post_script() {
          echo "INFO: Start execution of post-script"
      }

      # Debug logging for parameters passed to the SSM document
      echo "INFO: ${OPERATION} starting at $(date) with executionId: ${EXECUTION_ID}"

      # Based on the command parameter value execute the function that supports 
      # pre-script/post-script operation
      case ${OPERATION} in
          pre-script)
              execute_pre_script
              ;;
          post-script)
              execute_post_script
              ;;
          dry-run)
              echo "INFO: dry-run option invoked - taking no action"
              ;;
          *)
              echo "ERROR: Invalid command parameter passed. Please use either pre-script, post-script, dry-run."
              exit 1 # return failure
              ;;
      esac

      END=$(date +%s)
      # Debug Log for profiling the script time
      echo "INFO: ${OPERATION} completed at $(date). Total runtime: $((${END} - ${START})) seconds."
```

### Étape 3 : Préparer le rôle IAM d’Amazon Data Lifecycle Manager
<a name="dlm-script-other-prep-role"></a>

**Note**  
Cette étape est nécessaire si :  
Vous créez ou mettez à jour une politique de capture instantanée pre/post activée par script qui utilise un rôle IAM personnalisé.
Vous utilisez la ligne de commande pour créer ou mettre à jour une politique de capture instantanée pre/post activée par script qui utilise la valeur par défaut.
Si vous utilisez la console pour créer ou mettre à jour une politique d'instantanés pre/post activée par script qui utilise le rôle par défaut pour la gestion des instantanés (**AWSDataLifecycleManagerDefaultRole**), ignorez cette étape. Dans ce cas, nous associons automatiquement la politique **AWSDataLifecycleManagerSSMFulld'accès** à ce rôle.

Vous devez vous assurer que ce rôle IAM que vous utilisez pour la politique accorde à Amazon Data Lifecycle Manager l’autorisation d’effectuer les actions SSM requises pour exécuter les pré-scripts et les post-scripts sur les instances ciblées par la politique.

Amazon Data Lifecycle Manager fournit une politique gérée (**AWSDataLifecycleManagerSSMFullAccess**) qui inclut les autorisations requises. Vous pouvez associer cette politique à votre rôle IAM pour gérer les instantanés afin de vous assurer qu’elle inclut les autorisations.

**Important**  
La politique AWSData LifecycleManager SSMFull d'accès géré utilise la clé de `aws:ResourceTag` condition pour restreindre l'accès à des documents SSM spécifiques lors de l'utilisation de scripts pré et post. Pour autoriser Amazon Data Lifecycle Manager à accéder aux documents SSM, vous devez vous assurer que vos documents SSM sont balisés avec `DLMScriptsAccess:true`.

Vous pouvez également créer manuellement une politique personnalisée ou attribuer les autorisations requises directement au rôle IAM que vous utilisez. Vous pouvez utiliser les mêmes autorisations que celles définies dans la politique AWSData LifecycleManager SSMFull d'accès géré, mais la clé de `aws:ResourceTag` condition est facultative. Si vous décidez de ne pas utiliser cette clé de condition, vous n’avez pas besoin de baliser vos documents SSM avec `DLMScriptsAccess:true`.

Utilisez l'une des méthodes suivantes pour ajouter la politique **AWSDataLifecycleManagerSSMFulld'accès** à votre rôle IAM.

------
#### [ Console ]

**Pour attacher la politique gérée à votre rôle personnalisé**

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

1. Dans le panneau de navigation, choisissez **Roles (Rôles)**.

1. Recherchez et sélectionnez votre rôle personnalisé pour la gestion des instantanés.

1. Sous l’onglet **Permissions** (Autorisations), choisissez **Add Permissions** (Ajouter des autorisations), **Attach policies (Attacher des politiques)**.

1. Recherchez et sélectionnez la politique **AWSDataLifecycleManagerSSMFulld'accès** géré, puis choisissez **Ajouter des autorisations**.

------
#### [ AWS CLI ]

**Pour attacher la politique gérée à votre rôle personnalisé**  
Utilisez la commande [ attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html). Pour `---role-name`, spécifiez le nom de votre rôle personnalisé. Pour `--policy-arn`, spécifiez `arn:aws:iam::aws:policy/AWSDataLifecycleManagerSSMFullAccess`.

```
$ aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AWSDataLifecycleManagerSSMFullAccess \
--role-name your_role_name
```

------

### Création d’une politique de cycle de vie des instantanés
<a name="dlm-script-other-prep-policy"></a>

------
#### [ Console ]

**Pour créer la politique de cycle de vie des instantanés**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le panneau de navigation, sélectionnez **Elastic Block Store**, **Gestionnaire de cycle de vie**, puis **Créer une stratégie de cycle de vie d’instantané**.

1. Dans la page **Sélectionner un type de stratégie**, choisissez **Stratégie d’instantané EBS**, puis **Suivant**.

1. Dans la section **Ressources cibles**, effectuez les opérations suivantes :

   1. Pour **Types de ressources cibles**, choisissez `Instance`.

   1. Pour **Balises de ressource cible**, spécifiez les balises de ressource qui identifient les instances à sauvegarder. Seules les ressources possédant les balises spécifiées seront sauvegardées.

1. Pour le **rôle IAM**, choisissez **AWSDataLifecycleManagerDefaultRole**(le rôle par défaut pour la gestion des instantanés) ou choisissez un rôle personnalisé que vous avez créé et préparé pour les pré-scripts et les post-scripts.

1. Configurez les planifications et les options supplémentaires selon les besoins. Nous vous recommandons de planifier les heures de création des instantanés pour des périodes correspondant à votre charge de travail, par exemple pendant les fenêtres de maintenance.

1. Dans la section **Pré-scripts et post-scripts**, sélectionnez **Activer les pré-scripts et post-scripts**, puis effectuez les opérations suivantes :

   1. Sélectionnez **Document SSM personnalisé**.

   1. Pour **Option d’automatisation**, choisissez l’option qui correspond aux scripts que vous souhaitez exécuter.

   1. Pour **Document SSM**, sélectionnez le document SSM que vous avez préparé.

1. Configurez les options supplémentaires suivantes au besoin :
   + **Délai d’expiration du script** : délai d’expiration au terme duquel Amazon Data Lifecycle Manager échoue à exécuter le script si celui-ci n’est pas terminé. Si un script ne s’exécute pas dans le délai imparti, Amazon Data Lifecycle Manager échoue. Le délai d’expiration s’applique aux pré-scripts et post-scripts individuellement. Le délai d’expiration minimum et par défaut est de 10 secondes. Et le délai d’expiration maximum est de 120 secondes.
   + **Relancer les scripts en échec** : sélectionnez cette option pour relancer les scripts qui ne se terminent pas dans le délai imparti. En cas d’échec du pré-script, Amazon Data Lifecycle Manager relance l’intégralité du processus de création d’instantanés, y compris l’exécution des pré-scripts et post-scripts. Si le post-script échoue, Amazon Data Lifecycle Manager relance uniquement le post-script ; dans ce cas, le pré-script sera terminé et l’instantané aura peut-être été créé.
   + **Prise par défaut d’instantanés en cas de panne** : sélectionnez cette option pour utiliser par défaut des instantanés en cas de panne si le pré-script ne s’exécute pas. Il s’agit du comportement de création d’instantanés par défaut pour Amazon Data Lifecycle Manager si les pré-scripts et post-scripts ne sont pas activés. Si vous avez activé les relances, Amazon Data Lifecycle Manager utilise par défaut des instantanés en cas de panne uniquement une fois que toutes les relances ont été épuisées. Si le pré-script échoue et que vous n’utilisez pas par défaut des instantanés en cas de panne, Amazon Data Lifecycle Manager ne crée pas d’instantanés pour l’instance pendant cette exécution planifiée.

1. Choisissez **Créer une politique par défaut**.
**Note**  
Si vous obtenez l’erreur `Role with name AWSDataLifecycleManagerDefaultRole already exists`, consultez [Résoudre les problèmes liés à Amazon Data Lifecycle Manager](dlm-troubleshooting.md) pour plus d’informations.

------
#### [ AWS CLI ]

**Pour créer la politique de cycle de vie des instantanés**  
Utilisez la [create-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/dlm/create-lifecycle-policy.html)commande et incluez les `Scripts` paramètres dans`CreateRule`. Pour plus d’informations sur les paramètres, consultez la [https://docs.aws.amazon.com/dlm/latest/APIReference/API_Script.html](https://docs.aws.amazon.com/dlm/latest/APIReference/API_Script.html).

```
$ aws dlm create-lifecycle-policy \
--description "policy_description" \
--state ENABLED \
--execution-role-arn iam_role_arn \
--policy-details file://policyDetails.json
```

Où `policyDetails.json` inclut les éléments suivants.

```
{
    "PolicyType": "EBS_SNAPSHOT_MANAGEMENT",
    "ResourceTypes": [
        "INSTANCE"
    ],
    "TargetTags": [{
        "Key": "tag_key",
        "Value": "tag_value"
    }],
    "Schedules": [{
        "Name": "schedule_name",
        "CreateRule": {
            "CronExpression": "cron_for_creation_frequency", 
            "Scripts": [{ 
                "Stages": ["PRE" | "POST" | "PRE","POST"],
                "ExecutionHandlerService":"AWS_SYSTEMS_MANAGER",
                "ExecutionHandler":"ssm_document_name|arn",
                "ExecuteOperationOnScriptFailure":true|false,
                "ExecutionTimeout":timeout_in_seconds (10-120), 
                "MaximumRetryCount":retries (0-3)
            }]
        },
        "RetainRule": {
            "Count": retention_count
        }
    }]
}
```

------