All Products
Search
Document Center

Function Compute:Pemicu Simple Log Service

Last Updated:Aug 25, 2026

Pemicu Simple Log Service (SLS) mengintegrasikan SLS dengan Function Compute dengan memanggil fungsi secara otomatis ketika log baru dihasilkan. Gunakan pemicu SLS untuk mengonsumsi data dalam Logstore SLS secara inkremental dan menjalankan tugas pemrosesan kustom.

Kasus penggunaan

  • Pembersihan dan pemrosesan data

    Gunakan SLS untuk mengumpulkan, memproses, mengkueri, dan menganalisis log secara cepat.

    image

  • Pengiriman data

    Kirimkan data log ke destinasi seperti produk data besar di cloud atau layanan pihak ketiga, serta bangun pipa data di antara mereka.

    image

Cara kerja

Pemicu SLS berkorespondensi dengan satu pekerjaan ETL SLS di Function Compute. Setelah Anda membuat pekerjaan ETL SLS, SLS memulai pengatur waktu berdasarkan konfigurasi pekerjaan tersebut. Pengatur waktu melakukan polling informasi shard di Logstore. Ketika data baru ditulis, SLS menghasilkan triplet <shard_id, begin_cursor, end_cursor> sebagai event fungsi dan memanggil fungsi tersebut.

Saat sistem penyimpanan ditingkatkan, perubahan cursor dapat terjadi meskipun tidak ada data baru yang ditulis. Dalam kasus ini, setiap shard dipicu satu kali tambahan tanpa data. Anda dapat menggunakan cursor dalam fungsi untuk mencoba mendapatkan data shard tersebut. Jika tidak ada data yang dikembalikan, pemanggilan tersebut merupakan pemicu kosong dan dapat diabaikan dalam fungsi. Untuk informasi lebih lanjut, lihat Panduan pengembangan fungsi kustom.

Mekanisme pemicu berbasis waktu. Misalnya, jika Anda mengatur interval pemicu pekerjaan ETL menjadi 60 detik dan data terus-menerus ditulis ke Shard0 Logstore, shard tersebut memicu pemanggilan fungsi setiap 60 detik. Jika tidak ada data baru yang ditulis ke shard tersebut, tidak ada pemanggilan yang dipicu. Input setiap pemanggilan adalah rentang cursor dari 60 detik terakhir. Di dalam fungsi, Anda dapat membaca data Shard0 berdasarkan cursor tersebut untuk pemrosesan lebih lanjut.

Frekuensi pemicu memiliki karakteristik berikut:

  • Setiap shard dipicu secara terpisah. Jumlah total pemanggilan yang Anda lihat untuk sebuah Logstore mungkin tinggi, tetapi waktu pemicu aktual setiap shard tetap sesuai dengan interval yang dikonfigurasi. Misalnya, jika sebuah Logstore memiliki 10 shard, pemrosesan data real-time tanpa penundaan pemicu menghasilkan 10 pemanggilan fungsi setiap 60 detik.

  • Interval pemicu satu shard sama dengan rentang waktu data yang diproses setiap kali. Asumsikan interval pemicu adalah 60 detik. Saat fungsi berjalan, interval pemicu masuk ke dua kasus berikut:

    • Tanpa penundaan pemicu: fungsi dipicu setiap 60 detik sesuai jadwal, dan rentang data yang diproses adalah [now -60s, now).

    • Penundaan pemicu, yang terjadi ketika posisi pemrosesan saat ini pada shard SLS tertinggal lebih dari 10 detik dari data terbaru yang ditulis: pemicu mengejar ketinggalan dan mungkin aktif sekali setiap 2 detik. Setiap pemanggilan tetap memproses jendela 60 detik.

    image

Fungsi pemrosesan data

Fungsi yang dipanggil oleh pemicu SLS dapat berupa salah satu jenis berikut:

Prasyarat

  • Function Compute

  • Simple Log Service (SLS)

    • Buat Project dan Logstore

    • Buat satu Project dan dua Logstore. Satu Logstore menyimpan log yang dikumpulkan. Function Compute dipicu oleh log inkremental, jadi pastikan log dapat terus-menerus dikumpulkan ke Logstore ini. Logstore lainnya menyimpan log yang dihasilkan oleh pemicu SLS.

    Project harus berada di wilayah yang sama dengan layanan Function Compute.

Langkah 1: Buat pemicu SLS

Anda dapat mengonfigurasi pemicu SLS yang secara berkala memperoleh data terbaru dan memanggil fungsi untuk mengonsumsi data dalam Logstore SLS secara inkremental. Di dalam fungsi, Anda menjalankan tugas pemrosesan kustom, seperti pembersihan dan pemrosesan data, serta mengirimkan data ke layanan pihak ketiga. Contoh ini hanya menunjukkan cara memperoleh data log dan mencetaknya. Fungsi yang digunakan untuk pemrosesan data dapat berupa templat yang disediakan oleh SLS atau fungsi kustom. Langkah-langkah berikut menggunakan fungsi kustom.

  1. Login ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih Functions > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang ingin Anda kelola.

  3. Di halaman Function Details, klik tab Trigger lalu klik Create Trigger. Di panel Create Trigger, atur Trigger Type menjadi Log Service, konfigurasi parameter lainnya, lalu klik OK.

ParameterDeskripsiContoh
NameNama kustom untuk pemicu. Jika Anda membiarkan parameter ini kosong, Function Compute akan menghasilkan nama pemicu secara otomatis.log_trigger
Version or AliasNilai default: LATEST. Untuk membuat pemicu untuk versi atau alias lain, alihkan terlebih dahulu ke versi atau alias tersebut di pojok kanan atas halaman Function Details. Untuk pengenalan versi dan alias, lihat Kelola versi dan Kelola alias.LATEST
Log Service ProjectProject SLS yang akan dikonsumsi.aliyun-fc-cn-hangzhou-2238f0df-a742-524f-9f90-976ba457****
LogstoreLogstore yang akan dikonsumsi. Pemicu secara berkala berlangganan data di Logstore ini dan mengirimkan data tersebut ke fungsi untuk pemrosesan kustom.function-log
Trigger IntervalInterval pemanggilan fungsi oleh SLS. Nilai valid: [3,600]. Satuan: detik. Nilai default: 60.60
Retries

Jumlah maksimum percobaan ulang yang diizinkan untuk satu pemicu. Nilai valid: [0,100]. Nilai default: 3.

Catatan

Pemanggilan dianggap berhasil ketika status=200 dan header X-Fc-Error-Type bukan UnhandledInvocationError maupun HandledInvocationError. Semua kasus lain menunjukkan pemanggilan gagal dan memicu percobaan ulang. Untuk informasi lebih lanjut tentang parameter X-Fc-Error-Type, lihat Parameter respons. Jika fungsi gagal, permintaan saat ini akan dicoba ulang hingga fungsi berhasil. Percobaan ulang pertama kali mengikuti jumlah percobaan ulang yang dikonfigurasi. Jika pemanggilan masih gagal setelah jumlah maksimum percobaan ulang tercapai, interval diperbesar dan sistem memasuki mode backoff retry.

3
Trigger LogPilih Logstore yang sudah ada. Log yang dihasilkan saat SLS memanggil fungsi dicatat di Logstore ini.function-log2
Invocation ParametersUntuk meneruskan parameter kustom, konfigurasikan di sini. Nilainya diteruskan ke fungsi sebagai bidang parameter dari event. Nilainya harus berupa string berformat JSON. Nilai default: kosong.None
Role Name

Pilih AliyunLogETLRole.

Catatan

Jika ini pertama kalinya Anda membuat pemicu jenis ini, klik OK lalu pilih Authorize Now di kotak dialog yang muncul.

AliyunLogETLRole

Setelah pemicu dibuat, pemicu tersebut muncul di tab Triggers. Untuk memodifikasi atau menghapus pemicu, lihat "Manage Triggers" di Panduan Pengguna Function Compute.

Langkah 2: Konfigurasi izin

Peran fungsi menyediakan izin SLS yang dibutuhkan fungsi Anda saat dipanggil.

  1. Di halaman Function Details, klik tab Configuration. Di bagian Advanced Settings, klik Modify. Di panel Advanced Settings, pilih Function Role.

    • Jika fungsi Anda hanya membaca data log, Anda dapat menggunakan peran default AliyunFCServerlessDevsRole, yang secara default memiliki izin read-only pada SLS.

    • Jika fungsi Anda memerlukan izin di luar akses read-only ke SLS, buat peran RAM kustom yang memenuhi dua persyaratan berikut:

      a. Saat membuat peran RAM, atur Trusted entity menjadi Cloud Service dan atur Trusted service menjadi Function Compute. Untuk informasi lebih lanjut, lihat Buat peran RAM untuk layanan Alibaba Cloud tepercaya.

      b. Berikan peran RAM tersebut izin SLS yang dibutuhkan fungsi Anda. Untuk informasi lebih lanjut, lihat Contoh kebijakan RAM kustom.

  2. Klik Deploy.

Langkah 3: Deploy fungsi dan lihat log yang dicetak

  1. Di tab Code halaman Function Details, tulis kode Anda di editor kode lalu klik Deploy.

    Contoh ini mendeploy fungsi Python yang melakukan hal-hal berikut:

    • Memperoleh informasi event SLS, seperti endpoint, projectName, logstoreName, dan beginCursor, dari event.

    • Memperoleh informasi kredensial accessKeyId, accessKeySecret, dan securityToken dari context.

    • Menginisialisasi klien SLS berdasarkan informasi yang diperoleh.

    • Memperoleh data log pada posisi cursor yang ditentukan dari Logstore sumber.

      Anda dapat menggunakan kode contoh berikut sebagai templat awal untuk sebagian besar skenario pemrosesan log.
    """
    Kode contoh ini terutama melakukan hal-hal berikut:
    * Mendapatkan informasi terkait pemrosesan SLS dari event
    * Menginisialisasi klien SLS
    * Menarik log dari log store sumber
    """
    import logging
    import json
    from aliyun.log import LogClient
    
    logger = logging.getLogger()
    
    
    def handler(event, context):
        # Kunci akses dapat diambil melalui context.credentials
        print("Isi dalam entitas context adalah: ", context)
        creds = context.credentials
        access_key_id = creds.access_key_id
        access_key_secret = creds.access_key_secret
        security_token = creds.security_token
    
        # uraikan event dalam objek
        event_obj = json.loads(event.decode())
        print("Isi dalam entitas event adalah: ", event_obj)
    
        # Dapatkan nama project log, nama log store, endpoint sls, cursor awal, cursor akhir, dan shardId dari event.source
        source = event_obj['source']
        log_project = source['projectName']
        log_store = source['logstoreName']
        endpoint = source['endpoint']
        begin_cursor = source['beginCursor']
        end_cursor = source['endCursor']
        shard_id = source['shardId']
    
        # Inisialisasi klien sls
        client = LogClient(endpoint=endpoint, accessKeyId=access_key_id, accessKey=access_key_secret, securityToken=security_token)
    
        # Baca data dari logstore sumber dalam rentang cursor: [begin_cursor, end_cursor) pada contoh ini, yang berisi semua log yang memicu pemanggilan
        while True:
            response = client.pull_logs(project_name=log_project, logstore_name=log_store, shard_id=shard_id, cursor=begin_cursor, count=100, end_cursor=end_cursor, compress=False)
            log_group_cnt = response.get_loggroup_count()
            if log_group_cnt == 0:
                break
            logger.info("mendapatkan %d kelompok log dari %s" % (log_group_cnt, log_store))
            logger.info(response.get_loggroup_list())
            begin_cursor = response.get_next_cursor()
    
        return 'success'
  2. Di halaman Function Details, pilih Logs > Function Logs untuk melihat data terbaru yang diperoleh saat fungsi berjalan. Jika muncul pesan The logging feature is not enabled for the current function., klik Enable.

    Anda telah menyelesaikan konfigurasi pemicu SLS. Setelah interval pemicu berlalu dan data baru ditulis ke Logstore sumber, pemicu akan memanggil fungsi, dan log fungsi akan muncul di halaman Function Logs. Anda juga dapat memeriksa Logstore yang Anda tentukan untuk parameter Trigger Log di Langkah 1 untuk memastikan pemicu telah aktif. Untuk men-debug kode di konsol, ikuti langkah-langkah berikut.

(Opsional) Langkah 4: Uji fungsi dengan event simulasi

  1. Di tab Code halaman Function Details, klik ikon image.png di sebelah kanan Test Function dan pilih Configure Test Parameters dari daftar drop-down.

  2. Di panel Configure Test Parameters, pilih Create New Test Event atau Modify Existing Test Event, masukkan nama event dan konten event, lalu klik OK. Jika Anda membuat event uji baru, kami sarankan Anda memilih templat event Log Service. Untuk informasi lebih lanjut tentang data uji, lihat event parameter.

  3. Setelah Anda mengonfigurasi event simulasi, klik Test Function.

    Setelah pemanggilan selesai, Anda dapat melihat hasilnya di atas tab Code.

Batasan

Jumlah pemicu SLS yang terkait dengan satu Project tidak boleh melebihi lima kali jumlah Logstore yang ada di Project tersebut.

Konfigurasikan tidak lebih dari lima pemicu SLS untuk setiap Logstore. Jika tidak, efisiensi pengiriman data ke Function Compute dapat terpengaruh.

Parameter input

context

Saat Function Compute menjalankan fungsi Anda, sistem meneruskan objek context ke parameter input fungsi context. Objek tersebut berisi informasi tentang pemanggilan, layanan, fungsi, dan lingkungan eksekusi.

Topik ini menggunakan context.credentials untuk memperoleh informasi kredensial. Untuk informasi lebih lanjut tentang bidang yang tersedia, lihat Context.

event

Setelah pemicu SLS aktif, sistem meneruskan data event ke waktu proses. Waktu proses mengonversi event menjadi objek JSON dan meneruskan objek tersebut ke parameter input fungsi event. Formatnya sebagai berikut:

{
    "parameter": {},
    "source": {
        "endpoint": "http://cn-hangzhou-intranet.log.aliyuncs.com",
        "projectName": "fc-test-project",
        "logstoreName": "fc-test-logstore",
        "shardId": 0,
        "beginCursor": "MTUyOTQ4MDIwOTY1NTk3ODQ2Mw==",
        "endCursor": "MTUyOTQ4MDIwOTY1NTk3ODQ2NA=="
    },
    "jobName": "1f7043ced683de1a4e3d8d70b5a412843d81****",
    "taskId": "c2691505-38da-4d1b-998a-f1d4bb8c****",
    "cursorTime": 1529486425
}
ParameterDeskripsi
parameterNilai parameter pemanggilan yang Anda tentukan saat membuat pemicu.
source

Informasi tentang blok log yang dibaca fungsi.

Catatan

endpoint: endpoint SLS dari wilayah tempat Project SLS berada. projectName: nama Project SLS. logstoreName: nama Logstore yang dikonsumsi Function Compute. Pemicu secara berkala berlangganan data di Logstore ini dan mengirimkan data tersebut ke fungsi untuk pemrosesan kustom. shardId: shard tertentu di Logstore. beginCursor: posisi mulai konsumsi data. endCursor: posisi berhenti konsumsi data. Saat men-debug fungsi, Anda dapat memanggil operasi GetCursor by time untuk memperoleh beginCursor dan endCursor, lalu membangun event fungsi untuk pengujian berdasarkan contoh di atas.

jobNameNama pekerjaan ETL SLS. Pemicu SLS yang dikonfigurasi untuk fungsi berkorespondensi dengan satu pekerjaan ETL SLS. Parameter ini dihasilkan secara otomatis oleh Function Compute. Anda tidak perlu mengonfigurasinya.
taskIdUntuk pekerjaan ETL, taskId adalah pengidentifikasi deterministik dari pemanggilan fungsi. Parameter ini dihasilkan secara otomatis oleh Function Compute. Anda tidak perlu mengonfigurasinya.
cursorTimeTimestamp Unix saat log terakhir tiba di server SLS. Satuan: detik.

FAQ

Mengapa frekuensi pemanggilan fungsi oleh pemicu SLS kadang lebih tinggi dari yang diharapkan?

Setiap shard dipicu secara terpisah, sehingga jumlah total pemanggilan untuk sebuah Logstore bisa tampak lebih tinggi daripada interval yang dikonfigurasi. Frekuensi pemicu aktual setiap shard tetap sesuai dengan interval tersebut. Untuk detail perilaku frekuensi pemicu, lihat Cara kerja.

denied by sts or ram, action: log:GetCursorOrData, resource: ****

Jika error ini muncul di log fungsi, izin mungkin belum dikonfigurasi untuk fungsi tersebut, atau kebijakan aksesnya salah. Lihat Langkah 2: Konfigurasi izin.

Pemicu SLS tidak memanggil fungsi saat log baru dihasilkan. Apa yang harus saya lakukan?

Periksa hal-hal berikut:

  • Periksa apakah terdapat perubahan data inkremental di Logstore yang dikonfigurasi untuk tugas pemicu Function Compute. Fungsi dipanggil saat data shard berubah.

  • Periksa log pemicu dan log jalannya fungsi untuk menemukan pengecualian. Log pemicu disimpan di Logstore yang Anda tentukan untuk parameter Trigger Log di Langkah 1.