Tutorial: Primeros pasos con el escalado programado usando la AWS CLI - Application Auto Scaling

Tutorial: Primeros pasos con el escalado programado usando la AWS CLI

En el siguiente tutorial, se muestra cómo utilizar la AWS CLI para comenzar a usar el escalado programado ayudando a crear acciones programadas que escalen una tabla de muestra de DynamoDB llamada TestTable. Si aún no tiene una tabla TestTable de DynamoDB que use para llevar a cabo pruebas, puede crear una ahora ejecutando el comando create-table que se muestra en Paso 1: Crear una tabla de DynamoDB en la Guía para desarrolladores de Amazon DynamoDB.

Cuando utilice la AWS CLI, recuerde que los comandos se ejecutan en la región de AWS configurada para su perfil. Si desea ejecutar los comandos en otra región, cambie la región predeterminada de su perfil o utilice el parámetro --region con el comando.

nota

Puede incurrir en cargos de AWS como parte de este tutorial. Supervise el uso del nivel gratuito y asegúrese de comprender los costos asociados a la cantidad de unidades de capacidad de lectura y escritura que utiliza la base de datos de DynamoDB.

Paso 1: Registrar un objetivo escalable

Comience por registrar su tabla de DynamoDB como un objetivo escalable con Application Auto Scaling.

Para registrar un objetivo escalable con Auto Scaling de aplicaciones

  1. En primer lugar, utilice el comando describe-scalable-targets para comprobar si ya se han registrado recursos de DynamoDB. Esto le permitirá verificar si la tabla TestTable no se ha registrado, en el caso de que no sea una tabla nueva.

    Linux, macOS o Unix

    aws application-autoscaling describe-scalable-targets \ --service-namespace dynamodb

    Windows

    aws application-autoscaling describe-scalable-targets --service-namespace dynamodb

    Si no hay destinos escalables existentes, esta es la respuesta.

    { "ScalableTargets": [] }
  2. Utilice el comando register-scalable-target para registrar la capacidad de escritura de su tabla de DynamoDB denominada TestTable. Establezca una capacidad mínima deseada de 5 unidades de capacidad de escritura y una capacidad máxima deseada de 10 unidades de capacidad de escritura.

    Linux, macOS o Unix

    aws application-autoscaling register-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/TestTable \ --min-capacity 5 --max-capacity 10

    Windows

    aws application-autoscaling register-scalable-target --service-namespace dynamodb --scalable-dimension dynamodb:table:WriteCapacityUnits --resource-id table/TestTable --min-capacity 5 --max-capacity 10

    Este comando no devuelve ningún resultado si se realiza correctamente.

Paso 2: Crear dos acciones programadas

Auto Scaling de aplicaciones le permite programar el momento en que debe realizarse una acción de escalado. Especifique el destino escalable, la programación y la capacidad mínima y máxima. En el momento especificado, Auto Scaling de aplicaciones actualiza el valor mínimo y máximo para el destino escalable. Si su capacidad actual se encuentra fuera de este rango, esto genera una actividad de escalado.

La programación se actualiza a la capacidad mínima y la capacidad máxima también es útil si decide crear una política de escalado. Una política de escalado permite que sus recursos se escalen escalar dinámicamente en función de la utilización de recursos actual. Una medida de seguridad común para una política de escalado tiene valores adecuados para la capacidad mínima y máxima.

Para este ejercicio, creamos dos acciones puntuales para aumentar y reducir.

Para crear y ver acciones programadas

  1. Para crear la primera acción programada, utilice el siguiente comando put-scheduled-action.

    El comando at en --schedule programa la acción que se va a ejecutar una vez en una fecha y hora específicas en el futuro. Las horas están en formato de 24 horas en UTC. Programe la acción para que se produzca dentro de 5 minutos a partir de ahora.

    En la fecha y la hora se especifica, Auto Scaling de aplicaciones actualiza los valores MinCapacity y MaxCapacity. Suponiendo que la tabla que actualmente tiene 5 unidades de capacidad de escritura, Auto Scaling de aplicaciones escala horizontalmente a MinCapacity para que la tabla se encuentre en los nuevos rangos deseados de 15-20 unidades de capacidad de escritura.

    Linux, macOS o Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/TestTable \ --scheduled-action-name my-first-scheduled-action \ --schedule "at(2019-05-20T17:05:00)" \ --scalable-target-action MinCapacity=15,MaxCapacity=20

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace dynamodb --scalable-dimension dynamodb:table:WriteCapacityUnits --resource-id table/TestTable --scheduled-action-name my-first-scheduled-action --schedule "at(2019-05-20T17:05:00)" --scalable-target-action MinCapacity=15,MaxCapacity=20

    Este comando no devuelve ningún resultado si se realiza correctamente.

  2. Para crear la segunda acción programada que utiliza Auto Scaling de aplicaciones para reducir horizontalmente, utilice el siguiente comando put-scheduled-action.

    Programe que la acción para que se produzca dentro de 10 minutos a partir de ahora.

    En la fecha y la hora se especifica, Auto Scaling de aplicaciones actualiza las tablas MinCapacity y MaxCapacity, y reduce horizontalmente a MaxCapacity para devolver la tabla al rango original deseado de 5 y 10 unidades de capacidad de escritura.

    Linux, macOS o Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/TestTable \ --scheduled-action-name my-second-scheduled-action \ --schedule "at(2019-05-20T17:10:00)" \ --scalable-target-action MinCapacity=5,MaxCapacity=10

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace dynamodb --scalable-dimension dynamodb:table:WriteCapacityUnits --resource-id table/TestTable --scheduled-action-name my-second-scheduled-action --schedule "at(2019-05-20T17:10:00)" --scalable-target-action MinCapacity=5,MaxCapacity=10
  3. (Opcional) Obtenga una lista de todas las acciones programadas para el espacio de nombres del servicio especificado mediante el siguiente comando describe-scheduled-actions.

    Linux, macOS o Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace dynamodb

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace dynamodb

    A continuación, se muestra un ejemplo del resultado.

    { "ScheduledActions": [ { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Schedule": "at(2019-05-20T18:35:00)", "ResourceId": "table/TestTable", "CreationTime": 1561571888.361, "ScheduledActionARN": "arn:aws:autoscaling:us-east-1:123456789012:scheduledAction:2d36aa3b-cdf9-4565-b290-81db519b227d:resource/dynamodb/table/TestTable:scheduledActionName/my-first-scheduled-action", "ScalableTargetAction": { "MinCapacity": 15, "MaxCapacity": 20 }, "ScheduledActionName": "my-first-scheduled-action", "ServiceNamespace": "dynamodb" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Schedule": "at(2019-05-20T18:40:00)", "ResourceId": "table/TestTable", "CreationTime": 1561571946.021, "ScheduledActionARN": "arn:aws:autoscaling:us-east-1:123456789012:scheduledAction:2d36aa3b-cdf9-4565-b290-81db519b227d:resource/dynamodb/table/TestTable:scheduledActionName/my-second-scheduled-action", "ScalableTargetAction": { "MinCapacity": 5, "MaxCapacity": 10 }, "ScheduledActionName": "my-second-scheduled-action", "ServiceNamespace": "dynamodb" } ] }

Paso 3: Ver las actividades de escalado

En este paso, consultaremos las actividades de escalado activadas por la acciones programadas y, a continuación, comprobaremos que DynamoDB ha cambiado la capacidad de escritura de la tabla.

Para ver las actividades de escalado

  1. Espere la hora elegida y compruebe que sus acciones programadas funcionan mediante el siguiente comando describe-scaling-activities.

    Linux, macOS o Unix

    aws application-autoscaling describe-scaling-activities \ --service-namespace dynamodb

    Windows

    aws application-autoscaling describe-scaling-activities --service-namespace dynamodb

    A continuación, se muestra un ejemplo de resultado de la primera acción programada mientras la acción programada está en curso.

    Las actividades de escalado se ordenan por fecha de creación, devolviendo primero las actividades de escalado más recientes.

    { "ScalingActivities": [ { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 15.", "ResourceId": "table/TestTable", "ActivityId": "d8ea4de6-9eaa-499f-b466-2cc5e681ba8b", "StartTime": 1561574108.904, "ServiceNamespace": "dynamodb", "Cause": "minimum capacity was set to 15", "StatusMessage": "Successfully set write capacity units to 15. Waiting for change to be fulfilled by dynamodb.", "StatusCode": "InProgress" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting min capacity to 15 and max capacity to 20", "ResourceId": "table/TestTable", "ActivityId": "3250fd06-6940-4e8e-bb1f-d494db7554d2", "StartTime": 1561574108.512, "ServiceNamespace": "dynamodb", "Cause": "scheduled action name my-first-scheduled-action was triggered", "StatusMessage": "Successfully set min capacity to 15 and max capacity to 20", "StatusCode": "Successful" } ] }

    A continuación, se muestra un ejemplo del resultado después de haber ejecutado ambas acciones programadas.

    { "ScalingActivities": [ { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 10.", "ResourceId": "table/TestTable", "ActivityId": "4d1308c0-bbcf-4514-a673-b0220ae38547", "StartTime": 1561574415.086, "ServiceNamespace": "dynamodb", "EndTime": 1561574449.51, "Cause": "maximum capacity was set to 10", "StatusMessage": "Successfully set write capacity units to 10. Change successfully fulfilled by dynamodb.", "StatusCode": "Successful" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting min capacity to 5 and max capacity to 10", "ResourceId": "table/TestTable", "ActivityId": "f2b7847b-721d-4e01-8ef0-0c8d3bacc1c7", "StartTime": 1561574414.644, "ServiceNamespace": "dynamodb", "Cause": "scheduled action name my-second-scheduled-action was triggered", "StatusMessage": "Successfully set min capacity to 5 and max capacity to 10", "StatusCode": "Successful" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting write capacity units to 15.", "ResourceId": "table/TestTable", "ActivityId": "d8ea4de6-9eaa-499f-b466-2cc5e681ba8b", "StartTime": 1561574108.904, "ServiceNamespace": "dynamodb", "EndTime": 1561574140.255, "Cause": "minimum capacity was set to 15", "StatusMessage": "Successfully set write capacity units to 15. Change successfully fulfilled by dynamodb.", "StatusCode": "Successful" }, { "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "Description": "Setting min capacity to 15 and max capacity to 20", "ResourceId": "table/TestTable", "ActivityId": "3250fd06-6940-4e8e-bb1f-d494db7554d2", "StartTime": 1561574108.512, "ServiceNamespace": "dynamodb", "Cause": "scheduled action name my-first-scheduled-action was triggered", "StatusMessage": "Successfully set min capacity to 15 and max capacity to 20", "StatusCode": "Successful" } ] }
  2. Después de ejecutar correctamente las acciones programadas, abra la consola de DynamoDB y elija la tabla con la que desea trabajar. Vea las Write capacity units (Unidades de capacidad de escritura) en la pestaña Capacity (Capcidad). Una vez ejecutada la segunda acción de escalado, las unidades de capacidad de escritura deberían haberse escalado de 15 a 10.

    También puede verificar la capacidad de escritura actual de la tabla mediante el comando describe-table. Para filtrar la salida, incluya la opción --query. Para obtener más información acerca de las capacidades de filtrado de resultados de la AWS CLI, consulte Control de la salida de comandos desde la AWS CLI en laGuía del usuario de AWS Command Line Interface.

    Linux, macOS o Unix

    aws dynamodb describe-table --table-name TestTable \ --query 'Table.[TableName,TableStatus,ProvisionedThroughput]'

    Windows

    aws dynamodb describe-table --table-name TestTable --query "Table.[TableName,TableStatus,ProvisionedThroughput]"

    A continuación, se muestra un ejemplo del resultado.

    [ "TestTable", "ACTIVE", { "NumberOfDecreasesToday": 1, "WriteCapacityUnits": 10, "LastIncreaseDateTime": 1561574133.264, "ReadCapacityUnits": 5, "LastDecreaseDateTime": 1561574435.607 } ]

Paso 4: Siguientes pasos

Si desea intentar escalar tanto con el escalado programado como con una política de escalado, siga los pasos que se indican en Tutorial: Configuración del escalado automático para manejar una carga de trabajo pesada.

Paso 5: eliminar

Cuando haya terminado de trabajar con los ejercicios de introducción, puede limpiar los recursos asociados tal y como se indica a continuación.

Eliminar las acciones programadas

El siguiente comando delete-scheduled-action elimina la acción programada especificada. Tenga en cuenta que puede omitir este paso si desea mantener la acción programada para usarla en el futuro.

Linux, macOS o Unix

aws application-autoscaling delete-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/TestTable \ --scheduled-action-name my-second-scheduled-action

Windows

aws application-autoscaling delete-scheduled-action --service-namespace dynamodb --scalable-dimension dynamodb:table:WriteCapacityUnits --resource-id table/TestTable --scheduled-action-name my-second-scheduled-action

Anular el registro del objetivo escalable

Use el siguiente comando deregister-scalable-target para eliminar un registro de un destino escalable. Si tiene alguna política de escalado creada o cualquier acción programada que todavía no se haya eliminado, se elimina con este comando. Tenga en cuenta que puede omitir este paso si desea mantener el destino escalable registrado para usarlo en el futuro.

Linux, macOS o Unix

aws application-autoscaling deregister-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/TestTable

Windows

aws application-autoscaling deregister-scalable-target --service-namespace dynamodb --scalable-dimension dynamodb:table:WriteCapacityUnits --resource-id table/TestTable

Para eliminar la tabla de DynamoDB

Utilice el siguiente comando delete-table para eliminar la tabla que ha usado en este tutorial. Puede omitir este paso si desea conservar la tabla para usarla en el futuro.

Linux, macOS o Unix

aws dynamodb delete-table --table-name TestTable

Windows

aws dynamodb delete-table --table-name TestTable