

# Nueva creación de una asignación de API mediante reglas de enrutamiento
<a name="rest-api-routing-rules-recreate-api-mapping"></a>

Puede volver a crear una asignación de API mediante reglas de enrutamiento. Para volver a crear una asignación de API, asegúrese de activar la separación de rutas base. Esto preserva el comportamiento de las asignaciones de API. Para obtener más información, consulte [Eliminación de la ruta base con condiciones de ruta base](rest-api-routing-rules.md#rest-api-routing-rules-condition-path-split).

En el siguiente tutorial se muestra cómo volver a crear la asignación de API `https:// api.example.com/orders/v2/items/categories/5` como una regla de enrutamiento y cómo actualizar los registros de acceso para registrar el ID de la regla de enrutamiento que API Gateway utiliza para enviar tráfico a la API.

------
#### [ Consola de administración de AWS ]

**Establecimiento del modo de enrutamiento en ROUTING\$1RULE\$1THEN\$1API\$1MAPPING**

1. Inicie sesión en la consola de API Gateway en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Elija **Custom domain names (Nombres de dominios personalizados)** en el panel de navegación principal. 

1. Elija el nombre de dominio personalizado.

1. En **Detalles del dominio**, elija **Editar**.

1. En **Modo de enrutamiento**, elija **ROUTING\$1RULE\$1THEN\$1API\$1MAPPING**.

1. Seleccione **Save**. 

Una vez establecido el modo de enrutamiento, cree la regla de enrutamiento.

**Creación de la regla de enrutamiento**

1. En la pestaña **Detalles de enrutamiento**, elija **Agregar regla de enrutamiento**.

1. Seleccione **Agregar nueva condición** y, a continuación, elija **Ruta**.

1. En **Ruta**, introduzca **orders/v2/items/categories/5**.

1. En **Eliminar ruta base**, elija **Activa**.

1. En **API de destino**, elija la API de destino.

1. En **Etapa de destino**, elija la etapa de destino.

1. Elija **Siguiente**.

1. Para la prioridad, introduzca una prioridad.

   Aunque mantenga la asignación de API existente, API Gateway utilizará siempre la nueva regla de enrutamiento, ya que las reglas de enrutamiento siempre tienen prioridad sobre las asignaciones de API.

1. Seleccione **Save changes (Guardar cambios)**.

Después de crear la regla de enrutamiento, actualice el formato del registro de acceso de la etapa o cree un nuevo registro para confirmar que API Gateway utiliza la regla de enrutamiento para enviar tráfico a la API.

**Actualización de registros de acceso**

1. Inicie sesión en la consola de API Gateway en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Elija la API.

1. En el panel de navegación principal, elija **Etapas**.

1. En **Registros y seguimiento**, elija **Editar**.

   Si no dispone de un grupo de registro, consulte [Configuración del registro de CloudWatch para las API de REST en API Gateway](set-up-logging.md).

1. Agregue **\$1context.customDomain.routingRuleIdMatched** al formato de registro.

   Este grupo de registro guarda el ID de la regla de enrutamiento que API Gateway utilizó para enviar tráfico a la API. Para obtener más información, consulte [No puedo saber cómo API Gateway ha enviado tráfico a mis API](rest-api-routing-rules-troubleshoot.md#rest-api-routing-rules-logging).

1. Seleccione **Save**.

Después de actualizar los registros de acceso, invoque el nombre de dominio personalizado. El siguiente es un comando curl de ejemplo para invocar el nombre de dominio personalizado `https://api.example.com` con la ruta base `orders/v2/items/categories/5`.

```
curl "https://api.example.com/orders/v2/items/categories/5"
```

Una vez que haya invocado correctamente el nombre de dominio personalizado, confirme que CloudWatch Logs muestra `routingRuleIdMatched`. Para obtener información sobre cómo utilizar la consola de CloudWatch Logs para ver un grupo de registros, consulte [Visualización de eventos de registro de API Gateway en la consola de CloudWatch](view-cloudwatch-log-events-in-cloudwatch-console.md).

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

1. Utilice el siguiente comando [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-domain-name.html) para actualizar el nombre de dominio `api.example.com` y utilizar el modo de enrutamiento `ROUTING_RULE_THEN_API_MAPPING`.

   ```
   aws apigatewayv2 update-domain-name \
     --domain-name 'api.example.com' \
     --routing-mode ROUTING_RULE_THEN_API_MAPPING
   ```

1. Utilice el siguiente comando [create-routing-rule](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-routing-rule.html) para crear una nueva regla de enrutamiento para volver a crear la asignación de la API `https://api.example.com/orders/v2/items/categories/5`.

   ```
   aws apigatewayv2 create-routing-rule \
     --domain-name 'api.example.com' \
     --priority 50 \
     --conditions '[
     {
       "MatchBasePaths": {
         "AnyOf": [
           "orders/v2/items/categories/5"
         ]
       }
     }
   ]' \
     --actions '[
     {
       "InvokeApi": {
         "ApiId": "a1b2c3",
         "Stage": "prod",
         "StripBasePath": true
       }
     }
   ]'
   ```

1. Utilice el siguiente comando [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) para actualizar el formato de los registros de acceso e incluir la variable `$context.customDomain.routingRuleIdMatched`. Esta variable registra el ID de la regla de enrutamiento que API Gateway utilizó para enviar tráfico a la API. Utilice este registro para confirmar que API Gateway utiliza la regla de enrutamiento para enviar tráfico a la API. Para obtener más información, consulte [No puedo saber cómo API Gateway ha enviado tráfico a mis API](rest-api-routing-rules-troubleshoot.md#rest-api-routing-rules-logging).

   ```
   aws apigateway update-stage \
     --rest-api-id a1bc2c3 \
     --stage-name prod \
     --patch-operations "op=replace,path=/accessLogSettings/format,value='\$context.path \$context.customDomain.routingRuleIdMatched \$context.requestId \$context.extendedRequestId'"
   ```

   Si no dispone de un grupo de registro, consulte [Configuración del registro de CloudWatch para las API de REST en API Gateway](set-up-logging.md).

1. Utilice el siguiente comando curl de ejemplo para invocar el nombre de dominio personalizado con la ruta base `orders/v2/items/categories/5`.

   ```
   curl "https://api.example.com/orders/v2/items/categories/5
   ```

1. Utilice el siguiente comando [filter-log-events](https://docs.aws.amazon.com/cli/latest/reference/logs/filter-log-events.html) para obtener los eventos de registro del grupo de registro `access-log-group-orders` que contengan el ID de regla de enrutamiento `abc123`.

   ```
   aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
   ```

    Esto confirma que API Gateway utilizó la regla de enrutamiento para enviar tráfico a la API.

------