All Products
Search
Document Center

Function Compute:Pemicu layanan log sederhana

Last Updated:Mar 25, 2026

Dengan mengonfigurasi pemicu Simple Log Service (SLS), Anda dapat mengintegrasikan Simple Log Service (SLS) dengan Function Compute. Pemicu SLS secara otomatis mengeksekusi fungsi ketika log baru dihasilkan untuk mengonsumsi data secara inkremental dari Logstore Simple Log Service dan menjalankan tugas pemrosesan kustom.

Kasus penggunaan

  • Pembersihan dan pemrosesan data

    Simple Log Service memungkinkan Anda mengumpulkan, memproses, mengkueri, dan menganalisis log dengan cepat.

    image
  • Pengiriman data

    Fitur ini mendukung pengiriman data ke berbagai tujuan dan membangun pipa data antara produk data besar berbasis cloud.

    image

Fungsi pemrosesan data

Jenis fungsi

Mekanisme pemicu

Tugas ETL di Simple Log Service berkorespondensi dengan pemicu di Function Compute. Saat Anda membuat tugas ETL, Simple Log Service menjalankan pengatur waktu yang secara periodik melakukan polling informasi shard di Logstore. Ketika data baru ditulis, sistem menghasilkan event sebagai triplet dalam format <shard_id,begin_cursor,end_cursor> dan memicu fungsi tersebut.

Catatan

Saat sistem penyimpanan ditingkatkan, perubahan cursor dapat terjadi meskipun tidak ada data baru yang ditulis. Dalam kasus ini, setiap shard dipicu satu kali dengan muatan kosong. Tangani hal ini dalam fungsi Anda dengan menarik data dari shard menggunakan cursor tersebut. Jika tidak ada data yang dikembalikan, artinya ini adalah pemicu kosong, dan Anda dapat mengabaikan pemanggilan tersebut. Untuk informasi selengkapnya, lihat Panduan pengembangan fungsi kustom.

Mekanisme pemicu untuk tugas ETL di Simple Log Service bersifat berbasis waktu. Misalnya, jika Anda mengatur interval pemicu untuk tugas ETL menjadi 60 detik dan data terus-menerus ditulis ke shard 0 Logstore, shard tersebut akan memicu eksekusi fungsi setiap 60 detik. Jika tidak ada data baru yang ditulis ke shard tersebut, fungsi tidak akan dipicu. Input fungsi adalah rentang cursor selama 60 detik terakhir. Di dalam fungsi, Anda dapat membaca data dari shard 0 berdasarkan cursor tersebut untuk pemrosesan lebih lanjut.

image

Batasan

Jumlah maksimum pemicu Simple Log Service yang dapat Anda asosiasikan dengan satu Project adalah lima kali jumlah Logstore dalam Project tersebut.

Catatan

Kami menyarankan agar Anda mengonfigurasi tidak lebih dari lima pemicu Simple Log Service untuk setiap Logstore. Jika tidak, efisiensi pengiriman data ke Function Compute dapat terpengaruh.

Contoh skenario

Anda dapat mengonfigurasi pemicu Simple Log Service untuk mengambil data yang diperbarui secara periodik dan memanggil fungsi, sehingga memungkinkan Anda mengonsumsi data secara inkremental dari Logstore. Di dalam fungsi, Anda dapat menjalankan tugas kustom seperti pembersihan dan pemrosesan data, serta mengirimkan data tersebut ke layanan pihak ketiga. Contoh ini hanya menunjukkan cara memperoleh dan mencetak data log.

Catatan

Fungsi yang digunakan untuk pemrosesan data dapat berupa templat yang disediakan oleh Simple Log Service atau fungsi kustom yang Anda buat sendiri.

Prasyarat

  • Function Compute

  • Simple Log Service (SLS)

    • Buat Project dan Logstore.

      Buat satu Project dan dua Logstore: Logstore sumber untuk log yang dikumpulkan dan Logstore lain untuk log eksekusi pemicu. Anda harus memastikan log terus dikumpulkan karena Function Compute dipicu oleh data baru.

Penting

Project Log dan layanan Function Compute harus berada di wilayah yang sama.

Parameter input

  • event

    Saat pemicu Simple Log Service aktif, pemicu tersebut meneruskan objek JSON yang merepresentasikan data event 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
    }                       

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    parameter

    Nilai dari Invocation Parameters yang Anda tentukan saat mengonfigurasi pemicu.

    source

    Informasi tentang blok log yang akan dibaca oleh fungsi.

    • endpoint: Wilayah tempat Project Simple Log Service berada.

    • projectName: Nama Project.

    • logstoreName: Nama Logstore yang dikonsumsi oleh Function Compute. Pemicu saat ini berlangganan data dari Logstore ini dan mengirimkannya ke layanan fungsi untuk pemrosesan kustom secara berkala.

    • shardId: Shard tertentu di Logstore.

    • beginCursor: Posisi awal konsumsi data.

    • endCursor: Posisi akhir konsumsi data.

    Catatan

    Saat men-debug fungsi, Anda dapat memanggil operasi API GetCursor by time untuk memperoleh beginCursor dan endCursor, lalu membuat event fungsi untuk pengujian berdasarkan contoh di atas.

    jobName

    Nama tugas ETL Simple Log Service. Pemicu Simple Log Service yang dikonfigurasi untuk suatu fungsi berkorespondensi dengan tugas ETL di Simple Log Service.

    Function Compute menghasilkan parameter ini secara otomatis. Tidak diperlukan konfigurasi pengguna.

    taskId

    Untuk tugas ETL, taskId merupakan pengenal deterministik untuk pemanggilan fungsi.

    Function Compute menghasilkan parameter ini secara otomatis. Tidak diperlukan konfigurasi pengguna.

    cursorTime

    Timestamp Unix, dalam satuan detik, saat log terakhir tiba di server Simple Log Service.

  • context

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

    Topik ini menggunakan context.credentials untuk memperoleh informasi kunci. Untuk informasi lebih lanjut tentang bidang lainnya, lihat Context.

Langkah 1: Buat pemicu SLS

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

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Trigger, lalu klik Create Trigger. Di panel Create Trigger, pilih Log Service untuk Trigger Type, konfigurasi parameter lainnya, lalu klik OK.

    Parameter

    Aksi

    Contoh

    Name

    Masukkan nama kustom untuk pemicu. Jika Anda mengosongkan parameter ini, Function Compute akan menghasilkan nama secara otomatis.

    log_trigger

    Version or Alias

    Nilai default adalah LATEST. Jika Anda ingin membuat pemicu untuk versi atau alias yang berbeda, Anda harus terlebih dahulu beralih ke versi atau alias tersebut di pojok kanan atas halaman detail fungsi. Untuk pengenalan versi dan alias, lihat Kelola versi dan Kelola alias.

    LATEST

    Log Service Project

    Pilih Project Simple Log Service tempat Anda ingin mengonsumsi data.

    aliyun-fc-cn-hangzhou-2238f0df-a742-524f-9f90-976ba457****

    Logstore

    Pilih Logstore tempat Anda ingin mengonsumsi data. Pemicu secara periodik berlangganan data dari Logstore ini dan mengirimkannya ke layanan fungsi untuk pemrosesan kustom.

    function-log

    Trigger Interval

    Tentukan interval pemanggilan fungsi oleh Simple Log Service.

    Nilai valid: 3 hingga 600. Satuan: detik. Nilai default: 60.

    60

    Retries

    Tentukan jumlah maksimum percobaan ulang yang diizinkan untuk satu pemanggilan.

    Nilai valid: 0 hingga 100. Nilai default: 3.

    Catatan
    • Eksekusi yang berhasil adalah eksekusi dengan status 200 dan nilai parameter X-Fc-Error-Type di header bukan UnhandledInvocationError atau HandledInvocationError. Kasus lain menunjukkan eksekusi gagal, yang memicu percobaan ulang. Untuk informasi lebih lanjut tentang parameter X-Fc-Error-Type, lihat Parameter respons.

    • Jika eksekusi gagal, sistem melakukan percobaan ulang sesuai konfigurasi Anda. Jika semua percobaan awal gagal, sistem memasuki fase percobaan ulang mundur dengan interval yang diperpanjang.

    3

    Trigger Log

    Pilih Logstore yang telah dibuat. Log dari eksekusi fungsi yang dipicu oleh Simple Log Service dicatat di Logstore ini.

    function-log2

    Invocation Parameters

    Parameter kustom yang akan diteruskan ke fungsi. Nilainya harus berupa string berformat JSON dan diteruskan sebagai bidang parameter dari event.

    Parameter ini kosong secara default.

    None

    Role Name

    Pilih AliyunLogETLRole.

    Catatan

    Jika Anda membuat jenis pemicu ini untuk pertama kalinya, Anda harus mengklik OK, lalu pilih Authorize Now di kotak dialog berikutnya.

    AliyunLogETLRole

    Setelah pemicu dibuat, pemicu tersebut muncul di daftar Trigger Name. Untuk mengubah atau menghapus pemicu, lihat Kelola pemicu.

Langkah 2: Konfigurasi izin

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

    • Anda dapat menggunakan role default AliyunFCServerlessDevsRole, yang secara default memiliki izin read-only pada Simple Log Service.

    • Anda juga dapat menyesuaikan peran RAM. Peran RAM kustom harus memenuhi dua persyaratan berikut:

      1. Saat membuat peran RAM, pilih {key, select, RAM {Cloud Account} Service {Cloud Service} Federated {Identity Provider} Account {Cloud Account} CurrentAccount {Current Account} OtherAccount {Other Account} AllAccounts {All Accounts} RAMType {Identity Type} UserName {User Name} RoleName {Role Name} FederatedType {Identity Provider Type} other { {key} } } sebagai trusted entity dan pilih Function Compute sebagai trusted service. Untuk informasi selengkapnya, lihat Buat peran RAM untuk layanan Alibaba Cloud tepercaya.

      2. Berikan izin Simple Log Service yang diperlukan ke peran RAM sesuai kebutuhan spesifik fungsi. Untuk informasi selengkapnya, lihat Contoh kebijakan RAM kustom.

  2. Setelah selesai, klik Deploy.

Langkah 3: Deploy dan lihat log

  1. Di tab Code halaman detail fungsi, masukkan kode Anda di editor kode, lalu klik Deploy.

    Contoh ini mendeploy fungsi Python yang melakukan tindakan berikut:

    • Memperoleh informasi pemicu event Simple Log Service, seperti endpoint, projectName, logstoreName, dan beginCursor, dari parameter event.

    • Memperoleh informasi otorisasi, seperti accessKeyId, accessKey, dan securityToken, dari parameter context.

    • Menginisialisasi klien SLS berdasarkan informasi yang diperoleh.

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

    Catatan

    Kode contoh berikut dapat digunakan sebagai templat untuk mengekstraksi sebagian besar log logis.

    """
    Kode contoh ini menunjukkan cara melakukan tindakan berikut:
    * Mengurai informasi pemicu event SLS dari event.
    * Menginisialisasi klien SLS berdasarkan informasi yang diperoleh.
    * Menarik data log waktu nyata dari Logstore sumber.
    """
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import logging
    import json
    import os
    from aliyun.log import LogClient
    
    
    logger = logging.getLogger()
    
    
    def handler(event, context):
    
        # Kunci akses dapat diambil melalui context.credentials.
        print("Konten 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 menjadi objek.
        event_obj = json.loads(event.decode())
        print("Konten dalam entitas event adalah: ", event_obj)
    
        # Dapatkan nama Project, nama Logstore, endpoint SLS, beginCursor, endCursor, 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 log dari Logstore sumber dalam rentang cursor [begin_cursor, end_cursor). Dalam contoh ini, rentang tersebut 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("get %d log group from %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 dijalankan. Jika muncul pesan "The logging feature is not enabled for the current function.", klik Enable.

Anda telah menyelesaikan konfigurasi pemicu Simple Log Service. Untuk men-debug kode di konsol, ikuti langkah-langkah berikut.

(Opsional) Langkah 4: Uji dengan event simulasi

  1. Di tab Code halaman detail fungsi, klik ikon image.png di samping 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 dan konten event, lalu klik OK. Jika Anda membuat event uji baru, kami menyarankan agar Anda memilih templat Log Service. Untuk informasi lebih lanjut tentang cara mengonfigurasi data uji, lihat event.

  3. Setelah event simulasi dikonfigurasi, klik Test Function.

    Setelah eksekusi selesai, Anda dapat melihat hasil eksekusi di atas tab Code.

FAQ

  • Pemecahan Masalah: Pemicu SLS gagal memanggil

    Anda dapat memecahkan masalah ini dengan memeriksa hal berikut:

    • Pastikan data baru tersedia di Logstore yang dikonfigurasi untuk pemicu. Fungsi dipicu ketika data shard berubah.

    • Periksa log pemicu dan log eksekusi fungsi untuk menemukan pengecualian apa pun.

  • Mengapa frekuensi pemanggilan tinggi?

    Setiap shard dipicu secara terpisah. Anda mungkin mengamati jumlah pemicu keseluruhan yang tinggi untuk suatu Logstore, tetapi pemicu untuk setiap shard tetap terjadi dalam interval yang ditentukan.

    Interval pemicu untuk satu shard dan rentang data yang diproses setiap kali (interval waktu) sama. Interval pemicu jatuh ke dalam dua skenario selama eksekusi fungsi. Asumsikan interval pemicu adalah 60 detik.

    • Tidak ada penundaan pemicu: Fungsi dipicu secara periodik sesuai pengaturan, sekali setiap 60 detik, memproses data dalam rentang [now -60s, now).

      Catatan

      Pemicu fungsi bersifat independen untuk setiap shard. Misalkan Logstore memiliki 10 shard, selama pemrosesan data waktu nyata (tanpa penundaan pemicu), akan terjadi 10 pemanggilan fungsi setiap 60 detik.

    • Terjadi penundaan pemicu (ketika posisi pemrosesan saat ini di shard Simple Log Service tertinggal dari data terbaru yang ditulis lebih dari 10 detik): Pemicu dipercepat untuk mengejar ketinggalan, berpotensi mengurangi interval hingga 2 detik per pemicu sambil terus memproses data dalam jendela 60 detik.

  • Error: "denied by sts or ram"

    Jika error ini muncul di log fungsi, kemungkinan karena fungsi belum dikonfigurasi dengan izin yang diperlukan, atau kebijakan izin diatur salah. Untuk informasi selengkapnya, lihat Langkah 2: Konfigurasi izin.