Tutoriel sur HTTP


Ce tutoriel simple montre comment écrire, déployer et déclencher une fonction Cloud Run HTTP.

Objectifs

Coûts

Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :

  • Cloud Run functions

Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.

Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Avant de commencer

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  7. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  13. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  14. Si la gcloud CLI est déjà installée, mettez-la à jour en exécutant la commande suivante :

    gcloud components update
  15. Préparez votre environnement de développement.
  16. Préparer l'application

    1. Clonez le dépôt de l'exemple d'application sur votre ordinateur local :

      Node.js

      git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

      Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

      Python

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

      Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

      Go

      git clone https://github.com/GoogleCloudPlatform/golang-samples.git

      Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

      Java

      git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git

      Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

      Ruby

      git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

      Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.

    2. Accédez au répertoire contenant l'exemple de code de Cloud Run Functions :

      Node.js

      cd nodejs-docs-samples/functions/helloworld/

      Python

      cd python-docs-samples/functions/helloworld/

      Go

      cd golang-samples/functions/helloworld/

      Java

      cd java-docs-samples/functions/helloworld/helloworld/

      Ruby

      cd ruby-docs-samples/functions/helloworld/

    3. Consultez l'exemple de code :

      Node.js

      const functions = require('@google-cloud/functions-framework');
      
      // Register an HTTP function with the Functions Framework that will be executed
      // when you make an HTTP request to the deployed function's endpoint.
      functions.http('helloGET', (req, res) => {
        res.send('Hello World!');
      });

      Python

      import functions_framework
      
      @functions_framework.http
      def hello_get(request):
          """HTTP Cloud Function.
          Args:
              request (flask.Request): The request object.
              <https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
          Returns:
              The response text, or any set of values that can be turned into a
              Response object using `make_response`
              <https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
          Note:
              For more information on how Flask integrates with Cloud
              Functions, see the `Writing HTTP functions` page.
              <https://cloud.google.com/functions/docs/writing/http#http_frameworks>
          """
          return "Hello World!"
      
      

      Go

      
      // Package helloworld provides a set of Cloud Functions samples.
      package helloworld
      
      import (
      	"fmt"
      	"net/http"
      )
      
      // HelloGet is an HTTP Cloud Function.
      func HelloGet(w http.ResponseWriter, r *http.Request) {
      	fmt.Fprint(w, "Hello, World!")
      }
      

      Java

      
      package functions;
      
      import com.google.cloud.functions.HttpFunction;
      import com.google.cloud.functions.HttpRequest;
      import com.google.cloud.functions.HttpResponse;
      import java.io.BufferedWriter;
      import java.io.IOException;
      
      public class HelloWorld implements HttpFunction {
        // Simple function to return "Hello World"
        @Override
        public void service(HttpRequest request, HttpResponse response)
            throws IOException {
          BufferedWriter writer = response.getWriter();
          writer.write("Hello World!");
        }
      }

      Ruby

      require "functions_framework"
      
      FunctionsFramework.http "hello_get" do |_request|
        # The request parameter is a Rack::Request object.
        # See https://www.rubydoc.info/gems/rack/Rack/Request
      
        # Return the response body as a string.
        # You can also return a Rack::Response object, a Rack response array, or
        # a hash which will be JSON-encoded into a response.
        "Hello World!"
      end

    Déployer la fonction

    Pour déployer la fonction avec un déclencheur HTTP, exécutez la commande suivante dans le répertoire contenant l'exemple de code (ou, dans le cas de Java, le fichier pom.xml) :

    Node.js

    gcloud functions deploy helloGET \
    --runtime nodejs20 --trigger-http

    Utilisez le flag --runtime pour spécifier l'ID d'environnement d'exécution d'une version Node.js compatible afin d'exécuter votre fonction.

    Python

    gcloud functions deploy hello_get \
    --runtime python312 --trigger-http

    Utilisez le flag --runtime pour spécifier l'ID d'environnement d'exécution d'une version Python compatible afin d'exécuter votre fonction.

    Go

    gcloud functions deploy HelloGet \
    --runtime go121 --trigger-http

    Utilisez le flag --runtime pour spécifier l'ID d'environnement d'exécution d'une version Go compatible afin d'exécuter votre fonction.

    Java

    gcloud functions deploy java-http-function \
    --entry-point functions.HelloWorld \
    --runtime java17 \
    --memory 512MB --trigger-http

    Utilisez le flag --runtime pour spécifier l'ID d'environnement d'exécution d'une version Java compatible afin d'exécuter votre fonction.

    Ruby

    gcloud functions deploy hello_get --runtime ruby33 --trigger-http

    Utilisez le flag --runtime pour spécifier l'ID d'environnement d'exécution d'une version Ruby compatible afin d'exécuter votre fonction.

    Vous pouvez éventuellement utiliser le flag --allow-unauthenticated pour accéder à la fonction sans authentification. Cela est utile pour les tests, mais nous vous déconseillons d'utiliser ce paramètre en production, sauf si vous créez une API ou un site Web public. En outre, il est possible que ce paramètre ne soit pas adapté aux paramètres de vos règles d'entreprise. Pour savoir comment appeler une fonction nécessitant une authentification, consultez Authentification pour l'appel.

    Déclencher la fonction

    Pour envoyer une requête HTTP à votre fonction, exécutez la commande suivante :

    Node.js

    curl "https://REGION-PROJECT_ID.cloudfunctions.net/helloGET" 

    Python

    curl "https://REGION-PROJECT_ID.cloudfunctions.net/hello_get" 

    Go

    curl "https://REGION-PROJECT_ID.cloudfunctions.net/HelloGet" 

    Java

    curl "https://REGION-PROJECT_ID.cloudfunctions.net/java-http-function" 

    Ruby

    curl "https://REGION-PROJECT_ID.cloudfunctions.net/hello_get" 

    Où :

    • REGION est la région dans laquelle votre fonction est déployée. Cette information est visible dans votre terminal à la fin du processus de déploiement.
    • PROJECT_ID est votre ID de projet cloud. Il est visible dans votre terminal à la fin du processus de déploiement.

    Vous pouvez également accéder au point de terminaison de la fonction déployée dans votre navigateur pour visualiser le message "Hello World!".

    Effectuer un nettoyage

    Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.

    Supprimer le projet

    Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.

    Pour supprimer le projet :

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Supprimer la fonction

    La suppression de fonctions Cloud Run ne retire pas les ressources stockées dans Cloud Storage.

    Pour supprimer la fonction Cloud Run que vous avez créée dans ce tutoriel, exécutez la commande suivante :

    Node.js

    gcloud functions delete helloGET 

    Python

    gcloud functions delete hello_get 

    Go

    gcloud functions delete HelloGet 

    Java

    gcloud functions delete java-http-function 

    Ruby

    gcloud functions delete hello_get 

    Vous pouvez également supprimer des fonctions Cloud Run à partir de la consoleGoogle Cloud .