All Products
Search
Document Center

CDN:Kelola EdgeScript dengan CLI

Last Updated:Apr 01, 2026

Gunakan CLI EdgeScript (ES) untuk mengelola seluruh siklus hidup skrip: tulis skrip secara lokal, deploy ke lingkungan staging, verifikasi perilakunya, lalu promosikan ke produksi. Alur kerja ini memungkinkan Anda menguji logika EdgeScript (ES) secara aman sebelum memengaruhi traffic langsung.

Untuk dokumentasi referensi lengkap CLI ES, lihat Use the EdgeScript CLI to manage scripts.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Mengunduh dan menyediakan tool CLI es.py di direktori kerja Anda

  • Nama domain yang dipercepat yang dikonfigurasi di Alibaba Cloud CDN

  • Menyiapkan file skrip ES untuk di-deploy (contoh berikut menggunakan m3u8.es)

Cara kerja

Semua perintah menggunakan es.py dengan parameter action untuk memilih operasi. Domain yang sama ditargetkan di semua langkah; hanya nilai action yang berubah untuk berpindah antarlingkungan.

Tulis skrip → Dorong ke staging → Kueri staging → Uji → Dorong ke produksi → Kueri produksi

Langkah 1: Tulis skrip

Simpan logika ES Anda dalam file lokal berekstensi .es. Contoh berikut menggunakan m3u8.es untuk memblokir semua permintaan M3U8 dengan memeriksa akhiran URI dan mengembalikan respons 400 Bad Request.

$cat m3u8.es
if eq(substr($uri, -5, -1), '.m3u8') {
    add_rsp_header('X-DEBUG-DENY-REASON', 'block m3u8')
    exit(400)
}

Langkah 2: Dorong skrip ke lingkungan staging

Jalankan push_test_env untuk mendeploy skrip ke lingkungan staging sebelum mencapai produksi.

$./es.py action=push_test_env domain=<your domain> rule='{"pos":"head","pri":"0","rule_path":"./m3u8.es","enable":"on"}'

Parameter aturan

ParameterDeskripsiNilai contoh
posPosisi eksekusi dalam pipeline permintaanhead
priPrioritas (angka lebih kecil = prioritas lebih tinggi)0
rule_pathPath ke file skrip .es lokal./m3u8.es
enableApakah aturan aktif atau tidakon

Respons yang diharapkan

Response Code:
=============
200 OK

Response Info:
==============
{
    "RequestId": "FB98CC67-8FBA-44CF-A98A-BCE3B19FE510"
}

Respons 200 OK dengan RequestId menegaskan bahwa skrip berhasil didorong.

Langkah 3: Kueri lingkungan staging

Jalankan query_test_env untuk memastikan skrip dikonfigurasi dengan benar sebelum pengujian.

$./es.py action=query_test_env domain=<your domain>

Respons yang diharapkan

Response Code:
=============
200 OK

Response Info:
==============
{
    "DomainConfigs": [
        {
            "Status": "success",
            "ConfigId": 17432558,
            "FunctionArgs": [
                {
                    "ArgName": "enable",
                    "ArgValue": "on"
                },
                {
                    "ArgName": "pri",
                    "ArgValue": "0"
                },
                {
                    "ArgName": "pos",
                    "ArgValue": "head"
                },
                {
                    "ArgName": "rule",
                    "ArgValue": "if eq(substr($uri, -5, -1), '.m3u8') {\n    add_rsp_header('X-DEBUG-DENY-REASON', 'block m3u8')\n    exit(400)\n}\n"
                }
            ],
            "FunctionName": "dsl_ex"
        }
    ],
    "RequestId": "4DDBF3DB-BCAC-4074-AC1E-B6C1F1C6CBFB"
}
Status "Status": "success" dalam respons menegaskan bahwa skrip telah dikonfigurasi di lingkungan staging.

Langkah 4: Uji skrip

Kirim permintaan melalui lingkungan staging untuk memverifikasi bahwa skrip berperilaku sesuai harapan. Ganti Staging environment IP dengan alamat IP aktual dari node staging Anda.

$curl -x Staging environment IP:80 -o /dev/null -v 'http://www.archnote.net/test.m3u8'

Header respons yang diharapkan

< HTTP/1.1 400 Bad Request
< Server: Tengine
< Date: Thu, 18 Jul 2019 09:40:41 GMT
< Content-Type: text/html
< Content-Length: 265
< Connection: close
< X-DEBUG-DENY-REASON: block m3u8
< Via: cache1.cn1191-1[,0]
< Timing-Allow-Origin: *
< EagleId: 2a7b771b15634428415537484e

Respons 400 Bad Request dengan header X-DEBUG-DENY-REASON: block m3u8 menegaskan bahwa skrip memblokir permintaan M3U8 sesuai yang diinginkan.

Langkah 5: Dorong skrip ke lingkungan produksi

Setelah memverifikasi skrip di lingkungan staging, jalankan push_product_env untuk mempromosikannya ke produksi.

$./es.py action=push_product_env domain=<your domain>

Respons yang diharapkan

Response Code:
=============
200 OK

Response Info:
==============
{
    "RequestId": "F4B378F8-6AAE-457A-A70C-E856ED8341D8"
}

Langkah 6: Kueri lingkungan produksi

Jalankan query_product_env untuk memastikan skrip aktif di produksi.

$./es.py action=query_product_env domain=<your domain>

Respons yang diharapkan

Response Code:
=============
200 OK

Response Info:
==============
{
    "DomainConfigs": {
        "DomainConfig": [
            {
                "Status": "success",
                "ConfigId": 17432558,
                "FunctionArgs": {
                    "FunctionArg": [
                        {
                            "ArgName": "enable",
                            "ArgValue": "on"
                        },
                        {
                            "ArgName": "pri",
                            "ArgValue": "0"
                        },
                        {
                            "ArgName": "pos",
                            "ArgValue": "head"
                        },
                        {
                            "ArgName": "rule",
                            "ArgValue": "if eq(substr($uri, -5, -1), '.m3u8') {\n    add_rsp_header('X-DEBUG-DENY-REASON', 'block m3u8')\n    exit(400)\n}\n"
                        }
                    ]
                },
                "FunctionName": "dsl_ex"
            }
        ]
    },
    "RequestId": "36D57C1D-C820-43DA-8E70-DADC4B8BD4DD"
}
Status "Status": "success" menegaskan bahwa skrip aktif di produksi. Respons produksi menggunakan skema JSON berbeda untuk FunctionArgs dibandingkan respons staging: FunctionArgs adalah objek JSON yang berisi array FunctionArg, bukan array datar.

Langkah berikutnya