Les paramètres de délai avant expiration des requêtes Cloud Run vous permettent de définir le temps maximal dont dispose un service pour renvoyer une réponse. Si votre service ne répond pas dans ce délai, Cloud Run ferme la connexion réseau et renvoie une erreur HTTP 504.
La fermeture de la connexion n'entraîne pas l'arrêt de 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 expirations, 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 un nettoyage et renvoyer un résultat 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 :
- Développeur Cloud Run (
roles/run.developer) sur le service Cloud Run - Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur l'identité du service
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 les APIGoogle Cloud , 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 console Google Cloud , 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
Dans la console Google Cloud , accédez à Cloud Run :
Sélectionnez Services dans le menu de navigation Cloud Run :
Si vous configurez un nouveau service, cliquez sur Déployer un conteneur et remplissez la page initiale des paramètres du service. Cliquez ensuite sur Conteneurs, mise en réseau, sécurité pour développer la page de configuration de service.
Si vous configurez un service existant, cliquez sur celui-ci, puis sur l'onglet Scaling.
Sous Requêtes, dans le champ 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
1et3600secondes.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 dans lequel une réponse doit être renvoyée, à l'aide d'une valeur entière ou d'une valeur de durée absolue (par exemple,
1m20s, soit 1 minute et 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 exempleus-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 respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- TIMEOUT : délai dans lequel une réponse doit être renvoyée, en utilisant un nombre entier ou une valeur de durée, par exemple
1m20s, soit 1 minute 20 secondes. Si vous utilisez un nombre entier, l'unité est supposée être exprimée en secondes. La valeur que vous spécifiez doit être inférieure à 60 minutes.
YAML
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
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 exempleus-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 respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- VALUE : délai avant expiration choisi, en secondes.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Par défaut, la commande
gcloud run services replaceutilise le fichierservice.yamls'il est présent.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
Ajoutez les éléments suivants à une ressourcegoogle_cloud_run_v2_service dans votre configuration Terraform :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
Dans la console Google Cloud , accédez à la page Services de Cloud Run :
Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.
Cliquez sur l'onglet Scaling (Scaling) pour afficher les paramètres.
gcloud
Exécutez la commande suivante :
gcloud run services describe SERVICE
Recherchez le paramètre de délai avant expiration de la requête dans la configuration renvoyée.