Otros casos de uso de scripts previos y posteriores en Data Lifecycle Manager
Además de utilizar scripts previos y posteriores para automatizar las instantáneas coherentes con la aplicación, puede utilizarlos de forma conjunta o individual para automatizar otras tareas administrativas antes o después de la creación de las instantáneas. Por ejemplo:
-
Puede usar un script previo para aplicar las revisiones antes de crear las instantáneas. Esto puede ser de utilidad para crear instantáneas después de aplicar las actualizaciones de software semanales o mensuales habituales.
nota
Si opta por ejecutar solo un script previo, la opción Instantáneas coherentes ante bloqueos predeterminadas está habilitada de forma predeterminada.
-
Puede usar un script posterior para aplicar las revisiones después de crear las instantáneas. Esto puede ser de utilidad para crear instantáneas antes de aplicar las actualizaciones de software semanales o mensuales habituales.
Introducción para otros casos de uso
En esta sección se explican los pasos que hay que seguir cuando se utilizan scripts previos o posteriores para casos de uso distintos de las instantáneas coherentes con la aplicación.
Preparación de las instancias de destino para los scripts previos o posteriores
-
Instale SSM Agent en las instancias de destino, si aún no está instalado. Si SSM Agent ya está instalado en las instancias de destino, omita este paso.
-
(Instancias de Linux) Instalación manual de SSM Agent en instancias de Amazon EC2 para Linux
-
(Instancias de Windows) Instalación manual de SSM Agent en instancias de Amazon EC2 para Windows
-
-
Asegúrese de que SSM Agent esté en ejecución. Para obtener más información, consulte Verificación del estado de SSM Agent e inicio del agente.
-
Configure Systems Manager para instancias de Amazon EC2. Para obtener más información, consulte Configuración de Systems Manager para instancias de Amazon EC2 en la Guía del usuario de AWS Systems Manager.
Debe crear un documento de comandos de SSM que incluya los scripts previos o posteriores con los comandos que desee ejecutar.
Puede crear un documento de SSM utilizando la plantilla de documento de SSM vacía que aparece a continuación y agregar los comandos previos y posteriores al script en las secciones del documento correspondientes.
Tenga en cuenta lo siguiente:
-
Es su responsabilidad asegurarse de que el documento de SSM realice las acciones correctas y necesarias para su carga de trabajo.
-
El documento de SSM debe incluir los campos obligatorios para
allowedValues
, incluidospre-script
,post-script
ydry-run
. Amazon Data Lifecycle Manager ejecutará comandos en la instancia en función del contenido de esas secciones. Si su documento de SSM no incluye esas secciones, Amazon Data Lifecycle Manager lo considerará una ejecución fallida.
###===============================================================================### # 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."
nota
Este paso es necesario si:
-
Debe crear o actualizar una política de instantáneas con scripts previos o posteriores que utilice un rol de IAM personalizado.
-
La línea de comandos se utiliza para crear o actualizar una política de instantáneas habilitada para scripts previos o posteriores que utilice el rol predeterminado.
Si usa la consola para crear o actualizar una política de instantáneas habilitada para scripts previos o posteriores que utilice el rol predeterminado para administrar las instantáneas (AWSDataLifecycleManagerDefaultRole), omita este paso. En este caso, asociamos automáticamente la política AWSDataLifecycleManagerSSMFullAccess a ese rol.
Debe asegurarse de que el rol de IAM que utilice para la política conceda permiso a Amazon Data Lifecycle Manager para realizar las acciones de SSM necesarias para ejecutar scripts previos y posteriores en las instancias incluidas en la política.
Amazon Data Lifecycle Manager proporciona una política administrada (AWSDataLifecycleManagerSSMFullAccess) que incluye los permisos necesarios. Puede asociar esta política a su rol de IAM para administrar las instantáneas y asegurarse de que incluya los permisos.
importante
La política administrada AWSDataLifecycleManagerSSMFullAccess utiliza la clave de condición aws:ResourceTag
para restringir el acceso a documentos de SSM específicos cuando se utilizan scripts previos y posteriores. Para permitir que Amazon Data Lifecycle Manager acceda a los documentos de SSM, debe asegurarse de que sus documentos de SSM estén etiquetados con DLMScriptsAccess:true
.
Como alternativa, puede crear manualmente una política personalizada o asignar los permisos necesarios directamente al rol de IAM que utilice. Puede usar los mismos permisos que se definen en la política administrada AWSDataLifecycleManagerSSMFullAccess; sin embargo, la clave de condición aws:ResourceTag
es opcional. Si decide no utilizar esa clave de condición, no tendrá que etiquetar sus documentos de SSM con DLMScriptsAccess:true
.
Utilice uno de los métodos siguientes para agregar la política AWSDataLifecycleManagerSSMFullAccess al rol de IAM.