Invocar com uma solicitação HTTPS

Depois que você cria um serviço ou uma função, o Cloud Run fornece um endpoint HTTPS para o serviço. É possível ativar o serviço para que ele seja executado em resposta a solicitações HTTPS.

Todos os serviços do Cloud Run têm um URL HTTPS estável, que representa o endpoint HTTPS padrão do serviço, embora você também possa configurar domínios personalizados.

Alguns dos casos de uso incluem:

  • API Web RESTful personalizada
  • Microsserviço particular
  • Middleware de HTTP ou proxy reverso para seus aplicativos da Web
  • Aplicativo da Web pré-empacotado

Criar 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 ao uso público

Para tornar um serviço público, configure seu serviço para permitir acesso não autenticado (público) quando você implantar ou a qualquer momento após implantar.

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 permitir, o Cloud Run também vai atribuir um URL determinístico ao serviço.

É possível desativar esses URLs run.app padrão.

Para recuperar o URL do serviço, clique no nome dele no console do Google Cloud ou execute o seguinte comando na CLI gcloud:

gcloud run services describe SERVICE --format 'value(status.url)'

O URL determinístico tem prioridade quando é mostrado.

URL determinista

O URL determinístico permite prever o URL do serviço antes que ele seja 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 caracteres ou menos. O segmento DNS contém o nome do serviço, o número do projeto e qualquer tag 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

em que:

  • TAG é a tag de tráfego opcional para a revisão que você está solicitando.
  • PROJECT_NUMBER é o número do projeto do Google Cloud;
  • SERVICE_NAME é o nome do serviço do Cloud Run.
  • REGION é o nome da região, como us-central1.

URL não determinista

Os URLs não determinísticos não têm um formato determinístico. Isso significa que, como o segundo campo do URL é um hash aleatório, não é possível prever qual será o URL completo antes de implantar os serviços. No entanto, depois de implantar 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 à tag de tráfego opcional para a revisão que você está solicitando, e SERVICE_IDENTIFIER é um identificador estável e exclusivo de um serviço do Cloud Run. Não analise a SERVICE_IDENTIFIER, porque ela não tem um formato fixo, e a lógica para a geração de SERVICE_IDENTIFIER está sujeita a mudanças.

Redirecionamento HTTP para HTTPS

O Cloud Run redireciona todas as solicitações HTTP para HTTPS, mas encerra o TLS antes de chegar ao serviço da Web. Se o serviço gerar recursos da Web que se referem a outros recursos da Web com URLs não seguros (http://), sua página pode estar sujeita a avisos ou erros de conteúdo misto. Use o protocolo https para todos os URIs da Web de referência ou considere diretivas de proxy na solicitação HTTP, como o cabeçalho HTTP X-Forwarded-Proto.

HTTP e HTTP/2

Por padrão, o Cloud Run faz downgrade das solicitações HTTP/2 para HTTP/1 quando essas solicitações são enviadas ao contêiner. Se você quiser definir explicitamente que o serviço use o HTTP/2 de ponta a ponta, consulte Como usar HTTP/2.

Criar serviços particulares

A criação de um serviço particular no Cloud Run exige que você limite o acesso a ele usando a permissão do invocador do IAM.

Também é possível limitar o acesso a um serviço usando um mecanismo de autorização e autenticação no nível do aplicativo, por exemplo, usando a Identity Platform.

Testar serviços particulares

A maneira mais fácil de testar serviços particulares é usar o proxy do Cloud Run na Google Cloud CLI. Isso redireciona o serviço particular para http://localhost:8080 (ou para a porta especificada com --port), fornecendo o token da conta ativa ou outro token especificado. Isso permite que você use um navegador da Web ou uma ferramenta como curl. Essa é a maneira recomendada de testar de forma particular um site ou uma API no seu navegador.

É possível fazer proxy de um serviço localmente usando a linha de comando a seguir em um ambiente Linus, macOS, WSL (preferencial) ou cygwin:

gcloud run services proxy SERVICE --project PROJECT-ID

Também é possível testar serviços particulares sem o proxy usando uma ferramenta como curl, transmitindo um token de autenticação no cabeçalho Authorization:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

Serviço a serviço particular

Um serviço do Cloud Run pode chamar outro serviço do Cloud Run com a autenticação de serviço a serviço.

Exemplo de código que invoca um serviço particular

Para exemplos de código que mostram como receber um ID de token e fazer uma solicitação HTTP para um serviço particular, consulte o tópico Como autenticar entre serviços.

Como usar um middleware para aprimorar seu serviço

Os proxies HTTPS podem descarregar funcionalidades comuns de um serviço HTTP, como armazenamento em cache, validação de solicitação ou autorização. Para microsserviços, muitos proxies HTTP são parte de uma solução de gateway de API ou de uma malha de serviço, como Istio.

Os produtos do Google Cloud que é possível usar para aprimorar seu serviço do Cloud Run incluem:

Invocar uma função com uma solicitação HTTPS

Por padrão, todas as funções criadas no Cloud Run têm um URL HTTPS run.app, que pode ser usado para acionar uma função. As funções criadas com um gatilho do Eventarc também terão um URL HTTPS, a menos que você desative usando o recurso desativar URL run.app.