Cloud Functions की मदद से Cloud SQL से कनेक्ट करना

1. परिचय

पिछले अपडेट की तारीख: 11-05-2021

Cloud SQL क्या है?

Cloud SQL, पूरी तरह से मैनेज की गई डेटाबेस सेवा है. इसकी मदद से, Google Cloud Platform पर अपने मिलते-जुलते डेटाबेस को आसानी से सेट अप किया जा सकता है. साथ ही, उसे बनाए रखने, मैनेज करने, और सही तरीके से चलाने में भी मदद मिलती है.

Cloud Functions क्या है?

Cloud Functions, डेवलपर के लिए एक आसान कंप्यूट सॉल्यूशन है. इसकी मदद से, एक ही मकसद के लिए स्टैंड-अलोन फ़ंक्शन बनाए जा सकते हैं. ये फ़ंक्शन, सर्वर या रनटाइम एनवायरमेंट को मैनेज किए बिना, क्लाउड इवेंट का जवाब देते हैं.

आपको क्या बनाने को मिलेगा

इस कोडलैब में, Python में Cloud Function लिखा जाएगा. यह फ़ंक्शन:

  • यह Cloud SQL डेटाबेस इंस्टेंस से कनेक्ट होता है.
  • यह फ़ंक्शन, डेटाबेस की टेबल में INSERT स्टेटमेंट भेजता है.

आपको क्या सीखने को मिलेगा

  • Google Cloud Console में Cloud Functions के वेब यूज़र इंटरफ़ेस (यूआई) को ऐक्सेस करने का तरीका.
  • क्लाउड फ़ंक्शन बनाने का तरीका.
  • Cloud Functions की जांच कैसे करें.
  • Python का इस्तेमाल करके, Cloud SQL डेटाबेस इंस्टेंस (MySQL या PostgreSQL) से कनेक्ट करने का तरीका.
  • Python का इस्तेमाल करके, Cloud SQL डेटाबेस में डेटा लिखने का तरीका.

2. ज़रूरी शर्तें

  • कोई ब्राउज़र, जैसे कि Chrome या Firefox.
  • Google Cloud Platform प्रोजेक्ट, जिसमें आपका Cloud SQL इंस्टेंस मौजूद हो.
  • अगर आपके पास पहले से कोई खाता नहीं है, तो MySQL या PostgreSQL के लिए क्विकस्टार्ट में दिया गया तरीका अपनाएं. डेटा को साफ़ करने के चरण को छोड़कर, बाकी सभी चरण पूरे करें.
  • आपके इंस्टेंस में, टेबल के साथ MySQL या PostgreSQL डेटाबेस मौजूद हो.
  • आपके इंस्टेंस का कनेक्शन नाम, डेटाबेस और टेबल के नाम, डेटाबेस का उपयोगकर्ता नाम, और उपयोगकर्ता का पासवर्ड.
  • Cloud SQL क्लाइंट की भूमिका वाला सेवा खाता.

3. कोड तैयार करना और फ़ंक्शन बनाना

कोड तैयार करना

Cloud SQL डेटाबेस से कनेक्ट करने के लिए, Cloud फ़ंक्शन का कोड यहां दिया गया है. कुछ वैरिएबल की वैल्यू इस बात पर निर्भर करती हैं कि आपका Cloud SQL डेटाबेस MySQL है या PostgreSQL. साथ ही, ये आपकी डेटाबेस की जानकारी पर भी निर्भर करती हैं.

Cloud Console में Cloud Functions के यूज़र इंटरफ़ेस (यूआई) में, टेक्स्ट एडिटर शामिल होता है. वहां कोड को कॉपी/चिपकाया जा सकता है और उसमें बदलाव किया जा सकता है. इसके अलावा, पहले कोड में स्थानीय तौर पर बदलाव किया जा सकता है. इसके बाद, उसे यूज़र इंटरफ़ेस (यूआई) में कॉपी/चिपकाया जा सकता है.

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'

फ़ंक्शन बनाना

  1. किसी ब्राउज़र में, Google Cloud Platform Console के यूज़र इंटरफ़ेस (यूआई) पर जाएं.
  2. नेविगेशन मेन्यू में जाकर, Cloud Functions चुनें.
  3. बटन बार पर मौजूद, CREATE FUNCTION पर क्लिक करें.
  4. फ़ंक्शन के लिए कोई नाम डालें.
  5. HTTP ट्रिगर चुनें. (ट्रिगर करने वाले आइटम के नीचे दिए गए यूआरएल को नोट करें. यह इस फ़ॉर्मैट में होगा: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME)
  6. फ़ंक्शन को सार्वजनिक करने के लिए, पुष्टि में जाकर, बिना पुष्टि किए गए इनवोकेशन की अनुमति दें को चुनें.
  7. रनटाइम, बिल्ड, और कनेक्शन सेटिंग को बड़ा करें. रनटाइम सेवा खाता में जाकर, वह सेवा खाता चुनें जिसके पास Cloud SQL क्लाइंट की भूमिका हो.
  8. आगे बढ़ें बटन पर क्लिक करें.
  9. रनटाइम विकल्प के लिए, Python 3.7 चुनें.
  10. सोर्स कोड विकल्प के लिए, इनलाइन एडिटर को चुनें.
  11. Selसोर्स कोड एडिटर विंडो में, requirements.txt और main.py, दोनों के लिए मौजूदा कॉन्टेंट मिटाएं. इसके बाद, ऊपर दिए गए कोड के बदले गए वर्शन को उनकी जगह पर चिपकाएं.
  12. एंट्री पॉइंट के नाम के तौर पर insert डालें.
  13. डिप्लॉय करें पर क्लिक करें और फ़ंक्शन के बनने का इंतज़ार करें. फ़ंक्शन इस्तेमाल के लिए तैयार होने पर, स्पिनर घूमना बंद हो जाता है और अगले पेज पर हरे रंग का सही का निशान दिखता है.

4. फ़ंक्शन की जांच करना

  1. किसी ब्राउज़र में, Google Cloud Platform Console के यूज़र इंटरफ़ेस (यूआई) पर जाएं.
  2. नेविगेशन मेन्यू में जाकर, Cloud Functions चुनें.
  3. पहले बनाए गए फ़ंक्शन के नाम पर क्लिक करें.
  4. पेज के बीच में मौजूद, TESTING लिंक को चुनें.
  5. फ़ंक्शन की जांच करें को चुनें.
  6. नतीजा इस तरह दिखना चाहिए: ok (अगर जांच पूरी नहीं होती है, तो आपको स्टैक ट्रेस दिखेगा. इससे डीबग करने में मदद मिलेगी.)
  7. ब्राउज़र में, उस यूआरएल पर जाएं जिसे आपने फ़ंक्शन बनाते समय सेव किया था. अगर आपने यूआरएल सेव नहीं किया है, तो इसे ट्रिगर लिंक से पाया जा सकता है.
  8. ok नतीजा, ब्राउज़र में भी दिखना चाहिए.

5. व्यवस्थित करें

इस कोडलैब में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, यह तरीका अपनाएं.

Cloud SQL इंस्टेंस मिटाना

  1. Google Cloud Console में Cloud SQL इंस्टेंस पेज पर जाएं.
  2. आपने जो इंस्टेंस बनाया है उसे चुनें. इससे इंस्टेंस की जानकारी वाला पेज खुलेगा.
  3. पेज पर सबसे ऊपर मौजूद आइकॉन बार में, मिटाएं पर क्लिक करें.
  4. 'उदाहरण मिटाएं' विंडो में, अपने उदाहरण का नाम टाइप करें. इसके बाद, उदाहरण मिटाने के लिए मिटाएं पर क्लिक करें. किसी इंस्टेंस को मिटाने के बाद, करीब सात दिनों तक उसके नाम का दोबारा इस्तेमाल नहीं किया जा सकता.

Cloud Functions को मिटाना

  1. Google Cloud Console में, Cloud Functions पेज पर जाएं.
  2. अपने फ़ंक्शन के लिए, कार्रवाइयां में जाकर तीन बिंदुओं को चुनें. इसके बाद, मिटाएं को चुनें.
  3. मिटाएं बटन पर क्लिक करके, मिटाने की पुष्टि करें.

6. बधाई हो

बधाई हो, आपने Cloud SQL के साथ काम करने वाली Cloud फ़ंक्शन को बना लिया है.

खास तौर पर, आपने एक Cloud फ़ंक्शन बनाया है, जो Cloud SQL डेटाबेस इंस्टेंस से कनेक्ट होता है और उसमें डेटा लिखता है.

7. आगे क्या करना है?

इन कोडलैब को आज़माएं...

इस बारे में और पढ़ें

रेफ़रंस दस्तावेज़