

# Administración de los clústeres de DAX
<a name="DAX.cluster-management"></a>

En esta sección se abordan algunas de las tareas de administración comunes de los clústeres de Amazon DynamoDB Accelerator (DAX).

**Topics**
+ [Permisos de IAM para administrar un clúster de DAX](#DAX.cluster-management.iam-permissions)
+ [Escalado de un clúster de DAX](#DAX.cluster-management.scaling)
+ [Personalización de las configuraciones de un clúster de DAX](#DAX.cluster-management.custom-settings)
+ [Configuración de los ajustes de TTL](#DAX.cluster-management.custom-settings.ttl)
+ [Compatibilidad con el etiquetado en DAX](#DAX.management.tagging)
+ [AWS CloudTrailIntegración de](#DAX.management.cloudtrail)
+ [Eliminación de un clúster de DAX](#DAX.cluster-management.deleting)

## Permisos de IAM para administrar un clúster de DAX
<a name="DAX.cluster-management.iam-permissions"></a>

Al administrar clústeres de DAX mediante la Consola de administración de AWS en la AWS Command Line Interface (AWS CLI), recomendamos encarecidamente reducir el alcance de las acciones que los usuarios pueden llevar a cabo. De esta forma, contribuirá a mitigar los riesgos y a respetar el principio de seguridad de otorgar privilegios mínimos.

La siguiente explicación se centra en el control del acceso a las API de administración de DAX. Para obtener más información, consulte [Amazon DynamoDB Accelerator](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations_Amazon_DynamoDB_Accelerator_(DAX).html) en la *Referencia de la API de Amazon DynamoDB*.

**nota**  
Para obtener información más detallada sobre la administración de permisos de AWS Identity and Access Management (IAM), consulte:  
IAM y creación de clústeres de DAX: [Creación de un clúster de DAX](DAX.create-cluster.md).
IAM y operaciones del plano de datos de DAX: [Control de acceso a DAX](DAX.access-control.md).

Para las API de administración de DAX, no puede limitar las acciones de la API a un recurso concreto. El componente `Resource` debe establecerse en `"*"`. Esto difiere de las operaciones de la API del plano de datos de DAX, tales como `GetItem`, `Query` y `Scan`. Las operaciones del plano de datos se exponen a través del cliente de DAX y su alcance *sí* se puede limitar a recursos concretos.

A modo de ejemplo, tomemos el siguiente documento de política de IAM.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "dax:*"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01"
            ]
        }
    ]
}
```

------

Supongamos que el objetivo de esta política es permitir las llamadas a la API de administración de DAX para el clúster `DAXCluster01` exclusivamente.

Ahora, supongamos que un usuario emite el siguiente comando de la AWS CLI.

```
aws dax describe-clusters
```

Este comando producirá un error con la excepción Not Authorized, porque el alcance de la llamada a la API `DescribeClusters` subyacente no puede limitarse a un clúster específico. Aunque sintácticamente la política es válida, el comando no se ejecuta, porque el componente `Resource` debe establecerse en `"*"`. Sin embargo, si el usuario ejecuta un programa que envía llamadas del plano de datos de DAX (por ejemplo, `GetItem` o `Query`) a `DAXCluster01`, estas llamadas *sí* se llevarán a cabo correctamente. Esto se debe a que el alcance de las API de plano de datos de DAX se puede limitar a recursos concretos (en este caso, a )., `DAXCluster01`).

Si desea escribir una única política de IAM que abarque todos los supuestos (tanto las API de administración de DAX como las API de plano de datos de DAX), le sugerimos que incluya dos instrucciones diferenciadas en el documento de políticas. Una de las instrucciones deberá abordar los API de plano de datos de DAX y la otra, los API de administración de DAX.

En el ejemplo de política siguiente se muestra este enfoque. Observe que el alcance de la instrucción `DAXDataAPIs` se limita al recurso `DAXCluster01`, pero que el recurso correspondiente a `DAXManagementAPIs` ha de ser `"*"`. Las acciones que se muestran en cada instrucción son meramente ilustrativas. Puede personalizarlas como considere oportuno para su aplicación.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DAXDataAPIs",
            "Action": [
                "dax:GetItem",
                "dax:BatchGetItem",
                "dax:Query",
                "dax:Scan",
                "dax:PutItem",
                "dax:UpdateItem",
                "dax:DeleteItem",
                "dax:BatchWriteItem"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01"
            ]},
            {
            "Sid": "DAXManagementAPIs",
            "Action": [
                "dax:CreateParameterGroup",
                "dax:CreateSubnetGroup",
                "dax:DecreaseReplicationFactor",
                "dax:DeleteCluster",
                "dax:DeleteParameterGroup",
                "dax:DeleteSubnetGroup",
                "dax:DescribeClusters",
                "dax:DescribeDefaultParameters",
                "dax:DescribeEvents",
                "dax:DescribeParameterGroups",
                "dax:DescribeParameters",
                "dax:DescribeSubnetGroups",
                "dax:IncreaseReplicationFactor",
                "dax:ListTags",
                "dax:RebootNode",
                "dax:TagResource",
                "dax:UntagResource",
                "dax:UpdateCluster",
                "dax:UpdateParameterGroup",
                "dax:UpdateSubnetGroup"
                ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

## Escalado de un clúster de DAX
<a name="DAX.cluster-management.scaling"></a>

Existen dos opciones disponibles para escalar un clúster de DAX. La primera opción es el *escalado horizontal*, donde se agregan réplicas de lectura al clúster. La segunda opción es el *escalado vertical*, donde se seleccionan distintos tipos de nodos. Para obtener información sobre cómo elegir un tamaño de clúster y un tipo de nodo adecuados para la aplicación, consulte [Guía de tamaño del clúster de DAX](DAX.sizing-guide.md).

### Escalado horizontal
<a name="DAX.cluster-management.scaling.read-scaling"></a>

Con el escalado horizontal, puede mejorar el rendimiento de las operaciones de lectura agregando más réplicas de lectura al clúster. Un único clúster de DAX admite hasta 10 réplicas de lectura, que puede agregar o eliminar mientras el clúster se está ejecutando.

Al agregar un nodo nuevo, debe sincronizar los datos de la caché de un nodo homólogo. Por lo tanto, el tiempo de adición varía en función del tamaño de la caché y de la carga de trabajo de la aplicación. Como práctica recomendada, le recomendamos que escale previamente su clúster para satisfacer los picos de tráfico previstos. Para obtener información sobre las directrices de dimensionamiento y las recomendaciones de seguimiento, consulte [Guía de tamaño del clúster de DAX](DAX.sizing-guide.md).

En los siguientes ejemplos de la AWS CLI se muestra cómo incrementar o reducir el número de nodos. El argumento `--new-replication-factor` especifica el número total de nodos del clúster. Uno de los nodos es el principal y los demás, las réplicas de lectura.

```
aws dax increase-replication-factor \
    --cluster-name MyNewCluster  \
    --new-replication-factor 5
```

```
aws dax decrease-replication-factor \
    --cluster-name MyNewCluster  \
    --new-replication-factor 3
```

**nota**  
El estado del clúster cambia a `modifying` cuando se modifica el factor de replicación. El estado cambia a `available` cuando se complete la modificación.

### Escalado vertical
<a name="DAX.cluster-management.scaling.node-types"></a>

Si tiene un gran conjunto de datos con los que trabajar, seguramente la aplicación se beneficiará si usa los tipos de nodos mayores. Los nodos mayores pueden permitir que el clúster almacene más datos en memoria, lo que reduce los errores de caché y mejorar el rendimiento de la aplicación en general. (Todos los nodos de un clúster de DAX deben ser del mismo tipo).

Si el clúster de DAX tiene una alta tasa de operaciones de escritura o errores de caché, la aplicación también podría beneficiarse de utilizar tipos de nodos mayores. Las operaciones de escritura y los errores de caché consumen recursos en el nodo principal del clúster. Por lo tanto, el uso de tipos de nodos mayores podría aumentar el rendimiento del nodo principal y, por lo tanto, permitir un mayor rendimiento para estos tipos de operaciones.

No puede modificar los tipos de los nodos en un clúster de DAX en ejecución. En lugar de ello, deberá crear un nuevo clúster con el tipo de nodo deseado. Para ver una lista de los tipos de nodos admitidos, consulte [Nodos](DAX.concepts.cluster.md#DAX.concepts.nodes).

Para crear un nuevo clúster de DAX mediante la Consola de administración de AWS, [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html), la AWS CLI o el [SDK de AWS](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations_Amazon_DynamoDB_Accelerator_(DAX).html). (Para la AWS CLI, use el parámetro `--node-type` para especificar el tipo de nodo).

## Personalización de las configuraciones de un clúster de DAX
<a name="DAX.cluster-management.custom-settings"></a>

Al crear un clúster de DAX, se utilizan las siguientes configuraciones predeterminados:
+ Expulsión automática de la caché habilitada, con un período de vida (TTL) de 5 minutos
+ Sin preferencias respecto a las zonas de disponibilidad
+ Sin preferencias respecto a los tiempos de mantenimiento
+ Notificaciones deshabilitadas

Para los nuevos clústeres, puede personalizar los ajustes en el momento de su creación. Para hacerlo en la Consola de administración de AWS, desactive **Use default settings (Usar la configuración predeterminada)** para modificar los siguientes ajustes:
+ **Network and Security (Red y seguridad)**: permite ejecutar nodos de clústeres de DAX individuales en distintas zonas de disponibilidad de la región de AWS actual. Si elige **No Preference (Sin preferencias)**, los nodos se distribuirán automáticamente entre las zonas de disponibilidad.
+ **Parameter Group (Grupo de párametros)**: conjunto de parámetros con nombre que se aplican a todos los nodos del clúster. Puede utilizar un grupo de parámetros para especificar el comportamiento de la caché con respecto al TTL. Puede cambiar el valor de cualquier parámetro dado dentro de un grupo de parámetros (excepto el grupo de parámetros predeterminado `default.dax.1.0`) en cualquier momento.
+ **Maintenance Window (Ventana de mantenimiento)**: periodo semanal durante el cual se aplicarán los parches y las actualizaciones de software a los nodos del clúster. Puede elegir el día y la hora de comienzo, así como la duración del tiempo de mantenimiento. Si elige **No Preference (Sin preferencias)**, el periodo de mantenimiento se selecciona al azar dentro de un bloque de 8 horas por región. Para obtener más información, consulte [Periodo de mantenimiento](DAX.concepts.cluster.md#DAX.concepts.maintenance-window).

**nota**  
**Parameter Group (Grupo de parámetros)** y **Maintenance Window (Ventana de mantenimiento)** también se pueden cambiar en cualquier momento en un clúster en ejecución.

Cuando se produce un evento de mantenimiento, DAX puede notificarle mediante Amazon Simple Notification Service (Amazon SNS). Para configurar las notificaciones, elija una opción en el selector **Topic for SNS notification (Tema para notificación de SNS)**. Puede crear un tema de Amazon SNS nuevo o elegir uno disponible.

Para obtener información acerca de cómo configurar y suscribirse a un tema de Amazon SNS, consulte [Introducción a Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/GettingStarted.html) en la *Guía del desarrollador de Amazon Simple Notification Service*.

## Configuración de los ajustes de TTL
<a name="DAX.cluster-management.custom-settings.ttl"></a>

DAX mantiene dos cachés para datos que lee de DynamoDB:
+ **Caché de elemento**: para los elementos recuperados usando `GetItem` or `BatchGetItem`.
+ **Caché de consultas**: para los conjuntos de resultados recuperados mediante `Query` o `Scan`.

Para obtener más información, consulte [Caché de elementos](DAX.concepts.md#DAX.concepts.item-cache) y [Caché de consultas](DAX.concepts.md#DAX.concepts.query-cache).

El TTL predeterminado de cada una de estas cachés es de 5 minutos. Si desea utilizar otras configuraciones de TTL, puede lanzar un clúster de DAX con un grupo de parámetros personalizados. Para hacer esto en la consola, elija **DAX \| Parameter groups (DAX \| Grupos de parámetros)** en el panel de navegación.

También puede llevar a cabo estas tareas utilizando la AWS CLI. En el siguiente ejemplo se muestra cómo lanzar un nuevo clúster de DAX con un grupo de parámetros personalizados. En este ejemplo, el TTL de la caché de elementos se establece en 10 minutos y el de la caché de consultas, en 3 minutos.

1. Cree un nuevo grupo de parámetros.

   ```
   aws dax create-parameter-group \
       --parameter-group-name custom-ttl
   ```

1. Establezca el TTL de la caché de elementos en 10 minutos (600 000 milisegundos).

   ```
   aws dax update-parameter-group \
       --parameter-group-name custom-ttl \
       --parameter-name-values "ParameterName=record-ttl-millis,ParameterValue=600000"
   ```

1. Establezca el TTL de la caché de consultas en 3 minutos (180 000 milisegundos).

   ```
   aws dax update-parameter-group \
       --parameter-group-name custom-ttl \
       --parameter-name-values "ParameterName=query-ttl-millis,ParameterValue=180000"
   ```

1. Compruebe que los parámetros se han configurado correctamente.

   ```
   aws dax describe-parameters --parameter-group-name custom-ttl \
       --query "Parameters[*].[ParameterName,Description,ParameterValue]"
   ```

A partir de ahora, puede lanzar un nuevo clúster de DAX con este grupo de parámetros.

```
aws dax create-cluster \
    --cluster-name MyNewCluster \
    --node-type dax.r3.large \
    --replication-factor 3 \
    --iam-role-arn arn:aws:iam::123456789012:role/DAXServiceRole \
    --parameter-group custom-ttl
```

**nota**  
Puede modificar un grupo de parámetros asociado a un clúster de DAX en ejecución. Los cambios de parámetros solo se aplican a los elementos escritos después de la modificación. Los elementos almacenados en caché existentes retienen el TTL y la configuración de cuándo se escribieron originalmente.

## Compatibilidad con el etiquetado en DAX
<a name="DAX.management.tagging"></a>

Muchos servicios de AWS, incluido DynamoDB, admiten el *etiquetado*: la capacidad de etiquetar recursos con nombres definidos por el usuario. Puede asignar etiquetas a clústeres de DAX, lo que le permite identificar rápidamente todos los recursos de AWS que tienen la misma etiqueta o categorizar las facturas de AWS según las etiquetas que ha asignado.

Para obtener más información, consulte [Cómo agregar etiquetas a los recursos en DynamoDB](Tagging.md).

### Mediante Consola de administración de AWS
<a name="DAX.management.tagging.console"></a>

**Para administrar las etiquetas de los clústeres de DAX**

1. Abra la consola de DynamoDB en [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. En el panel de navegación, en **DAX**, elija **Clusters (Clústeres)**.

1. Elija el clúster con el que desee trabajar.

1. Elija la pestaña **Etiquetas**. Aquí puede agregar, enumerar, editar o eliminar las etiquetas.

   Cuando la configuración sea la que desea, elija **Apply Changes (Aplicar cambios)**.

### Uso de AWS CLI
<a name="DAX.management.tagging.cli"></a>

Cuando se utiliza la AWS CLI para administrar las etiquetas de los clústeres de DAX, es preciso determinar previamente el nombre de recurso de Amazon (ARN) del clúster. En el siguiente ejemplo se muestra cómo determinar el ARN de un clúster denominado `MyDAXCluster`.

```
aws dax describe-clusters \
    --cluster-name MyDAXCluster \
    --query "Clusters[*].ClusterArn"
```

En el resultado, el ARN tendrá un aspecto similar a este: `arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster`

En el siguiente ejemplo se muestra cómo etiquetar el clúster.

```
aws dax tag-resource  \
    --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \
    --tags="Key=ClusterUsage,Value=prod"
```

Para enumerar todas las etiquetas de un clúster.

```
aws dax list-tags \
    --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster
```

Para eliminar una etiqueta, hay que especificar su clave.

```
aws dax untag-resource  \
    --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \
    --tag-keys ClusterUsage
```

## AWS CloudTrailIntegración de
<a name="DAX.management.cloudtrail"></a>

DAX se integra con AWS CloudTrail, lo que permite auditar las actividades de los clústeres de DAX. Puede utilizar registros de CloudTrail para ver todos los cambios realizados en el nivel de clúster. También puede los cambios en los componentes de los clústeres, como los nodos, los grupos de subredes y los grupos de parámetros. Para obtener más información, consulte [Registrar las operaciones de DynamoDB mediante AWS CloudTrail](logging-using-cloudtrail.md).

## Eliminación de un clúster de DAX
<a name="DAX.cluster-management.deleting"></a>

Si ya no usa un clúster de DAX, debe eliminarlo para que no se le cobre por los recursos no utilizados.

Puede eliminar un clúster de DAX mediante la consola o la AWS CLI. A continuación se muestra un ejemplo.

```
aws dax delete-cluster --cluster-name mydaxcluster
```