O'zbek

Google Cloud Functions bilan serverless hisoblash kuchini oching. HTTP triggerlari bo'yicha ushbu qo'llanma butun dunyo dasturchilariga kengaytiriladigan, hodisaga asoslangan ilovalar yaratishda yordam beradi.

Google Cloud Functions: HTTP Triggers bo'yicha To'liq Qo'llanma

Google Cloud Functions (GCF) bulut xizmatlarini yaratish va ulash imkonini beruvchi serverless ijro muhitidir. Cloud Functions yordamida siz bulut infratuzilmangiz va xizmatlaringizdan kelayotgan hodisalarga biriktirilgan oddiy, yagona maqsadli funksiyalarni yozasiz. Siz kuzatayotgan hodisa sodir bo'lganda funksiyangiz ishga tushadi. Bu yondashuv serverlar yoki runtime'larni boshqarmasdan hodisaga asoslangan ilovalarni ishlab chiqishga imkon beradi.

Cloud Function'ni ishga tushirishning eng keng tarqalgan usullaridan biri HTTP so'rovi orqali. Ushbu qo'llanma Google Cloud Functions'dagi HTTP triggerlari dunyosini o'rganib chiqadi, sizga kuchli, kengaytiriladigan va tejamkor ilovalar yaratish uchun bilim beradi.

HTTP Triggerlari nima?

HTTP triggeri Cloud Function'ingizni HTTP so'roviga javoban ishga tushirishga imkon beradi. Aslini olganda, ma'lum bir URLga HTTP so'rovi yuborilganda, Google Cloud Functions bog'langan funksiyani avtomatik ravishda bajaradi. Bu HTTP triggerlarini APIlar, webhooklar va hodisaga asoslangan veb-ilovalar yaratish uchun ideal qiladi.

HTTP Triggerlaridan foydalanishning asosiy afzalliklari:

HTTP Triggerli Cloud Function yaratish

Keling, HTTP triggerli oddiy Cloud Function yaratish jarayonini ko'rib chiqaylik. Biz "Hello, World!" xabari bilan javob beradigan funksiya yaratamiz. Bu misol, chiqish satrini o'zgartirish orqali turli global tillarga moslashtirilishi mumkin.

Old shartlar:

Qadamlar:

  1. Yangi loyiha yaratish (agar sizda mavjud bo'lmasa):

    Agar sizda hali GCP loyihasi bo'lmasa, Google Cloud Console'da yangisini yarating.

  2. Cloud Functions API'ni yoqish:

    Cloud Console'da Cloud Functions API'ga o'ting va uni yoqing.

  3. Funksiya katalogini yaratish:

    Cloud Function'ingiz uchun yangi katalog yarating. Masalan:

    mkdir hello-http
    cd hello-http
  4. Funksiya kodini yozish:

    main.py (yoki Node.js uchun index.js) nomli fayl yarating va quyidagi kodni qo'shing:

    Python (main.py):

    def hello_http(request):
        """HTTP Cloud Function.
        Args:
            request (flask.Request): The request object.
            <https://flask.palletsprojects.com/en/1.1.x/api/#flask.Request>
        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.Flask.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. Talablar faylini yaratish (faqat Python uchun):

    Agar siz Python'dan foydalanayotgan bo'lsangiz, requirements.txt nomli fayl yarating va funksiyangizga kerak bo'ladigan barcha bog'liqliklarni qo'shing. Bu misol uchun qat'iy talab qilinmasa ham, uni kiritish yaxshi amaliyot hisoblanadi. Agar bog'liqliklar bo'lmasa, uni bo'sh qoldirishingiz mumkin.

  6. Funksiyani joylashtirish:

    Funksiyangizni joylashtirish uchun gcloud functions deploy buyrug'idan foydalaning. YOUR_FUNCTION_NAME ni funksiyangizga berishni istagan nom bilan almashtiring.

    Python:

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

    Node.js:

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

    Parametrlar tushuntmasi:

    • YOUR_FUNCTION_NAME: Cloud Function'ingizga berishni istagan nom.
    • --runtime: Funksiyangiz uchun runtime muhiti (masalan, python39, nodejs16).
    • --trigger-http: Funksiya HTTP so'rovlari orqali ishga tushirilishini belgilaydi.
    • --allow-unauthenticated: Har kimga autentifikatsiyasiz funksiyani chaqirishga ruxsat beradi. Ogohlantirish: Ishlab chiqarish muhitlarida buni yoqishda ehtiyot bo'ling! To'g'ri autentifikatsiya va avtorizatsiyani joriy etishni ko'rib chiqing.
  7. Funksiyani sinash:

    Joylashtirilgandan so'ng, gcloud buyrug'i funksiyangizning URL manzilini chiqaradi. Keyin uni curl yoki Postman kabi vosita yordamida shu URLga HTTP so'rovi yuborish orqali sinashingiz mumkin.

    curl YOUR_FUNCTION_URL

    Javobda "Hello, World!" xabarini ko'rishingiz kerak. Shuningdek, so'rov parametr sifatida nom ham berishingiz mumkin:

    curl "YOUR_FUNCTION_URL?name=YourName"

    Bu "Hello, YourName!"ni qaytarishi kerak.

HTTP So'rovi va Javobini tushunish

Cloud Function HTTP so'rovi orqali ishga tushirilganda, u so'rov haqidagi ma'lumotlarni o'z ichiga olgan ob'ektni qabul qiladi. Bu ob'ekt odatda quyidagilarni o'z ichiga oladi:

Keyin funksiyangiz HTTP javobini qaytarishi kerak, u quyidagilarni o'z ichiga oladi:

Misol: Turli HTTP usullarini boshqarish

Cloud Function'ingizda turli HTTP usullarini qanday boshqarish bo'yicha misol:

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`<https://flask.palletsprojects.com/en/2.0.x/api/#flask.Flask.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;
  }
};

Yangilangan funksiyani gcloud functions deploy buyrug'i yordamida joylashtirishni unutmang.

HTTP Triggerlaringizni himoyalash

HTTP triggerlari bilan ishlashda, ayniqsa nozik ma'lumotlar yoki muhim operatsiyalar bilan shug'ullanilganda, xavfsizlik juda muhimdir. Mana ba'zi asosiy xavfsizlik masalalari:

Autentifikatsiya va Avtorizatsiya

Odatiy bo'lib, HTTP orqali ishga tushirilgan Cloud Functions agar siz --allow-unauthenticated dan foydalansangiz, ommaviy kirish mumkin. Ko'pgina ishlab chiqarish stsenariylarida siz ruxsat etilgan foydalanuvchilar yoki xizmatlarga kirishni cheklashni xohlaysiz. Google Cloud autentifikatsiya va avtorizatsiya uchun bir qator variantlarni taqdim etadi:

Kirish Ma'lumotlarini Tasdiqlash

SQL injection yoki cross-site scripting (XSS) kabi xavfsizlik zaifliklarini oldini olish uchun Cloud Function'ingiz qabul qilgan kirish ma'lumotlarini har doim tasdiqlang. Zararli kirishdan himoyalanish uchun tegishli sanitizatsiya va qochirish usullaridan foydalaning.

HTTPS

Mijoz va funksiya o'rtasidagi aloqani shifrlash uchun Cloud Function'ingiz faqat HTTPS orqali kirish mumkinligini ta'minlang. Google Cloud Functions avtomatik ravishda HTTPS nuqtalarini taqdim etadi.

So'rovlarni Cheklash (Rate Limiting)

Suiiste'mol qilish va xizmatni rad etish (DoS) hujumlarini oldini olish uchun so'rovlarni cheklashni joriy qiling. Google Cloud Armor kabi xizmatlardan Cloud Functions'ingizni haddan tashqari trafikdan himoya qilish uchun foydalanishingiz mumkin.

HTTP Triggerlari uchun foydalanish holatlari

HTTP triggerlari ko'p qirrali bo'lib, turli xil ilovalarda ishlatilishi mumkin. Mana ba'zi keng tarqalgan foydalanish holatlari:

Turli sohalardagi misollar

Murakkab Texnikalar

Atrof-muhit o'zgaruvchilaridan foydalanish

Atrof-muhit o'zgaruvchilari Cloud Function'ingizni kodda nozik ma'lumotlar yoki konfiguratsiya qiymatlarini qattiq kodlamasdan sozlashga imkon beradi. Atrof-muhit o'zgaruvchilarini gcloud functions deploy buyrug'i yordamida yoki Google Cloud Console'da o'rnatishingiz mumkin.

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

Kodingizda os.environ lug'ati (Python) yoki process.env ob'ekti (Node.js) yordamida atrof-muhit o'zgaruvchilariga kirishingiz mumkin.

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

Asinxron vazifalarni boshqarish

Uzoq davom etadigan yoki hisoblash intensiv vazifalar uchun HTTP so'rovini bloklamaslik uchun asinxron qayta ishlashdan foydalanish eng yaxshisidir. Bu vazifalarni alohida navbatlarga yuklash uchun Google Cloud Tasks yoki Cloud Pub/Sub kabi xizmatlardan foydalanishingiz mumkin.

Xatolar bilan ishlash va jurnalizatsiya

Muammolarni tezda aniqlash va hal qilish uchun Cloud Functions'ingizda mustahkam xatolar bilan ishlash va jurnalizatsiyani joriy qiling. Funksiyalaringizdan jurnallarni yig'ish va ularning ish faoliyatini kuzatish uchun Google Cloud Logging'dan foydalaning.

Eng yaxshi amaliyotlar

Keng tarqalgan muammolarni bartaraf etish

Xulosa

Google Cloud Functions HTTP triggerlari bilan serverless ilovalarni yaratishning kuchli va moslashuvchan usulini ta'minlaydi. Ushbu qo'llanmada muhokama qilingan tushunchalar va usullarni tushunish orqali siz global auditoriya uchun kengaytiriladigan, tejamkor va hodisaga asoslangan yechimlar yaratish uchun Cloud Functions kuchidan foydalanishingiz mumkin. Serverless inqilobini qabul qiling va bulut ilovalaringizning to'liq salohiyatini oching!