পাইথনে HTTP ক্লাউড ফাংশন

1. ভূমিকা

b158ce75c3cccd6d.png

পাইথন একটি জনপ্রিয় ওপেন সোর্স প্রোগ্রামিং ভাষা যা ডেটা বিজ্ঞানী, ওয়েব অ্যাপ্লিকেশন ডেভেলপার, সিস্টেম অ্যাডমিনিস্ট্রেটর এবং আরও অনেক কিছু দ্বারা ব্যবহৃত হয়।

ক্লাউড ফাংশন একটি ইভেন্ট-চালিত সার্ভারহীন গণনা প্ল্যাটফর্ম। ক্লাউড ফাংশন আপনাকে রিসোর্স সরবরাহ বা পরিবর্তনের প্রয়োজনীয়তাগুলি পরিচালনা করার জন্য স্কেলিং সম্পর্কে চিন্তা না করেই আপনার কোড লিখতে দেয়৷

ক্লাউড ফাংশন দুই ধরনের আছে:

  • HTTP ফাংশন HTTP অনুরোধে সাড়া দেয়। আপনি এই কোডল্যাবে একটি দম্পতি তৈরি করবেন।
  • ব্যাকগ্রাউন্ড ফাংশনগুলি ইভেন্টগুলির দ্বারা ট্রিগার হয়, যেমন ক্লাউড পাব/সাব -এ একটি বার্তা প্রকাশিত হওয়া বা ক্লাউড স্টোরেজে আপলোড করা ফাইল৷ আমরা এই ল্যাবে এটিকে সম্বোধন করি না, তবে আপনি ডকুমেন্টেশনে আরও পড়তে পারেন৷

efb3268e3b74ed4f.png

এই কোডল্যাব আপনাকে পাইথনে আপনার নিজস্ব ক্লাউড ফাংশন তৈরি করার মাধ্যমে নিয়ে যাবে।

আপনি কি নির্মাণ করবেন

এই কোডল্যাবে, আপনি একটি ক্লাউড ফাংশন প্রকাশ করবেন যা, যখন HTTP এর মাধ্যমে আহ্বান করা হয়, তখন "পাইথন চালিত" লোগো প্রদর্শন করে:

a7aaf656b78050fd.png

আপনি কি শিখবেন

  • কিভাবে একটি HTTP ক্লাউড ফাংশন লিখতে হয়।
  • কিভাবে একটি HTTP ক্লাউড ফাংশন লিখতে হয় যা আর্গুমেন্ট নেয়।
  • কীভাবে একটি HTTP ক্লাউড ফাংশন পরীক্ষা করবেন।
  • ফাংশন চেষ্টা করার জন্য একটি স্থানীয় পাইথন HTTP সার্ভার কিভাবে চালানো যায়।
  • কিভাবে একটি HTTP ক্লাউড ফাংশন লিখতে হয় যা একটি চিত্র প্রদান করে।

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত PROJECT_ID হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল শুরু করুন

যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি ক্লাউড শেল ব্যবহার করবেন, ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন 853e55310c205094.png .

3c1dabeca90e44e5.png

যদি এটি আপনার প্রথমবার ক্লাউড শেল শুরু হয়, তাহলে এটি কী তা বর্ণনা করে আপনাকে একটি মধ্যবর্তী স্ক্রীন উপস্থাপন করা হবে। যদি আপনি একটি মধ্যবর্তী স্ক্রীনের সাথে উপস্থাপিত হন, তবে চালিয়ে যান ক্লিক করুন।

9c92662c6a846a5c.png

ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷

9f0e51b578fecce5.png

এই ভার্চুয়াল মেশিনটি প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জাম দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5 GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, ব্রাউজার দিয়ে করা যেতে পারে।

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি প্রমাণীকৃত হয়েছেন এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

ক্লাউড ফাংশন এবং ক্লাউড বিল্ড এপিআই সক্ষম করা আছে তা নিশ্চিত করুন

ক্লাউড ফাংশন এবং ক্লাউড বিল্ড এপিআই সক্ষম করা হয়েছে তা নিশ্চিত করতে ক্লাউড শেল থেকে নিম্নলিখিত কমান্ডটি চালান:

gcloud services enable \
  cloudfunctions.googleapis.com \
  cloudbuild.googleapis.com

দ্রষ্টব্য: ক্লাউড বিল্ডকে gcloud functions deploy কমান্ড দ্বারা কল করা হবে এবং স্বয়ংক্রিয়ভাবে আপনার কোডটি একটি কন্টেইনার ছবিতে তৈরি করবে।

সোর্স কোড ডাউনলোড করুন

ক্লাউড শেল টার্মিনাল থেকে, নিম্নলিখিত কমান্ডগুলি চালান:

REPO_NAME="codelabs"
REPO_URL="https://github.com/GoogleCloudPlatform/$REPO_NAME"
SOURCE_DIR="cloud-functions-python-http"

git clone --no-checkout --filter=blob:none --depth=1 $REPO_URL
cd $REPO_NAME
git sparse-checkout set $SOURCE_DIR
git checkout
cd $SOURCE_DIR

উৎস ডিরেক্টরির বিষয়বস্তু দেখুন:

ls

আপনার নিম্নলিখিত ফাইল থাকা উচিত:

main.py  python-powered.png  test_main.py  web_app.py

3. HTTP ক্লাউড ফাংশন প্রবর্তন

পাইথনে HTTP ক্লাউড ফাংশনগুলি নিয়মিত পাইথন ফাংশন হিসাবে লেখা হয়। ফাংশনটিকে অবশ্যই একটি একক flask.Request গ্রহণ করতে হবে৷ অনুরোধ আর্গুমেন্ট, যা সাধারণত request নামে পরিচিত৷

main.py

import flask


def hello_world(request: flask.Request) -> flask.Response:
    """HTTP Cloud Function.

    Returns:
    - "Hello World! 👋"
    """
    response = "Hello World! 👋"

    return flask.Response(response, mimetype="text/plain")

# ...

আপনি আপনার পছন্দের কমান্ড লাইন সম্পাদক (ন্যানো, ভিম, বা ইমাক্স) দিয়ে ফাইলটি খুলতে পারেন। সোর্স ডিরেক্টরিটিকে ওয়ার্কস্পেস হিসাবে সেট করার পরে আপনি ক্লাউড শেল এডিটরে এটি খুলতে পারেন:

cloudshell open-workspace .

gcloud functions deploy কমান্ড ব্যবহার করে একটি HTTP ক্লাউড ফাংশন হিসাবে এই ফাংশনটি স্থাপন করা যাক:

FUNCTION_NAME="hello_world"

gcloud functions deploy $FUNCTION_NAME \
  --runtime python312 \
  --trigger-http \
  --allow-unauthenticated

কমান্ড আউটপুট:

...
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
...
entryPoint: FUNCTION_NAME
httpsTrigger:
  url: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME
...

gcloud functions deploy বিকল্পগুলি সম্পর্কে নোট:

  • --runtime : এটি ভাষা রানটাইম নির্দিষ্ট করে। পাইথনের জন্য, এটি বর্তমানে python37 , python38 , python39 , python310 , বা python312 হতে পারে। রানটাইম দেখুন।
  • --trigger-http : ফাংশনটি একটি এন্ডপয়েন্ট বরাদ্দ করা হবে। এন্ডপয়েন্টে HTTP অনুরোধ (POST, PUT, GET, DELETE, এবং OPTIONS) ফাংশন এক্সিকিউশনকে ট্রিগার করবে।
  • --allow-unauthenticated : ফাংশনটি সর্বজনীন হবে, প্রমাণীকরণ পরীক্ষা না করেই সমস্ত কলারকে অনুমতি দেবে।
  • আরও জানতে, gcloud ফাংশন স্থাপন দেখুন।

ফাংশনটি পরীক্ষা করতে, আপনি উপরের কমান্ড আউটপুটে প্রদর্শিত httpsTrigger.url URL-এ ক্লিক করতে পারেন। এছাড়াও আপনি প্রোগ্রাম্যাটিকভাবে URL পুনরুদ্ধার করতে পারেন এবং নিম্নলিখিত কমান্ডগুলির সাথে ফাংশনটি কল করতে পারেন:

URL=$(gcloud functions describe $FUNCTION_NAME --format "value(httpsTrigger.url)")
curl -w "\n" $URL

আপনি নিম্নলিখিত ফলাফল পেতে হবে:

Hello World! 👋

4. একটি HTTP ক্লাউড ফাংশন লেখা যা আর্গুমেন্ট নেয়

যখন তারা যুক্তি গ্রহণ করে তখন ফাংশনগুলি আরও বহুমুখী হয়। আসুন একটি নতুন ফাংশন hello_name সংজ্ঞায়িত করি যা একটি name পরামিতি সমর্থন করে:

main.py

# ...

def hello_name(request: flask.Request) -> flask.Response:
    """HTTP Cloud Function.

    Returns:
    - "Hello {NAME}! 🚀" if "name=NAME" is defined in the GET request
    - "Hello World! 🚀" otherwise
    """
    name = request.args.get("name", "World")
    response = f"Hello {name}! 🚀"

    return flask.Response(response, mimetype="text/plain")

# ...

এই নতুন ফাংশন স্থাপন করা যাক:

FUNCTION_NAME="hello_name"

gcloud functions deploy $FUNCTION_NAME \
  --runtime python312 \
  --trigger-http \
  --allow-unauthenticated

কমান্ড আউটপুট:

...
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
...
entryPoint: FUNCTION_NAME
httpsTrigger:
  url: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME
...

ফাংশনটি পরীক্ষা করতে, আপনি উপরের কমান্ড আউটপুটে প্রদর্শিত httpsTrigger.url URL-এ ক্লিক করতে পারেন। এছাড়াও আপনি প্রোগ্রাম্যাটিকভাবে URL পুনরুদ্ধার করতে পারেন এবং নিম্নলিখিত কমান্ডগুলির সাথে ফাংশনটি কল করতে পারেন:

URL=$(gcloud functions describe $FUNCTION_NAME --format "value(httpsTrigger.url)")
curl -w "\n" $URL

আপনি ডিফল্ট ফলাফল পেতে হবে:

Hello World! 🚀

আপনি ডিফল্ট ফলাফল পাচ্ছেন কারণ name যুক্তি সেট করা নেই৷ URL এ একটি প্যারামিটার যোগ করুন:

curl -w "\n" $URL?name=YOUR%20NAME

এই সময়, আপনি আপনার কাস্টম প্রতিক্রিয়া পাবেন:

Hello YOUR NAME! 🚀

সোর্স কোড আপডেট হয়ে গেলে আপনার ফাংশনগুলি উদ্দেশ্য অনুযায়ী কাজ করতে থাকে তা নিশ্চিত করার জন্য পরবর্তী ধাপ হল ইউনিট পরীক্ষা যোগ করা।

5. লেখার পরীক্ষা

পাইথনে HTTP ক্লাউড ফাংশনগুলি স্ট্যান্ডার্ড লাইব্রেরি থেকে unittest মডিউল ব্যবহার করে পরীক্ষা করা হয়। আপনার ফাংশন পরীক্ষা করার জন্য একটি এমুলেটর বা অন্য সিমুলেশন চালানোর প্রয়োজন নেই - শুধুমাত্র সাধারণ পাইথন কোড।

hello_world এবং hello_name ফাংশনগুলির জন্য একটি পরীক্ষা কেমন দেখায় তা এখানে:

test_main.py

import unittest
import unittest.mock

import main


class TestHello(unittest.TestCase):
    def test_hello_world(self):
        request = unittest.mock.Mock()

        response = main.hello_world(request)
        assert response.status_code == 200
        assert response.get_data(as_text=True) == "Hello World! 👋"

    def test_hello_name_no_name(self):
        request = unittest.mock.Mock(args={})

        response = main.hello_name(request)
        assert response.status_code == 200
        assert response.get_data(as_text=True) == "Hello World! 🚀"

    def test_hello_name_with_name(self):
        name = "FirstName LastName"
        request = unittest.mock.Mock(args={"name": name})

        response = main.hello_name(request)
        assert response.status_code == 200
        assert response.get_data(as_text=True) == f"Hello {name}! 🚀"
  1. পাইথন পরীক্ষাগুলি অন্যান্য পাইথন ফাইলগুলির মতো একইভাবে লেখা হয়। তারা আমদানির একটি সেট দিয়ে শুরু করে, তারপর ক্লাস এবং ফাংশন সংজ্ঞায়িত করে।
  2. পরীক্ষার ঘোষণাটি class TestHello(TestCase) । এটি অবশ্যই এমন একটি শ্রেণী হতে হবে যা unittest.TestCase থেকে উত্তরাধিকার সূত্রে প্রাপ্ত।
  3. পরীক্ষার শ্রেণীতে পদ্ধতি রয়েছে, যার প্রতিটি অবশ্যই test_ দিয়ে শুরু হবে, যা পৃথক পরীক্ষার ক্ষেত্রে প্রতিনিধিত্ব করে।
  4. প্রতিটি টেস্ট কেস request প্যারামিটারকে উপহাস করে আমাদের একটি ফাংশন পরীক্ষা করে (অর্থাৎ পরীক্ষার জন্য প্রয়োজনীয় নির্দিষ্ট ডেটা দিয়ে একটি জাল বস্তু দিয়ে প্রতিস্থাপন করা)।
  5. প্রতিটি ফাংশন আহ্বান করার পরে, পরীক্ষাটি HTTP প্রতিক্রিয়া পরীক্ষা করে নিশ্চিত হয় যে আমরা যা আশা করছিলাম তা ছিল।

main.py যেহেতু flask এর উপর নির্ভর করে, নিশ্চিত করুন যে আপনার পরীক্ষার পরিবেশে Flask ফ্রেমওয়ার্ক ইনস্টল করা আছে:

pip install flask

ফ্লাস্ক আউটপুট ইনস্টল করার ফলে নিম্নলিখিতগুলির অনুরূপ:

Collecting flask
...
Successfully installed ... flask-3.0.2 ...

স্থানীয়ভাবে এই পরীক্ষাগুলি চালান:

python -m unittest

তিনটি ইউনিট পরীক্ষা পাস করা উচিত:

...
----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

এর পরে, আপনি একটি নতুন ফাংশন তৈরি করবেন যা "পাইথন চালিত" লোগো প্রদান করবে।

6. "পাইথন চালিত" HTTP ক্লাউড ফাংশন লেখা

আসুন প্রতিটি অনুরোধের জন্য "পাইথন চালিত" চিত্রটি ফিরিয়ে দিয়ে একটি নতুন ফাংশনকে আরও বিনোদনমূলক করে তুলি:

a7aaf656b78050fd.png

নিম্নলিখিত তালিকা এটি ঘটতে কোড দেখায়:

main.py

# ...

def python_powered(request: flask.Request) -> flask.Response:
    """HTTP Cloud Function.

    Returns:
    - The official "Python Powered" logo
    """
    return flask.send_file("python-powered.png")

একটি নতুন python_powered ফাংশন স্থাপন করুন:

FUNCTION_NAME="python_powered"

gcloud functions deploy $FUNCTION_NAME \
  --runtime python312 \
  --trigger-http \
  --allow-unauthenticated

কমান্ড আউটপুট:

...
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
...
entryPoint: FUNCTION_NAME
httpsTrigger:
  url: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME
...

ফাংশনটি পরীক্ষা করতে, উপরের কমান্ড আউটপুটে প্রদর্শিত httpsTrigger.url URL-এ ক্লিক করুন। সবকিছু সঠিকভাবে কাজ করলে, আপনি একটি নতুন ব্রাউজার ট্যাবে "পাইথন চালিত" লোগো দেখতে পাবেন!

এর পরে, আপনি একটি অ্যাপ তৈরি করবেন যাতে আপনি স্থাপনের আগে স্থানীয়ভাবে আপনার ফাংশন চালাতে এবং চেষ্টা করতে পারেন।

7. স্থানীয়ভাবে ফাংশন চালানো

আপনি একটি ওয়েব অ্যাপ তৈরি করে এবং একটি রুটে আপনার ফাংশন কল করে স্থানীয়ভাবে একটি HTTP ফাংশন চালাতে পারেন। আপনি আপনার ফাংশন হিসাবে একই ডিরেক্টরিতে এটি যোগ করতে পারেন। web_app.py নামের ফাইলটিতে নিম্নলিখিত বিষয়বস্তু রয়েছে:

web_app.py

import flask

import main

app = flask.Flask(__name__)


@app.get("/")
def index():
    return main.python_powered(flask.request)


if __name__ == "__main__":
    # Local development only
    # Run "python web_app.py" and open http://localhost:8080
    app.run(host="localhost", port=8080, debug=True)
  1. এই ফাইলটি একটি ফ্লাস্ক অ্যাপ্লিকেশন তৈরি করে।
  2. এটি বেস ইউআরএলে একটি রুট নিবন্ধন করে যা index() নামে একটি ফাংশন দিয়ে পরিচালনা করা হয়।
  3. index() ফাংশনটি তখন আমাদের python_powered ফাংশনকে কল করে, এটি বর্তমান অনুরোধটি পাস করে।

আপনার উন্নয়ন পরিবেশে ফ্লাস্ক ফ্রেমওয়ার্ক ইনস্টল করা আছে তা নিশ্চিত করুন:

pip install flask

ফ্লাস্ক আউটপুট ইনস্টল করার ফলে নিম্নলিখিতগুলির অনুরূপ:

Collecting flask
...
Successfully installed ... flask-3.0.2 ...

স্থানীয়ভাবে এই অ্যাপ্লিকেশনটি চালানোর জন্য, নিম্নলিখিত কমান্ডটি চালান:

python web_app.py

এখন আপনার ব্রাউজারে ওয়েব অ্যাপ পরীক্ষা করতে ক্লাউড শেল ওয়েব প্রিভিউ ব্যবহার করুন। ক্লাউড শেলে, "ওয়েব প্রিভিউ" বোতামে ক্লিক করুন এবং "পোর্ট 8080 এর পূর্বরূপ" নির্বাচন করুন:

6c9ff9e5c692c58e.gif

ক্লাউড শেল একটি নতুন ব্রাউজার উইন্ডোতে তার প্রক্সি পরিষেবাতে পূর্বরূপ URL খোলে। ওয়েব প্রিভিউ শুধুমাত্র আপনার ব্যবহারকারীর অ্যাকাউন্টে HTTPS-এ অ্যাক্সেস সীমাবদ্ধ করে। সবকিছু সঠিকভাবে কাজ করলে, আপনার "পাইথন চালিত" লোগোটি দেখতে হবে!

8e5c3ead11cfd103.png

8. অভিনন্দন!

b158ce75c3cccd6d.png

আপনি এইচটিটিপি ক্লাউড ফাংশন স্থাপন করেছেন, ফ্লাস্ক ফ্রেমওয়ার্কের সাথে ওয়েব অনুরোধগুলি পরিচালনা করে এমন ইডিওম্যাটিক ফাংশন ব্যবহার করে৷

ক্লাউড ফাংশনগুলির মূল্য নির্ধারণ করা হয় আপনার ফাংশনটি কতবার আহ্বান করা হয়েছে তার উপর ভিত্তি করে, যার মধ্যে ফাংশনগুলির জন্য একটি বিনামূল্যের স্তর রয়েছে যা প্রায়শই চালানো হয় না৷ একবার আপনি আপনার ক্লাউড ফাংশনগুলি পরীক্ষা করার পরে, আপনি gcloud ব্যবহার করে সেগুলি মুছতে পারেন:

gcloud functions delete hello_world --quiet
gcloud functions delete hello_name --quiet
gcloud functions delete python_powered --quiet

এছাড়াও আপনি Google ক্লাউড কনসোল থেকে ফাংশন মুছে ফেলতে পারেন।

আমরা আশা করি আপনি পাইথনে ক্লাউড ফাংশন ব্যবহার করে উপভোগ করবেন!