Elección del modo de simultaneidad para AWS CloudFormation StackSets - AWS CloudFormation

Elección del modo de simultaneidad para AWS CloudFormation StackSets

El modo de simultaneidad es un parámetro de StackSetOperationPreferences que permite elegir cómo se comporta el nivel de simultaneidad durante las operaciones con StackSets. Puede elegir entre los siguientes modos:

  • Tolerancia estricta a errores: esta opción reduce de forma dinámica el nivel de simultaneidad para garantizar que el número de cuentas fallidas nunca supere el valor de Tolerancia a errores + 1. La simultaneidad real inicial se establece en el valor más bajo entre el valor de Número máximo de cuentas simultáneas o el valor de Tolerancia a errores + 1. A continuación, la simultaneidad real se reduce proporcionalmente en función del número de errores. Este es el comportamiento predeterminado.

  • Tolerancia ligera a errores: esta opción desacopla Tolerancia a errores de la simultaneidad real. Esto permite que las operaciones con StackSets se ejecuten en el nivel de simultaneidad establecido por el valor de Número máximo de cuentas simultáneas, independientemente del número de errores.

Tolerancia a errores estricta reduce la velocidad de implementación a medida que se producen errores en las operaciones con StackSets, ya que la simultaneidad disminuye en cada error. Tolerancia a errores suave prioriza la velocidad de implementación y, al mismo tiempo, aprovecha las capacidades de seguridad de CloudFormation. Esto le permite revisar y abordar los errores de las operaciones con StackSets para detectar problemas comunes, como los relacionados con los recursos existentes, las cuotas de servicio y los permisos.

Para obtener más información sobre los errores en las operaciones de pila de StackSets, consulte Motivos comunes para el fallo en una operación de la pila.

Para obtener más información sobre Número máximo de cuentas simultáneas y Tolerancia a errores, consulte Opciones de operaciones con StackSets.

Cómo funciona cada modo de simultaneidad

Las siguientes imágenes proporcionan una representación visual de cómo funciona cada modo de simultaneidad durante una operación con StackSets. La cadena de nodos representa una implementación en una Región de AWS y cada nodo es una Cuenta de AWS objetivo.

Tolerancia estricta a errores

Cuando una operación con StackSets que utiliza Tolerancia a errores estricta tiene el valor de Tolerancia a errores establecido en 5 y el valor de Número máximo de cuentas simultáneas en 10, la simultaneidad real es 6. La simultaneidad real es 6 porque el valor de Tolerancia a errores de 5 + 1 es inferior al valor de Número máximo de cuentas simultáneas.

En la siguiente imagen se muestra el impacto que el valor de Tolerancia a errores tiene en el valor de Número máximo de cuentas simultáneas y el impacto que ambos tienen en la simultaneidad real de la operación con StackSets:

Una operación con StackSets con tolerancia a errores estricta. La tolerancia a errores es 5, el número máximo de cuentas simultáneas es 10 y la simultaneidad es de 6.

Cuando comienza la implementación y hay instancias de pila fallidas, la simultaneidad real se reduce para ofrecer una experiencia de implementación segura. La simultaneidad real se reduce de 6 a 5 cuando StackSets no logra implementar una instancia de pila.

La operación con StackSets que utiliza una tolerancia a errores estricta tiene 2 implementaciones correctas y 1 fallida.
La operación con StackSets que utiliza tolerancia a errores estricta ha reducido la simultaneidad real a 5 ahora que se ha producido un error.

El modo Tolerancia estricta a errores reduce la simultaneidad real proporcionalmente al número de instancias de pila fallidas. En el siguiente ejemplo, la simultaneidad real se reduce de 5 a 3 cuando StackSets no logra implementar 2 instancias de pila más, lo que eleva el total de instancias de pila con errores a 3.

La operación con StackSets que utiliza la tolerancia a errores estricta ahora tiene 3 implementaciones fallidas. La simultaneidad se ha reducido a 3.

StackSets no puede completar la operación con StackSets cuando el número de instancias de pila con errores es igual al valor definido de Tolerancia a errores + 1. En el siguiente ejemplo, StackSets no realiza la operación cuando hay 6 instancias de pila con errores y el valor de Tolerancia a errores es 5.

La operación con StackSets que utiliza la tolerancia a errores estricta ahora tiene 6 implementaciones fallidas. Se produce un error en la operación con StackSets.

En este ejemplo, CloudFormation implementó 9 instancias de pila (3 correctas y 6 con errores) antes de detener la operación con StackSets.

Tolerancia ligera a errores

Cuando una operación con StackSets que utiliza Tolerancia a errores suave tiene el valor de Tolerancia a errores establecido en 5 y el valor de Número máximo de cuentas simultáneas en 10, la simultaneidad real es 10.

Una operación con StackSets con tolerancia a errores suave. La tolerancia a errores es 5, el número máximo de cuentas simultáneas y la simultaneidad real es de 10.

Cuando comienza la implementación y hay instancias de pila con errores la simultaneidad real no cambia. En el siguiente ejemplo, se produjo un error en una operación de pila, pero la simultaneidad real se mantiene en 10.

La operación con StackSets con tolerancia a errores suave detecta el primer error. La simultaneidad real se mantiene en 10.

La simultaneidad real se mantiene en 10 incluso después de que se produzcan 2 errores más en las instancias de pila.

La operación con StackSets con tolerancia a errores suave ahora tiene 2 éxitos y 3 fracasos, pero la simultaneidad real sigue siendo de 10.

StackSets no puede completar la operación con StackSets cuando el número de instancias de pila con errores supera el valor de Tolerancia a errores. En el siguiente ejemplo, StackSets no realiza la operación cuando hay 6 instancias de pila con errores y el recuento de Tolerancia a errores es 5. Sin embargo, la operación no finalizará hasta que se completen las operaciones restantes de la cola de simultaneidad.

La operación con StackSets con tolerancia a errores suave llega a 6 errores, pero debe finalizar lo que queda en la cola de simultaneidad.

StackSets sigue implementando instancias de pila que ya están en la cola de simultaneidad. Esto significa que la cantidad de instancias de pila con errores puede ser superior al valor de Tolerancia a errores. En el siguiente ejemplo, hay 8 instancias de pila con errores porque a la cola de simultaneidad aún le quedaban 7 operaciones por completar, a pesar de que la operación con StackSets había alcanzado el valor de Tolerancia a errores de 5.

La operación con StackSets tiene un total de 8 errores porque le quedaban 7 implementaciones en la cola tras alcanzar el umbral de error.

En este ejemplo, StackSets implementó 15 instancias de pila (7 correctas y 8 con errores) antes de detener la operación de pila.

Elección entre Tolerancia estricta a errores y Tolerancia ligera a errores en función de la velocidad de implementación

La elección entre los modos Tolerancia a errores estricta y Tolerancia a errores suave depende de la velocidad preferida de implementación del StackSet y del número permitido de errores de implementación.

En las siguientes tablas, se muestra cómo gestiona cada modo de simultaneidad una operación con StackSets con errores al intentar implementar un total de 1000 instancias de pila. En cada escenario, el valor de Tolerancia a errores se establece en 100 instancias de pila y el valor de Número máximo de cuentas simultáneas se establece en 250 instancias de pila.

Si bien StackSets en realidad pone en cola las cuentas como una ventana deslizante (consulte Cómo funciona cada modo de simultaneidad), este ejemplo muestra la operación en lotes para demostrar la velocidad de cada modo.

Tolerancia estricta a errores

En este ejemplo, en el que se utiliza el modo Tolerancia estricta a errores, se reduce la simultaneidad real en relación con el número de errores que se producen en cada lote anterior. Cada lote tiene 20 instancias con errores, lo que reduce en 20 la simultaneidad real del lote siguiente hasta que la operación con StackSets alcance el valor de Tolerancia a errores de 100.

En la siguiente tabla, la simultaneidad real inicial del primer lote es de 101 instancias de pila. La simultaneidad real es 101 porque es el valor más bajo de Número máximo de cuentas simultáneas (250) o Tolerancia a errores (100) + 1. Cada lote contiene 20 implementaciones de instancias de pila con errores, lo que reduce la simultaneidad real de cada lote siguiente en 20 instancias de pila.

Tolerancia estricta a errores Lote 1 Lote 2 Lote 3 Lote 4 Lote 5 Lote 6
Recuento de simultaneidad real 101 81 61 41 21 -
Recuento de instancias con errores 20 20 20 20 20 -
Recuento de instancias de pila correctas 81 61 41 21 1 -

La operación que utilizó Tolerancia a errores estricta completó 305 implementaciones de instancias de pila en 5 lotes cuando la operación con StackSets alcanzó el valor de Tolerancia a errores de 100 instancias de pila. La operación con StackSets implementa correctamente 205 instancias de pila antes de que se produzca un error.

Tolerancia ligera a errores

En este ejemplo, en el que se utiliza el modo Tolerancia ligera a errores, se mantiene el mismo recuento de simultaneidad real definido por el valor de Número máximo de cuentas simultáneas de 250 instancias de pila, independientemente del número de instancias con errores. Las operaciones con StackSets mantienen la misma simultaneidad real hasta que alcanzan el valor de Tolerancia a errores de 100 instancias.

En la siguiente tabla, la simultaneidad real inicial del primer lote es de 250 instancias de pila. La simultaneidad real es 250 porque el valor de Número máximo de cuentas simultáneas está establecido en 250 y el modo Tolerancia ligera a errores permite a StackSets utilizar este valor como la simultaneidad real, independientemente del número de errores. A pesar de que hay 50 errores en cada uno de los lotes de este ejemplo, la simultaneidad real no se ve afectada.

Tolerancia ligera a errores Lote 1 Lote 2 Lote 3 Lote 4 Lote 5 Lote 6
Recuento de simultaneidad real 250 250 - - - -
Recuento de instancias con errores 50 50 - - - -
Recuento de instancias de pila correctas 200 200 - - - -

Con el mismo valor de Número máximo de cuentas simultáneas y de Tolerancia a errores, la operación que utilizó el modo Tolerancia ligera a errores completó 500 implementaciones de instancias de pila en 2 lotes. La operación con StackSets implementa correctamente 400 instancias de pila antes de que se produzca un error.

Elegir el modo de simultaneidad (consola)

Al crear o actualizar un StackSet, en la página Establecer opciones de implementación, en Modo de simultaneidad, seleccione Tolerancia a errores estricta o Tolerancia a errores suave.

Elegir el modo de simultaneidad (AWS CLI)

Puede utilizar el parámetro ConcurrencyMode con los siguientes comandos de StackSets:

Estos comandos tienen un parámetro existente llamado --operation-preferences que puede usar la configuración ConcurrencyMode. ConcurrencyMode se puede establecer en uno de los siguientes valores:

  • STRICT_FAILURE_TOLERANCE

  • SOFT_FAILURE_TOLERANCE

En el siguiente ejemplo, se crea una instancia de pila utilizando el STRICT_FAILURE_TOLERANCE ConcurrencyMode, con el valor de FailureToleranceCount establecido en 10 y el valor de MaxConcurrentCount establecido en 5.

aws cloudformation create-stack-instances \ --stack-set-name example-stackset \ --accounts 123456789012 \ --regions eu-west-1 \ --operation-preferences ConcurrencyMode=STRICT_FAILURE_TOLERANCE,FailureToleranceCount=10,MaxConcurrentCount=5
nota

Si desea conocer los procedimientos detallados para crear y actualizar un StackSet, consulte los temas siguientes: