

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Andere Anwendungsfälle für Data Lifecycle Manager vor und nach Skripten
<a name="script-other-use-cases"></a>

Neben der Verwendung von Vor- und Nach-Skripten zur Automatisierung anwendungskonsistenter Snapshots können Sie Vor- und Nach-Skripte zusammen oder einzeln verwenden, um andere Verwaltungsaufgaben vor oder nach der Snapshot-Erstellung zu automatisieren. Beispiel:
+ Verwenden Sie ein Vor-Skript, um Patches vor dem Erstellen von Snapshots anzuwenden. Dies ist hilfreich bei der Snapshot-Erstellung, nachdem Sie Ihre regulären wöchentlichen oder monatlichen Softwareupdates installiert haben.
**Anmerkung**  
Wenn Sie nur ein Vor-Skript ausführen möchten, ist die Option **Standardmäßig absturzkonsistente Snapshots** standardmäßig aktiviert.
+ Verwenden eines Nach-Skripts zum Anwenden von Patches nach der Snapshot-Erstellung Dies ist bei der Snapshot-Erstellung hilfreich, bevor Sie Ihre regulären wöchentlichen oder monatlichen Softwareupdates installieren.

## Erste Schritte für andere Anwendungsfälle
<a name="dlm-script-other"></a>

In diesem Abschnitt werden die Schritte erläutert, die Sie ausführen müssen, wenn Sie and/or Pre-Post-Skripte für **andere Anwendungsfälle als anwendungskonsistente** Snapshots verwenden.

### Schritt 1: Vorbereiten der Ziel-Instances
<a name="dlm-script-other-prep-instance"></a>

**So bereiten Sie Ihre Ziel-Instances für Pre-Post-Skripte vor and/or**

1. Installieren Sie den SSM-Agent auf Ihren Ziel-Instances, falls noch nicht geschehen. Wenn der SSM-Agent bereits auf Ihren Ziel-Instances installiert ist, überspringen Sie diesen Schritt. 
   + (Linux-Instances) [Manuelles Installieren des SSM-Agenten auf EC2-Instances](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html) für Linux
   + (Windows-Instanzen) [Arbeiten mit SSM Agent auf EC2-Instances](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-windows.html) für Windows Server

1. Stellen Sie sicher, dass der SSM-Agent ausgeführt wird. Weitere Informationen finden Sie unter [Prüfen des Status des SSM-Agents und Starten des Agenten](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-status-and-restart.html).

1. Richten Sie Systems Manager für Amazon-EC2-Instances ein. Weitere Informationen finden Sie unter [Einrichtung von Systems Manager für Amazon-EC2-Instances](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-ec2.html) im *AWS Systems Manager -Benutzerhandbuch*.

### Schritt 2: Vorbereiten des SSM-Dokuments
<a name="dlm-script-other-prep-document"></a>

Sie müssen ein SSM-Befehlsdokument erstellen, das die and/or Pre-Post-Skripts mit den Befehlen enthält, die Sie ausführen möchten.

Sie können mithilfe der unten stehenden leeren SSM-Dokumentvorlage ein SSM-Dokument erstellen und Ihre Vor- und Nach-Skriptbefehle in den entsprechenden Dokumentabschnitten hinzufügen.

**Beachten Sie Folgendes:**  
Sie müssen sicherstellen, dass das SSM-Dokument die richtigen und erforderlichen Aktionen für Ihren Workload ausführt.
Das SSM-Dokument muss die erforderlichen Felder für `allowedValues` enthalten, einschließlich `pre-script`, `post-script` und `dry-run`. Amazon Data Lifecycle Manager führt Befehle auf Ihrer Instance basierend auf den Inhalten dieser Abschnitte aus. Wenn Ihr SSM-Dokument diese Abschnitte nicht enthält, behandelt Amazon Data Lifecycle Manager dies als fehlgeschlagene Ausführung.

```
###===============================================================================###
# 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."
```

### Schritt 3: Vorbereiten der IAM-Rolle für Amazon Data Lifecycle Manager
<a name="dlm-script-other-prep-role"></a>

**Anmerkung**  
Dieser Schritt ist erforderlich, wenn:  
Sie erstellen oder aktualisieren eine pre/post skriptfähige Snapshot-Richtlinie, die eine benutzerdefinierte IAM-Rolle verwendet.
Sie verwenden die Befehlszeile, um eine pre/post skriptfähige Snapshot-Richtlinie zu erstellen oder zu aktualisieren, die den Standard verwendet.
Wenn Sie die Konsole verwenden, um eine pre/post skriptfähige Snapshot-Richtlinie zu erstellen oder zu aktualisieren, die die Standardrolle für die Verwaltung von Snapshots (**AWSDataLifecycleManagerDefaultRole**) verwendet, überspringen Sie diesen Schritt. In diesem Fall hängen wir die **AWSDataLifecycleManagerSSMFullZugriffsrichtlinie** automatisch an diese Rolle an.

Sie müssen sicherstellen, dass die für die Richtlinie verwendete IAM-Rolle Amazon Data Lifecycle Manager die Erlaubnis erteilt, die SSM-Aktionen auszuführen, die für die Ausführung von Vor- und Nach-Skripten auf Instances, auf die die Richtlinie abzielt, erforderlich sind.

Amazon Data Lifecycle Manager bietet eine verwaltete Richtlinie (**AWSDataLifecycleManagerSSMFullAccess**), die die erforderlichen Berechtigungen beinhaltet. Sie können diese Richtlinie an Ihre IAM-Rolle für die Verwaltung von Snapshots anhängen, um sicherzustellen, dass sie die entsprechenden Berechtigungen beinhaltet.

**Wichtig**  
Die verwaltete AWSData LifecycleManager SSMFull Access-Richtlinie verwendet den `aws:ResourceTag` Bedingungsschlüssel, um den Zugriff auf bestimmte SSM-Dokumente einzuschränken, wenn Pre- und Post-Skripte verwendet werden. Damit Amazon Data Lifecycle Manager auf die SSM-Dokumente zugreifen kann, müssen Sie sicherstellen, dass Ihre SSM-Dokumente das Tag `DLMScriptsAccess:true` enthalten.

Alternativ können Sie manuell eine benutzerdefinierte Richtlinie erstellen oder die erforderlichen Berechtigungen direkt der von Ihnen verwendeten IAM-Rolle zuweisen. Sie können dieselben Berechtigungen verwenden, die in der verwalteten AWSData LifecycleManager SSMFull Access-Richtlinie definiert sind, der `aws:ResourceTag` Bedingungsschlüssel ist jedoch optional. Wenn Sie sich dafür entscheiden, diesen Bedingungsschlüssel nicht zu verwenden, müssen Sie Ihre SSM-Dokumente nicht mit `DLMScriptsAccess:true` markieren.

Verwenden Sie eine der folgenden Methoden, um die **AWSDataLifecycleManagerSSMFullAccess-Richtlinie** zu Ihrer IAM-Rolle hinzuzufügen.

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

**So hängen Sie die verwaltete Richtlinie an Ihre benutzerdefinierte Rolle an**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie im Navigationspanel **Rollen** aus.

1. Suchen Sie nach Ihrer benutzerdefinierten Rolle zur Verwaltung von Snapshots und wählen Sie sie aus.

1. Wählen Sie auf der Registerkarte **Berechtigungen** **Berechtigungen hinzufügen** und dann **Richtlinien anfügen** aus.

1. Suchen Sie nach der verwalteten **AWSDataLifecycleManagerSSMFullAccess-Richtlinie**, wählen Sie sie aus und klicken Sie dann auf **Berechtigungen hinzufügen**.

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

**So hängen Sie die verwaltete Richtlinie an Ihre benutzerdefinierte Rolle an**  
Verwenden Sie den Befehl [ attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html). Geben Sie für `---role-name` den Namen Ihrer benutzerdefinierten Rolle an. Legen Sie für `--policy-arn` die Option `arn:aws:iam::aws:policy/AWSDataLifecycleManagerSSMFullAccess` fest.

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

------

### Snapshot-Lebenszyklusrichtlinie erstellen
<a name="dlm-script-other-prep-policy"></a>

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

**So erstellen Sie die Snapshot-Lebenszyklusrichtlinie**

1. Öffnen Sie die Amazon-EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Wählen Sie im Navigationsbereich **Elastic Block Store** und **Lifecycle Manager** aus. Wählen Sie dann **Create lifecycle policy (Lebenszyklusrichtlinie erstellen)** aus.

1. Wählen Sie auf dem Bildschirm **Richtlinientyp auswählen** die Option **EBS-Snapshot-Richtlinie** und dann **Weiter** aus.

1. Gehen Sie im Abschnitt **Zielressourcen** wie folgt vor:

   1. Wählen Sie für **Ziel-Ressourcentypen** die Option `Instance`.

   1. Geben Sie für **Zielressourcen-Tags** die Ressourcen-Tags an, die die zu sichernden Instances identifizieren. Nur Ressourcen mit den angegebenen Tags werden gesichert.

1. Wählen Sie für die **IAM-Rolle** entweder **AWSDataLifecycleManagerDefaultRole**(die Standardrolle für die Verwaltung von Snapshots) oder eine benutzerdefinierte Rolle, die Sie für Vor- und Nachskripte erstellt und vorbereitet haben.

1. Konfigurieren Sie die Zeitpläne und zusätzlichen Optionen nach Bedarf. Wir empfehlen Ihnen, die Snapshot-Erstellung für Zeiträume einzuplanen, die Ihrem Workload entsprechen, z. B. während Wartungsfenstern.

1. Wählen Sie im Abschnitt **Vor- und Nach-Skripte** die Option **Vor- und Nach-Skripte aktivieren** und gehen Sie dann wie folgt vor:

   1. Wählen Sie **Benutzerdefiniertes SSM-Dokument**.

   1. Wählen Sie unter **Option automatisieren** die Option aus, die den auszuführenden Skripten entspricht.

   1. Wählen Sie unter **SSM-Dokument** das SSM-Dokument aus, das Sie vorbereitet haben.

1. Konfigurieren Sie bei Bedarf die folgenden zusätzlichen Optionen:
   + **Timeout für das Skript** – Der Timeout-Zeitraum, nach dem Amazon Data Lifecycle Manager die versuchte Skriptausführung als fehlgeschlagen behandelt, wenn sie nicht abgeschlossen wurde. Wenn ein Skript nicht innerhalb des Timeout-Zeitraums abgeschlossen wird, schlägt der Versuch von Amazon Data Lifecycle Manager fehl. Der Timeout-Zeitraum gilt für die Vor- und Nach-Skripte einzeln. Der Minimal- und Standardwert für den Timeout beträgt 10 Sekunden. Die maximale Timeout-Zeit beträgt 120 Sekunden.
   + **Fehlgeschlagene Skripte erneut versuchen** – Wählen Sie diese Option, um Skripte zu wiederholen, die nicht innerhalb ihres Timeouts abgeschlossen werden. Wenn das Vor-Skript fehlschlägt, wiederholt Amazon Data Lifecycle Manager den gesamten Snapshot-Erstellungsprozess, einschließlich der Ausführung der Vor- und Nach-Skripte. Wenn das Nach-Skript fehlschlägt, wiederholt Amazon Data Lifecycle Manager nur das Nach-Skript. In diesem Fall ist das Vor-Skript abgeschlossen und der Snapshot wurde möglicherweise erstellt.
   + **Standardmäßig absturzkonsistente Snapshots** – Wählen Sie diese Option, um standardmäßig absturzkonsistente Snapshots zu verwenden, falls das Vor-Skript nicht ausgeführt werden kann. Dies ist das Standardverhalten bei der Snapshot-Erstellung für Amazon Data Lifecycle Manager, wenn Vor- und Nach-Skripte nicht aktiviert sind. Wenn Sie Wiederholungen aktiviert haben, verwendet Amazon Data Lifecycle Manager standardmäßig nur dann absturzkonsistente Snapshots, wenn alle Wiederholungsversuche ausgeschöpft sind. Wenn das Vor-Skript fehlschlägt und Sie nicht standardmäßig absturzkonsistente Snapshots verwenden, erstellt Amazon Data Lifecycle Manager während dieser geplanten Ausführung keine Snapshots für die Instance.

1. Wählen Sie **Standardrichtlinie erstellen**.
**Anmerkung**  
Falls Sie den Fehler `Role with name AWSDataLifecycleManagerDefaultRole already exists` erhalten, finden Sie weitere Informationen unter [Probleme mit Amazon Data Lifecycle Manager beheben](dlm-troubleshooting.md).

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

**So erstellen Sie die Snapshot-Lebenszyklusrichtlinie**  
Verwenden Sie den [create-lifecycle-policy](https://docs.aws.amazon.com/cli/latest/reference/dlm/create-lifecycle-policy.html)Befehl und fügen Sie die `Scripts` Parameter in ein. `CreateRule` Weitere Informationen finden Sie in der [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
```

Wenn `policyDetails.json` Folgendes umfasst.

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

------