Eesti

Vabastage serverita andmetöötluse jõud Google Cloud Functionsiga. See juhend uurib HTTP päästikuid, pakkudes arendajatele teadmisi.

Google Cloud Functions: Kõikehõlmav juhend HTTP päästikute kohta

Google Cloud Functions (GCF) on serverita täitmiskeskkond, mis võimaldab teil luua ja ühendada pilveteenuseid. Cloud Functionsiga kirjutate lihtsaid, ühel eesmärgil toimivaid funktsioone, mis on seotud teie pilveinfrastruktuurist ja teenustest väljuvate sündmustega. Teie funktsioon täidetakse siis, kui teie jälgitav sündmus ilmneb. See lähenemine võimaldab teil arendada sündmuspõhiseid rakendusi ilma serverite või tööaegade haldamiseta.

Üks levinumaid viise Cloud Functioni käivitamiseks on HTTP-päringu kaudu. See juhend süveneb Google Cloud Functions HTTP päästikute maailma, pakkudes teile teadmisi võimsate, skaleeritavate ja kulutõhusate rakenduste loomiseks.

Mis on HTTP päästikud?

HTTP päästik võimaldab teil oma Cloud Functioni täita vastusena HTTP-päringule. Sisuliselt, kui HTTP-päring saadetakse kindlale URL-ile, täidab Google Cloud Functions automaatselt vastava funktsiooni. See muudab HTTP päästikud ideaalseks API-de, webhookide ja sündmuspõhiste veebirakenduste loomiseks.

HTTP päästikute kasutamise peamised eelised:

Cloud Functioni loomine HTTP päästikuga

Läheme läbi lihtsa Cloud Functioni loomise protsessi HTTP päästikuga. Loome funktsiooni, mis vastab sõnumiga "Tere, maailm!". Seda näidet saab kohandada erinevate globaalsete paikade jaoks, muutes lihtsalt väljundstringi.

Eeldused:

Sammud:

  1. Uue projekti loomine (kui teil seda pole):

    Kui teil pole veel GCP projekti, looge see Google Cloud konsoolis.

  2. Cloud Functions API lubamine:

    Navigeerige Cloud konsoolis Cloud Functions API juurde ja lubage see.

  3. Funktsiooni kataloogi loomine:

    Looge oma Cloud Functioni jaoks uus kataloog. Näiteks:

    mkdir hello-http
    cd hello-http
  4. Funktsiooni koodi kirjutamine:

    Looge fail nimega `main.py` (või `index.js` Node.js jaoks) järgmise koodiga:

    Python (main.py):

    def hello_http(request):
        """HTTP Cloud Function.
        Args:
            request (flask.Request): The request object.
            
            
        Returns:
            The response text, or any set of values that can be turned into a
            Response object using `make_response`
            `.
        """
        request_json = request.get_json(silent=True)
        request_args = request.args
    
        if request_json and 'name' in request_json:
            name = request_json['name']
        elif request_args and 'name' in request_args:
            name = request_args['name']
        else:
            name = 'World'
        return f'Hello, {name}!'

    Node.js (index.js):

    exports.helloHttp = (req, res) => {
      let name = 'World';
      if (req.body.name) {
        name = req.body.name;
      } else if (req.query.name) {
        name = req.query.name;
      }
      res.status(200).send(`Hello, ${name}!`);
    };
    
  5. Nõuete faili loomine (ainult Python):

    Kui kasutate Pythonit, looge fail nimega `requirements.txt` ja lisage kõik sõltuvused, mida teie funktsioon vajab. Selle näite jaoks pole see rangelt vajalik, kuid on hea tava see lisada. Võite selle tühjaks jätta, kui teil pole sõltuvusi.

  6. Funktsiooni juurutamine:

    Kasutage oma funktsiooni juurutamiseks käsku `gcloud functions deploy`. Asendage `YOUR_FUNCTION_NAME` soovitud nimega oma funktsioonile.

    Python:

    gcloud functions deploy YOUR_FUNCTION_NAME \
        --runtime python39 \
        --trigger-http \
        --allow-unauthenticated

    Node.js:

    gcloud functions deploy YOUR_FUNCTION_NAME \
        --runtime nodejs16 \
        --trigger-http \
        --allow-unauthenticated

    Parameetrite selgitus:

    • `YOUR_FUNCTION_NAME`: Nimi, mida soovite oma Cloud Functionile anda.
    • `--runtime`: Teie funktsiooni tööaeg (nt `python39`, `nodejs16`).
    • `--trigger-http`: Määratleb, et funktsiooni peaks käivitama HTTP-päringud.
    • `--allow-unauthenticated`: Lubab kõigil funktsiooni kutsuda ilma autentimiseta. Hoiatus: Olge tootmiskeskkondades selle lubamisel ettevaatlik! Kaaluge sobiva autentimise ja volituste rakendamist.
  7. Funktsiooni testimine:

    Pärast juurutamist väljastab `gcloud` käsk teie funktsiooni URL-i. Seejärel saate seda testida, saates HTTP-päringu sellele URL-ile, kasutades sellist tööriista nagu `curl` või Postman.

    curl YOUR_FUNCTION_URL

    Peaksite vastuses nägema sõnumit "Tere, maailm!". Võite saata nime ka päringu parameetrina:

    curl "YOUR_FUNCTION_URL?name=YourName"

    See peaks tagastama "Tere, YourName!"

HTTP-päringu ja -vastuse mõistmine

Kui HTTP-päring käivitab Cloud Functioni, saab see objekti, mis sisaldab teavet päringu kohta. See objekt sisaldab tavaliselt:

Teie funktsioon peaks seejärel tagastama HTTP-vastuse, mis sisaldab:

Näide: erinevate HTTP-meetodite käsitlemine

Siin on näide, kuidas oma Cloud Functionis erinevaid HTTP-meetodeid käsitleda:

Python (main.py):

from flask import escape

def http_method(request):
    """Responds to any HTTP request.
    Args:
        request (flask.Request): HTTP request object.
    Returns:
        The response text or any set of values that can be turned into a
        Response object using
        `make_response``.
    """
    if request.method == 'GET':
        return 'This is a GET request!'
    elif request.method == 'POST':
        request_json = request.get_json(silent=True)
        if request_json and 'message' in request_json:
            message = escape(request_json['message'])
            return f'This is a POST request with message: {message}'
        else:
            return 'This is a POST request without a message.'
    else:
        return 'Unsupported HTTP method.', 405

Node.js (index.js):

exports.httpMethod = (req, res) => {
  switch (req.method) {
    case 'GET':
      res.status(200).send('This is a GET request!');
      break;
    case 'POST':
      if (req.body.message) {
        const message = req.body.message;
        res.status(200).send(`This is a POST request with message: ${message}`);
      } else {
        res.status(200).send('This is a POST request without a message.');
      }
      break;
    default:
      res.status(405).send('Unsupported HTTP method!');
      break;
  }
};

Pidage meeles juurutada värskendatud funktsioon, kasutades käsku `gcloud functions deploy`.

HTTP päästikute turvamine

Turvalisus on HTTP päästikutega töötamisel esmatähtis, eriti tundlike andmete või kriitiliste toimingute korral. Siin on mõned peamised turvalisuse kaalutlused:

Autentimine ja volitamine

Vaikimisi on HTTP poolt käivitatavad Cloud Functions avalikult kättesaadavad, kui kasutate `--allow-unauthenticated`. Enamikus tootmisstsenaariumides soovite piirata juurdepääsu volitatud kasutajatele või teenustele. Google Cloud pakub mitmeid autentimis- ja volitusvõimalusi:

Sisendi valideerimine

Valideerige alati oma Cloud Functioni poolt saadud sisendandmeid, et vältida turvalisuse haavatavusi, nagu SQL-i sissepritse või rist-saitide skriptimine (XSS). Kasutage pahatahtliku sisendi vastu kaitsmiseks sobivaid puhastus- ja väljavõtmistehnikaid.

HTTPS

Veenduge, et teie Cloud Function oleks juurdepääsetav ainult HTTPS-i kaudu, et krüpteerida kliendi ja funktsiooni vaheline side. Google Cloud Functions pakub automaatselt HTTPS-i lõpp-punkte.

Kiiruse piiramine

Rakendage kiiruse piiramist, et vältida kuritarvitamist ja teenuse keelamise (DoS) rünnakuid. Võite kasutada selliseid teenuseid nagu Google Cloud Armor, et kaitsta oma Cloud Functions liigse liikluse eest.

HTTP päästikute kasutusjuhud

HTTP päästikud on mitmekülgsed ja neid saab kasutada laias valikus rakendustes. Siin on mõned levinumad kasutusjuhud:

Näited erinevates tööstusharudes

Täiustatud tehnikad

Keskkonnamuutujate kasutamine

Keskkonnamuutujad võimaldavad teil oma Cloud Functioni konfigureerida, ilma et salvestaksite tundlikku teavet või konfiguratsiooniväärtusi oma koodi. Võite keskkonnamuutujad seadistada käsu `gcloud functions deploy` kaudu või Google Cloud konsoolis.

gcloud functions deploy YOUR_FUNCTION_NAME \
    --runtime python39 \
    --trigger-http \
    --set-env-vars API_KEY=YOUR_API_KEY,DATABASE_URL=YOUR_DATABASE_URL

Oma koodis saate keskkonnamuutujatele juurde pääseda, kasutades `os.environ` sõnastikku (Python) või `process.env` objekti (Node.js).

Python:

import os

def your_function(request):
    api_key = os.environ.get('API_KEY')
    # Use the API key in your function
    return f'API Key: {api_key}'

Node.js:

exports.yourFunction = (req, res) => {
  const apiKey = process.env.API_KEY;
  // Use the API key in your function
  res.status(200).send(`API Key: ${apiKey}`);
};

Asünkroonsete ülesannete käsitlemine

Pikalt kestvate või arvutuslikult intensiivsete ülesannete jaoks on kõige parem kasutada asünkroonset töötlemist, et vältida HTTP-päringu blokeerimist.Võite kasutada selliseid teenuseid nagu Google Cloud Tasks või Cloud Pub/Sub, et need ülesanded eraldi järjekordadesse laadida.

Vigade käsitlemine ja logimine

Rakendage oma Cloud Functionsis usaldusväärseid veade käsitlemist ja logimist, et kiiresti probleeme tuvastada ja lahendada.Kasutage Google Cloud Loggingut oma funktsioonidest logide kogumiseks ja nende toimivuse jälgimiseks.

Parimad praktikad

Levinud probleemide tõrkeotsing

Järeldus

Google Cloud Functions HTTP päästikutega pakub võimsat ja paindlikku viisi serverita rakenduste loomiseks. Mõistes selles juhendis käsitletud kontseptsioone ja tehnikaid, saate kasutada Cloud Functions'i jõudu, et luua skaleeritavaid, kulutõhusaid ja sündmuspõhiseid lahendusi globaalse publiku jaoks. Võtke omaks serverita revolutsioon ja vabastage oma pilverakenduste täielik potentsiaal!