

# Configuración de un nombre de dominio personalizado regional en API Gateway
<a name="apigateway-regional-api-custom-domain-create"></a>

Utilice un nombre de dominio personalizado regional para crear una URL base de la API más descriptiva. Con un nombre de dominio personalizado regional, puede asignar etapas de la API de HTTP y REST al mismo nombre de dominio personalizado y usar la autenticación TLS mutua. 

## Consideraciones
<a name="regional-custom-domain-names"></a>

A continuación, se muestran consideraciones para el nombre de dominio personalizado regional:
+ Debe proporcionar un certificado de ACM específico de la región. Este certificado debe estar en la misma región que la API. Para obtener más información sobre cómo crear o cargar un certificado de nombre de dominio personalizado, consulte [Preparación de certificados en AWS Certificate Manager](how-to-specify-certificate-for-custom-domain-name.md).
+ Cuando crea un nombre de dominio personalizado regional (o migra uno) con un certificado de ACM, API Gateway crea un rol vinculado al servicio en su cuenta. El rol vinculado al servicio es necesario para asociar el certificado de ACM a su punto de conexión regional. El rol se denomina **AWSServiceRoleForAPIGateway** y llevará asociada la política administrada **APIGatewayServiceRolePolicy**. Para obtener más información acerca de cómo usar el rol vinculado al servicio, consulte [Uso de roles vinculados a servicios](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html).
+ Después de crear el nombre de dominio personalizado regional, deberá crear un registro DNS para que el nombre de dominio personalizado apunte al nombre de dominio regional. Esto permite que el tráfico que se dirige al nombre de dominio personalizado se enrute al nombre de host regional de la API.

  El registro DNS puede ser el registro CNAME o un registro de alias A. Si utiliza Route 53 como proveedor de DNS, cree un registro de alias A. Si utiliza un proveedor de DNS externo, utilice un registro CNAME. Si utiliza un registro CNAME y crea un punto de conexión de VPC de interfaz de API Gateway con el DNS privado habilitado para una API privada, no podrá resolver el nombre de dominio personalizado en la VPC que aloja la API privada. 

## Creación de un nombre de dominio personalizado regional
<a name="apigateway-regional-api-custom-domain-create-procedure"></a>

En el siguiente procedimiento se muestra cómo crear un nombre de dominio personalizado regional. Una vez completado este procedimiento, cree una regla de enrutamiento para enrutar las etapas de la API al nombre de dominio personalizado.

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

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. Seleccione **Create (Crear)**.

1. En **Nombre de dominio**, escriba un nombre de dominio.

1. En **Modo de enrutamiento**, elija **Solo reglas de enrutamiento**.

   En este modo de enrutamiento, solo puede enviar tráfico desde el nombre de dominio personalizado a las API mediante reglas de enrutamiento. Para obtener más información, consulte [Envío de tráfico a las API a través del nombre de dominio personalizado en API Gateway](rest-api-routing-mode.md).

1. En **Versión mínima de TLS**, seleccione una versión.

1. En **Configuración de punto de conexión**, para **Tipo de punto de conexión de la API**, elija **Regional**.

1. Elija un certificado de ACM. El certificado debe estar en la misma región que la API.

1. Seleccione **Create (Crear)**.

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

El siguiente comando [create-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-domain-name.html) permite crear un nombre de dominio personalizado:

```
aws apigatewayv2 create-domain-name \ 
    --domain-name 'regional.example.com' \
    --domain-name-configurations CertificateArn=arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678 \
    --routing-mode ROUTING_RULE_ONLY
```

El resultado será similar al siguiente:

```
{
    "ApiMappingSelectionExpression": "$request.basepath",
    "DomainName": "regional.example.com",
    "DomainNameConfigurations": [
        {
            "ApiGatewayDomainName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com",
            "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678",
            "DomainNameStatus": "AVAILABLE",
            "EndpointType": "REGIONAL",
            "HostedZoneId": "Z2OJLYMUO9EFXC",
            "SecurityPolicy": "TLS_1_2"
        }
        "RoutingMode": "ROUTING_RULE_ONLY"
    ]
}
```

El valor de propiedad `DomainNameConfigurations` devuelve el nombre de host de la API regional. Debe crear un registro DNS para apuntar su nombre de dominio personalizado a este nombre de dominio regional. Esto permite que el tráfico que se dirige al nombre de dominio personalizado se enrute al nombre de host de esta API regional.

------

## Creación de una regla de enrutamiento para el nombre de dominio personalizado regional
<a name="apigateway-regional-api-custom-domain-base-path-mapping"></a>

Después de crear el nombre de dominio personalizado, configure cómo se enruta el tráfico desde el nombre de dominio personalizado a las API. Dado que establece el modo de enrutamiento en `ROUTING_RULE_ONLY`, utiliza reglas de enrutamiento para enrutar las solicitudes entrantes al nombre de dominio personalizado hacia las API.

En este ejemplo, crea una regla catch-all que enruta todas las solicitudes entrantes al nombre de dominio personalizado a una etapa de la API. También puede configurar reglas de enrutamiento basadas en diferentes condiciones de encabezado y ruta. Para obtener más información, consulte [Reglas de enrutamiento para conectar las etapas de API a un nombre de dominio personalizado para las API de REST](rest-api-routing-rules.md).

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

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 un nombre de dominio personalizado.

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

1. Elija **Agregar una nueva condición** para agregar una nueva condición.

1. Mantenga esta regla sin condiciones. Esto enruta todas las solicitudes al nombre de dominio personalizado a la API de destino y etapa de destino.

1. En **Acción**, utilice la lista desplegable para seleccionar la API de destino y la etapa de destino.

1. Elija **Siguiente**.

1. En el campo de prioridad, introduzca **100**.

   API Gateway evalúa las reglas en orden de prioridad, del valor más bajo al más alto. Dado que se trata de una regla catch-all, utilice una prioridad alta para que API Gateway pueda realizar la coincidencia primero con cualquier regla adicional que cree.

1. Elija **Crear regla de enrutamiento**.

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

El siguiente comando `create-routing-rule` crea una regla de enrutamiento catch-all:

```
aws apigatewayv2 create-routing-rule \
  --domain-name 'regional.example.com' \
  --priority 100 \
  --conditions  \
  --actions '[{
    "InvokeApi": {
      "ApiId": "a1b2c3",
      "Stage": "prod"
    }
  }]'
```

------

Puede cambiar el modo de enrutamiento y crear nuevas reglas en cualquier momento. Para obtener más información, consulte [Envío de tráfico a las API a través del nombre de dominio personalizado en API Gateway](rest-api-routing-mode.md).

## Creación de un registro de DNS para el nombre de dominio personalizado regional
<a name="apigateway-regional-api-custom-domain-dns-record"></a>

Después de crear el nombre de dominio personalizado y las asignaciones de rutas base, debe crear un registro DNS para que el nombre de dominio personalizado apunte al nombre de dominio regional que se acaba de crear.

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

Para usar la Consola de administración de AWS, siga la documentación de Route 53 sobre la [configuración de Route 53 para enrutar el tráfico a API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

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

Para configurar sus registros de DNS para asignar el nombre de dominio regional personalizado al nombre de host del ID de zona alojada designado, cree primero un archivo JSON que contenga la configuración a fin de establecer un registro de DNS para el nombre de dominio regional. 

En el siguiente `setup-dns-record.json` se muestra cómo crear un registro `A` de DNS para asignar un nombre de dominio personalizado regional (`regional.example.com`) a su nombre de host regional (`d-numh1z56v6.execute-api.us-west-2.amazonaws.com`) aprovisionado como parte de la creación de nombres de dominio personalizados. Las propiedades `DNSName` y `HostedZoneId` de `AliasTarget` pueden tener los valores `regionalDomainName` y `regionalHostedZoneId`, respectivamente, del nombre de dominio personalizado. También puede obtener los ID de zona alojada regionales de Route 53 en [Puntos de conexión y cuotas de Amazon API Gateway](https://docs.aws.amazon.com/general/latest/gr/apigateway.html).

```
{
  "Changes": [
    {
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "regional.example.com",
        "Type": "A",
        "AliasTarget": {
          "DNSName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com",
          "HostedZoneId": "Z2OJLYMUO9EFXC",
          "EvaluateTargetHealth": false
        }
      }
    }
  ]
}
```

El siguiente comando [change-resource-record-sets](https://docs.aws.amazon.com/cli/latest/reference/route53/change-resource-record-sets.html) permite crear un registro de DNS para el nombre de dominio personalizado regional:

```
aws route53 change-resource-record-sets \
    --hosted-zone-id Z2OJLYMUO9EFXC \
    --change-batch file://path/to/your/setup-dns-record.json
```

Reemplace `hosted-zone-id` por el ID de zona alojada de Route 53 del conjunto de registros de DNS de la cuenta. El valor del parámetro `change-batch` apunta a un archivo JSON (*setup-dns-record.json*) de una carpeta (*ruta/a/su*).

------