Ce tutoriel explique comment configurer et déployer un exemple d'API et le proxy Extensible Service Proxy (ESP) s'exécutant sur une instance de l'environnement flexible App Engine. L'API REST de l'exemple de code est décrite à l'aide de la spécification OpenAPI. Le tutoriel vous montre également comment créer une clé API et l'utiliser dans les requêtes adressées à l'API.
Pour obtenir une présentation de Cloud Endpoints, consultez les pages À propos de Cloud Endpoints et Architecture Cloud Endpoints.
Objectifs
Tout au long du tutoriel, reportez-vous au récapitulatif des étapes présenté ci-dessous. Toutes les tâches sont nécessaires pour envoyer des requêtes à l'API.
- Configurez un projet Google Cloud, installez les logiciels requis et créez une application App Engine. Consultez la section Avant de commencer.
- Téléchargez l'exemple de code. Consultez la section Obtenir l'exemple de code.
- Configurez le fichier
openapi-appengine.yaml
, utilisé pour configurer Endpoints. Consultez la section Configurer Endpoints. - Déployez la configuration Endpoints pour créer un service Endpoints. Consultez la section Déployer la configuration Endpoints.
- Déployez l'API et ESP sur App Engine. Consultez la section Déployer le backend de l'API.
- Envoyez une requête à l'API. Consultez la section Envoyer une requête à l'API.
- Suivez l'activité de l'API. Consultez la section Suivre l'activité de l'API.
- Faites le nécessaire pour éviter que des frais ne soient facturés sur votre compte Google Cloud. Consultez la section Nettoyer.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Notez l'ID de projet, car il sera nécessaire ultérieurement.
-
Vous aurez besoin d'une application pour envoyer des requêtes à l'exemple d'API.
- Utilisateurs Linux et macOS : ce tutoriel fournit un exemple utilisant
curl
, qui est généralement préinstallé sur votre système d'exploitation. Si vous ne disposez pas decurl
, vous pouvez le télécharger sur la page Releases and Downloads decurl
. - Utilisateurs Windows : ce tutoriel fournit un exemple d'utilisation de
Invoke-WebRequest
, compatible avec PowerShell 3.0 et versions ultérieures.
- Utilisateurs Linux et macOS : ce tutoriel fournit un exemple utilisant
- Téléchargez Google Cloud CLI.
-
Mettez à jour la gcloud CLI et installez les composants Endpoints.
gcloud components update
-
Assurez-vous que la Google Cloud CLI (
gcloud
) est autorisée à accéder à vos données et services sur Google Cloud: Dans le nouvel onglet de navigateur qui s'ouvre, sélectionnez un compte.gcloud auth login
- Définissez le projet par défaut sur votre ID de projet.
gcloud config set project YOUR_PROJECT_ID
Remplacez YOUR_PROJECT_ID par l'ID du projet. Si vous avez d'autres projets Google Cloud et que vous souhaitez les gérer à l'aide de
gcloud
, consultez la page Gérer les configurations de gcloud CLI. - Sélectionnez la région dans laquelle vous souhaitez créer votre application App Engine. Exécutez la commande suivante pour obtenir la liste des régions :
gcloud app regions list
- Créez une application App Engine.
Remplacez YOUR_PROJECT_ID par votre ID de projet Google Cloud et YOUR_REGION par la région dans laquelle vous souhaitez créer l'application App Engine.
gcloud app create \ --project=YOUR_PROJECT_ID \ --region=YOUR_REGION
Obtenir l'exemple de code
Pour cloner ou télécharger l'exemple d'API :
- L'exemple de code utilise Maven. Si vous n'avez pas encore installé Maven 3.3.9 ou une version ultérieure, téléchargez-le et installez-le.
- Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.
- Accédez au répertoire qui contient l'exemple de code :
cd java-docs-samples/endpoints/getting-started
Pour cloner ou télécharger l'exemple d'API :
- Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.
- Accédez au répertoire qui contient l'exemple de code :
cd python-docs-samples/endpoints/getting-started
Pour cloner ou télécharger l'exemple d'API :
- Assurez-vous que la variable d'environnement
GOPATH
est définie. - Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
go get -d github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
- Accédez au répertoire qui contient l'exemple de code :
cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
Pour cloner ou télécharger l'exemple d'API :
- Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
git clone https://github.com/GoogleCloudPlatform/php-docs-samples
Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.
- Accédez au répertoire qui contient l'exemple de code :
cd php-docs-samples/endpoints/getting-started
Pour cloner ou télécharger l'exemple d'API :
- Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples
Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.
- Accédez au répertoire qui contient l'exemple de code :
cd ruby-docs-samples/endpoints/getting-started
Pour cloner ou télécharger l'exemple d'API :
- Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
Vous pouvez également télécharger l'exemple sous forme de fichier zip et l'extraire.
- Accédez au répertoire qui contient l'exemple de code :
cd nodejs-docs-samples/endpoints/getting-started
Configurer Endpoints
L'exemple de code inclut le fichier de configuration OpenAPI openapi-appengine.yaml
basé sur la spécification OpenAPI version 2.0.
- Dans le répertoire de l'exemple de code, ouvrez le fichier de configuration
openapi-appengine.yaml
.Java Python Go PHP Ruby NodeJS Veuillez noter les points suivants :
- L'exemple de configuration affiche les lignes situées à proximité du champ
host
que vous devez modifier. Pour déployeropenapi-appengine.yaml
sur Endpoints, le document OpenAPI complet est nécessaire. - L'exemple de fichier
openapi-appengine.yaml
contient une section sur la configuration de l'authentification qui n'est pas nécessaire pour ce tutoriel. Vous n'avez pas besoin de configurer les lignes avec YOUR-SERVICE-ACCOUNT-EMAIL et YOUR-CLIENT-ID. - OpenAPI est une spécification indépendante du langage. Pour plus de commodité, le même fichier
openapi-appengine.yaml
figure dans l'exemplegetting-started
sur le dépôt GitHub de chaque langage.
- L'exemple de configuration affiche les lignes situées à proximité du champ
- Sur la ligne comportant le champ
host
, remplacez YOUR-PROJECT-ID par l'ID de votre projet Google Cloud. Exemple :host: "example-project-12345.appspot.com"
Endpoints utilise le texte configuré dans le champ host
comme nom de service. Lorsque vous déployez l'API sur le backend App Engine, une entrée DNS portant un nom au format YOUR-PROJECT-ID.appspot.com
est créée automatiquement.
Pour en savoir plus sur les champs du document OpenAPI requis par Endpoints, consultez la page Configurer Endpoints.
Déployer la configuration Endpoints
Pour déployer la configuration Endpoints, exécutez la commande gcloud endpoints
services deploy
. Celle-ci crée un service géré à l'aide de Service Management.
Pour déployer la configuration Endpoints :
- Assurez-vous que vous vous trouvez dans le répertoire
endpoints/getting-started
. - Importez la configuration et créez un service géré :
gcloud endpoints services deploy openapi-appengine.yaml
La commande gcloud
appelle ensuite l'API Service Management pour créer un service géré avec le nom que vous avez spécifié dans le champ host
du fichier openapi-appengine.yaml
.
Service Management configure le service en fonction des paramètres du fichier openapi-appengine.yaml
. Lorsque vous apportez des modifications au fichier openapi-appengine.yaml
, vous devez le redéployer pour mettre à jour le service Endpoints.
Lors de la création et de la configuration du service, Service Management envoie des informations au terminal. Vous pouvez ignorer en toute sécurité les avertissements concernant les chemins du fichier openapi-appengine.yaml
qui ne nécessitent pas de clé d'API.
Une fois la configuration du service terminée, Service Management affiche un message avec l'ID de configuration du service et le nom du service, comme illustré ci-dessous :
Service Configuration [2017-02-13r0] uploaded for service [example-project-12345.appspot.com]
Dans l'exemple ci-dessus, 2017-02-13r0
correspond à l'ID de configuration du service et example-project-12345.appspot.com
au service Endpoints. L'ID de configuration du service se compose d'un horodatage, suivi d'un numéro de révision. Si vous déployez à nouveau le fichier openapi-appengine.yaml
le même jour, le numéro de révision est incrémenté dans l'ID de configuration de service. Vous pouvez afficher la configuration de service Endpoints sur la page Endpoints > Services de la console Google Cloud.
Si vous recevez un message d'erreur, consultez la section Résoudre des problèmes de déploiement de la configuration Endpoints.
Vérifier les services requis
Endpoints et ESP requièrent au minimum l'activation des services Google suivants :Nom | Titre |
---|---|
servicemanagement.googleapis.com |
API Service Management |
servicecontrol.googleapis.com |
API Service Control |
Dans la plupart des cas, la commande gcloud endpoints services deploy
permet d'activer ces services requis. Toutefois, bien que la commande gcloud
ait abouti, elle n'active pas les services requis dans les cas suivants :
Vous avez utilisé une application tierce telle que Terraform et vous n'incluez pas ces services.
Vous avez déployé la configuration Endpoints dans un projet Google Cloud existant dans lequel ces services étaient explicitement désactivés.
Utilisez la commande suivante pour vérifier que les services nécessaires sont activés :
gcloud services list
Si les services requis ne sont pas répertoriés, activez-les :
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
Activez également votre service Endpoints :
gcloud services enable ENDPOINTS_SERVICE_NAME
Pour déterminer la valeur de ENDPOINTS_SERVICE_NAME, vous pouvez effectuer l'une des opérations suivantes :
Après avoir déployé la configuration Endpoints, accédez à la page Endpoints de Cloud Console. La liste des valeurs ENDPOINTS_SERVICE_NAME possibles s'affiche dans la colonne Nom du service.
Pour OpenAPI, ENDPOINTS_SERVICE_NAME correspond à ce que vous avez spécifié dans le champ
host
de votre spécification OpenAPI. Pour gRPC, ENDPOINTS_SERVICE_NAME correspond à ce que vous avez spécifié dans le champname
de votre configuration Endpoints gRPC.
Pour en savoir plus sur les commandes gcloud
, consultez la page Services gcloud
.
Déployer le backend de l'API
Vous avez déployé le document OpenAPI sur Service Management, mais vous n'avez pas encore déployé le code qui diffuse le backend de l'API. Cette section vous guide dans le déploiement des exemples d'API et de proxy ESP sur App Engine.
Pour déployer le backend de l'API :
- Ajoutez le nom de votre service au fichier
app.yaml
:Java Ouvrez le fichier
endpoints/getting-started/src/main/appengine/app.yaml
.Python Ouvrez le fichier
endpoints/getting-started/app.yaml
.Go Ouvrez le fichier
endpoints/getting-started/app.yaml
.PHP Ouvrez le fichier
endpoints/getting-started/app.yaml
.Ruby Ouvrez le fichier
endpoints/getting-started/app.yaml
.NodeJS Ouvrez le fichier
endpoints/getting-started/app.yaml
.Remplacez ENDPOINTS-SERVICE-NAME par le nom de votre service Endpoints. Il s'agit du nom que vous avez configuré dans le champ
host
du document OpenAPI. Exemple :endpoints_api_service: name: example-project-12345.appspot.com rollout_strategy: managed
L'option
rollout_strategy: managed
configure ESP pour qu'il utilise la dernière configuration de service déployée. Si cette option est spécifiée, jusqu'à 5 minutes après le déploiement d'une nouvelle configuration de service, ESP détecte la modification et commence à l'utiliser automatiquement. Nous vous recommandons de spécifier cette option plutôt qu'un ID de configuration spécifique à utiliser par ESP. - Enregistrez le fichier
app.yaml
. - Assurez-vous que vous vous trouvez dans le répertoire
endpoints/getting-started
. Il s'agit de l'emplacement où se trouve votre fichier de configurationopenapi-appengine.yaml
. - Exécutez la commande suivante pour déployer l'exemple d'API et d'ESP sur App Engine :
La section endpoints_api_service
étant incluse dans le fichier app.yaml
, la commande gcloud app deploy
déploie et configure ESP dans un conteneur distinct de votre environnement flexible App Engine. L'intégralité du trafic des requêtes est acheminé via ESP, qui sert de proxy pour les requêtes et les réponses envoyées et reçues par le conteneur qui exécute le code du serveur backend.
Déployer à l'aide de Maven :
mvn appengine:stage gcloud app deploy target/appengine-staging
gcloud app deploy
gcloud app deploy
gcloud app deploy
gcloud app deploy
gcloud app deploy
La commande gcloud app deploy
crée un enregistrement DNS au format YOUR_PROJECT_ID.appspot.com utilisé lors de l'envoi de requêtes à l'API. Nous vous recommandons d'attendre quelques minutes et la fin de l'initialisation complète d'App Engine avant d'envoyer des requêtes à votre API.
Si vous recevez un message d'erreur, consultez la section Résoudre des problèmes de déploiement dans l'environnement flexible App Engine.
Pour en savoir plus, consultez la section Déployer le backend de l'API.
Envoyer des requêtes à l'API
Maintenant que le service s'exécute sur App Engine, vous pouvez lui envoyer des requêtes.
Créer une clé API et définir une variable d'environnement
L'exemple de code nécessite une clé API. Pour simplifier la requête, définissez une variable d'environnement pour la clé API.
Dans le projet Google Cloud utilisé pour l'API, créez une clé API depuis la page des identifiants de l'API. Si vous souhaitez créer une clé API dans un autre projet Google Cloud, consultez la page Activer une API dans votre projet Google Cloud.
- Cliquez sur Créer les identifiants, puis sélectionnez Clé API.
- Copiez la clé dans le presse-papier.
- Cliquez sur Fermer.
- Sur l'ordinateur local, collez la clé API pour l'attribuer à une variable d'environnement :
- Sous Linux ou macOS :
export ENDPOINTS_KEY=AIza...
- Dans Windows PowerShell :
$Env:ENDPOINTS_KEY="AIza..."
- Sous Linux ou macOS :
Envoyer la requête
Linux ou macOS
Créez une variable d'environnement pour l'URL de votre projet App Engine. Remplacez YOUR_PROJECT_ID par l'ID de votre projet Google Cloud :
export ENDPOINTS_HOST=https://YOUR_PROJECT_ID.appspot.com
Envoyez une requête HTTP à l'aide des variables d'environnement
ENDPOINTS_HOST
etENDPOINTS_KEY
définies précédemment :curl --request POST \ --header "content-type:application/json" \ --data '{"message":"hello world"}' \ "${ENDPOINTS_HOST}/echo?key=${ENDPOINTS_KEY}"
Dans la commande curl
ci-dessus :
- L'option
--data
indique les données à publier sur l'API. - L'option
--header
indique que les données sont au format JSON.
PowerShell
Créez une variable d'environnement pour l'URL de votre projet App Engine. Remplacez YOUR_PROJECT_ID par l'ID de votre projet Google Cloud :
$Env:ENDPOINTS_HOST="https://YOUR_PROJECT_ID.appspot.com"
Envoyez une requête HTTP à l'aide des variables d'environnement
ENDPOINTS_HOST
etENDPOINTS_KEY
définies précédemment :(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' ` -Headers @{"content-type"="application/json"} ` -URI "$Env:ENDPOINTS_HOST/echo?key=$Env:ENDPOINTS_KEY").Content
Dans l'exemple ci-dessus, les deux premières lignes se terminent par un accent grave. Lorsque vous collez l'exemple dans PowerShell, assurez-vous qu'il n'y a pas d'espace après les accents graves. Pour plus d'informations sur les options utilisées dans l'exemple de requête, consultez la page Invoke-WebRequest dans la documentation Microsoft.
Application tierce
Vous pouvez utiliser une application tierce telle que l'extension Postman du navigateur Chrome pour envoyer la requête :
- Sélectionnez
POST
comme verbe HTTP. - Pour l'en-tête, sélectionnez la clé
content-type
et la valeurapplication/json
. - Pour le corps, saisissez ce qui suit :
{"message":"hello world"}
-
Dans l'URL, utilisez l'adresse
appspot.com
réelle et la clé API plutôt que les variables d'environnement. Par exemple :
https://example-project-12345.appspot.com/echo?key=AIza...
L'API renvoie le message que vous avez envoyé et répond avec les éléments suivants :
{
"message": "hello world"
}
Si vous ne recevez pas de réponse positive, consultez la section Résoudre des problèmes concernant les erreurs de réponse.
Vous venez de déployer et de tester une API dans Endpoints.
Suivre l'activité de l'API
Affichez les graphiques d'activité de votre API sur la page "Endpoints".
Accédez à la page Services Endpoints
Il peut s'écouler quelques instants avant que la requête ne soit reflétée dans les graphiques.
Consultez les journaux de requêtes de votre API sur la page de l'explorateur de journaux.
Créer un portail développeur pour l'API
Vous pouvez utiliser le portail Cloud Endpoints pour créer un portail des développeurs, c'est-à-dire un site Web qui vous permet d'interagir avec l'exemple d'API. Pour en savoir plus, consultez la page Présentation du portail Cloud Endpoints.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Pour plus d'informations sur l'arrêt des services utilisés par ce tutoriel, consultez la page Supprimer une API et des instances d'API.