Cloud Functions ile Cloud SQL'e bağlanma

1. Giriş

Son Güncelleme Tarihi: 11.05.2021

Cloud SQL nedir?

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

Cloud Functions nedir?

Cloud Functions, geliştiricilerin bir sunucuyu veya çalışma zamanı ortamını yönetmeye gerek kalmadan Bulut etkinliklerine yanıt veren tek amaçlı bağımsız işlevler oluşturmasına olanak tanıyan hafif bir bilgi işlem çözümüdür.

Oluşturacaklarınız

Bu codelab'de, Python'da 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 yoksa MySQL veya PostgreSQL hızlı başlangıç kılavuzundaki adımları uygulayabilirsiniz. Temizlik dışındaki tüm adımları uygulayın.
  • Örneğiniz, tablolu MySQL veya PostgreSQL veritabanı içeriyor.
  • Ö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ğlanmayla ilgili Cloud Functions işlevi 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 göre değişir.

Cloud Console'daki Cloud Functions kullanıcı arayüzünde bir metin düzenleyici bulunur. Kodu kopyalayıp yapıştırarak düzenleyebilir veya önce yerel olarak düzenleyip kodu kopyalayıp kullanıcı arayüzüne 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. İşlev için bir ad girin.
  5. HTTP tetikleyicisini seçin. (Tetikleyici öğesinin altında gösterilen URL'yi not edin. Şu biçimde olacaktır: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME)
  6. İşlevi herkese açık hale getirmek için Kimlik Doğrulama bölümünde Kimliği doğrulanmayan çağrılara izin ver'i seçin.
  7. Çalışma Zamanı, Derleme ve Bağlantı Ayarları'nı genişletin. Çalışma zamanı hizmet hesabı bölümünde Cloud SQL İstemcisi rolüne sahip bir hizmet hesabı seçin.
  8. İLERİ düğmesini tıklayın.
  9. Çalışma zamanı seçeneği olarak Python 3.7'yi seçin.
  10. Kaynak kod seçeneği için Satır içi düzenleyici'yi seçin.
  11. Kaynak kodu düzenleyici penceresinde, hem requirements.txt hem de main.py için mevcut içeriği silin ve yukarıdaki kodun düzenlenmiş sürümleriyle değiştirin.
  12. Giriş noktası olarak insert'i girin.
  13. Dağıt'ı tıklayın ve işlev oluşturulurken bekleyin. İşlev kullanıma hazır olduğunda döner simge dönmeyi bırakır 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 TEST bağlantısını seçin.
  5. İŞLEVİ TEST ET'i seçin.
  6. Sonuç şu şekilde görünmelidir: ok (Test başarısız olursa hata ayıklamaya yardımcı olacak bir yığın izleme görürsünüz.)
  7. Tarayıcıda, daha önce işlevi oluştururken 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 aşağıdaki adımları uygulayın.

Cloud SQL örneğini silme

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

Cloud Functions işlevini silme

  1. Google Cloud Console'daki Cloud Functions sayfasına gidin.
  2. İşlevinizin İşlemler altında üç noktayı ve ardından Sil'i seçin.
  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 derlediniz.

Özellikle, Cloud SQL veritabanı örneğine bağlanıp yazan bir Cloud Functions işlevi oluşturdunuz.

7. Sırada ne var?

Bu codelab'lerden bazılarına göz atın...

Daha fazla bilgi

Referans belgeler