Cloud Functions ile Cloud SQL'e bağlanma

1. Giriş

Son güncelleme: 2021-05-11

Cloud SQL nedir?

Cloud SQL, Google Cloud Platform'da ilişkisel veritabanlarınızı kurmayı, yönetmeyi ve bunların bakımını yapmayı kolaylaştıran, tümüyle yönetilen bir veritabanı hizmetidir.

Cloud Functions nedir?

Cloud Functions, bir sunucu veya çalışma zamanı ortamını yönetme gereği duymadan Cloud etkinliklerine yanıt veren tek amaçlı bağımsız işlevler oluşturmak için geliştiriciler tarafından kullanılabilecek hafif bir bilgi işlem çözümüdür.

Ne oluşturacaksınız?

Bu codelab'de Python ile bir Cloud Functions işlevi yazacaksınız. İşlev:

  • Cloud SQL veritabanı örneğine bağlanır.
  • Veritabanındaki bir tabloya ekleme ifadesi gönderir.

Neler öğreneceksiniz?

  • Google Cloud Console'da Cloud Functions web kullanıcı arayüzüne erişme
  • Cloud Functions işlevi oluşturma
  • Cloud Functions işlevini test etme
  • Python kullanarak Cloud SQL veritabanı örneğine (MySQL veya PostgreSQL) bağlanma.
  • Python kullanarak Cloud SQL veritabanına yazma

2. Şartlar

  • Chrome veya Firefox gibi bir tarayıcı
  • Cloud SQL örneğinizi içeren bir Google Cloud Platform projesi.
  • Henüz bir örneğiniz yoksa MySQL veya PostgreSQL için hızlı başlangıç kılavuzundaki adımları uygulayabilirsiniz. Temizleme adımı hariç tüm adımları uygulayın.
  • Örneğinizde tablo içeren bir MySQL veya PostgreSQL veritabanı olmalıdır.
  • Örneğinizin bağlantı adı, veritabanı ve tablo adları, veritabanı kullanıcı adı ve kullanıcının şifresi.
  • Cloud SQL İstemcisi rolüne sahip bir hizmet hesabı.

3. Kodu hazırlama ve işlevi oluşturma

Kodu hazırlama

Cloud SQL veritabanına bağlanmak için Cloud Functions kodunu burada bulabilirsiniz. Değişken değerlerinden bazıları Cloud SQL veritabanınızın MySQL veya PostgreSQL olmasına ve kendi veritabanı bilgilerinize bağlıdır.

Cloud Console'daki Cloud Functions kullanıcı arayüzünde bir metin düzenleyici bulunur. Kodu orada kopyalayıp yapıştırabilir ve düzenleyebilir veya önce kodu yerel olarak düzenleyip ardından kullanıcı arayüzüne kopyalayıp yapıştırabilirsiniz.

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'

İşlevi oluşturma

  1. Tarayıcıda Google Cloud Platform Console kullanıcı arayüzüne gidin.
  2. Gezinme menüsünden Cloud Functions'ı seçin.
  3. Düğme çubuğunda İŞLEV OLUŞTUR'u tıklayın.
  4. Fonksiyon için bir ad girin.
  5. HTTP tetikleyicisini seçin. (Tetikleyici öğenin altında gösterilen URL'yi not edin. Bu biçimde olacaktır: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME)
  6. İşlevi herkese açık hale getirmek için Authentication (Kimlik Doğrulama) bölümünde Allow unauthenticated invocations'ı (Kimliği doğrulanmayan çağrılara izin ver) seçin.
  7. Runtime, Build and Connections Settings'i (Çalışma Zamanı, Derleme ve Bağlantı Ayarları) genişletin. Runtime service account (Çalışma zamanı hizmet hesabı) bölümünde, Cloud SQL İstemcisi rolüne sahip bir hizmet hesabı seçin.
  8. SONRAKİ düğmesini tıklayın.
  9. Çalışma zamanı seçeneği için Python 3.7'yi belirleyin.
  10. Kaynak kodu seçeneği için Satır içi düzenleyici'yi seçin.
  11. Kaynak kodu düzenleyici pencerelerinde hem requirements.txt hem de main.py için mevcut içeriği silin ve bunların yerine yukarıdaki kodun düzenlenmiş sürümlerini yapıştırın.
  12. Giriş noktası adı olarak insert girin.
  13. Deploy'u (Dağıt) tıklayın ve işlev oluşturulurken bekleyin. İşlev kullanıma hazır olduğunda döner simge dönmeyi durdurur ve sonraki sayfada yeşil bir onay işareti görünür.

4. İşlevi test etme

  1. Tarayıcıda Google Cloud Platform Console kullanıcı arayüzüne gidin.
  2. Gezinme menüsünden Cloud Functions'ı seçin.
  3. Daha önce oluşturduğunuz işlevin adını tıklayın.
  4. Sayfanın ortasındaki TESTING (Test) bağlantısını seçin.
  5. İŞLEVİ TEST ET'i seçin.
  6. Sonuç ok olarak görünmelidir. (Test başarısız olursa hata ayıklamaya yardımcı olacak bir yığın izi görürsünüz.)
  7. Tarayıcıda, işlevi oluştururken daha önce kaydettiğiniz URL'ye gidin. URL'yi kaydetmeyi unuttuysanız TRIGGER bağlantısından alabilirsiniz.
  8. Ok sonucu tarayıcıda da görünmelidir.

5. Temizleme

Bu codelab'de kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın.

Cloud SQL örneğini silme

  1. Google Cloud Console'da Cloud SQL Örnekleri sayfasına gidin.
  2. Oluşturduğunuz örneği seçerek Örnek ayrıntıları sayfasını açın.
  3. Sayfanın üst kısmındaki simge çubuğunda Sil'i tıklayın.
  4. Örneği sil penceresinde örneğinizin adını yazın, ardından örneği silmek için Sil'i tıklayın. Bir örnek silindikten sonra yaklaşık 7 gün boyunca örnek adını yeniden kullanamazsınız.

Cloud Functions işlevini silme

  1. Google Cloud Console'da Cloud Functions sayfasına gidin.
  2. İşleviniz için İşlemler'in altındaki üç noktayı seçin ve Sil'i tıklayın.
  3. SİL düğmesini tıklayarak silme işlemini onaylayın.

6. Tebrikler

Tebrikler, Cloud SQL ile çalışan bir Cloud Functions işlevini başarıyla oluşturdunuz.

Özellikle, bir Cloud SQL veritabanı örneğine bağlanıp bu örneğe yazan bir Cloud Function oluşturdunuz.

7. Sırada ne var?

Şu codelab'lere göz atın:

Daha fazla bilgi

Referans belgeler