১. ভূমিকা
সর্বশেষ হালনাগাদ: ২০২১-০৫-১১
ক্লাউড এসকিউএল কী?
ক্লাউড এসকিউএল হলো একটি সম্পূর্ণভাবে পরিচালিত ডাটাবেস পরিষেবা, যা গুগল ক্লাউড প্ল্যাটফর্মে আপনার রিলেশনাল ডাটাবেসগুলো সেট আপ, রক্ষণাবেক্ষণ, পরিচালনা এবং তত্ত্বাবধান করা সহজ করে তোলে।
ক্লাউড ফাংশন বলতে কী বোঝায়?
ক্লাউড ফাংশনস হলো ডেভেলপারদের জন্য একটি হালকা কম্পিউট সলিউশন, যার মাধ্যমে তারা সার্ভার বা রানটাইম এনভায়রনমেন্ট পরিচালনার প্রয়োজন ছাড়াই ক্লাউড ইভেন্টে সাড়া দিতে পারে এমন একক-উদ্দেশ্যমূলক ও স্বতন্ত্র ফাংশন তৈরি করতে পারেন।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি পাইথনে একটি ক্লাউড ফাংশন লিখবেন। ফাংশনটি হলো:
- একটি ক্লাউড SQL ডেটাবেস ইনস্ট্যান্সের সাথে সংযোগ স্থাপন করে।
- ডাটাবেসের কোনো টেবিলে একটি ইনসার্ট স্টেটমেন্ট পাঠায়।
আপনি যা শিখবেন
- গুগল ক্লাউড কনসোলে ক্লাউড ফাংশনস ওয়েব UI কীভাবে অ্যাক্সেস করবেন।
- কীভাবে একটি ক্লাউড ফাংশন তৈরি করবেন।
- ক্লাউড ফাংশন কীভাবে পরীক্ষা করবেন
- পাইথন ব্যবহার করে কীভাবে একটি ক্লাউড SQL ডাটাবেস ইনস্ট্যান্সে (MySQL বা PostgreSQL) সংযোগ স্থাপন করবেন।
- পাইথন ব্যবহার করে ক্লাউড SQL ডেটাবেসে কীভাবে লিখতে হয়।
২. প্রয়োজনীয়তা
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স ।
- একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট, যেটিতে আপনার ক্লাউড এসকিউএল ইনস্ট্যান্স রয়েছে।
- আপনার কাছে যদি আগে থেকে না থাকে, তাহলে আপনি MySQL বা PostgreSQL- এর কুইকস্টার্ট-এ দেওয়া ধাপগুলো অনুসরণ করতে পারেন। ক্লিন আপ ছাড়া বাকি সব ধাপ সম্পন্ন করুন।
- আপনার ইনস্ট্যান্সে একটি টেবিলসহ MySQL বা PostgreSQL ডেটাবেস রয়েছে।
- আপনার ইনস্ট্যান্স সংযোগের নাম, ডাটাবেস ও টেবিলের নাম, ডাটাবেস ব্যবহারকারীর নাম এবং ব্যবহারকারীর পাসওয়ার্ড।
- ক্লাউড এসকিউএল ক্লায়েন্ট রোল সহ একটি সার্ভিস অ্যাকাউন্ট।
৩. কোড প্রস্তুত করুন এবং ফাংশনটি তৈরি করুন।
কোডটি প্রস্তুত করুন
ক্লাউড SQL ডেটাবেসের সাথে সংযোগ করার জন্য ক্লাউড ফাংশন কোডটি এখানেই দেওয়া আছে। কিছু ভেরিয়েবলের মান নির্ভর করে আপনার ক্লাউড SQL ডেটাবেসটি MySQL নাকি PostgreSQL, এবং আপনার নিজের ডেটাবেসের তথ্যের উপর।
ক্লাউড কনসোলের ক্লাউড ফাংশনস UI-তে একটি টেক্সট এডিটর রয়েছে। আপনি সেখানে কোড কপি/পেস্ট করে সম্পাদনা করতে পারেন, অথবা প্রথমে কোডটি স্থানীয়ভাবে সম্পাদনা করে তারপর UI-তে কপি/পেস্ট করতে পারেন।
requirements.txt
# This file tells Python which modules it needs to import
SQLAlchemy==1.3.12
# If your database is MySQL, uncomment the following line:
#PyMySQL==0.9.3
# If your database is PostgreSQL, uncomment the following line:
#pg8000==1.13.2
main.py
# This file contains all the code used in the codelab.
import sqlalchemy
# Depending on which database you are using, you'll set some variables differently.
# In this code we are inserting only one field with one value.
# Feel free to change the insert statement as needed for your own table's requirements.
# Uncomment and set the following variables depending on your specific instance and database:
#connection_name = ""
#table_name = ""
#table_field = ""
#table_field_value = ""
#db_name = ""
#db_user = ""
#db_password = ""
# If your database is MySQL, uncomment the following two lines:
#driver_name = 'mysql+pymysql'
#query_string = dict({"unix_socket": "/cloudsql/{}".format(connection_name)})
# If your database is PostgreSQL, uncomment the following two lines:
#driver_name = 'postgres+pg8000'
#query_string = dict({"unix_sock": "/cloudsql/{}/.s.PGSQL.5432".format(connection_name)})
# If the type of your table_field value is a string, surround it with double quotes.
def insert(request):
request_json = request.get_json()
stmt = sqlalchemy.text('insert into {} ({}) values ({})'.format(table_name, table_field, table_field_value))
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername=driver_name,
username=db_user,
password=db_password,
database=db_name,
query=query_string,
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800
)
try:
with db.connect() as conn:
conn.execute(stmt)
except Exception as e:
return 'Error: {}'.format(str(e))
return 'ok'
ফাংশনটি তৈরি করুন
- ব্রাউজারে গুগল ক্লাউড প্ল্যাটফর্ম কনসোল UI- তে যান।
- নেভিগেশন মেনু থেকে ক্লাউড ফাংশন নির্বাচন করুন।
- বাটন বারে থাকা CREATE FUNCTION-এ ক্লিক করুন।
- ফাংশনটির জন্য একটি নাম লিখুন।
- HTTP ট্রিগারটি নির্বাচন করুন। (ট্রিগার আইটেমের নিচে প্রদর্শিত URL-টি লিখে রাখুন। এটি এই বিন্যাসে থাকবে: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME )
- Authentication-এর অধীনে, ফাংশনটিকে পাবলিক করতে Allow unauthenticated invocations নির্বাচন করুন।
- রানটাইম, বিল্ড এবং কানেকশন সেটিংস প্রসারিত করুন। রানটাইম সার্ভিস অ্যাকাউন্টে , এমন একটি সার্ভিস অ্যাকাউন্ট নির্বাচন করুন যেটির ক্লাউড এসকিউএল ক্লায়েন্ট রোল রয়েছে।
- NEXT বাটনটিতে ক্লিক করুন।
- রানটাইম অপশনের জন্য পাইথন ৩.৭ নির্বাচন করুন।
- সোর্স কোড অপশনের জন্য ইনলাইন এডিটর নির্বাচন করুন।
- সোর্স কোড এডিটর উইন্ডোতে, requirements.txt এবং main.py উভয়ের বিদ্যমান কন্টেন্ট মুছে ফেলুন এবং সেগুলোর জায়গায় উপরের কোডটির আপনার সম্পাদিত সংস্করণ দিয়ে প্রতিস্থাপন করুন।
- এন্ট্রি পয়েন্টের নাম হিসেবে insert লিখুন ।
- Deploy-এ ক্লিক করুন এবং ফাংশনটি তৈরি হওয়া পর্যন্ত অপেক্ষা করুন। ফাংশনটি ব্যবহারের জন্য প্রস্তুত হলে স্পিনারটি ঘোরা বন্ধ করে দেবে এবং পরবর্তী পৃষ্ঠায় একটি সবুজ টিক চিহ্ন দেখা যাবে।
৪. ফাংশনটি পরীক্ষা করুন
- ব্রাউজারে গুগল ক্লাউড প্ল্যাটফর্ম কনসোল UI- তে যান।
- নেভিগেশন মেনু থেকে ক্লাউড ফাংশন নির্বাচন করুন।
- আপনি পূর্বে তৈরি করা ফাংশনটির নামে ক্লিক করুন।
- পৃষ্ঠার মাঝখানে থাকা TESTING লিঙ্কটি নির্বাচন করুন।
- ফাংশনটি পরীক্ষা করুন নির্বাচন করুন।
- ফলাফলটি ok হিসেবে দেখানো উচিত (যদি পরীক্ষাটি ব্যর্থ হয়, তাহলে ডিবাগিং-এর সুবিধার জন্য আপনি একটি স্ট্যাক ট্রেস দেখতে পাবেন।)
- ব্রাউজারে, ফাংশনটি তৈরি করার সময় আগে সেভ করা URL-টিতে যান। যদি URL-টি সেভ করতে ভুলে যান, তবে ট্রিগার (TRIGGER) লিঙ্ক থেকে সেটি পেয়ে যাবেন।
- ঠিকঠাক ফলাফলটি ব্রাউজারেও দেখা যাবে।
৫. পরিষ্কার করুন
এই কোডল্যাবে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, এই ধাপগুলো অনুসরণ করুন।
ক্লাউড SQL ইনস্ট্যান্সটি মুছে ফেলুন
- গুগল ক্লাউড কনসোলে ক্লাউড এসকিউএল ইনস্ট্যান্সেস পৃষ্ঠায় যান।
- ইনস্ট্যান্সের বিস্তারিত পৃষ্ঠাটি খুলতে আপনার তৈরি করা ইনস্ট্যান্সটি নির্বাচন করুন।
- পৃষ্ঠার শীর্ষে থাকা আইকন বারে, ডিলিট-এ ক্লিক করুন।
- ইনস্ট্যান্স ডিলিট করার উইন্ডোতে, আপনার ইনস্ট্যান্সের নামটি টাইপ করুন, তারপর ইনস্ট্যান্সটি ডিলিট করতে ডিলিট বাটনে ক্লিক করুন। একটি ইনস্ট্যান্স ডিলিট করার পর প্রায় ৭ দিন পর্যন্ত আপনি সেই ইনস্ট্যান্সের নামটি পুনরায় ব্যবহার করতে পারবেন না।
ক্লাউড ফাংশনটি মুছে ফেলুন
- গুগল ক্লাউড কনসোলের ক্লাউড ফাংশন পৃষ্ঠায় যান।
- আপনার ফাংশনের জন্য ‘অ্যাকশনস’-এর নিচে থাকা তিনটি ডট সিলেক্ট করুন এবং ‘ডিলিট’ বেছে নিন।
- ডিলিট বোতামে ক্লিক করে মুছে ফেলা নিশ্চিত করুন।
৬. অভিনন্দন
অভিনন্দন, আপনি সফলভাবে একটি ক্লাউড ফাংশন তৈরি করেছেন যা ক্লাউড এসকিউএল (Cloud SQL)-এর সাথে কাজ করে।
নির্দিষ্টভাবে বলতে গেলে, আপনি একটি ক্লাউড ফাংশন তৈরি করেছেন যা একটি ক্লাউড SQL ডাটাবেস ইনস্ট্যান্সের সাথে সংযোগ স্থাপন করে এবং তাতে ডেটা লেখে।
৭. এরপর কী?
এই কোডল্যাবগুলো দেখে নিন...
- ক্লাউড এসকিউএল-এ সংযোগ: কম্পিউট ইঞ্জিন, প্রাইভেট আইপি এবং ক্লাউড এসকিউএল প্রক্সি
- ক্লাউড এসকিউএল ইনসাইটস-এর পরিচিতি