اتصال به Cloud SQL با توابع Cloud

1. مقدمه

آخرین به روز رسانی: 2021-05-11

Cloud SQL چیست؟

Cloud SQL یک سرویس پایگاه داده کاملاً مدیریت شده است که راه‌اندازی، نگهداری، مدیریت و مدیریت پایگاه‌های داده رابطه‌ای خود را در Google Cloud Platform آسان می‌کند.

Cloud Functions چیست؟

Cloud Functions یک راه حل محاسباتی سبک برای توسعه دهندگان است تا عملکردهای تک منظوره و مستقلی ایجاد کنند که بدون نیاز به مدیریت سرور یا محیط زمان اجرا به رویدادهای Cloud پاسخ می دهد.

چیزی که خواهی ساخت

در این لبه کد، یک تابع ابری در پایتون می نویسید. تابع:

  • به یک نمونه پایگاه داده Cloud SQL متصل می شود.
  • یک عبارت insert را به جدولی در پایگاه داده ارسال می کند.

چیزی که یاد خواهید گرفت

  • نحوه دسترسی به رابط کاربری وب توابع ابری در Google Cloud Console.
  • نحوه ایجاد یک تابع ابری
  • چگونه یک تابع ابری را آزمایش کنیم.
  • نحوه اتصال به یک نمونه پایگاه داده Cloud SQL (یا MySQL یا PostgreSQL) با استفاده از پایتون.
  • نحوه نوشتن در پایگاه داده Cloud SQL با استفاده از پایتون

2. الزامات

  • یک مرورگر، مانند کروم یا فایرفاکس .
  • یک پروژه Google Cloud Platform که شامل نمونه Cloud SQL شما است.
  • اگر قبلاً یکی ندارید، می‌توانید مراحل را در Quickstart برای MySQL یا PostgreSQL دنبال کنید. تمام مراحل را به جز پاکسازی انجام دهید.
  • نمونه شما حاوی یک پایگاه داده MySQL یا PostgreSQL با یک جدول است.
  • نام اتصال نمونه شما، نام پایگاه داده و جدول، نام کاربری پایگاه داده و رمز عبور کاربر.
  • یک حساب سرویس با نقش Cloud SQL Client .

3. کد را آماده کرده و تابع را ایجاد کنید

کد را آماده کنید

کد عملکرد Cloud برای اتصال به پایگاه داده Cloud SQL درست در اینجا آمده است. برخی از مقادیر متغیر بستگی به این دارد که پایگاه داده Cloud SQL شما MySQL یا PostgreSQL باشد و به اطلاعات پایگاه داده خودتان بستگی دارد.

رابط کاربری Cloud Functions در Cloud Console شامل یک ویرایشگر متن است. می توانید کد را در آنجا کپی/پیست و ویرایش کنید یا ابتدا کد را به صورت محلی ویرایش کنید و سپس آن را در رابط کاربری کپی/پیست کنید.

الزامات. 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 بروید.
  2. Cloud Functions را از منوی Navigation انتخاب کنید.
  3. روی CREATE FUNCTION در نوار دکمه کلیک کنید.
  4. یک نام برای تابع وارد کنید.
  5. تریگر HTTP را انتخاب کنید. (نشانی اینترنتی نمایش داده شده در زیر آیتم ماشه را یادداشت کنید. در این قالب خواهد بود: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME )
  6. در زیر احراز هویت ، اجازه دادن به فراخوان‌های احراز هویت نشده برای عمومی کردن عملکرد را انتخاب کنید.
  7. تنظیمات زمان اجرا، ساخت و اتصالات را گسترش دهید در حساب سرویس Runtime ، یک حساب سرویس که نقش سرویس گیرنده Cloud SQL را دارد انتخاب کنید.
  8. روی دکمه NEXT کلیک کنید.
  9. Python 3.7 را برای گزینه runtime انتخاب کنید.
  10. ویرایشگر درون خطی را برای گزینه کد منبع انتخاب کنید.
  11. در پنجره ویرایشگر کد منبع، محتوای موجود را هم برای requirement.txt و هم main.py حذف کنید و نسخه های ویرایش شده کد بالا را جایگزین آنها کنید.
  12. درج را به عنوان نام نقطه ورود وارد کنید.
  13. روی Deploy کلیک کنید و منتظر بمانید تا عملکرد ایجاد شود. چرخش چرخان متوقف می شود و هنگامی که عملکرد آماده استفاده است، یک علامت سبز رنگ در صفحه بعدی ظاهر می شود.

4. تابع را تست کنید

  1. در یک مرورگر، به رابط کاربری کنسول Google Cloud Platform بروید.
  2. Cloud Functions را از منوی Navigation انتخاب کنید.
  3. روی نام تابعی که قبلا ایجاد کردید کلیک کنید.
  4. پیوند TESTING را در وسط صفحه انتخاب کنید.
  5. TEST THE FUNCTION را انتخاب کنید.
  6. نتیجه باید ظاهر شود: ok (اگر آزمایش ناموفق باشد، یک stack trace برای کمک به اشکال زدایی خواهید دید.)
  7. در مرورگر، هنگام ایجاد تابع، به آدرس اینترنتی که قبلاً ذخیره کرده اید بروید. اگر فراموش کردید URL را ذخیره کنید، می توانید آن را از پیوند TRIGGER دریافت کنید.
  8. نتیجه ok باید در مرورگر نیز ظاهر شود.

5. پاکسازی کنید

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این کد لبه، این مراحل را دنبال کنید.

نمونه Cloud SQL را حذف کنید

  1. به صفحه Cloud SQL Instances در Google Cloud Console بروید.
  2. نمونه ای را که ایجاد کرده اید انتخاب کنید تا صفحه جزئیات نمونه باز شود.
  3. در نوار نماد در بالای صفحه، روی حذف کلیک کنید.
  4. در پنجره Delete instance، نام نمونه خود را تایپ کنید، سپس روی Delete کلیک کنید تا نمونه حذف شود. پس از حذف یک نمونه، نمی‌توانید برای حدود 7 روز از نام نمونه استفاده مجدد کنید.

تابع Cloud را حذف کنید

  1. به صفحه Cloud Functions در Google Cloud Console بروید.
  2. سه نقطه زیر Actions را برای عملکرد خود انتخاب کرده و Delete را انتخاب کنید.
  3. با کلیک بر روی دکمه DELETE حذف را تایید کنید.

6. تبریک می گویم

تبریک می گوییم، شما با موفقیت یک Cloud Function ساخته اید که با Cloud SQL کار می کند.

به طور خاص، شما یک Cloud Function ایجاد کرده اید که به یک نمونه پایگاه داده Cloud SQL متصل می شود و می نویسد.

7. بعد چی؟

برخی از این کدها را بررسی کنید...

در ادامه مطلب

اسناد مرجع