Magyar

Használja ki a szerver nélküli számítástechnika erejét a Google Cloud Functions segítségével. Ez az útmutató a HTTP triggereket mutatja be, és a fejlesztők világszerte megszerezhetik a méretezhető, eseményvezérelt alkalmazások létrehozásához szükséges tudást.

Google Cloud Functions: Átfogó útmutató a HTTP triggerekhez

A Google Cloud Functions (GCF) egy szerver nélküli végrehajtási környezet, amely lehetővé teszi felhőszolgáltatások létrehozását és összekapcsolását. A Cloud Functions segítségével egyszerű, célorientált függvényeket írhat, amelyek a felhőinfrastruktúrából és szolgáltatásokból kibocsátott eseményekhez kapcsolódnak. A függvény akkor kerül végrehajtásra, amikor a megfigyelt esemény bekövetkezik. Ez a megközelítés lehetővé teszi eseményvezérelt alkalmazások fejlesztését szerverek vagy futtatókörnyezetek kezelése nélkül.

A Cloud Function aktiválásának egyik leggyakoribb módja egy HTTP-kérés. Ez az útmutató elmélyül a Google Cloud Functions HTTP-triggerjeinek világában, és felvértezi Önt a hatékony, méretezhető és költséghatékony alkalmazások létrehozásához szükséges tudással.

Mik azok a HTTP triggerek?

A HTTP trigger lehetővé teszi, hogy a Cloud Function-t egy HTTP-kérésre válaszul hajtsa végre. Lényegében, amikor egy HTTP-kérést küldenek egy adott URL-re, a Google Cloud Functions automatikusan végrehajtja a hozzá tartozó függvényt. Ezáltal a HTTP triggerek ideálisak API-k, webhookok és eseményvezérelt webalkalmazások létrehozásához.

A HTTP triggerek használatának fő előnyei:

Cloud Function létrehozása HTTP triggerrel

Nézzük végig egy egyszerű Cloud Function létrehozásának folyamatát egy HTTP triggerrel. Létrehozunk egy függvényt, amely egy "Hello, World!" üzenettel válaszol. Ez a példa különféle globális helyekhez adaptálható az output string egyszerű módosításával.

Előfeltételek:

Lépések:

  1. Új projekt létrehozása (ha még nincs):

    Ha még nincs GCP-projektje, hozzon létre egyet a Google Cloud Console-ban.

  2. A Cloud Functions API engedélyezése:

    A Cloud Console-ban navigáljon a Cloud Functions API-hoz, és engedélyezze azt.

  3. Függvénykönyvtár létrehozása:

    Hozzon létre egy új könyvtárat a Cloud Function számára. Például:

    mkdir hello-http
    cd hello-http
  4. A függvénykód megírása:

    Hozzon létre egy `main.py` (vagy `index.js` Node.js esetén) nevű fájlt a következő kóddal:

    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. Követelményfájl létrehozása (csak Python esetén):

    Ha Pythont használ, hozzon létre egy `requirements.txt` nevű fájlt, és adja hozzá a függvényhez szükséges függőségeket. Ebben a példában erre nincs feltétlenül szükség, de jó gyakorlat egyet mellékelni. Üresen hagyhatja, ha nincsenek függőségei.

  6. A függvény telepítése:

    Használja a `gcloud functions deploy` parancsot a függvény telepítéséhez. Cserélje ki a `YOUR_FUNCTION_NAME` elemet a függvény kívánt nevére.

    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

    Paraméterek magyarázata:

    • `YOUR_FUNCTION_NAME`: A Cloud Function-nek adni kívánt név.
    • `--runtime`: A függvény futási környezete (pl. `python39`, `nodejs16`).
    • `--trigger-http`: Megadja, hogy a függvényt HTTP-kérések indítsák el.
    • `--allow-unauthenticated`: Lehetővé teszi, hogy bárki hitelesítés nélkül meghívja a függvényt. Figyelem: Legyen óvatos, ha ezt éles környezetben engedélyezi! Fontolja meg a megfelelő hitelesítés és engedélyezés megvalósítását.
  7. A függvény tesztelése:

    A telepítés után a `gcloud` parancs kiadja a függvény URL-jét. Ezután tesztelheti úgy, hogy HTTP-kérést küld erre az URL-re egy olyan eszközzel, mint a `curl` vagy a Postman.

    curl YOUR_FUNCTION_URL

    A válaszban a "Hello, World!" üzenetnek kell megjelennie. Nevezhet meg egy nevet lekérdezési paraméterként is:

    curl "YOUR_FUNCTION_URL?name=YourName"

    Ennek a következőt kell visszaadnia: "Hello, YourName!"

A HTTP-kérés és -válasz értelmezése

Amikor egy Cloud Function egy HTTP-kérés indítja el, egy objektumot kap, amely információkat tartalmaz a kérésről. Ez az objektum általában a következőket tartalmazza:

A függvénynek ezután egy HTTP-választ kell visszaadnia, amely a következőket tartalmazza:

Példa: Különböző HTTP-módszerek kezelése

Íme egy példa arra, hogyan kezelheti a különböző HTTP-módszereket a Cloud Function-ben:

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;
  }
};

Ne felejtse el telepíteni a frissített függvényt a `gcloud functions deploy` paranccsal.

A HTTP triggerek védelme

A biztonság kiemelten fontos a HTTP triggerekkel való munkavégzés során, különösen akkor, ha érzékeny adatokkal vagy kritikus műveletekkel foglalkozik. Íme néhány fontos biztonsági szempont:

Hitelesítés és engedélyezés

Alapértelmezés szerint a HTTP által aktivált Cloud Functions nyilvánosan elérhetők, ha a `--allow-unauthenticated` paramétert használja. A legtöbb éles forgatókönyvben korlátozni szeretné a hozzáférést a jogosult felhasználókra vagy szolgáltatásokra. A Google Cloud számos lehetőséget kínál a hitelesítéshez és az engedélyezéshez:

Beviteli adatok érvényesítése

Mindig ellenőrizze a Cloud Function által fogadott bemeneti adatokat, hogy megakadályozza a biztonsági réseket, például az SQL-injektálást vagy a cross-site scriptinget (XSS). Használjon megfelelő tisztítási és kódolási technikákat a rosszindulatú bemenetek elleni védelemhez.

HTTPS

Győződjön meg arról, hogy a Cloud Function csak HTTPS-en keresztül érhető el az ügyfél és a függvény közötti kommunikáció titkosításához. A Google Cloud Functions automatikusan biztosítja a HTTPS-végpontokat.

Sebességkorlátozás

Valósítson meg sebességkorlátozást a visszaélések és a szolgáltatásmegtagadási (DoS) támadások megelőzése érdekében. Használhat olyan szolgáltatásokat, mint a Google Cloud Armor, hogy megvédje a Cloud Functions-t a túlzott forgalomtól.

A HTTP triggerek használati esetei

A HTTP triggerek sokoldalúak, és sokféle alkalmazásban használhatók. Íme néhány gyakori használati eset:

Példák különböző iparágakból

Haladó technikák

Környezeti változók használata

A környezeti változók lehetővé teszik a Cloud Function konfigurálását anélkül, hogy érzékeny információkat vagy konfigurációs értékeket kódolna a kódba. A környezeti változókat a `gcloud functions deploy` paranccsal vagy a Google Cloud Console-ban állíthatja be.

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

A kódban hozzáférhet a környezeti változókhoz az `os.environ` szótár (Python) vagy a `process.env` objektum (Node.js) segítségével.

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}`);
};

Aszinkron feladatok kezelése

Hosszú ideig futó vagy számításigényes feladatok esetén a legjobb az aszinkron feldolgozást használni a HTTP-kérés blokkolásának elkerülése érdekében. Használhat olyan szolgáltatásokat, mint a Google Cloud Tasks vagy a Cloud Pub/Sub, hogy ezeket a feladatokat külön sorokba helyezze át.

Hibakezelés és naplózás

Valósítson meg robusztus hibakezelést és naplózást a Cloud Functions-ben a problémák gyors azonosításához és megoldásához. Használja a Google Cloud Loggingot a függvények naplóinak gyűjtéséhez és a teljesítményük figyeléséhez.

Gyakorlati tanácsok

Gyakori problémák hibaelhárítása

Következtetés

A Google Cloud Functions HTTP triggerekkel hatékony és rugalmas módot kínál a szerver nélküli alkalmazások létrehozására. Az útmutatóban tárgyalt fogalmak és technikák megértésével kihasználhatja a Cloud Functions erejét, hogy méretezhető, költséghatékony és eseményvezérelt megoldásokat hozzon létre egy globális közönség számára. Használja ki a szerver nélküli forradalmat, és aknázza ki felhőalkalmazásai teljes potenciálját!
Google Cloud Functions: Átfogó útmutató a HTTP triggerekhez | MLOG