Déployez votre application pour l'importer et l'exécuter dans App Engine. Lorsque vous déployez vos applications, vous créez des versions de ces applications et de leurs services correspondants dans App Engine. Vous pouvez déployer des applications entières, y compris l'ensemble du code source et des fichiers de configuration, ou déployer et mettre à jour des versions ou des fichiers de configuration individuels.
Pour déployer vos applications de façon automatisée, utilisez l'API Admin.
Avant de commencer
Avant de déployer votre application, vérifiez que les conditions suivantes sont remplies :
Le propriétaire du projet Google Cloud doit créer l'application App Engine.
assurez-vous que votre compte utilisateur inclut les droits requis.
Autorisez Cloud Build à déployer des applications dans votre projet. Lorsque vous déployez votre application, App Engine utilise Cloud Build pour créer l'application dans un conteneur et déployer ce conteneur dans l'environnement d'exécution de la région de l'application. Cloud Build n'étant pas autorisé à déployer des applications Java 8 par défaut, vous devez en donner l'autorisation avant de déployer des applications.
Configurer l'outil de création Maven (recommandé)
Pour déployer votre application à l'aide de l'outil de création Maven, vous devez configurer votre projet de façon à ce qu'il utilise le plug-in Maven pour App Engine.
- Installez la gcloud CLI, le composant
app-engine-java
, puis connectez-vous. - Compilez et créez votre projet à l'aide du plug-in Maven.
Installer la CLI gcloud
Pour déployer votre application avec gcloud CLI, vous devez télécharger, installer et initialiser gcloud CLI.
Si gcloud CLI est déjà installé et que vous souhaitez le configurer pour utiliser un ID de projet Google Cloud différent de celui avec lequel vous avez effectué l'initialisation, consultez la page Gérer les configurations de gcloud CLI.
Utiliser un proxy
Si vous exécutez la commande de déploiement à partir d'un système utilisant un proxy HTTP ou HTTPS, vous devez configurer l'outil afin qu'il puisse communiquer via le proxy.
Exécutez les commandes suivantes pour configurer gcloud CLI :
gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]
Vous pouvez également définir un nom d'utilisateur (username
) et un mot de passe (password
) pour le proxy. Pour en savoir plus, consultez la page gcloud config.
Déployer une application
Pour déployer votre application sur App Engine, utilisez l'outil de création Maven (recommandé) ou la commande gcloud app deploy
depuis le répertoire racine de votre application.
Avec Maven (recommandé)
Pour déployer votre application avec l'outil de création Maven, exécutez la commande suivante à partir du répertoire de premier niveau de votre projet, où se trouve le fichier pom.xml
:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Remplacez PROJECT_ID par l'ID de votre projet Google Cloud. Si votre ID de projet est déjà inclus dans le fichier pom.xml
, vous n'avez pas besoin d'inclure la propriété -Dapp.deploy.projectId
dans la commande que vous exécutez.
Utiliser la ligne de commande gcloud
gcloud app deploy [CONFIGURATION_FILES]
Remplacez [CONFIGURATION_FILES]
par le chemin d'accès d'un ou de plusieurs fichiers de configuration.
Utilisez un seul espace négatif pour séparer les chemins d'accès.
Indicateurs facultatifs :
--version
: spécifie un ID de version personnalisé. Si vous ne spécifiez pas d'ID de version, App Engine en génère un.--no-promote
: déploie votre application sans acheminer automatiquement tout le trafic vers cette version. Par défaut, chaque version que vous déployez est automatiquement configurée de sorte à recevoir la totalité du trafic.--project
: spécifie un autre ID de projet Google Cloud que celui que vous avez initialisé par défaut dans la gcloud CLI.
Pour en savoir plus, consultez la documentation de référence gcloud app deploy
ou exécutez gcloud help
à partir de la ligne de commande.
Choisir des ID de version uniques
Pour les instances avec scaling manuel, l'ID de votre version doit commencer par une lettre afin de les distinguer des ID d'instances numériques. Cela garantit que les requêtes sont acheminées vers la bonne destination et évite l'ambiguïté avec des formats d'URL tels que123-dot-my-service.[REGION_ID].r.appspot.com
, qui peuvent être interprétés de deux manières :
- Si la version
123
existe, la requête est acheminée vers la version123
du servicemy-service
. - Si la version
123
n'existe pas, la requête est acheminée vers l'ID de l'instance123
sur laquelle les versions du servicemy-service
sont en cours d'exécution.
Vous pouvez attribuer n'importe quel type de nom aux versions des instances qui sont configurées pour l'autoscaling ou le scaling de base, car il n'est pas possible de les cibler.
Déployer des applications à plusieurs services
Lorsque votre application est intégrée à plusieurs services, vous pouvez déployer et mettre à jour simultanément certains services ou tous les services. Le déploiement de mises à jour des services peut inclure la mise à jour de fichiers de configuration individuels ou la mise à jour du code source dans les versions correspondantes.
Vous pouvez, par exemple, déployer et créer deux versions dans App Engine, chaque version s'exécutant sur son propre service. La première version sert de service d'interface et l'autre de backend de votre application. Vous pouvez ensuite déployer des fichiers de configuration individuels pour mettre à jour uniquement les paramètres d'un service. Vous avez également la possibilité de déployer une nouvelle version sur un service afin de mettre à jour le code source de l'interface, du backend ou des deux simultanément.
Conditions requises pour déployer plusieurs services
Les mêmes commandes de déploiement permettent de déployer et de mettre à jour les différents services de votre application si vous respectez les conditions requises suivantes :
Vous devez d'abord déployer une version de votre application sur le service
default
avant de pouvoir créer et déployer d'autres services.Vous devez spécifier l'ID de votre service dans le fichier de configuration
appengine-web.xml
de la version correspondante. Pour spécifier l'ID de service, vous devez inclure la définition de l'élémentmodule: [YOUR_SERVICE_ID]
dans chaque fichier de configuration. Par défaut, l'exclusion de cette définition d'élément de votre fichier de configuration déploie la version sur le servicedefault
.Vous devez spécifier tous les fichiers de configuration
appengine-web.xml
correspondants dans votre commande de déploiement pour déployer simultanément plusieurs services. Le servicedefault
doit être répertorié en premier.
Déployer plusieurs services
À partir du répertoire racine de l'application où se trouvent les fichiers de configuration, exécutez la commande de déploiement et spécifiez les chemins d'accès et les noms de fichiers associés au service appengine-web.xml
.
Utiliser l'outil de création Maven
Si le répertoire racine de votre projet ne contient que vos services, vous pouvez déployer tous ces services à l'aide d'une seule commande Maven.
La commande de déploiement Maven parcourt l'ensemble des services du projet dans le but de localiser leurs fichiers de configuration, puis de les déployer.
Pour déployer plusieurs services à l'aide du plug-in Maven, procédez comme suit :
- Assurez-vous que le plug-in appengine-maven-plugin a été ajouté à votre fichier parent
pom.xml
. Exécutez la commande suivante :
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Remplacez PROJECT_ID par l'ID de votre projet Google Cloud. Si votre ID de projet est déjà inclus dans le fichier
pom.xml
, vous n'avez pas besoin d'inclure la propriété-Dapp.deploy.projectId
dans la commande que vous exécutez.
Utiliser gcloud
gcloud app deploy [CONFIGURATION_FILES]
Remplacez [CONFIGURATION_FILES]
par le chemin d'accès d'un ou de plusieurs fichiers de configuration.
Utilisez un seul espace négatif pour séparer les chemins d'accès.
Vous recevrez une vérification via la ligne de commande à chaque déploiement de service réussi.
Afficher des journaux de compilation
Cloud Build diffuse des journaux de compilation et de déploiement visibles dans la section Historique Cloud Build de la console Google Cloud. Pour afficher les builds dans la région de l'application, utilisez le menu déroulant Région en haut de la page pour choisir la région selon laquelle vous souhaitez filtrer les compilations.
Mettre à jour des index
Pour créer ou mettre à jour les index utilisés par vos applications, importez le fichier de configuration datastore-indexes.xml
dans Datastore. Les index qui n'existent pas encore sont créés après l'importation de ce fichier de configuration.
Datastore peut mettre un certain temps à créer tous les index et, par conséquent, ces index ne seront pas immédiatement disponibles pour App Engine. Si l'application est déjà configurée pour recevoir du trafic, des exceptions peuvent se produire pour les requêtes nécessitant un index dont la création est toujours en cours.
Pour éviter les exceptions, vous devez prévoir du temps pour la création de tous les index. Exemple :
Importez le fichier de configuration
index.xml
dans Datastore avant de déployer votre version :Importez le fichier
index.xml
dans Datastore : Pour en savoir plus, reportez-vous à la référencegcloud datastore indexes create index.yaml
gcloud datastore
.Utilisez la console Google Cloud pour surveiller l'état de tous vos index :
Une fois tous vos index créés, déployez la nouvelle version sur App Engine.
Créez vos index avant de migrer ou de répartir le trafic sur votre version :
- Définissez un nouvel ID de version dans le fichier
appengine-web.xml
de votre application. - Déployez la nouvelle version.
- Utilisez la console Google Cloud pour surveiller l'état de tous vos index :
- Une fois tous vos index créés, utilisez la console Google Cloud pour transférer ou répartir le trafic sur votre version :
- Définissez un nouvel ID de version dans le fichier
Pour en savoir plus sur les index, consultez la page Configurer des index Datastore.
Dépannage
Voici des messages d'erreur courants que vous pouvez rencontrer :
PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
- Si le projet Google Cloud n'inclut pas l'application App Engine requise, la commande
gcloud app deploy
peut échouer lorsqu'elle tente d'exécuter la commandegcloud app create
. Seuls les comptes dotés du rôle Propriétaire disposent des autorisations nécessaires pour créer des applications App Engine. Command not found
- Consultez la page Utiliser le serveur de développement local pour savoir comment configurer l'outil de serveur de développement local.
Import Error
- Si vous avez installé gcloud CLI et le SDK App Engine d'origine, les entrées de votre variable PATH peuvent entrer en conflit et entraîner des erreurs d'importation. Si vous avez reçu des erreurs lors de l'exécution de commandes gcloud CLI, suivez les instructions concernant l'exécution du serveur de développement local.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
- Avant de pouvoir déployer et créer les différents services de votre application, vous devez d'abord déployer et créer le service
default
. Pour en savoir plus sur le déploiement d'une version sur le servicedefault
, consultez la section Déployer des applications à plusieurs services. Too Many Versions (403)
- App Engine limite le nombre de versions déployées de votre application. Ce nombre est différent pour les applications gratuites et les applications déployées.
Vous pouvez utiliser la console Google Cloud pour supprimer une ancienne version, puis importer votre dernier code.
You do not have permission to modify this app (403)
- Cela peut se produire lorsque le compte sur lequel vous êtes authentifié n'a pas l'autorisation d'effectuer le déploiement sur l'ID application spécifié dans votre commande ou dans le fichier
appengine-web.xml
. Assurez-vous que votre ID application est exact et qu'il correspond à la valeur de l'ID de projet de la console Google Cloud. Vérifiez ensuite les autorisations du projet dans la console et que votre compte est répertorié avec un niveau d'autorisation suffisant pour autoriser le déploiement d'applications. [13] An internal error occurred while creating a Cloud Storage bucket.
App Engine crée un bucket multirégional Cloud Storage par défaut en votre nom, dans la même région que votre application. Ce bucket est nécessaire pour stocker le contenu de votre application. Cette erreur est renvoyée lorsque ce bucket ne peut pas être créé, dans les scénarios suivants :
Le compte de service App Engine par défaut n'est pas présent dans votre projet. Si votre compte a été supprimé il y a moins de 30 jours, vous pouvez le restaurer.
Votre projet appartient à une organisation appliquant la règle
constraints/gcp.resourceLocations
et celle-ci n'autorise pas la création de ressources dans la même région où votre application App Engine a été créée. Vous devez ignorer la règleconstraints/gcp.resourceLocations
appliquée pour votre projet et autoriser les emplacements multirégionaux sur la même région où votre application App Engine est créée.
[13] An internal error occurred
Cette erreur peut se produire si le fichier de configuration
app.yaml
d'App Engine contient une ressourcename
non valide sous la clévpc_access_connector
. Assurez-vous que le champname
contient le bon projet et la bonne région, c'est-à-dire ceux dans lesquels votre connecteur d'accès au VPC sans serveur est créé.Si le problème persiste bien que la configuration de
app.yaml
soit valide, utilisez Google Cloud SDK pour redéployer votre service, en ajoutant l'option--verbosity=debug
, puis contactez l'assistance Cloud en fournissant le résultat de la commande.- Autre erreur de déploiement
Si votre déploiement échoue, assurez-vous que l'API Cloud Build est activée dans votre projet. App Engine active automatiquement cette API la première fois que vous déployez une application, mais si quelqu'un l'a désactivée depuis, les déploiements échouent.
Étapes suivantes
- Créez une application de grande envergure en vous appuyant sur les services.
- Répartissez ou migrez le trafic afin de l'acheminer vers les versions que vous déployez.
- Consultez la liste des arguments et options de ligne de commande
gcloud app deploy
.