Configurer le délai avant expiration des requêtes pour les services

Les paramètres de délai avant expiration des requêtes Cloud Run vous permettent de définir la durée maximale dont dispose un service pour renvoyer une réponse. Si votre service ne répond pas dans cette limite, Cloud Run ferme la connexion réseau et renvoie une erreur HTTP 504.

La fermeture de la connexion n'arrête pas l'instance de conteneur. Le conteneur peut continuer à traiter la requête abandonnée, ce qui peut interférer avec le traitement d'autres requêtes. Pour éviter les délais avant expiration, définissez un délai avant expiration supérieur à la durée d'exécution prévue ou suivez le temps d'exécution restant pour effectuer le nettoyage et renvoyer la réponse plus tôt.

Délai avant expiration pour les services

Le délai avant expiration est défini par défaut sur 5 minutes (300 secondes) et peut être prolongé jusqu'à 60 minutes (3 600 secondes).

Lorsque vous déclenchez votre service à partir d'événements Eventarc, d'abonnements push Pub/Sub ou de Cloud Scheduler, le délai avant expiration de ces services s'applique.

Vous pouvez modifier ce paramètre lorsque vous déployez une image de conteneur ou en mettant à jour la configuration de service.

Outre la modification du délai avant expiration de la requête dans Cloud Run, vous devez également vérifier le framework de votre langage pour voir s'il possède son propre paramètre de délai avant expiration de la requête que vous devrez également mettre à jour. Certains clients du service Cloud Run peuvent également imposer un délai avant expiration plus restrictif.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer et déployer des services Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Si vous déployez un service ou une fonction à partir du code source, vous devez également disposer de rôles supplémentaires sur votre projet et votre compte de service Cloud Build.

Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec Cloud de Confiance des API, telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.

Définir et mettre à jour le délai avant expiration de la requête

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

Vous pouvez définir le délai avant expiration de la requête à l'aide de la Cloud de Confiance console, de la ligne de commande gcloud CLI ou d'un fichier YAML lorsque vous créez un service ou déployez une nouvelle révision.

Console

  1. Dans la Cloud de Confiance by S3NS console, accédez à Cloud Run :

    Accédez à Cloud Run

  2. Sélectionnez Services dans le menu de navigation Cloud Run, puis cliquez sur Déployer un conteneur pour configurer un nouveau service. Si vous configurez un service existant, cliquez sur celui-ci.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service, puis cliquez sur Conteneurs, mise en réseau, sécurité pour développer la page de configuration du service.

  4. Si vous configurez un service existant, cliquez sur l'onglet Scaling (Scaling).

  5. Sous Requests (Requêtes), dans le champ Request timeout (Délai avant expiration de la requête), saisissez la valeur du délai avant expiration que vous souhaitez utiliser en secondes. Utilisez des valeurs comprises entre 1 et 3600 secondes.

  6. Cliquez sur Créer pour un nouveau service. Cliquez sur Afficher les différences et redéployer, puis sur Déployer les modifications pour un service existant.

gcloud

Vous pouvez mettre à jour le délai avant expiration de la requête pour une révision donnée à tout moment à l'aide de la commande suivante :

gcloud run services update SERVICE --timeout=TIMEOUT

Remplacez les éléments suivants :

  • SERVICE : nom de votre service.
  • TIMEOUT : délai au cours duquel une réponse doit être renvoyée, à l'aide d'un nombre entier ou d'une valeur de durée absolue, par exemple 1m20s, soit 1 minute 20 secondes. Si vous utilisez un nombre entier, l'unité est censée être en secondes. La valeur que vous spécifiez doit être inférieure à 60 minutes.

Lors du déploiement, vous pouvez également définir le délai avant expiration de la requête à l'aide de la commande suivante :

gcloud run deploy --image IMAGE_URL --timeout=TIMEOUT

Remplacez les éléments suivants :

  • IMAGE_URL: référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL suit le format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • TIMEOUT : délai au cours duquel une réponse doit être renvoyée, à l'aide d'un nombre entier ou d'une valeur de durée, par exemple 1m20s soit 1 minute 20 secondes. Si vous utilisez un nombre entier, l'unité est censée être en secondes. La valeur que vous spécifiez doit être inférieure à 60 minutes.

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Mettez à jour l'attribut timeoutSeconds :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE
          timeoutSeconds: VALUE

    Remplacez les éléments suivants :

    • SERVICE : nom de votre service Cloud Run.
    • IMAGE_URL: référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL suit le format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • VALUE : délai avant expiration choisi, en secondes.
  3. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

    La commande gcloud run services replace utilise par défaut le fichier service.yaml s'il est présent.

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Ajoutez les éléments suivants à une google_cloud_run_v2_service ressource dans votre configuration Terraform :

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-request-timeout"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    # Timeout
    timeout = "300s"
  }
}

Remplacez 300s par le délai avant expiration de requête choisi pour votre service.

Afficher les paramètres de délai avant expiration d'une requête

Pour afficher les paramètres de délai avant expiration actuels de votre service Cloud Run, procédez comme suit :

Console

  1. Dans la Cloud de Confiance by S3NS console, accédez à la page Services de Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.

  3. Cliquez sur l'onglet Scaling (Scaling) pour afficher les paramètres.

gcloud

  1. Exécutez la commande suivante :

    gcloud run services describe SERVICE
  2. Recherchez le paramètre de délai avant expiration de la requête dans la configuration renvoyée.