الاتصال بخدمة Cloud SQL باستخدام دوال Cloud

1. مقدمة

تاريخ آخر تعديل: 2021-05-11

ما هي خدمة Cloud SQL؟

Cloud SQL هي خدمة قواعد بيانات مُدارة بالكامل تسهّل إعداد قواعد البيانات الارتباطية وصيانتها وإدارتها على Google Cloud Platform.

ما هي Cloud Functions؟

Cloud Functions هو حلّ حوسبة خفيف الوزن يتيح للمطوّرين إنشاء وظائف مستقلة ذات غرض واحد تستجيب لأحداث Cloud بدون الحاجة إلى إدارة خادم أو بيئة وقت تشغيل.

ما ستنشئه

في هذا الدرس التطبيقي حول الترميز، ستكتب دالة Cloud Function بلغة Python. الدالة:

  • تتصل هذه السمة بمثيل قاعدة بيانات Cloud SQL.
  • يرسل عبارة إدراج إلى جدول في قاعدة البيانات.

ما ستتعلمه

  • كيفية الوصول إلى واجهة مستخدم الويب في Cloud Functions من خلال Google Cloud Console
  • كيفية إنشاء Cloud Function
  • كيفية اختبار إحدى دوال Cloud
  • كيفية الاتصال بمثيل قاعدة بيانات Cloud SQL (إما MySQL أو PostgreSQL) باستخدام Python
  • كيفية الكتابة إلى قاعدة بيانات Cloud SQL باستخدام Python

2. المتطلبات

  • متصفّح، مثل Chrome أو Firefox
  • مشروع Google Cloud Platform الذي يحتوي على مثيل Cloud SQL
  • إذا لم يكن لديك حساب، يمكنك اتّباع الخطوات الواردة في دليل التشغيل السريع الخاص بـ MySQL أو PostgreSQL. اتّبِع جميع الخطوات باستثناء خطوة التنظيف.
  • تحتوي الآلة الافتراضية على قاعدة بيانات MySQL أو PostgreSQL مع جدول.
  • اسم اتصال المثيل واسمَي قاعدة البيانات والجدول واسم مستخدم قاعدة البيانات وكلمة مرور المستخدم
  • حساب خدمة لديه دور عميل Cloud SQL

3- إعداد الرمز البرمجي وإنشاء الدالة

إعداد الرمز

يمكنك العثور هنا على رمز Cloud Function للاتصال بقاعدة بيانات Cloud SQL. تعتمد بعض قيم المتغيرات على ما إذا كانت قاعدة بيانات Cloud SQL هي MySQL أو PostgreSQL، كما تعتمد على معلومات قاعدة البيانات الخاصة بك.

تتضمّن واجهة مستخدم Cloud Functions في Cloud Console محرّر نصوص. يمكنك نسخ الرمز ولصقه وتعديله هناك، أو تعديل الرمز محليًا أولاً، ثم نسخه ولصقه في واجهة المستخدم.

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. (دوِّن عنوان URL المعروض أسفل العنصر المشغِّل. سيكون بالتنسيق التالي: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME)
  6. ضمن المصادقة، اختَر السماح بعمليات الاستدعاء غير المصادَق عليها لجعل الدالة متاحة للجميع.
  7. وسِّع إعدادات وقت التشغيل والإنشاء والاتصالات. في حساب خدمة وقت التشغيل، اختَر حساب خدمة لديه دور عميل Cloud SQL.
  8. انقر على الزر التالي.
  9. اختَر Python 3.7 لخيار وقت التشغيل.
  10. اختَر المحرّر المضمّن لخيار الرمز المصدر.
  11. SelIn the source code editor windows, delete the existing content for both requirements.txt and main.py, and replace them with your edited versions of the code above.
  12. أدخِل insert كاسم نقطة الإدخال.
  13. انقر على نشر وانتظِر إلى أن يتم إنشاء الدالة. يتوقّف مؤشر التحميل عن الدوران وتظهر علامة اختيار خضراء في الصفحة التالية عندما تكون الدالة جاهزة للاستخدام.

4. اختبار الدالة

  1. في المتصفّح، انتقِل إلى واجهة مستخدم Google Cloud Platform Console.
  2. اختَر Cloud Functions من قائمة التنقّل.
  3. انقر على اسم الدالة التي أنشأتها سابقًا.
  4. انقر على الرابط اختبار في منتصف الصفحة.
  5. انقر على اختبار الدالة.
  6. من المفترض أن تظهر النتيجة: ok (في حال تعذّر إجراء الاختبار، سيظهر لك تتبُّع تسلسل استدعاء الدوال البرمجية للمساعدة في تصحيح الأخطاء).
  7. في المتصفّح، انتقِل إلى عنوان URL الذي حفظته سابقًا عند إنشاء الدالة. إذا نسيت حفظ عنوان URL، يمكنك الحصول عليه من رابط المشغّل.
  8. من المفترض أن تظهر النتيجة ok في المتصفّح أيضًا.

5- تَنظيم

لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا الدرس التطبيقي حول الترميز، اتّبِع الخطوات التالية.

حذف مثيل Cloud SQL

  1. انتقِل إلى صفحة "مثيلات Cloud SQL" في Google Cloud Console.
  2. اختَر المثيل الذي أنشأته لفتح صفحة "تفاصيل المثيل".
  3. في شريط الرموز في أعلى الصفحة، انقر على حذف.
  4. في نافذة "حذف المثيل"، اكتب اسم المثيل، ثم انقر على حذف لحذف المثيل. لا يمكنك إعادة استخدام اسم مثيل لمدة 7 أيام تقريبًا بعد حذف المثيل.

حذف Cloud Function

  1. انتقِل إلى صفحة Cloud Functions في Google Cloud Console.
  2. انقر على النقاط الثلاث تحت الإجراءات للدالة واختَر حذف.
  3. أكِّد الحذف من خلال النقر على زر حذف.

6. تهانينا

تهانينا، لقد أنشأت بنجاح إحدى "وظائف السحابة" التي تعمل مع Cloud SQL.

على وجه التحديد، أنشأتَ Cloud Function تربط مثيل قاعدة بيانات Cloud SQL وتكتب فيه.

7. ما هي الخطوات التالية؟

إليك بعض دروس الترميز التطبيقية...

Further reading

المستندات المرجعية