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

۱. مقدمه

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

کلود اس کیو ال چیست؟

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

توابع ابری چیست؟

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

آنچه خواهید ساخت

در این آزمایشگاه کد، شما یک تابع ابری (Cloud Function) در پایتون خواهید نوشت. این تابع:

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

آنچه یاد خواهید گرفت

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

۲. الزامات

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

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

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

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

رابط کاربری توابع ابری در کنسول ابری شامل یک ویرایشگر متن است. می‌توانید کد را کپی/پیست کرده و در آنجا ویرایش کنید، یا ابتدا کد را به صورت محلی ویرایش کنید و سپس آن را در رابط کاربری کپی/پیست کنید.

الزامات.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

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

۴. تابع را آزمایش کنید

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

۵. تمیز کردن

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

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

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

حذف عملکرد ابری

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

۶. تبریک

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

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

۷. قدم بعدی چیست؟

به برخی از این آزمایشگاه‌های کد نگاهی بیندازید...

مطالعه بیشتر

اسناد مرجع