

# Uso de gRPC con distribuciones de CloudFront
<a name="distribution-using-grpc"></a>

Amazon CloudFront es compatible con gRPC, un marco de llamadas a procedimientos remotos (RPC) de código abierto basado en HTTP/2. gRPC ofrece streaming bidireccional y protocolo binario que almacena en búfer cargas útiles, lo que lo hace adecuado para aplicaciones que requieren comunicaciones de baja latencia.

CloudFront recibe las solicitudes de gRPC y las entrega directamente a sus orígenes. Puede usar CloudFront para entregar cuatro tipos de servicios de gRPC:
+ RPC unitario
+ RPC de streaming de servidores
+ RPC de streaming de cliente
+ RPC de streaming bidireccional

## Cómo funciona gRPC en CloudFront
<a name="how-grpc-works-cloudfront"></a>

Para configurar gRPC en CloudFront, defina un origen que proporcione un servicio de gRPC como origen de la distribución. Puede usar orígenes que proporcionen servicios de gRPC y que no sean de gRPC. CloudFront determina si la solicitud entrante es una solicitud de gRPC o una solicitud HTTP/HTTPS en función del encabezado de `Content-Type`. Si el encabezado de `Content-Type` de una solicitud tiene un valor de `application/grpc`, la solicitud se considera una solicitud de gRPC y CloudFront la entregará al origen.

**nota**  
Para activar una distribución para administrar solicitudes de gRPC, incluya HTTP/2 como una de las versiones HTTP compatibles y permita los métodos HTTP, como `POST`. El punto de conexión de origen de gRPC debe estar configurado para admitir HTTPS, ya que CloudFront solo admite conexiones gRPC seguras (basadas en HTTPS). gRPC solo admite HTTPS de punto a punto. Si utiliza un origen personalizado, compruebe que la configuración de su [protocolo](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy) sea compatible con HTTPS.

Para activar la compatibilidad con gRPC en su distribución, complete los siguientes pasos:

1. Actualice el comportamiento de la caché de su distribución para permitir los métodos HTTP, como el método `POST`.

1. Seleccione la casilla de verificación de gRPC que aparece después de seleccionar el método `POST`.

1. Especifique **HTTP/2** como una de las versiones HTTP compatibles. 

Para obtener más información, consulte los temas siguientes:
+ [Cómo permitir solicitudes de gRPC a través de HTTP/2](DownloadDistValuesCacheBehavior.md#enable-grpc-distribution)
+ [GrpcConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GrpcConfig.html) en la *Referencia de la API de Amazon CloudFront*

Como gRPC se usa solo para el tráfico de API que no se puede almacenar en caché, las configuraciones de la caché no afectarán a las solicitudes de gRPC. Puede usar una política de solicitud de origen para agregar encabezados personalizados a las solicitudes de gRPC que se envían al origen de gRPC. Puede usar AWS WAF con CloudFront para administrar el acceso a la distribución de gRPC, controlar los bots y proteger las aplicaciones de gRPC de las vulnerabilidades de la web. CloudFront gRPC admite [CloudFront Functions](cloudfront-functions.md).

Además del estado HTTPS, recibirá grpc-status junto con la respuesta de gRPC. Para obtener una lista de los posibles valores de grpc-status, consulte: [Status codes and their use in gRPC](https://grpc.github.io/grpc/core/md_doc_statuscodes.html).

**Notas**  
gRPC no admite las siguientes características de CloudFront:  
[Respuestas de error personalizadas](GeneratingCustomErrorResponses.md)
 La [conmutación por error de origen](high_availability_origin_failover.md) no es compatible con gRPC, ya que gRPC utiliza el método `POST`. CloudFront conmuta por error al origen secundario solo cuando el método HTTP de la solicitud del lector es `GET`, `HEAD` u `OPTIONS`.
CloudFront entrega las solicitudes de gRPC directamente al origen y evita la caché perimetral regional (REC). Como gRPC omite REC, gRPC no es compatible con [Lambda@Edge](lambda-at-the-edge.md) ni con [Origin Shield](origin-shield.md).
gRPC no admite las reglas de inspección del cuerpo de la solicitud de AWS WAF. Si habilitó estas reglas en la ACL web para una distribución, cualquier solicitud que utilice gRPC ignorará las reglas de inspección del cuerpo de la solicitud. Se seguirán aplicando todas las demás reglas de AWS WAF. Para obtener más información, consulte [Habilitación de AWS WAF para distribuciones](WAF-one-click.md).