Appeler avec une requête HTTPS

Une fois que vous avez créé un service ou une fonction, Cloud Run fournit un point de terminaison HTTPS pour le service. Vous pouvez autoriser le service à s'exécuter en réponse aux requêtes HTTPS.

Tous les services Cloud Run disposent d'une URL HTTPS stable, qui représente le point de terminaison HTTPS par défaut du service. Vous pouvez toutefois également configurer des domaines personnalisés.

Voici quelques cas d'utilisation :

  • API Web RESTful personnalisée
  • Microservice privé
  • Middleware HTTP ou proxy inverse pour vos applications Web
  • Application Web pré-empaquetée

Créer des services publics

Pour créer un service public sur Cloud Run, vous avez besoin des éléments suivants :

  • l'accès au service depuis l'Internet public ;
  • une URL destinée à un usage public.

Pour rendre un service public, configurez-le de manière à autoriser l'accès non authentifié (public) lors du déploiement ou à tout moment après le déploiement.

URL de service

Cloud Run attribue une URL non déterministe basée sur un hachage à tous les services. Si la longueur du nom du service le permet, Cloud Run attribue également une URL déterministe au service.

Vous pouvez désactiver ces URL run.app par défaut.

Vous pouvez récupérer l'URL de votre service en cliquant sur le nom du service dans la console Google Cloud ou en exécutant la commande suivante dans gcloud CLI :

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

L'URL déterministe est prioritaire lorsqu'elle est affichée.

URL déterministe

L'URL déterministe vous permet de prédire l'URL du service avant sa création, ce qui peut être utile pour la communication entre services.

L'URL déterministe n'est disponible que pour les segments DNS de 63 caractères ou moins. Le segment DNS contient le nom du service, le numéro du projet et tout tag de trafic.

L'URL déterministe d'un service Cloud Run est au format suivant :

https://[TAG---]SERVICE_NAME-PROJECT_NUMBER.REGION.run.app

où :

  • TAG est le tag de trafic facultatif de la révision que vous demandez.
  • PROJECT_NUMBER est le numéro du projet Google Cloud.
  • SERVICE_NAME correspond au nom du service Cloud Run.
  • REGION est le nom de la région, par exemple us-central1.

URL non déterministe

Les URL non déterministes n'ont pas de format déterministe. Cela signifie que le deuxième champ de l'URL étant un hachage aléatoire, vous ne pouvez pas prédire l'URL complète avant de déployer les services. Toutefois, une fois que vous avez déployé le service, l'URL reste stable.

L'URL non déterministe d'un service Cloud Run est au format https://[TAG---]SERVICE_IDENTIFIER.run.app, où TAG fait référence au tag de trafic facultatif pour la révision que vous demandez, et SERVICE_IDENTIFIER est un identifiant unique et stable pour un service Cloud Run. N'analysez pas la valeur de SERVICE_IDENTIFIER, car elle n'a pas de format fixe, et la logique de génération de SERVICE_IDENTIFIER est susceptible d'être modifiée.

Redirection HTTP vers HTTPS

Cloud Run redirige toutes les requêtes HTTP vers HTTPS, mais interrompt le protocole TLS avant que les requêtes n'atteignent votre service Web. Si votre service génère des ressources Web qui font référence à d'autres ressources Web avec des URL non sécurisées (http://), votre page peut faire l'objet d'avertissements ou d'erreurs de contenu mixte. Utilisez le protocole https pour tous les URI Web de référence ou tenez compte des instructions de proxy dans la requête HTTP, telles que l'en-tête HTTP X-Forwarded-Proto.

HTTP et HTTP/2

Par défaut, Cloud Run rétrograde les requêtes HTTP/2 à HTTP/1 lorsque ces requêtes sont envoyées au conteneur. Si vous souhaitez configurer explicitement votre service pour utiliser HTTP/2 de bout en bout, consultez la page Utiliser HTTP/2.

Créer des services privés

Pour créer un service privé sur Cloud Run, vous devez limiter l'accès au service en faisant appel à l'autorisation de demandeur IAM.

Vous pouvez également limiter l'accès à un service à l'aide d'un mécanisme d'autorisation et d'authentification au niveau de l'application, par exemple avec Identity Platform.

Tester des services privés

Le moyen le plus simple de tester vos services privés consiste à utiliser le proxy Cloud Run dans Google Cloud CLI. Le service privé est relayé par proxy à http://localhost:8080 (ou au port spécifié avec --port), en fournissant le jeton du compte actif ou un autre jeton que vous spécifiez. Cela vous permet d'utiliser un navigateur Web ou un outil tel que curl. Il s'agit de la méthode recommandée pour tester en privé un site Web ou une API dans votre navigateur.

Vous pouvez relayer un service en local par proxy à l'aide de la ligne de commande suivante dans un environnement Linux, macOS, WSL (de préférence) ou cygwin :

gcloud run services proxy SERVICE --project PROJECT-ID

Vous pouvez également tester des services privés sans le proxy à l'aide d'un outil tel que curl, en transmettant un jeton d'authentification dans l'en-tête Authorization :

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

Service privé à service

Un service Cloud Run peut appeler un autre service Cloud Run avec l'authentification de service à service.

Exemple de code qui appelle un service privé

Pour obtenir des exemples de code montrant comment obtenir un jeton d'ID et envoyer une requête HTTP à un service privé, consultez la page Authentifier les communications de service.

Utiliser un middleware pour améliorer votre service

Les proxys HTTPS peuvent décharger les fonctionnalités courantes d'un service HTTP, telles que la mise en cache, la validation des requêtes ou l'autorisation. Pour les microservices, de nombreux proxys HTTP font partie d'une solution de passerelle d'API ou d'un maillage de services tel que Istio.

Les produits Google Cloud que vous pouvez utiliser pour améliorer votre service Cloud Run incluent :

Appeler une fonction avec une requête HTTPS

Par défaut, toutes les fonctions créées dans Cloud Run disposent d'une URL HTTPS run.app, qui peut être utilisée pour déclencher une fonction. Les fonctions créées avec un déclencheur Eventarc auront également une URL HTTPS, sauf si vous les désactivez à l'aide de la fonctionnalité de désactivation des URL run.app.