Le déploiement d'une fonction Cloud Run coordonne automatiquement les services Google Cloud sous-jacents, y compris Cloud Storage, Cloud Build et Artifact Registry, pour empaqueter et exécuter votre code. Comprendre ces interactions entre les services vous aide à configurer les autorisations Identity and Access Management requises, à suivre les dépendances des ressources et à résoudre les problèmes de déploiement ou de compilation.
Avant de commencer
Familiarisez-vous avec les concepts de Cloud Run Functions et de déploiement de sources en consultant le guide Options de déploiement et modèle de ressources Cloud Run.
Présentation de l'architecture
Lorsque vous déployez le code source de votre fonction dans Cloud Run Functions, ce code source est stocké dans un bucket Cloud Storage. Cloud Build compile ensuite automatiquement votre code dans une image de conteneur, puis transfère cette image dans un registre d'images Artifact Registry. Cloud Run Functions accède à cette image lorsqu'il doit exécuter le conteneur pour exécuter votre fonction.
Dans le diagramme suivant, la zone Cloud Run Functions représente une fonction déployée dans Cloud Run, à l'aide de l'API Cloud Run Admin ou de l'API Cloud Functions. En règle générale, les fonctions plus récentes sont déployées à l'aide de l'API Cloud Run Admin, et les fonctions plus anciennes sont déployées à l'aide de l'API Cloud Functions.
Selon l'API utilisée lors du déploiement d'une fonction, les événements suivants se produisent :
Si vous avez déployé votre fonction à l'aide de l'API Cloud Run Admin, voici ce qui se produit :
Votre code source est importé dans un bucket Cloud Storage sans durée de conservation.
- Si vous utilisez le chiffrement par défaut, le nom du bucket est généré automatiquement et nommé
run-sources-PROJECT_ID-REGION. - Si vous protégez vos données avec des clés de chiffrement gérées par le client (CMEK), le nom du bucket n'est pas généré automatiquement et vous devez en fournir un.
- Si vous utilisez le chiffrement par défaut, le nom du bucket est généré automatiquement et nommé
Le code source est envoyé à Cloud Build, où les buildpacks Google Cloud et le framework des fonctions créent une image de conteneur. Notez que le compte de service Cloud Build crée l'image de conteneur. Par défaut, Cloud Run utilise le type de machine
e2-standard-2fourni par Cloud Build.Votre image de conteneur est ensuite importée dans Artifact Registry via un bucket créé automatiquement, nommé
REGION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy.L'image est déployée sur Cloud Run en tant que service.
Vous pouvez déclencher ou appeler la fonction avec Eventarc, Pub/Sub ou d'autres déclencheurs HTTP.
Si vous avez déployé votre fonction à l'aide de l'API Cloud Functions (v2), voici ce qui se produit :
Votre code source est importé dans un bucket Cloud Storage sans durée de conservation.
Le nom du bucket est généré automatiquement et suit ce format :
- Si vous utilisez le chiffrement par défaut, ce bucket est nommé
gcf-v2-sources-PROJECT_NUMBER-REGION. - Si vous protégez vos données avec des CMEK, le bucket est nommé
gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH.
- Si vous utilisez le chiffrement par défaut, ce bucket est nommé
Le code source est envoyé à Cloud Build, où les buildpacks Google Cloud et Functions Framework créent une image de conteneur. Notez que le compte de service Cloud Build crée l'image de conteneur. Par défaut, Cloud Run utilise le type de machine
e2-standard-2fourni par Cloud Build.Votre image de conteneur est ensuite importée dans Artifact Registry via un bucket créé automatiquement, nommé
REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts.L'image est déployée sur Cloud Run en tant que service.
Vous pouvez déclencher ou appeler la fonction avec Eventarc, Pub/Sub ou d'autres déclencheurs HTTP.
Étapes suivantes
- Découvrez les différents types de fonctions et les options permettant de déclencher des fonctions.
- Si vous avez déjà créé des fonctions avec l'API Cloud Functions, consultez le guide de comparaison des fonctions Cloud Run pour en savoir plus sur les différences entre les deux versions de Cloud Run Functions.