Slovenščina

Odklenite moč brezstrežnega računalništva z Google Cloud Functions. Ta vodnik raziskuje HTTP sprožilce in razvijalcem po vsem svetu zagotavlja znanje za gradnjo razširljivih aplikacij, ki jih sprožajo dogodki.

Google Cloud Functions: Obsežen vodnik za HTTP sprožilce

Google Cloud Functions (GCF) je brezstrežno izvedbeno okolje, ki vam omogoča gradnjo in povezovanje storitev v oblaku. Z Cloud Functions pišete preproste funkcije z enim namenom, ki so priključene na dogodke, ki jih oddaja vaša infrastruktura in storitve v oblaku. Vaša funkcija se izvede, ko se zgodi dogodek, ki ga spremljate. Ta pristop vam omogoča razvoj aplikacij, ki jih sprožajo dogodki, ne da bi upravljali strežnike ali izvajalne čase.

Eden najpogostejših načinov sprožitve funkcije v oblaku je prek zahteve HTTP. Ta vodnik se bo poglobil v svet HTTP sprožilcev v Google Cloud Functions in vam zagotovil znanje za gradnjo zmogljivih, razširljivih in stroškovno učinkovitih aplikacij.

Kaj so HTTP sprožilci?

HTTP sprožilec vam omogoča izvedbo funkcije v oblaku kot odgovor na zahtevo HTTP. V bistvu, ko se zahteva HTTP pošlje na določen URL, bo Google Cloud Functions samodejno izvedel povezano funkcijo. Zaradi tega so HTTP sprožilci idealni za gradnjo API-jev, spletnih kavljev in spletnih aplikacij, ki jih sprožajo dogodki.

Ključne prednosti uporabe HTTP sprožilcev:

Ustvarjanje funkcije v oblaku s HTTP sprožilcem

Poglejmo si postopek ustvarjanja preproste funkcije v oblaku s HTTP sprožilcem. Ustvarili bomo funkcijo, ki se odziva z sporočilom "Živjo, svet!". Ta primer se lahko prilagodi različnim globalnim lokalnim nastavitvam s preprosto spremembo izhodnega niza.

Predpogoji:

Koraki:

  1. Ustvarite nov projekt (če ga nimate):

    Če še nimate projekta GCP, ga ustvarite v konzoli Google Cloud.

  2. Omogočite API Cloud Functions:

    V konzoli Cloud pojdite na API Cloud Functions in ga omogočite.

  3. Ustvarite imenik funkcije:

    Ustvarite nov imenik za svojo Cloud Function. Na primer:

    mkdir hello-http
    cd hello-http
  4. Napišite kodo funkcije:

    Ustvarite datoteko z imenom `main.py` (ali `index.js` za Node.js) z naslednjo kodo:

    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. Ustvarite datoteko zahtev (samo Python):

    Če uporabljate Python, ustvarite datoteko z imenom `requirements.txt` in dodajte vse odvisnosti, ki jih vaša funkcija potrebuje. Za ta primer ni nujno potrebno, vendar je dobra praksa, da jo vključite. Lahko jo pustite prazno, če nimate nobenih odvisnosti.

  6. Uvajanje funkcije:

    Uporabite ukaz `gcloud functions deploy` za uvajanje funkcije. Zamenjajte `YOUR_FUNCTION_NAME` z želenim imenom za svojo funkcijo.

    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

    Razlaga parametrov:

    • `YOUR_FUNCTION_NAME`: Ime, ki ga želite dati svoji Cloud Function.
    • `--runtime`: Izvajalno okolje za vašo funkcijo (npr. `python39`, `nodejs16`).
    • `--trigger-http`: Določa, da se funkcija sproži s strani zahtev HTTP.
    • `--allow-unauthenticated`: Omogoča vsem, da pokličejo funkcijo brez overjanja. Opozorilo: Pri omogočanju tega v proizvodnih okoljih bodite previdni! Razmislite o implementaciji ustreznega overjanja in avtorizacije.
  7. Testiranje funkcije:

    Po uvajanju bo ukaz `gcloud` izpisal URL vaše funkcije. Nato jo lahko preizkusite tako, da pošljete zahtevo HTTP na ta URL z orodjem, kot je `curl` ali Postman.

    curl YOUR_FUNCTION_URL

    V odgovoru bi morali videti sporočilo "Živjo, svet!". Prav tako lahko posredujete ime kot parameter poizvedbe:

    curl "YOUR_FUNCTION_URL?name=YourName"

    To bi moralo vrniti "Živjo, YourName!"

Razumevanje zahteve in odziva HTTP

Ko se Cloud Function sproži s zahtevo HTTP, prejme objekt, ki vsebuje informacije o zahtevi. Ta objekt običajno vključuje:

Vaša funkcija bi morala nato vrniti odgovor HTTP, ki vključuje:

Primer: Obravnava različnih metod HTTP

Tukaj je primer, kako obravnavati različne metode HTTP v vaši Cloud Function:

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 'To je zahteva GET!'
    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'To je zahteva POST s sporočilom: {message}'
        else:
            return 'To je zahteva POST brez sporočila.'
    else:
        return 'Nepodprta metoda HTTP.', 405

Node.js (index.js):

exports.httpMethod = (req, res) => {
  switch (req.method) {
    case 'GET':
      res.status(200).send('To je zahteva GET!');
      break;
    case 'POST':
      if (req.body.message) {
        const message = req.body.message;
        res.status(200).send(`To je zahteva POST s sporočilom: ${message}`);
      } else {
        res.status(200).send('To je zahteva POST brez sporočila.');
      }
      break;
    default:
      res.status(405).send('Nepodprta metoda HTTP!');
      break;
  }
};

Ne pozabite uvesti posodobljene funkcije z ukazom `gcloud functions deploy`.

Zaščita vaših HTTP sprožilcev

Varnost je najpomembnejša pri delu s HTTP sprožilci, zlasti pri ravnanju z občutljivimi podatki ali kritičnimi operacijami. Tukaj je nekaj ključnih varnostnih vidikov:

Overjanje in avtorizacija

Privzeto so Cloud Functions, ki jih sprožijo HTTP, javno dostopne, če uporabljate `--allow-unauthenticated`. V večini proizvodnih scenarijev boste želeli omejiti dostop do pooblaščenih uporabnikov ali storitev. Google Cloud ponuja več možnosti za overjanje in avtorizacijo:

Preverjanje vnosa

Vedno preverite vhodne podatke, ki jih prejme vaša Cloud Function, da preprečite varnostne ranljivosti, kot so vstavljanje SQL ali skriptiranje med spletnimi mesti (XSS). Uporabite ustrezne tehnike sanitacije in ubežanja, da se zaščitite pred zlonamernim vnosom.

HTTPS

Zagotovite, da je vaša Cloud Function dostopna samo prek HTTPS, da šifrirate komunikacijo med odjemalcem in funkcijo. Google Cloud Functions samodejno zagotavlja končne točke HTTPS.

Omejevanje stopnje

Implementirajte omejevanje stopnje, da preprečite zlorabo in napade zavrnitve storitve (DoS). Uporabite lahko storitve, kot je Google Cloud Armor, da zaščitite svoje Cloud Functions pred prekomernim prometom.

Primeri uporabe za HTTP sprožilce

HTTP sprožilci so vsestranski in se lahko uporabljajo v širokem naboru aplikacij. Tukaj je nekaj pogostih primerov uporabe:

Primeri v različnih panogah

Napredne tehnike

Uporaba spremenljivk okolja

Spremenljivke okolja vam omogočajo konfiguracijo Cloud Function, ne da bi v kodo trdo kodirali občutljive informacije ali vrednosti konfiguracije. Spremenljivke okolja lahko nastavite z ukazom `gcloud functions deploy` ali v konzoli Google Cloud.

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

V svoji kodi lahko dostopate do spremenljivk okolja z uporabo slovarja `os.environ` (Python) ali objekta `process.env` (Node.js).

Python:

import os

def your_function(request):
    api_key = os.environ.get('API_KEY')
    # Uporabite ključ API v svoji funkciji
    return f'API Key: {api_key}'

Node.js:

exports.yourFunction = (req, res) => {
  const apiKey = process.env.API_KEY;
  // Uporabite ključ API v svoji funkciji
  res.status(200).send(`API Key: ${apiKey}`);
};

Obravnava asinhronskih nalog

Za dolgotrajne ali računsko zahtevne naloge je najbolje uporabiti asinhronsko obdelavo, da se izognete blokiranju zahteve HTTP. Za razkladanje teh nalog na ločene čakalne vrste lahko uporabite storitve, kot sta Google Cloud Tasks ali Cloud Pub/Sub.

Obravnavanje napak in beleženje

V svojih Cloud Functions implementirajte robustno obravnavanje napak in beleženje, da boste lahko hitro prepoznali in odpravili težave. Uporabite Google Cloud Logging za zbiranje dnevnikov iz svojih funkcij in spremljanje njihove uspešnosti.

Najboljše prakse

Odpravljanje težav

Zaključek

Google Cloud Functions s HTTP sprožilci ponujajo zmogljiv in prilagodljiv način za ustvarjanje brezstrežnih aplikacij. Z razumevanjem konceptov in tehnik, obravnavanih v tem vodniku, lahko izkoristite moč Cloud Functions za ustvarjanje razširljivih, stroškovno učinkovitih in dogodkovno usmerjenih rešitev za globalno občinstvo. Sprejmite brezstrežno revolucijo in sprostite polni potencial svojih aplikacij v oblaku!