

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Agregar una regla de oyente para el equilibrador de carga de aplicaciones
<a name="add-rule"></a>

Define una regla predeterminada cuando crea un oyente. Puede definir reglas adicionales en cualquier momento. Cada regla debe especificar una acción y una condición, y puede especificar transformaciones de forma opcional. Para obtener más información, consulte los siguientes temas:
+ [Tipos de acción](rule-action-types.md)
+ [Tipos de condiciones](rule-condition-types.md)
+ [Transformaciones](rule-transforms.md)

------
#### [ Console ]

**Para añadir una regla**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Load Balancers**.

1. Seleccione el equilibrador de carga.

1. En la pestaña **Oyentes y reglas**, elija el texto de la columna **Protocolo:Puerto** para abrir la página de detalles del oyente.

1. En la pestaña **Reglas**, seleccione **Añadir regla**.

1. (Opcional) Para especificar un nombre para la regla, expanda **Nombre y etiquetas** e introduzca el nombre. Para agregar etiquetas adicionales, elija **Agregar etiquetas adicionales** e introduzca la clave y el valor de la etiqueta.

1. Para cada condición, elija **Agregar condición**, seleccione el tipo de condición y proporcione los valores de condición requeridos:
   + **Encabezado de host**: seleccione el tipo de patrón de coincidencia e introduzca el encabezado de host.

     **Coincidencia de valores**: máximo de 128 caracteres. No distingue entre mayúsculas y minúsculas. Los caracteres permitidos son a-z, 0-9; los siguientes caracteres especiales: -\$1.; y caracteres comodín (\$1 y?). Debe incluir al menos un carácter “.”. Solo puede contener caracteres alfabéticos detrás del carácter “.” final.

     **Coincidencia mediante expresiones regulares**: máximo de 128 caracteres.
   + **Ruta**: seleccione el tipo de patrón de coincidencia e introduzca la ruta.

     **Coincidencia de valores**: máximo de 128 caracteres. Distingue mayúsculas de minúsculas. Los caracteres permitidos son letras a-z, A-Z, números 0-9; los siguientes caracteres especiales: \$1-.\$1/\$1"'@; &; y caracteres comodín (\$1 y ?).

     **Coincidencia mediante expresiones regulares**: máximo de 128 caracteres.
   + **Cadena de consulta**: introduzca pares clave-valor o valores sin clave.

     128 caracteres como máximo. No distingue entre mayúsculas y minúsculas. Los caracteres permitidos son letras a-z, AZ, números 0-9; los siguientes caracteres especiales: \$1-.\$1/\$1"'@:\$1&()\$1,;=; y caracteres comodín (\$1 y ?).
   + **Método de solicitud HTTP**: introduzca el método de solicitud HTTP.

     40 caracteres como máximo. Distingue mayúsculas de minúsculas. Los caracteres permitidos son letras A-Z y los siguientes caracteres especiales: -\$1. No se admite el uso de comodines.
   + **Encabezado HTTP**: seleccione el tipo de patrón de coincidencia e introduzca el nombre del encabezado y las cadenas de comparación.
     + **Nombre del encabezado HTTP**: la regla evaluará las solicitudes que contengan este encabezado para confirmar los valores coincidentes.

       **Coincidencia de valores**: máximo de 40 caracteres. No distingue entre mayúsculas y minúsculas. Los caracteres permitidos son letras de la a-z, A-Z, números 0-9 y los siguientes caracteres especiales: \$1? -\$1 \$1\$1%&'\$1.^\$1`\$1\$1. No se admite el uso de comodines.

       **Coincidencia mediante expresiones regulares**: máximo de 128 caracteres.
     + **Valor de encabezado HTTP**: ingrese cadenas que se van a comparar con el valor del encabezado HTTP.

       **Coincidencia de valores**: máximo de 128 caracteres. No distingue entre mayúsculas y minúsculas. Los caracteres permitidos son a-z, A-Z, 0-9, espacios, los siguientes caracteres especiales: \$1"\$1\$1%&'()\$1,./:;<=>@[]^\$1`\$1\$1\$1\$1-; y caracteres comodines (\$1 y ?).

       **Coincidencia mediante expresiones regulares**: máximo de 128 caracteres.
   + **IP de origen**: defina la dirección IP de origen en formato CIDR. Ambos IPv4 IPv6 CIDRs están permitidos. No se admite el uso de comodines.

1. (Opcional) Para agregar una transformación, elija **Agregar transformación**, seleccione el tipo de transformación e introduzca una expresión regular para la coincidencia y una cadena de reemplazo.

1. (Opcional, solo para oyentes HTTPS) Para realizar una **acción previa al enrutamiento**, seleccione una de las siguientes acciones:
   + **Autenticar al usuario**: elija un proveedor de identidad y proporcione la información requerida. Para obtener más información, consulte [Autenticación de usuarios mediante un Equilibrador de carga de aplicación](listener-authenticate-users.md).
   + **Validar el token**: introduce el punto final del JWKS, los problemas y cualquier otra reclamación adicional. Para obtener más información, consulte [Verificación JWTs mediante un Application Load Balancer](listener-verify-jwt.md).

1. Para la **acción de enrutamiento**, seleccione una de las siguientes acciones:
   + **Reenviar a grupos de destino**: seleccione un grupo de destino. Para agregar otro grupo de destino, seleccione **Agregar grupo de destino**, elija un grupo de destino, revise las ponderaciones relativas y actualícelas según sea necesario. Debe habilitar la persistencia del grupo si habilitó la persistencia en alguno de los grupos de destino.
   + **Redirección a URL**: para ingresar la URL, indique cada parte por separado en la pestaña **Partes del URI**, o bien introduzca la dirección completa en la pestaña **URL completa**. En **Código de estado**, seleccione temporal (HTTP 302) o permanente (HTTP 301) según sus necesidades.
   + **Respuesta fija**: introduzca el **Código de respuesta** que se devolverá para las solicitudes de cliente descartadas. Opcionalmente, puede especificar el **tipo de contenido** y un **cuerpo de respuesta**.

1. Elija **Siguiente**.

1. En **Prioridad**, introduzca un valor entre 1 y 50 000. Las reglas se evalúan según el orden de prioridad, del valor más bajo al valor más alto.

1. Elija **Siguiente**.

1. En la página **Review and create** (Revisar y crear), elija **Create** (Crear).

------
#### [ AWS CLI ]

**Para añadir una regla**  
Utilice el comando [create-rule](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html).

El siguiente ejemplo crea una regla con una acción `forward` y una condición `host-header`.

```
aws elbv2 create-rule \
    --listener-arn listener-arn \
    --priority 10 \
    --conditions "Field=host-header,Values=example.com,www.example.com" \
    --actions "Type=forward,TargetGroupArn=target-group-arn"
```

Para crear una acción de reenvío que distribuya el tráfico entre dos grupos de destino, utilice en su lugar la siguiente opción `--actions`.

```
    --actions '[{
        "Type":"forward",
        "ForwardConfig":{
          "TargetGroups":[
            {"TargetGroupArn":"target-group-1-arn","Weight":50},
            {"TargetGroupArn":"target-group-2-arn","Weight":50}
          ]
        }
    }]'
```

El siguiente ejemplo crea una regla con una acción `fixed-response` y una condición `source-ip`.

```
aws elbv2 create-rule \
    --listener-arn listener-arn \
    --priority 20 \
    --conditions '[{"Field":"source-ip","SourceIpConfig":{"Values":["192.168.1.0/24","10.0.0.0/16"]}}]' \
    --actions "Type=fixed-response,FixedResponseConfig={StatusCode=403,ContentType=text/plain,MessageBody='Access denied'}"
```

El siguiente ejemplo crea una regla con una acción `redirect` y una condición `http-header`.

```
aws elbv2 create-rule \
    --listener-arn listener-arn \
    --priority 30 \
    --conditions '[{"Field":"http-header","HttpHeaderConfig":{"HttpHeaderName":"User-Agent","Values":["*Mobile*","*Android*","*iPhone*"]}}]' \
    --actions "Type=redirect,RedirectConfig={Host=m.example.com,StatusCode=HTTP_302}"
```

------
#### [ CloudFormation ]

**Para añadir una regla**  
Defina un tipo de recurso [AWS::ElasticLoadBalancingV2::ListenerRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listenerrule.html).

El siguiente ejemplo crea una regla con una acción `forward` y una condición `host-header`. La regla envía tráfico al grupo de destino especificado cuando se cumple la condición.

```
Resources:
    myForwardListenerRule:
     Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
     Properties:
       ListenerArn: !Ref myListener
       Priority: 10
       Conditions:
         - Field: host-header
           Values:
             - example.com
             - www.example.com
       Actions:
         - Type: forward
           TargetGroupArn: !Ref myTargetGroup
```

Como alternativa, para crear una acción de reenvío que distribuya el tráfico entre dos grupos de destino cuando se cumple la condición, defina `Actions` de la siguiente manera.

```
       Actions:
         - Type: forward
           ForwardConfig:
             TargetGroups:
               - TargetGroupArn: !Ref TargetGroup1
                 Weight: 50
               - TargetGroupArn: !Ref TargetGroup2
                 Weight: 50
```

El siguiente ejemplo crea una regla con una acción `fixed-response` y una condición `source-ip`.

```
Resources:
    myFixedResponseListenerRule:
     Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
     Properties:
       ListenerArn: !Ref myListener
       Priority: 20
       Conditions:
         - Field: source-ip
           SourceIpConfig:
             Values:
                - 192.168.1.0/24
                - 10.0.0.0/16
       Actions:
         - Type: fixed-response
           FixedResponseConfig:
             StatusCode: 403
             ContentType: text/plain
             MessageBody: "Access denied"
```

El siguiente ejemplo crea una regla con una acción `redirect` y una condición `http-header`.

```
Resources:
    myRedirectListenerRule:
     Type: 'AWS::ElasticLoadBalancingV2::ListenerRule'
     Properties:
       ListenerArn: !Ref myListener
       Priority: 30
       Conditions:
         - Field: http-header
           HttpHeaderConfig:
             HttpHeaderName: User-Agent
             Values: 
               - "*Mobile*"
               - "*Android*"
               - "*iPhone*"
       Actions:
         - Type: redirect
           RedirectConfig:
             Host: m.example.com
             StatusCode: HTTP_302
```

------