മലയാളം

Google Cloud Functions ഉപയോഗിച്ച് സെർവർലെസ് കമ്പ്യൂട്ടിംഗിന്റെ ശക്തി പ്രയോജനപ്പെടുത്തുക. HTTP ട്രിഗറുകൾ വിശദീകരിക്കുന്ന ഈ ഗൈഡ്, സ്കേലബിളും ഇവന്റ്-ഡ്രൈവനുമായ ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാൻ ഡെവലപ്പർമാർക്ക് അറിവ് നൽകുന്നു.

Google Cloud Functions: HTTP ട്രിഗറുകൾക്കായുള്ള സമഗ്ര ഗൈഡ്

Google Cloud Functions (GCF) എന്നത് ക്ലൗഡ് സേവനങ്ങൾ നിർമ്മിക്കാനും ബന്ധിപ്പിക്കാനും നിങ്ങളെ അനുവദിക്കുന്ന ഒരു സെർവർലെസ് എക്സിക്യൂഷൻ എൻവയോൺമെന്റ് ആണ്. Cloud Functions ഉപയോഗിച്ച്, നിങ്ങളുടെ ക്ലൗഡ് ഇൻഫ്രാസ്ട്രക്ചറിൽ നിന്നും സേവനങ്ങളിൽ നിന്നുമുള്ള ഇവന്റുകളുമായി ബന്ധിപ്പിച്ചിട്ടുള്ള ലളിതമായ, ഏക-ലക്ഷ്യ ഫംഗ്ഷനുകൾ നിങ്ങൾ എഴുതുന്നു. നിങ്ങൾ നിരീക്ഷിക്കുന്ന ഇവന്റ് സംഭവിക്കുമ്പോൾ നിങ്ങളുടെ ഫംഗ്ഷൻ എക്സിക്യൂട്ട് ചെയ്യുന്നു. ഈ സമീപനം സെർവറുകളോ റൺടൈമുകളോ കൈകാര്യം ചെയ്യാതെ ഇവന്റ്-ഡ്രൈവൺ ആപ്ലിക്കേഷനുകൾ വികസിപ്പിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.

ഒരു Cloud Function ട്രിഗർ ചെയ്യുന്നതിനുള്ള ഏറ്റവും സാധാരണമായ വഴികളിൽ ഒന്ന് HTTP അഭ്യർത്ഥന വഴിയാണ്. Google Cloud Functions-ൽ HTTP ട്രിഗറുകളുടെ ലോകത്തേക്ക് ഈ ഗൈഡ് കടന്നുപോകും, ശക്തവും, സ്കേലബിളും, ചെലവ് കുറഞ്ഞതുമായ ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാൻ നിങ്ങൾക്ക് ആവശ്യമായ അറിവ് നൽകും.

എന്താണ് HTTP ട്രിഗറുകൾ?

ഒരു HTTP അഭ്യർത്ഥനയ്ക്ക് പ്രതികരണമായി നിങ്ങളുടെ Cloud Function എക്സിക്യൂട്ട് ചെയ്യാൻ HTTP ട്രിഗർ നിങ്ങളെ അനുവദിക്കുന്നു. അടിസ്ഥാനപരമായി, ഒരു പ്രത്യേക URL-ലേക്ക് ഒരു HTTP അഭ്യർത്ഥന അയക്കുമ്പോൾ, Google Cloud Functions ഓട്ടോമാറ്റിക്കായി ബന്ധപ്പെട്ട ഫംഗ്ഷൻ എക്സിക്യൂട്ട് ചെയ്യും. ഇത് API-കൾ, വെബ് ഹുക്കുകൾ, ഇവന്റ്-ഡ്രൈവൺ വെബ് ആപ്ലിക്കേഷനുകൾ എന്നിവ നിർമ്മിക്കുന്നതിന് HTTP ട്രിഗറുകൾ അനുയോജ്യമാക്കുന്നു.

HTTP ട്രിഗറുകൾ ഉപയോഗിക്കുന്നതിനുള്ള പ്രധാന നേട്ടങ്ങൾ:

HTTP ട്രിഗർ ഉപയോഗിച്ച് ഒരു Cloud Function നിർമ്മിക്കുന്നു

HTTP ട്രിഗർ ഉപയോഗിച്ച് ഒരു ലളിതമായ Cloud Function നിർമ്മിക്കുന്ന പ്രക്രിയയിലൂടെ നമുക്ക് കടന്നുപോകാം. "Hello, World!" സന്ദേശം നൽകുന്ന ഒരു ഫംഗ്ഷൻ ഞങ്ങൾ നിർമ്മിക്കും. ഈ ഉദാഹരണം ലളിതമായി ഔട്ട്പുട്ട് സ്ട്രിംഗ് മാറ്റിക്കൊണ്ട് വിവിധ ലോകോത്തര ഭാഷകളിൽ സ്വീകരിക്കാൻ കഴിയും.

ആവശ്യകതകൾ:

ഘട്ടങ്ങൾ:

  1. പുതിയ പ്രോജക്റ്റ് സൃഷ്ടിക്കുക (നിങ്ങൾക്ക് ഒന്നില്ലെങ്കിൽ):

    നിങ്ങൾക്ക് ഇതുവരെ GCP പ്രോജക്റ്റ് ഇല്ലെങ്കിൽ, Google Cloud Console-ൽ ഒന്ന് സൃഷ്ടിക്കുക.

  2. Cloud Functions API പ്രവർത്തനക്ഷമമാക്കുക:

    Cloud Console-ൽ, Cloud Functions API-ലേക്ക് നാവിഗേറ്റ് ചെയ്യുകയും അത് പ്രവർത്തനക്ഷമമാക്കുകയും ചെയ്യുക.

  3. ഫംഗ്ഷൻ ഡയറക്ടറി സൃഷ്ടിക്കുക:

    നിങ്ങളുടെ Cloud Function-നായി ഒരു പുതിയ ഡയറക്ടറി സൃഷ്ടിക്കുക. ഉദാഹരണത്തിന്:

    mkdir hello-http
    cd hello-http
  4. ഫംഗ്ഷൻ കോഡ് എഴുതുക:

    பின்வரும் കോഡ് ഉപയോഗിച്ച് `main.py` (അല്ലെങ്കിൽ Node.js-ന് `index.js`) എന്ന ഫയൽ സൃഷ്ടിക്കുക:

    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. ഒരു ആവശ്യകതാ ഫയൽ സൃഷ്ടിക്കുക (Python മാത്രം):

    നിങ്ങൾ Python ഉപയോഗിക്കുകയാണെങ്കിൽ, `requirements.txt` എന്ന ഫയൽ സൃഷ്ടിക്കുകയും നിങ്ങളുടെ ഫംഗ്ഷന് ആവശ്യമായ ഏതെങ്കിലും ഡിപൻഡൻസികൾ ചേർക്കുകയും ചെയ്യുക. ഈ ഉദാഹരണത്തിന് ഇത് കർശനമായി ആവശ്യമില്ല, എന്നാൽ ഒന്ന് ഉൾപ്പെടുത്തുന്നത് നല്ല രീതിയാണ്. നിങ്ങൾക്ക് ഡിപൻഡൻസികൾ ഇല്ലെങ്കിൽ അത് ശൂന്യമായി ഇടാം.

  6. ഫംഗ്ഷൻ ഡെപ്ലോയ് ചെയ്യുക:

    `gcloud functions deploy` കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങളുടെ ഫംഗ്ഷൻ ഡെപ്ലോയ് ചെയ്യുക. `YOUR_FUNCTION_NAME` എന്നത് നിങ്ങളുടെ ഫംഗ്ഷന് വേണ്ട പേര് നൽകി മാറ്റുക.

    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

    പാരാമീറ്ററുകളുടെ വിശദീകരണം:

    • `YOUR_FUNCTION_NAME`: നിങ്ങളുടെ Cloud Function-ന് നൽകാൻ ആഗ്രഹിക്കുന്ന പേര്.
    • `--runtime`: നിങ്ങളുടെ ഫംഗ്ഷന്റെ റൺടൈം എൻവയോൺമെന്റ് (ഉദാഹരണത്തിന്, `python39`, `nodejs16`).
    • `--trigger-http`: HTTP അഭ്യർത്ഥനകളാൽ ഫംഗ്ഷൻ ട്രിഗർ ചെയ്യപ്പെടും എന്ന് ഇത് വ്യക്തമാക്കുന്നു.
    • `--allow-unauthenticated`: ആധികാരികതയില്ലാതെ ആർക്കും ഫംഗ്ഷൻ വിളിക്കാൻ ഇത് അനുവദിക്കുന്നു. ശ്രദ്ധിക്കുക: പ്രൊഡക്ഷൻ പരിതസ്ഥിതികളിൽ ഇത് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ ശ്രദ്ധിക്കുക! ശരിയായ ആധികാരികതയും അംഗീകാരവും നടപ്പിലാക്കുന്നത് പരിഗണിക്കുക.
  7. ഫംഗ്ഷൻ ടെസ്റ്റ് ചെയ്യുക:

    ഡെപ്ലോയ്മെന്റിന് ശേഷം, `gcloud` കമാൻഡ് നിങ്ങളുടെ ഫംഗ്ഷന്റെ URL ഔട്ട്പുട്ട് ചെയ്യും. നിങ്ങൾക്ക് `curl` അല്ലെങ്കിൽ Postman പോലുള്ള ഒരു ടൂൾ ഉപയോഗിച്ച് ആ URL-ലേക്ക് ഒരു HTTP അഭ്യർത്ഥന അയച്ചുകൊണ്ട് അത് ടെസ്റ്റ് ചെയ്യാൻ കഴിയും.

    curl YOUR_FUNCTION_URL

    പ്രതികരണത്തിൽ "Hello, World!" സന്ദേശം നിങ്ങൾ കാണും. നിങ്ങൾക്ക് ഒരു പേര് ഒരു ക്വറി പാരാമീറ്ററായി നൽകാനും കഴിയും:

    curl "YOUR_FUNCTION_URL?name=YourName"

    ഇത് "Hello, YourName!" എന്ന് തിരികെ നൽകണം.

HTTP അഭ്യർത്ഥനയും പ്രതികരണവും മനസ്സിലാക്കുന്നു

ഒരു HTTP അഭ്യർത്ഥനയിലൂടെ ഒരു Cloud Function ട്രിഗർ ചെയ്യുമ്പോൾ, അഭ്യർത്ഥനയെക്കുറിച്ചുള്ള വിവരങ്ങൾ അടങ്ങിയ ഒരു ഒബ്ജക്റ്റ് അത് സ്വീകരിക്കുന്നു. ഈ ഒബ്ജക്റ്റ് സാധാരണയായി ഉൾക്കൊള്ളുന്നു:

നിങ്ങളുടെ ഫംഗ്ഷൻ ഒരു HTTP പ്രതികരണം തിരികെ നൽകണം, അതിൽ ഉൾപ്പെടുന്നു:

ഉദാഹരണം: വ്യത്യസ്ത HTTP മെത്തേഡുകൾ കൈകാര്യം ചെയ്യുന്നു

നിങ്ങളുടെ Cloud Function-ൽ വ്യത്യസ്ത HTTP മെത്തേഡുകൾ എങ്ങനെ കൈകാര്യം ചെയ്യാമെന്നതിൻ്റെ ഒരു ഉദാഹരണം ഇതാ:

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

`gcloud functions deploy` കമാൻഡ് ഉപയോഗിച്ച് അപ്ഡേറ്റ് ചെയ്ത ഫംഗ്ഷൻ ഡെപ്ലോയ് ചെയ്യാൻ ഓർക്കുക.

നിങ്ങളുടെ HTTP ട്രിഗറുകൾ സുരക്ഷിതമാക്കുന്നു

പ്രത്യേകിച്ച് സെൻസിറ്റീവ് ഡാറ്റയോ നിർണായക പ്രവർത്തനങ്ങളോ കൈകാര്യം ചെയ്യുമ്പോൾ, HTTP ട്രിഗറുകളുമായി പ്രവർത്തിക്കുമ്പോൾ സുരക്ഷ പരമപ്രധാനമാണ്. ഇതാ ചില പ്രധാന സുരക്ഷാ പരിഗണനകൾ:

ആധികാരികതയും അംഗീകാരവും

ഡിഫോൾട്ടായി, `--allow-unauthenticated` ഉപയോഗിക്കുകയാണെങ്കിൽ HTTP വഴി ട്രിഗർ ചെയ്യുന്ന Cloud Functions പൊതുവെ ലഭ്യമാകും. മിക്ക പ്രൊഡക്ഷൻ സാഹചര്യങ്ങളിലും, അംഗീകൃത ഉപയോക്താക്കളിലേക്കോ സേവനങ്ങളിലേക്കോ ആക്സസ് പരിമിതപ്പെടുത്താൻ നിങ്ങൾ ആഗ്രഹിക്കും. Google Cloud ആധികാരികതയ്ക്കും അംഗീകാരത്തിനും നിരവധി ഓപ്ഷനുകൾ നൽകുന്നു:

ഇൻപുട്ട് സാധൂകരണം

SQL injection അല്ലെങ്കിൽ cross-site scripting (XSS) പോലുള്ള സുരക്ഷാ പിഴവുകൾ തടയുന്നതിന് നിങ്ങളുടെ Cloud Function സ്വീകരിക്കുന്ന ഇൻപുട്ട് ഡാറ്റ എല്ലായ്പ്പോഴും സാധൂകരിക്കുക. ദോഷകരമായ ഇൻപുട്ടിൽ നിന്ന് സംരക്ഷിക്കുന്നതിന് ഉചിതമായ ശുദ്ധീകരണവും എസ്കേപ്പിംഗ് ടെക്നിക്കുകളും ഉപയോഗിക്കുക.

HTTPS

ക്ലയന്റും ഫംഗ്ഷനും തമ്മിലുള്ള ആശയവിനിമയം എൻക്രിപ്റ്റ് ചെയ്യാൻ നിങ്ങളുടെ Cloud Function HTTPS വഴി മാത്രമേ ലഭ്യമാകൂ എന്ന് ഉറപ്പാക്കുക. Google Cloud Functions ഓട്ടോമാറ്റിക്കായി HTTPS എൻഡ്‌പോയിന്റുകൾ നൽകുന്നു.

റേറ്റ് ലിമിറ്റിംഗ്

ദുരുപയോഗം, denial-of-service (DoS) ആക്രമണങ്ങൾ എന്നിവ തടയുന്നതിന് റേറ്റ് ലിമിറ്റിംഗ് നടപ്പിലാക്കുക. അമിതമായ ട്രാഫിക്കിൽ നിന്ന് നിങ്ങളുടെ Cloud Functions-നെ സംരക്ഷിക്കാൻ Google Cloud Armor പോലുള്ള സേവനങ്ങൾ നിങ്ങൾക്ക് ഉപയോഗിക്കാം.

HTTP ട്രിഗറുകൾക്കുള്ള ഉപയോഗ സാഹചര്യങ്ങൾ

HTTP ട്രിഗറുകൾക്ക് വിവിധ ഉപയോഗങ്ങൾ ഉണ്ട്, അവ വിപുലമായ ആപ്ലിക്കേഷനുകളിൽ ഉപയോഗിക്കാം. ഇതാ ചില സാധാരണ ഉപയോഗ സാഹചര്യങ്ങൾ:

വ്യത്യസ്ത വ്യവസായങ്ങളിലെ ഉദാഹരണങ്ങൾ

വിപുലമായ ടെക്നിക്കുകൾ

എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ ഉപയോഗിക്കുന്നു

എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ നിങ്ങളുടെ കോഡിൽ സെൻസിറ്റീവ് വിവരങ്ങളോ കോൺഫിഗറേഷൻ മൂല്യങ്ങളോ ഹാർഡ്കോഡ് ചെയ്യാതെ നിങ്ങളുടെ Cloud Function കോൺഫിഗർ ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു. `gcloud functions deploy` കമാൻഡ് ഉപയോഗിച്ചോ Google Cloud Console-ലോ എൻവയോൺമെൻ്റ് വേരിയബിളുകൾ സജ്ജമാക്കാൻ നിങ്ങൾക്ക് കഴിയും.

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

നിങ്ങളുടെ കോഡിൽ, `os.environ` ഡിക്ഷണറി (Python) അല്ലെങ്കിൽ `process.env` ഒബ്ജക്റ്റ് (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}`);
};

അസമകാലിക ജോലികൾ കൈകാര്യം ചെയ്യുന്നു

ദൈർഘ്യമേറിയതോ കമ്പ്യൂട്ടേഷനൽ ആവശ്യമായതോ ആയ ജോലികൾക്ക്, HTTP അഭ്യർത്ഥന തടയുന്നത് ഒഴിവാക്കാൻ അസമകാലിക പ്രോസസ്സിംഗ് ഉപയോഗിക്കുന്നതാണ് നല്ലത്. ഈ ജോലികൾ പ്രത്യേക ക്യൂവുകളിലേക്ക് ഓഫ്‌ലോഡ് ചെയ്യാൻ Google Cloud Tasks അല്ലെങ്കിൽ Cloud Pub/Sub പോലുള്ള സേവനങ്ങൾ നിങ്ങൾക്ക് ഉപയോഗിക്കാം.

പിഴവ് കൈകാര്യം ചെയ്യലും ലോഗിംഗും

നിങ്ങളുടെ Cloud Functions-ൽ ശക്തമായ പിഴവ് കൈകാര്യം ചെയ്യലും ലോഗിംഗും നടപ്പിലാക്കുക, പ്രശ്നങ്ങൾ വേഗത്തിൽ കണ്ടെത്താനും പരിഹരിക്കാനും. നിങ്ങളുടെ ഫംഗ്ഷനുകളിൽ നിന്ന് ലോഗുകൾ ശേഖരിക്കാനും അവയുടെ പ്രകടനം നിരീക്ഷിക്കാനും Google Cloud Logging ഉപയോഗിക്കുക.

മികച്ച രീതികൾ

സാധാരണ പ്രശ്നങ്ങളുടെ ട്രബിൾഷൂട്ടിംഗ്

ഉപസംഹാരം

HTTP ട്രിഗറുകളുള്ള Google Cloud Functions, സെർവർലെസ് ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കുന്നതിനുള്ള ശക്തവും വഴക്കമുള്ളതുമായ മാർഗ്ഗം നൽകുന്നു. ഈ ഗൈഡിൽ ചർച്ച ചെയ്ത ആശയങ്ങളും ടെക്നിക്കുകളും മനസ്സിലാക്കുന്നതിലൂടെ, ലോകമെമ്പാടുമുള്ള പ്രേക്ഷകർക്കായി സ്കേലബിളും, ചെലവ് കുറഞ്ഞതും, ഇവന്റ്-ഡ്രൈവണുമായ പരിഹാരങ്ങൾ സൃഷ്ടിക്കാൻ നിങ്ങൾക്ക് Cloud Functions-ൻ്റെ ശക്തി പ്രയോജനപ്പെടുത്താൻ കഴിയും. സെർവർലെസ് വിപ്ലവത്തെ ആശ്ലേഷിക്കുക, നിങ്ങളുടെ ക്ലൗഡ് ആപ്ലിക്കേഷനുകളുടെ പൂർണ്ണ സാധ്യതകൾ അഴിച്ചുമാറ്റുക!

Google Cloud Functions: HTTP ട്രിഗറുകൾക്കായുള്ള സമഗ്ര ഗൈഡ് | MLOG