Setelah Anda mengonfigurasi pemicu CDN, Function Compute akan dipicu untuk menyimpan file log CDN offline setiap kali layanan CDN menghasilkannya untuk nama domain yang dipercepat tertentu. Topik ini menjelaskan cara mengonfigurasi pemicu CDN untuk fungsi objektif di konsol Function Compute. Prosesnya mencakup pembuatan pemicu, konfigurasi parameter input, serta penulisan dan pengujian kode fungsi.
Contoh skenario
Alibaba Cloud CDN mendukung berbagai jenis server origin, seperti nama domain Object Storage Service (OSS), alamat IP, nama domain origin, dan nama domain Function Compute. Setiap jenis server origin mendukung beberapa alamat server origin. Dalam skenario multi-origin, Anda dapat mengatur prioritas utama/sekunder dan bobot untuk server origin guna menerapkan load balancing.
Topik ini menggunakan OSS sebagai server origin. Buat bucket di konsol OSS, peroleh nama domain yang akan digunakan sebagai server origin, lalu tambahkan nama domain yang dipercepat untuk server origin tersebut. Untuk informasi selengkapnya tentang cara mengubah jenis server origin, lihat Konfigurasi server origin.
Prasyarat
Function Compute
Object Storage Service (OSS)
CDN
Langkah 1: Buat pemicu CDN
Masuk ke konsol Function Compute. Di panel navigasi sebelah kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang dituju.
Di halaman detail fungsi, klik tab Triggers, lalu klik Create Trigger.
Di panel Buat Pemicu, konfigurasi parameter, lalu klik OK.
Parameter
Tindakan
Contoh
Jenis Pemicu
Pilih CDN.
CDN
Nama
Masukkan nama kustom untuk pemicu.
cdn-trigger
Versi atau Alias
Nilai default adalah LATEST. Jika ingin membuat pemicu untuk versi atau alias yang berbeda, pilih terlebih dahulu versi atau alias dari daftar drop-down Version Or Alias di halaman detail fungsi. Untuk informasi selengkapnya tentang versi dan alias, lihat Kelola versi dan Kelola alias.
LATEST
Peristiwa Pemicu
Pilih jenis peristiwa pemicu.
Untuk informasi selengkapnya tentang cara memilih jenis peristiwa pemicu, lihat Definisi event CDN.
CdnDomainStarted
Versi Peristiwa Pemicu
Nomor versi peristiwa pemicu.
CatatanHanya versi event 1.0.0 yang didukung.
1.0.0
Nama Domain
Masukkan nama domain yang dipercepat.
bucket*******.oss-cn-chengdu-internal.aliyuncs.com
Deskripsi
Masukkan deskripsi untuk nama domain.
cdntrigger
Nama Peran
Pilih AliyunCDNEventNotificationRole.
CatatanJika ini pertama kalinya Anda membuat jenis pemicu ini, klik OK, lalu klik Authorize Now di kotak dialog yang muncul.
AliyunCDNEventNotificationRole
Setelah pemicu dibuat, pemicu tersebut akan muncul dalam daftar Trigger Name. Untuk memodifikasi atau menghapus pemicu, lihat Kelola pemicu.
Langkah 2: Konfigurasi parameter input fungsi
Di tab Code pada halaman detail fungsi, klik ikon
di samping Test Function dan pilih Configure Test Parameters dari daftar drop-down.Di panel Configure Test Parameters, pilih Create New Test Event atau Edit Existing Test Event, masukkan nama dan konten event, lalu klik OK.
Event merupakan parameter input untuk Function Compute. Formatnya ditunjukkan pada contoh berikut. Pasangan kunci-nilai dalam eventParameter bervariasi tergantung pada jenis event CDN.
Contoh event LogFileCreated.
Ganti
filePathdengan path file log CDN Anda atau file uji apa pun.{ "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 } } ] }Tabel berikut menjelaskan bidang-bidang dalam parameter event.
Parameter
Tipe
Contoh
Deskripsi
eventName
String
LogFileCreated
Jenis event.
eventSource
String
cdn
Nama sumber event.
region
String
cn-hangzhou
Wilayah tempat CDN berada.
eventVersion
String
1.0.0
Versi pemicu event.
eventTime
String
2018-06-14T15:31:49+08:00
Waktu saat event terjadi.
traceId
String
c6459282-6a4d-4413-894c-e4ea3968****
ID yang diteruskan dari sumber event untuk pemecahan masalah.
userIdentity
Map
Properti pengguna.
aliUid
String
164901546557****
ID akun Alibaba Cloud.
resource
Map
Informasi sumber daya.
domain
String
example.com
Nama domain.
eventParameter
Map
Parameter event.
domain
String
example.com
Nama domain.
endTime
String
1528959900
Waktu akhir file log.
fileSize
String
1788115
Ukuran file log.
filePath
String
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
Path file log.
startTime
String
1528959600
Waktu mulai file log.
Contoh event untuk CachedObjectsRefreshed dan CachedObjectsPushed.
{ "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****" } } ] }Tabel berikut menjelaskan bidang-bidang dalam parameter event.
Parameter
Tipe
Contoh
Deskripsi
eventName
String
CachedObjectsRefreshed
Jenis event.
eventSource
String
cdn
Nama sumber event.
region
String
cn-hangzhou
Wilayah tempat CDN berada.
eventVersion
String
1.0.0
Versi pemicu event.
eventTime
String
2018-06-14T15:31:49+08:00
Waktu saat event terjadi.
traceId
String
c6459282-6a4d-4413-894c-e4ea3968****
ID yang diteruskan dari sumber event untuk pemecahan masalah.
resource
Map
Informasi sumber daya.
domain
String
example.com
Nama domain.
eventParameter
Map
Parameter event.
objectPath
String
/2018/03/16/13/33b430c57e7.mp4
Identifier sumber daya.
createTime
String
1521180769
Waktu mulai refresh
domain
String
example.com
Nama domain.
completeTime
String
1521180777
Waktu Akhir Refresh
objectType
String
File
Jenis purge. Nilai yang valid:
File: File.
Directory: Direktori.
taskId
String
2089687230
ID tugas purge sumber daya.
userIdentity
Map
Properti pengguna.
aliUid
String
164901546557****
ID akun Alibaba Cloud.
Contoh event untuk CdnDomainStarted dan CdnDomainStopped.
{ "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****" } } ] }Tabel berikut menjelaskan bidang-bidang dalam parameter event.
Parameter
Tipe
Contoh
Deskripsi
eventName
String
CdnDomainStarted
Jenis event.
eventSource
String
cdn
Nama sumber event.
region
String
cn-hangzhou
Wilayah tempat CDN berada.
eventVersion
String
1.0.0
Versi pemicu event.
eventTime
String
2018-06-14T15:31:49+08:00
Waktu saat event terjadi.
traceId
String
c6459282-6a4d-4413-894c-e4ea3968****
ID yang diteruskan dari sumber event untuk pemecahan masalah.
resource
Map
Informasi sumber daya.
domain
String
example.com
Nama domain.
eventParameter
Map
Parameter event.
domain
String
example.com
Nama domain.
status
String
online
Status nama domain.
userIdentity
Map
Properti pengguna.
aliUid
String
164901546557****
ID akun Alibaba Cloud.
Contoh event untuk CdnDomainAdded dan CdnDomainDeleted.
{ "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****" } } ] }Tabel berikut menjelaskan bidang-bidang dalam parameter event.
Parameter
Tipe
Contoh
Deskripsi
eventName
String
CdnDomainAdded
Jenis event.
eventSource
String
cdn
Nama sumber event.
region
String
cn-hangzhou
Wilayah tempat CDN berada.
eventVersion
String
1.0.0
Versi pemicu event.
eventTime
String
2018-06-14T15:31:49+08:00
Waktu saat event terjadi.
traceId
String
c6459282-6a4d-4413-894c-e4ea3968****
ID yang diteruskan dari sumber event untuk pemecahan masalah.
resource
Map
Informasi sumber daya.
domain
String
example.com
Nama domain.
eventParameter
Map
Parameter event.
domain
String
example.com
Nama domain.
userIdentity
Map
Properti pengguna.
aliUid
String
164901546557****
ID akun Alibaba Cloud.
Langkah 3: Tulis dan uji kode fungsi
Setelah membuat pemicu CDN, Anda harus menulis dan menguji kode fungsi untuk memastikan fungsinya bekerja sesuai harapan. Di lingkungan produksi, pemicu secara otomatis mengeksekusi fungsi ketika event CDN terjadi.
Di tab Code pada halaman detail fungsi, tulis kode di editor kode dan klik Deploy Code.
Topik ini menggunakan kode Python sebagai contoh.
# -*- 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 Anda di sini pass elif eventName == "CdnDomainAdded" or eventName == "CdnDomainDeleted": # Logika bisnis Anda di sini pass return f"eventName:{eventName}, domain: {domain}, info: {info}"Klik Test Function.
Setelah eksekusi selesai, Anda dapat melihat hasilnya di atas tab Code.
Informasi lebih lanjut
Selain melalui konsol Function Compute, Anda juga dapat mengonfigurasi pemicu dengan cara berikut:
Gunakan alat Serverless Devs untuk mengonfigurasi pemicu. Untuk informasi selengkapnya, lihat Perintah umum Serverless Devs.
Gunakan SDK untuk mengonfigurasi pemicu. Untuk informasi selengkapnya, lihat SDK.
Untuk memodifikasi atau menghapus pemicu, lihat Kelola pemicu.