Ejecución de comandos a escala
Puede utilizar Run Command, una capacidad de AWS Systems Manager, para ejecutar comandos en una flota de nodos administrados mediante targets
. El parámetro targets
acepta una combinación de Key,Value
basada en las etiquetas que haya especificado en los nodos administrados. Al ejecutar el comando, el sistema localiza e intenta ejecutar dicho comando en todos los nodos administrados que coinciden con las etiquetas especificadas. Para obtener más información sobre el etiquetado de instancias administradas consulte, Etiquetado de recursos de AWS en la Guía del usuario de Etiquetado de recursos de AWS. Para obtener más información acerca del etiquetado de dispositivos IoT administrados, consulte Etiquetado de recursos de AWS IoT Greengrass Version 2 en la Guía para desarrolladores de AWS IoT Greengrass Version 2.
También puede utilizar el parámetro targets
para dirigirse a una lista de ID de nodos administrados específicos, tal y como se describe en la sección siguiente.
Para controlar la forma en que los comandos ejecutan cientos o miles de nodos administrados, Run Command también incluye parámetros con el fin de restringir cuántos nodos puede procesar una solicitud simultáneamente y qué cantidad de errores puede generar un comando antes de finalizar.
Indicar destino de varios nodos administrados
Puede ejecutar un comando y dirigirse a nodos administrados especificando etiquetas, nombres de grupos de recursos de AWS o ID de nodos administrados.
En los siguientes ejemplos, se muestra el formato de comandos cuando se utiliza Run Command desde la AWS Command Line Interface (AWS CLI ). Reemplace cada example resource placeholder
con su propia información. Los ejemplos de comandos de esta sección se truncan con [...]
.
Ejemplo 1: dirigirse a etiquetas
Ejemplo 2: dirigirse a un grupo de recursos de AWS por nombre
Puede especificar un máximo de un nombre de grupo de recursos por comando. Al crear un grupo de recursos, le recomendamos que incluya AWS::SSM:ManagedInstance
y AWS::EC2::Instance
como tipos de recursos en sus criterios de creación de grupo.
nota
Con el fin de enviar comandos que tengan como destino un grupo de recursos, debe haber recibido los permisos de AWS Identity and Access Management (IAM) para mostrar o ver los recursos que pertenecen a ese grupo. Para obtener más información, consulte la sección Configuración de permisos en la Guía del usuario de AWS Resource Groups.
Ejemplo 3: dirigirse a un grupo de recursos de AWS por tipo de recurso
Puede especificar un máximo de cinco tipos de grupos de recursos por comando. Al crear un grupo de recursos, le recomendamos que incluya AWS::SSM:ManagedInstance
y AWS::EC2::Instance
como tipos de recursos en sus criterios de creación de grupo.
nota
Con el fin de enviar comandos que tienen como destino un grupo de recursos, se le deben haber concedido los permisos de IAM para mostrar o ver los recursos que pertenecen a ese grupo. Para obtener más información, consulte la sección Configuración de permisos en la Guía del usuario de AWS Resource Groups.
Ejemplo 4: dirigirse a ID de instancias
En los siguientes ejemplos, se muestra cómo dirigirse a nodos administrados mediante la clave de instanceids
con el parámetro targets
. Puede utilizar esta clave para dirigirse a dispositivos de núcleo de AWS IoT Greengrass administrados porque a cada dispositivo se le asigna un mi-Id_number
. Puede ver los ID de dispositivo en Fleet Manager, una capacidad de AWS Systems Manager.
Si ha etiquetado nodos administrados para diferentes entornos utilizando Environment
para Key
, y Development
, Test
, Pre-production
y Production
para Values
, entonces podría enviar un comando a todos los nodos administrados que se encuentren en uno de estos entornos utilizando el parámetro targets
con la siguiente sintaxis.
Podría dirigirse a nodos administrados adicionales en otros entornos agregando elementos a la lista Values
. Separe los elementos mediante comas.
Variación: refinado de los destinos con varios criterios Key
Puede refinar el número de destinos para el comando incluyendo varios criterios Key
. Si incluye más de un criterio de Key
, el sistema se dirige a los nodos administrados que cumplen todos los criterios. El siguiente comando se dirige a todos los nodos administrados etiquetados para el Departamento de Finanzas y etiquetados para el rol de servidor de base de datos.
Variación : uso de varios criterios Key
y Value
Profundizando en el ejemplo anterior, puede dirigirse a varios departamentos y diversas roles de servidor mediante la inclusión de elementos adicionales en el criterio Values
.
Variación: dirigirse a nodos administrados etiquetados mediante varios criterios de Values
Si etiquetó nodos administrados para diferentes entornos utilizando una Key
denominada Department
y Values
de Sales
y Finance
, podría enviar un comando a todos los nodos administrados de estos entornos mediante el uso del parámetro targets
con la siguiente sintaxis.
Puede especificar un máximo de cinco claves y cinco valores para cada clave.
Si una clave de etiqueta (el nombre de la etiqueta) o un valor de etiqueta incluye espacios, deberá encerrar la clave de etiqueta o el valor entre comillas, como se muestra en los siguientes ejemplos.
Ejemplo: espacios en la etiqueta Value
Ejemplo: espacios en la clave y Value
de una tag
Ejemplo: espacios en un elemento de una lista de Values
Uso de controles de velocidad
Puede controlar la velocidad a la que se envían los comandos a los nodos administrados de un grupo mediante controles de simultaneidad y controles de error.
Uso de controles de simultaneidad
Puede controlar el número de nodos administrados que ejecutan el comando al mismo tiempo mediante el parámetro max-concurrency
(las opciones de Concurrency [Simultaneidad] de la página Run a command [Ejecutar un comando]). Puede especificar un número absoluto de nodos administrados, por ejemplo, 10
, o un porcentaje del destino definido, por ejemplo, 10%
. El sistema de colas entrega el comando a un único nodo y espera hasta que el sistema confirme la invocación inicial antes de enviar el comando a dos nodos más. El sistema envía comandos de forma exponencial a más nodos hasta que alcanza el valor de max-concurrency
. El valor predeterminado del valor de max-concurrency
es 50. Los siguientes ejemplos le muestran cómo especificar valores para el parámetro max-concurrency
.
Uso de controles de error
También puede controlar la ejecución de un comando para cientos o miles de nodos administrado al configurar un límite de error mediante los parámetros max-errors
(el campo Error threshold [Umbral de error] de la página Run a command [Ejecutar un comando]). El parámetro especifica la cantidad de errores que están permitidos antes de que el sistema detenga el envío del comando a nodos administrados adicionales. Puede especificar un número absoluto de errores, por ejemplo, 10
, o un porcentaje del destino definido, por ejemplo, 10%
. Si especifica 3
, por ejemplo, el sistema dejará de enviar el comando cuando se reciba el cuarto error. Si especifica 0
, el sistema dejará de enviar el comando a otros nodos administrados tras el primer resultado de error que se devuelva. Si envía un comando a 50 nodos administrados y configura max-errors
en un 10%
, el sistema dejará de enviar el comando a otros nodos cuando se reciba el sexto error.
Las invocaciones que ya están ejecutando un comando cuando se alcanza el max-errors
tienen permiso para completarse, pero algunas de estas invocaciones también pueden producir errores. Si necesita asegurarse de que no habrá más de max-errors
invocaciones erróneas, establezca max-concurrency
en 1
, de modo que las invocaciones continuarán de una en una. El valor predeterminado para max-errors es 0. Los siguientes ejemplos le muestran cómo especificar valores para el parámetro max-errors
.