Usar gRPC com distribuições do CloudFront - Amazon CloudFront

Usar gRPC com distribuições do CloudFront

O Amazon CloudFront é compatível com gRPC, um framework de chamada de procedimento remoto (RPC) de código aberto baseado em HTTP/2. O gRPC oferece streaming bidirecional e protocolo binário com buffer de carga útil, tornando-o adequado para aplicações que exigem comunicações de baixa latência.

O CloudFront recebe solicitações gRPC e as envia por proxy diretamente para as origens. É possível usar o CloudFront para fazer proxy de quatro tipos de serviços de gRPC:

  • RPC unário

  • Streaming de RPC de servidor

  • Streaming de RPC de cliente

  • Streaming de RPC bidirecional

Como o gRPC funciona no CloudFront

Para configurar o gRPC no CloudFront, defina uma origem que forneça um serviço de gRPC como origem da distribuição. É possível usar origens que fornecem serviços de gRPC e que não são de gRPC. O CloudFront determina se a solicitação recebida é uma solicitação de gRPC ou uma solicitação HTTP/HTTPS com base no cabeçalho Content-Type. Se o cabeçalho Content-Type de uma solicitação tiver o valor de application/grpc, a solicitação será considerada uma solicitação de gRPC e o CloudFront enviará a solicitação por proxy para a origem.

nota

Para que uma distribuição lide com solicitações gRPC, inclua HTTP/2 como uma das versões de HTTP compatíveis e permita métodos HTTP, como POST. O endpoint de origem do gRPC deve ser configurado para permitir HTTPS, pois o CloudFront só é compatível com conexões gRPC (baseadas em HTTPS). O gRPC só permite HTTPS de ponta a ponta. Se você estiver usando uma origem personalizada, verifique se suas configurações de protocolo são compatíveis com HTTPS.

Para habilitar o suporte a gRPC para sua distribuição, conclua as seguintes etapas:

  1. Atualize o comportamento do cache da distribuição para permitir métodos HTTP, como o método POST.

  2. Depois de selecionar o método POST, marque a caixa de seleção gRPC exibida.

  3. Especifique HTTP/2 como uma das versões HTTP compatíveis.

Para obter mais informações, consulte os tópicos a seguir.

Como o gRPC é usado apenas para tráfego de API que não é armazenado em cache, as configurações de cache não afetarão as solicitações gRPC. É possível usar uma política de solicitação para a origem para adicionar cabeçalhos personalizados às solicitações gRPC enviadas à origem do gRPC. Você pode usar o AWS WAF com o CloudFront para gerenciar o acesso à sua distribuição de gRPC, controlar bots e proteger aplicações de gRPC contra explorações da web. O gRPC do CloudFront é compatível com o CloudFront Functions.

Além do status HTTPS, você receberá grpc-status junto com sua resposta de gRPC. Para obter uma lista de valores possíveis para grpc-status, consulte Status codes and their use in gRPC.

Observações

O gRPC não é compatível com os seguintes recursos do CloudFront:

  • Implantação contínua

  • Respostas a erros personalizadas

  • Não é possível usar failover de origem com o gRPC, pois o gRPC usa o método POST. O CloudFront faz failover para a origem secundária somente quando o método HTTP da solicitação do visualizador for GET, HEAD ou OPTIONS.

  • O CloudFront envia por proxy as solicitações gRPC diretamente à origem e ignora o cache de borda regional (REC). Como o gRPC ignora o REC, ele não é compatível com o Lambda@Edge ou o Origin Shield.

  • O gRPC não comporta regras de inspeção do corpo de solicitações do AWS WAF. Se você habilitou essas regras na ACL da web para uma distribuição, qualquer solicitação que use gRPC ignorará as regras de inspeção do corpo das solicitações. Todas as outras regras do AWS WAF ainda serão aplicadas. Para obter mais informações, consulte Habilitar o AWS WAF para distribuições.