All Products
Search
Document Center

Function Compute:Konfigurasikan pemicu CDN

Last Updated:Apr 02, 2026

Saat Alibaba Cloud CDN menghasilkan file log offline di bawah Nama domain akselerasi CDN, pemicu CDN secara otomatis memanggil fungsi Function Compute untuk memproses log tersebut. Topik ini memandu Anda dalam membuat pemicu CDN, mengonfigurasi event pengujian, dan menulis kode fungsi untuk menangani event CDN.

Cara kerja

  1. Alibaba Cloud CDN menghasilkan file log offline di bawah Nama domain akselerasi CDN.

  2. Pemicu CDN aktif dan meneruskan muatan event ke Function Compute.

  3. Function Compute memanggil fungsi Anda dengan data event, sehingga Anda dapat menyimpan log, merefresh cache, atau menjalankan logika bisnis kustom.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Layanan dan fungsi Function Compute. Lihat Buat layanan dan Buat fungsi.

  • Bucket Object Storage Service (OSS) yang digunakan sebagai server origin CDN. Lihat Buat bucket.

  • Nama domain akselerasi CDN yang didukung oleh titik akhir bucket OSS. Lihat Tambahkan domain.

Contoh ini menggunakan titik akhir OSS sebagai server origin. Alibaba Cloud CDN juga mendukung alamat IP, nama domain, dan nama domain Function Compute sebagai server origin. Anda dapat mengonfigurasi server origin primer dan sekunder untuk load balancing. Untuk informasi selengkapnya, lihat Konfigurasikan server origin.

Langkah 1: Buat pemicu CDN

  1. Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Services & Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Services, temukan layanan yang ingin Anda kelola dan klik Functions di kolom Actions.

  3. Pada halaman Functions, klik fungsi yang ingin Anda modifikasi.

  4. Di halaman detail fungsi, klik tab Triggers. Pilih versi atau alias dari daftar drop-down Version or Alias dan klik Create Trigger.

  5. Di panel Create Trigger, konfigurasikan parameter berikut dan klik OK.

    ParameterDeskripsiContoh
    Trigger typePilih Alibaba Cloud CDN.CDN
    NameMasukkan nama untuk pemicu.cdn-trigger
    Version or AliasDefault-nya adalah LATEST. Untuk menyambungkan pemicu ke versi atau alias tertentu, pilih dari daftar drop-down Version or Alias di halaman detail fungsi. Lihat Kelola versi dan Kelola alias.LATEST
    Trigger eventPilih jenis event CDN yang memanggil fungsi. Untuk deskripsi setiap jenis event, lihat bagian Event CDN di bawah.CdnDomainStarted
    Trigger event versionHanya versi 1.0.0 yang didukung.1.0.0
    Domain nameMasukkan nama domain akselerasi CDN.bucket*******.oss-cn-chengdu-internal.aliyuncs.com
    Description(Opsional) Masukkan deskripsi untuk pemicu.cdntrigger
    Role namePilih AliyunCDNEventNotificationRole untuk memberikan izin CDN agar dapat memanggil fungsi Anda. Jika ini pertama kalinya Anda membuat pemicu CDN, klik Authorize Now pada prompt.AliyunCDNEventNotificationRole

Setelah pemicu dibuat, pemicu tersebut akan muncul di tab Triggers. Untuk memodifikasi atau menghapus pemicu yang sudah ada, lihat Kelola pemicu.

Langkah 2: Konfigurasikan event pengujian

  1. Di halaman detail fungsi, klik tab Code. Klik ikon drop-down icon di samping Test Function dan pilih Configure Test Parameters dari daftar drop-down.

  2. Di panel Configure Test Parameters, pilih tab Create New Test Event atau Modify Existing Test Event. Masukkan Event Name dan tempel muatan event, lalu klik OK.

Gunakan salah satu muatan contoh berikut tergantung pada jenis event CDN yang ingin Anda uji.

Struktur muatan event

Semua muatan event CDN memiliki struktur tingkat atas yang sama. Bidang dalam eventParameter berbeda-beda tergantung jenis event.

Bidang umum

BidangTipeContohDeskripsi
eventNameStringLogFileCreatedJenis event.
eventSourceStringcdnSumber event.
regionStringcn-hangzhouWilayah tempat Alibaba Cloud CDN berada. Default: cn-hangzhou.
eventVersionString1.0.0Versi pemicu event.
eventTimeString2018-06-14T15:31:49+08:00Waktu saat event terjadi.
traceIdStringc6459282-6a4d-4413-894c-e4ea3968****ID yang dikirimkan oleh sumber event untuk troubleshooting.
resource.domainStringexample.comNama domain akselerasi CDN.
userIdentity.aliUidString164901546557****ID Akun Alibaba Cloud yang membuat namespace.

LogFileCreated

Aktif ketika CDN menghasilkan file log offline baru di bawah Nama domain akselerasi CDN.

Ganti filePath dengan path ke file log CDN atau file pengujian.

{
    "events": [
        {
            "eventName": "LogFileCreated",
            "eventSource": "cdn",
            "region": "cn-hangzhou",
            "eventVersion": "1.0.0",
            "eventTime": "2018-06-14T15:31:49+08:00",
            "traceId": "c6459282-6a4d-4413-894c-e4ea3968****",
            "userIdentity": {
                "aliUid": "164901546557****"
            },
            "resource": {
                "domain": "example.com"
            },
            "eventParameter": {
                "domain": "example.com",
                "endTime": 1528959900,
                "fileSize": 1788115,
                "filePath": "http://cdnlog.cn-hangzhou.oss.aliyun-inc.com/www.aliyun.com/2017_12_27/www.aliyun.com_2017_12_27_0800_0900.gz?OSSAccessKeyId=xxxx&Expires=xxxx&Signature=xxxx",
                "startTime": 1528959600
            }
        }
    ]
}

Bidang `eventParameter` untuk LogFileCreated

BidangTipeContohDeskripsi
domainStringexample.comNama domain akselerasi CDN.
startTimeLong1528959600Waktu mulai file log (Unix timestamp).
endTimeLong1528959900Waktu akhir file log (Unix timestamp).
fileSizeLong1788115Ukuran file log, dalam byte.
filePathStringhttp://cdnlog...URL unduh file log.

CachedObjectsRefreshed dan CachedObjectsPushed

Aktif ketika tugas refresh cache atau prefetch cache selesai.

{
    "events": [
        {
            "eventName": "CachedObjectsRefreshed",
            "eventVersion": "1.0.0",
            "eventSource": "cdn",
            "region": "cn-hangzhou",
            "eventTime": "2018-03-16T14:19:55+08:00",
            "traceId": "cf89e5a8-7d59-4bb5-a33e-4c3d08e2****",
            "resource": {
                "domain": "example.com"
            },
            "eventParameter": {
                "objectPath": [
                    "/2018/03/16/13/33b430c57e7.mp4",
                    "/2018/03/16/14/4ff6b9bd54d.mp4"
                ],
                "createTime": 1521180769,
                "domain": "example.com",
                "completeTime": 1521180777,
                "objectType": "File",
                "taskId": 2089687230
            },
            "userIdentity": {
                "aliUid": "164901546557****"
            }
        }
    ]
}

Bidang `eventParameter` untuk CachedObjectsRefreshed dan CachedObjectsPushed

BidangTipeContohDeskripsi
domainStringexample.comNama domain akselerasi CDN.
objectPathArray["/2018/03/16/13/33b430c57e7.mp4"]Path objek yang direfresh atau diprefetch.
objectTypeStringFileTipe objek. Nilai yang valid: File, Directory.
taskIdLong2089687230ID tugas refresh atau prefetch cache.
createTimeLong1521180769Waktu saat tugas dibuat (Unix timestamp).
completeTimeLong1521180777Waktu saat tugas selesai (Unix timestamp).

CdnDomainStarted dan CdnDomainStopped

Aktif ketika Nama domain akselerasi CDN diaktifkan atau dinonaktifkan.

{
    "events": [
        {
            "eventName": "CdnDomainStarted",
            "eventVersion": "1.0.0",
            "eventSource": "cdn",
            "region": "cn-hangzhou",
            "eventTime": "2018-03-16T14:19:55+08:00",
            "traceId": "cf89e5a8-7d59-4bb5-a33e-4c3d08e2****",
            "resource": {
                "domain": "example.com"
            },
            "eventParameter": {
                "domain": "example.com",
                "status": "online"
            },
            "userIdentity": {
                "aliUid": "164901546557****"
            }
        }
    ]
}

Bidang `eventParameter` untuk CdnDomainStarted dan CdnDomainStopped

BidangTipeContohDeskripsi
domainStringexample.comNama domain akselerasi CDN.
statusStringonlineStatus domain setelah event.

CdnDomainAdded dan CdnDomainDeleted

Aktif ketika Nama domain akselerasi CDN ditambahkan ke atau dihapus dari akun Anda.

{
    "events": [
        {
            "eventName": "CdnDomainAdded",
            "eventVersion": "1.0.0",
            "eventSource": "cdn",
            "region": "cn-hangzhou",
            "eventTime": "2018-03-16T14:19:55+08:00",
            "traceId": "cf89e5a8-7d59-4bb5-a33e-4c3d08e2****",
            "resource": {
                "domain": "example.com"
            },
            "eventParameter": {
                "domain": "example.com"
            },
            "userIdentity": {
                "aliUid": "164901546557****"
            }
        }
    ]
}

Bidang `eventParameter` untuk CdnDomainAdded dan CdnDomainDeleted

BidangTipeContohDeskripsi
domainStringexample.comNama domain akselerasi CDN.

Langkah 3: Tulis dan uji fungsi

  1. Di halaman detail fungsi, klik tab Code. Masukkan kode fungsi Anda di editor kode dan klik Deploy. Contoh Python berikut membaca jenis event dan mengekstrak bidang relevan dari muatan. Semua jenis event menggunakan handler yang sama — fungsi melakukan percabangan berdasarkan eventName untuk menerapkan logika yang sesuai.

    # -*- coding: utf-8 -*-
    import logging
    import json
    
    logger = logging.getLogger("cdn-sample")
    
    def handler(event, context):
        evt = json.loads(event)
        eventObj = evt["events"][0]
        eventName = eventObj['eventName']
        info = ""
        eventParam = eventObj['eventParameter']
        domain = eventParam['domain']
        if eventName == "CachedObjectsRefreshed" or eventName == "CachedObjectsPushed":
            objPathList = eventParam['objectPath']
            info = ",".join(objPathList)
        elif eventName == "LogFileCreated":
            info = eventParam['filePath']
        elif eventName == "CdnDomainStarted" or eventName == "CdnDomainStopped":
            # Logika bisnis yang sesuai
            pass
        elif eventName == "CdnDomainAdded" or eventName == "CdnDomainDeleted":
            # Logika bisnis yang sesuai
            pass
        return f"eventName:{eventName}, domain: {domain}, info: {info}"
  2. Di tab Code, klik Test Function. Hasilnya akan muncul di tab Code setelah fungsi dijalankan.

Event CDN

Jenis event CDN berikut didukung. Pilih jenis event saat membuat pemicu CDN.

Jenis PeristiwaKapan aktif
LogFileCreatedCDN menghasilkan file log offline untuk nama domain akselerasi CDN.
CachedObjectsRefreshedTugas refresh cache selesai.
CachedObjectsPushedTugas prefetch cache selesai.
CachedObjectsBlockedTugas blokir cache selesai.
CdnDomainStartedNama domain akselerasi CDN diaktifkan.
CdnDomainStoppedNama domain akselerasi CDN dinonaktifkan.
CdnDomainAddedNama domain akselerasi CDN ditambahkan ke akun Anda.
CdnDomainDeletedNama domain akselerasi CDN dihapus dari akun Anda.

Untuk panduan memilih jenis event, lihat bagian event CDN di Ikhtisar.

Langkah selanjutnya