Function Compute, olaya dayalı bir mimari kullanarak Tablestore'dan gelen artımlı verileri otomatik olarak işler; böylece gerçek zamanlı yanıtlar ve otomatik işleme mümkün olur.
Nasıl Çalışır
Function Compute, Tablestore'daki artımlı verileri otomatik olarak işlemek için bir Tablestore tetikleyicisi kullanır. Bir veri tablosunda değişiklik olduğunda Tablestore Stream, bu değişiklikleri gerçek zamanlı olarak yakalar. Tetikleyici akışı izler ve yeni verileri işlemek üzere bir işlevi otomatik olarak çağırır; bu sayede veri olaylarına anında ve otomatik yanıt verilmesini sağlar.
Bu olay güdümlü yaklaşım, yoklama (polling) ihtiyacını ortadan kaldırarak verilerin zamanında işlenmesini sağlar ve kaynak israfını önler. Geleneksel zamanlanmış görevlere veya manuel işlemlere kıyasla Function Compute, daha iyi gerçek zamanlı performans ve otomasyon sunar. Eşzamansız işleme ve esnek ölçeklendirme kullanarak sistem karmaşıklığını ve operasyonel yükü azaltır; bu da veri senkronizasyonu, olay bildirimleri ve artımlı veri arşivleme gibi veri değişikliklerine anında yanıt gerektiren kullanım durumları için idealdir.
Olay işlevlerine ek olarak Function Compute, Web işlevleri ve görev işlevleri gibi diğer türleri de destekler. Farklı işlev türleri farklı iş senaryolarına ve teknik mimarilere uygundur. Uygun türü seçmeye ilişkin ayrıntılı karşılaştırma ve rehberlik için bkz. İşlev seçimi .
Olay İşlevi Kullanarak Tablestore'a Erişme
Adım 1: Tablestore Stream'i Etkinleştirme
Function Compute (FC) içindeki bir Tablestore tetikleyicisi, artımlı verileri yakalamak için Tablestore Stream'e dayanır. Bu nedenle, öncelikle hedef veri tablosu için bu özelliği etkinleştirmeniz gerekir.
Tablestore tetikleyicileri aşağıdaki bölgelerde kullanılabilir: Çin (Pekin), Çin (Hangzhou), Çin (Şanghay), Çin (Shenzhen), Japonya (Tokyo), Singapur, Almanya (Frankfurt) ve Çin (Hong Kong).
Tablestore konsolu üzerinde oturum açın. Üst gezinme çubuğunda örneğinizin bulunduğu bölgeyi seçin ve ardından hedef örneğin takma adına tıklayın.
Instance Details sayfasında, Tables listesindeki hedef veri tablosunun adına tıklayın.
Tunnels sekmesine tıklayın ve ardından Stream Information öğesinin sağ tarafındaki Enable seçeneğine tıklayın.
-
Enable Stream iletişim kutusunda günlük sona erme süresini ayarlayın ve ardından Enable seçeneğine tıklayın.
Günlük sona erme süresi, en fazla 168 olacak şekilde saat cinsinden sıfır olmayan bir tamsayı olmalıdır. Bu ayar yapılandırıldıktan sonra değiştirilemez. Bu değeri dikkatle ayarlayın.
Adım 2: Olay İşlevi Oluşturma ve Yapılandırma
Bir Tablestore tetikleyicisi oluştururken yalnızca işlevle aynı bölgede bulunan Tablestore örneklerini ve veri tablolarını seçebilirsiniz.
Function Compute konsolu üzerinde oturum açın. Üst gezinme çubuğunda Tablestore örneğinizle aynı bölgeyi seçin.
Sol gezinme bölmesinde seçeneklerini belirleyin.
Create Function seçeneğine tıklayın, işlev türü olarak Event Function seçeneğini belirleyin ve ardından Create Event Function seçeneğine tıklayın.
-
İşlev parametrelerini aşağıda açıklandığı şekilde yapılandırın. Ayrıntılı talimatlar için bkz. Olay işlevi oluşturma.
Function Name: İşlev için benzersiz bir ad girin. Ad, aynı hesap ve bölge içinde benzersiz olmalı ve adlandırma kurallarına uymalıdır.
Runtime: Built-in Runtime seçeneğini belirlemeniz ve Python veya Java gibi aşina olduğunuz bir dil ve sürüm seçmeniz önerilir. Bu konuda örnek olarak Python 3.12 kullanılmıştır.
Code Upload Method: Kodunuzu yükleme yöntemini seçin. Bu konuda örnek olarak Upload ZIP kullanılmıştır. Örnek kod dosyasını indirip yükleyebilirsiniz: tablestore_trigger_example.zip.
Create seçeneğine tıklayın.
Adım 3: Olay İşlevini Test Etme ve Doğrulama
Tablestore tetikleyicisini yapılandırmadan önce, bir olayı simüle ederek işlevi test edin. Tablestore tetikleyicisi kodlama için Concise Binary Object Representation (CBOR) biçimini kullanır ancak hata ayıklama amacıyla olayları simüle etmek için JSON biçimini kullanabilirsiniz.
Function Details sayfasında, Test Function öğesinin yanındaki oku tıklayın ve Configure Test Parameters seçeneğini belirleyin.
-
Bir Event Name girin (örneğin,
test-event), aşağıdaki örnek olayı düzenleyiciye yapıştırın ve ardından OK seçeneğine tıklayın.{ "Version": "Sync-v1", "Records": [ { "Type": "PutRow", "Info": { "Timestamp": 1506416585740836 }, "PrimaryKey": [ { "ColumnName": "pk_0", "Value": 1506416585881590900 }, { "ColumnName": "pk_1", "Value": "2017-09-26 17:03:05.8815909 +0800 CST" }, { "ColumnName": "pk_2", "Value": 1506416585741000 } ], "Columns": [ { "Type": "Put", "ColumnName": "attr_0", "Value": "hello_table_store", "Timestamp": 1506416585741 }, { "Type": "Put", "ColumnName": "attr_1", "Value": 1506416585881590900, "Timestamp": 1506416585741 } ] } ] } -
Test Function seçeneğine tıklayın ve testin tamamlanmasını bekleyin. Başarılı bir çalıştırma
OKdöndürür. Çalıştırma günlüklerini Log Output sekmesinde görüntüleyebilirsiniz.2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Begin to handle event 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] -------------------------------------------------- 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Event Type: PutRow 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Timestamp: 1506416585740836 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Primary Keys: 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Name: pk_0, Value: 1506416585881590900 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Name: pk_1, Value: 2017-09-26 17:03:05.8815909 +0800 CST 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Name: pk_2, Value: 1506416585741000 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Attribute Columns: 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Type: Put, Name: attr_0, Value: hello_table_store, Timestamp: 1506416585741 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Type: Put, Name: attr_1, Value: 1506416585881590900, Timestamp: 1506416585741 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] --------------------------------------------------
Adım 4: Tetikleyiciyi Yapılandırma ve Doğrulama
İşlevi test edip doğruladıktan sonra, veri tablosu değiştiğinde işlevi otomatik olarak yürütmek için Tablestore tetikleyicisini yapılandırın. Ardından, bir veri işlemi gerçekleştirerek tetikleyiciyi doğrulayın.
Function Details sayfasında Triggers sekmesine tıklayın ve ardından Create Trigger seçeneğine tıklayın.
-
Tetikleyici parametrelerini aşağıdaki gibi yapılandırın.
Trigger Type: Tablestore seçeneğini belirleyin.
Name: Tetikleyici için özel bir ad girin (örneğin,
test_trigger).Instance: Hedef Tablestore örneğini seçin.
Table: Hedef veri tablosunu seçin.
OK seçeneğine tıklayın.
Örneğin, Tablestore konsolu kullanarak bir satır ekleyebilirsiniz.
-
Function Details sayfasında Logs sekmesine tıklayarak çağrı günlüklerini ve sonuçlarını görüntüleyin. Belirli bir isteğin ayrıntılı günlüklerini görüntülemek için Actions sütununda Request Logs seçeneğine tıklayın.
2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Begin to handle event 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] -------------------------------------------------- 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Event Type: PutRow 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Timestamp: 1763973009228992 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Primary Keys: 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Name: id, Value: 8 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Name: name, Value: test-name 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Attribute Columns: 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Type: Put, Name: age, Value: 18, Timestamp: 1763973009229 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] --------------------------------------------------
Sınırlamalar
Örneğin, A Tablosundaki bir güncelleme tarafından tetiklenen bir işlev daha sonra A Tablosunu güncellememelidir; çünkü bu sonsuz çağırmalara neden olur.
-
Bir işlev çalıştırması başarısız olursa Function Compute, Tablestore'daki akış verilerinin süresi dolana kadar işlevi yeniden dener.
Not-
İşlev çalıştırması sırasında bir özel durum şu durumlarda oluşabilir:
İşlev kodu bir özel durum oluşturur: İşlev örneği zaten başlatıldığı için çalıştırma süresi boyunca ücretlendirilirsiniz.
İşlev başlatılamaz: Yanlış bir başlatma komutu veya diğer sorunlar nedeniyle örnek başlatılamazsa ücretlendirilmezsiniz.
Bir tetikleyiciyi sildikten sonra çalışan işlev örnekleri hemen durmaz ve tamamlanana veya zaman aşımına uğrayana kadar çalışmaya devam eder.
Bir işlev çalıştırması başarısız olursa sonsuz yeniden denemeleri önlemek için veri tablosunun Tablestore Stream'ini devre dışı bırakabilirsiniz. Özelliği devre dışı bırakmadan önce, kesinti yaşamamak için başka hiçbir tetikleyicinin veri tablosunu kullanmadığından emin olun.
-
SSS
Bir Tablestore tetikleyicisi oluşturamıyorsanız seçilen bölgenin bu özelliği desteklediğini doğrulayın.
Bir Tablestore tetikleyicisi oluştururken mevcut bir veri tablosunu bulamıyorsanız veri tablosunun ve işlevin aynı bölgede olduğunu onaylayın.
Bir Tablestore tetikleyicisi kullanırken tekrar tekrar
Invocation canceled by clienthatası alıyorsanız bu genellikle istemci tarafındaki zaman aşımının işlevin yürütme süresinden daha kısa olduğu anlamına gelir. Bu sorunu çözmek için istemci tarafındaki zaman aşımı süresini artırın. Daha fazla bilgi için bkz. İstemci bağlantısı kesildiğinde ve 'Invocation canceled by client' hatası bildirildiğinde ne yapmalıyım?.-
Veri tablosuna yeni veri eklendiğinde bir Tablestore tetikleyicisi çalışmıyorsa aşağıdakileri kontrol edin:
Veri tablosu için Tablestore Stream'in etkinleştirildiğini onaylayın.
Tetikleyici için yapılandırılan rolün doğru olduğunu doğrulayın. Varsayılan tetikleyici rolü olan
AliyunTableStoreStreamNotificationRolerolünü kullanabilirsiniz.Çalıştırmanın başarısız olup olmadığını görmek için işlev günlüklerini kontrol edin. Bir işlev başarısız olursa Function Compute, Tablestore'daki akış verilerinin süresi dolana kadar işlevi yeniden dener.