Depois de criar um serviço ou uma função, o Cloud Run fornece-lhe um ponto final HTTPS para o serviço. Pode ativar o serviço para ser executado em resposta a pedidos HTTPS.
Todos os serviços do Cloud Run têm um URL HTTPS estável, que representa o ponto final HTTPS predefinido para o serviço, embora também possa configurar domínios personalizados.
Seguem-se alguns exemplos de utilização:
- API Web RESTful personalizada
- Microserviço privado
- Middleware HTTP ou proxy inverso para as suas aplicações Web
- App Web pré-comprimida
Crie serviços públicos
A criação de um serviço público no Cloud Run requer o seguinte:
- Acesso ao serviço a partir da Internet pública
- Um URL destinado a utilização pública
Para tornar um serviço público, defina o seu serviço para permitir o acesso não autenticado (público) quando o implementar ou em qualquer altura após a implementação.
URL do serviço
O Cloud Run atribui um URL não determinístico baseado em hash a todos os serviços. Se o comprimento do nome do serviço o permitir, o Cloud Run também atribui um URL determinístico ao serviço.
Pode desativar estes run.app
URLs predefinidos.
Pode obter o URL do seu serviço clicando no nome do serviço na Google Cloud consola ou executando o seguinte comando na CLI gcloud:
gcloud run services describe SERVICE --format 'value(status.url)'
O URL determinístico tem prioridade quando é apresentado.
Se o serviço do Cloud Run tiver sido criado como uma função com a API Cloud Functions v2, também é atribuído um URL cloudfunctions.net
ao serviço.
URL determinístico
O URL determinístico permite-lhe prever o URL do serviço antes de o serviço ser criado, o que pode ser útil para a comunicação entre serviços.
O URL determinístico só está disponível para segmentos de DNS de 63 carateres ou menos. O segmento DNS contém o nome do serviço, o número do projeto e quaisquer etiquetas de tráfego.
O URL determinístico de um serviço do Cloud Run tem o seguinte formato:
https://[TAG---]SERVICE_NAME-PROJECT_NUMBER.REGION.run.app
where:
- TAG é a etiqueta de gestão de tráfego opcional para a revisão que está a pedir.
- PROJECT_NUMBER é o Google Cloud número do projeto.
- SERVICE_NAME é o nome do serviço do Cloud Run.
- REGION é o nome da região, como
europe-west1
.
URL não determinístico
Os URLs não determinísticos não têm um formato determinístico, o que significa que, como o segundo campo do URL é um hash aleatório, não pode prever qual será o URL completo antes de implementar os serviços. No entanto, depois de implementar o serviço, o URL permanece estável.
O URL não determinístico de um serviço do Cloud Run tem o formato
https://[
TAG---]
SERVICE_IDENTIFIER.run.app
, em que TAG se refere à etiqueta de tráfego opcional para a revisão que está a pedir e SERVICE_IDENTIFIER é um identificador estável e exclusivo de um serviço do Cloud Run. Não analise o elemento SERVICE_IDENTIFIER, uma vez que não tem um formato fixo, e a lógica para a geração de SERVICE_IDENTIFIER está sujeita a alterações.
Streaming de respostas
O Cloud Run suporta respostas HTTP de streaming.
Não é necessária nenhuma configuração para ativar a funcionalidade.
O servidor tem de responder com um cabeçalho de resposta Transfer-Encoding: chunked
.
Redirecionamento de HTTP para HTTPS
O Cloud Run redireciona todos os pedidos HTTP para HTTPS, mas termina o TLS antes de chegarem ao seu serviço Web. Se o seu serviço gerar recursos Web
que se referem a outros recursos Web com URLs não seguros (http://
), a sua página
pode estar sujeita a avisos ou erros de conteúdo misto.
Use o protocolo https
para todos os URIs Web de referência ou para a conta
para diretivas de proxy no pedido HTTP, como o cabeçalho HTTP X-Forwarded-Proto
.
HTTP e HTTP/2
Por predefinição, o Cloud Run reduz os pedidos HTTP/2 para HTTP/1 quando esses pedidos são enviados para o contentor. Se quiser definir explicitamente o seu serviço para usar HTTP/2 ponto a ponto, consulte o artigo Usar HTTP/2.
Crie serviços privados
A criação de um serviço privado no Cloud Run requer que limite o acesso ao serviço através da autorização de invocador da IAM.
Também pode limitar o acesso a um serviço através de um mecanismo de autenticação e autorização ao nível da aplicação, por exemplo, através da Identity Platform.
Teste serviços privados
A forma mais fácil de testar serviços privados é usar o
proxy do Cloud Run na CLI do Google Cloud.
Isto encaminha o serviço privado para http://localhost:8080
(ou para a porta especificada com --port
),
fornecendo o token da conta ativa ou outro token que especificar.
Isto permite-lhe usar um navegador de Internet ou uma ferramenta como o curl
.
Esta é a forma recomendada de testar um Website ou uma API de forma privada no seu navegador.
Pode usar um proxy de um serviço localmente através da seguinte linha de comandos num ambiente Linux, macOS, WSL (preferencial) ou cygwin:
gcloud run services proxy SERVICE --project PROJECT-ID
Também pode testar serviços privados sem o proxy através de uma ferramenta como curl
, transmitindo um token de autorização no cabeçalho Authorization
:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
Serviço privado para serviço
Um serviço do Cloud Run pode chamar outro serviço do Cloud Run com a autenticação de serviço para serviço.
Exemplo de código que invoca um serviço privado
Para ver exemplos de código que mostram como obter um token de ID e fazer um pedido HTTP a um serviço privado, consulte o tópico Autenticação de serviço a serviço.
Usar um middleware para melhorar o seu serviço
Os proxies HTTPS podem transferir funcionalidades comuns de um serviço HTTP, como o armazenamento em cache, a validação de pedidos ou a autorização. Para microsserviços, muitos proxies HTTP fazem parte de uma solução de gateway de API ou de uma malha de serviços, como o Istio.
Google Cloud produtos que pode usar para melhorar o seu serviço do Cloud Run incluem:
API Gateway, que pode usar para criar, proteger e monitorizar APIs para usar como proxies para outros serviços do Cloud Run.
Firebase Hosting, que pode usar para criar um frontend de aplicação Web para usar com o Cloud Run como um backend dinâmico.