Quiero usar las ventanas de mantenimiento, una función de AWS Systems Manager, para programar el inicio o la detención de mis instancias de Amazon Elastic Compute Cloud (Amazon EC2).
Descripción corta
Para programar el inicio o la detención de tu instancia, registra el runbook AWS-StartEC2Instance o AWS-StopEC2Instance en una ventana de mantenimiento. Debes tener los permisos necesarios para ejecutar el runbook.
Nota: Cuando usas Automation, una función de AWS Systems Manager, para ejecutar un runbook, no es necesario que tu instancia sea una instancia administrada.
Para reiniciar la instancia inmediatamente después de detenerla, configura las tareas de detención e inicio en la misma ventana de mantenimiento. Para mantener la instancia detenida durante un tiempo predeterminado antes de que se inicie, configura cada tarea en una ventana de mantenimiento independiente.
Resolución
Uso de un rol de IAM con los permisos necesarios para el runbook
Para programar las acciones de inicio o detención en una ventana de mantenimiento, debes usar un rol de AWS Identity and Access Management (IAM) con los permisos necesarios para ejecutar el runbook. El rol de IAM solo requiere permisos para el runbook de Systems Manager que registras en la ventana de mantenimiento. Por ejemplo, si eliges registrar AWS-StartEC2Instance y no AWS-StopEC2Instance, el rol de IAM solo requiere permisos de ec2:StartInstances.
Si tu rol de IAM no tiene los permisos necesarios, crea un rol de IAM. Al hacerlo, en Servicio o caso de uso, selecciona Systems Manager o usa un rol de Systems Manager existente. A continuación, añade la siguiente política de permisos al rol:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartAutomationExecution",
"ec2:DescribeInstanceStatus"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "arn:aws:ec2:example_region:example_account_number:instance/example_instance_ID"
}
]
}
Nota: Sustituye example_region por tu región de AWS. Sustituye example_account_number por el número de tu cuenta de AWS. Sustituye example_instance_ID por el número de ID de tu instancia. Puedes añadir varios ARN separados por comas. En el siguiente ejemplo se indican dos ARN como recursos:
"Resource": "arn:aws:ec2:example_region:example_account_number:instance/example_instance_ID_1", "arn:aws:ec2:example_region:example_account_number:instance/example_instance_ID_2"
Importante: Para ec2:StartInstances y ec2:StopInstances, se recomienda añadir los ARN de recursos de las instancias a las que quieres dar acceso. Para obtener más información, consulta Sintaxis de la política. Si has cifrado los volúmenes de tu instancia con una clave de AWS Key Management Service, añade permisos para esa clave a tu rol. Para obtener más información, consulta When I start my Amazon EC2 instance that has encrypted volumes attached, why do I get the "client error on launch" error?
Creación de una ventana de mantenimiento
Si no tienes una ventana de mantenimiento, crea una. En la ventana de mantenimiento, ordena las tareas en el campo Prioridad de la tarea, con 0 como prioridad más alta. Si ya tienes una ventana de mantenimiento, continúa con Registrar una tarea de Automation.
Para registrar destinos en la ventana de mantenimiento, selecciona la opción Elegir instancias manualmente o Elegir un grupo de recursos como opción de destino. Para ejecutar la ventana de mantenimiento en instancias administradas que no has registrado como destinos, selecciona Permitir destinos no registrados. No selecciones Especificar etiquetas de instancia como opción de destino.
Para obtener más información, consulta Asignar destinos a una ventana de mantenimiento mediante la consola.
Registro de la tarea de Automation
Sigue estos pasos:
- Abre la consola de Systems Manager.
- En el panel de navegación, selecciona Periodos de mantenimiento.
- En la lista de ventanas de mantenimiento, elige la ventana de mantenimiento de destino.
- Elige Acciones y, a continuación, elige Registrar tarea de Automation.
- (Opcional) En Detalles de la tarea del periodo de mantenimiento, introduce un nombre y una descripción.
- En Documento de Automation, elige AWS-StartEC2Instance o AWS-StopEC2Instance.
- En Versión del documento, elige Versión predeterminada en tiempo de ejecución.
- La Prioridad de la tarea está establecida en 1 de forma predeterminada. Si has registrado varias tareas en la misma ventana de mantenimiento, asígnales distintos niveles de prioridad para establecer un orden de ejecución.
- En Destinos, si has registrado instancias de destino para la ventana de mantenimiento, elige Seleccionando grupos de destino registrados. Si no has registrado instancias de destino para la ventana de mantenimiento, elige Seleccionando destinos no registrados. A continuación, selecciona tus instancias manualmente o especifica un grupo de recursos para identificar las instancias en las que quieres ejecutar el documento de automatización.
Nota: Las etiquetas de destinos solo se admiten en las instancias que administra Systems Manager.
- En Control de velocidad, especifica Simultaneidad y Umbral de errores.
- En Rol de servicio de IAM, selecciona el rol de servicio de Systems Manager en la lista desplegable. Si no has creado un rol de servicio para Systems Manager, crea uno.
Nota: No uses el rol AWSServiceRoleForAmazonSSM.
- En Parámetros de entrada, especifica los siguientes parámetros:
InstanceId: introduce el seudoparámetro {{RESOURCE_ID}} para apuntar a más de un recurso.
AutomationAssumeRole: introduce el nombre de recurso de Amazon (ARN) completo del rol de IAM que tiene los permisos ec2:StartInstances o ec2:StopInstances. Por ejemplo, arn:aws:iam::123456789101:role/SSM_StartStopEC2Role.
- Elige Registrar tarea de Automation.
Importante: Para registrar documentos de Automation que programen las acciones de detención e inicio, repite los pasos anteriores para el segundo documento.
Información relacionada
Ventanas de mantenimiento de AWS Systems Manager
Actions, resources, and condition keys for Amazon EC2 (Acciones, recursos y claves de condición para Amazon EC2)
¿Por qué Systems Manager no muestra mi instancia de Amazon EC2 como una instancia administrada?