Tüm Ürünler
Search
Belge Merkezi

CDN:CLI ile EdgeScript Yönetimi

Son Güncelleme:Oct 01, 2026

EdgeScript (ES) CLI kullanarak tam betik yaşam döngüsünü yönetin: Bir betiği yerel olarak yazın, hazırlama ortamına dağıtın, davranışı doğrulayın ve ardından üretim ortamına taşıyın. Bu iş akışı, canlı trafiği etkilemeden önce EdgeScript (ES) mantığını güvenle test etmenizi sağlar.

ES CLI referans belgelerinin tamamı için bkz. Betikleri yönetmek için EdgeScript CLI kullanma .

Ön Koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • Çalışma dizininizde indirilmiş ve kullanılabilir durumda olan es.py CLI aracı

  • Alibaba Cloud CDN'de yapılandırılmış bir hızlandırılmış alan adı

  • Dağıtıma hazır bir ES betik dosyası (aşağıdaki örneklerde m3u8.es kullanılır)

Çalışma Mantığı

Tüm komutlar, işlemi seçmek için bir action parametresiyle es.py aracını kullanır. Tüm adımlarda aynı alan adı hedeflenir; ortamlar arasında geçiş yapmak için yalnızca action değeri değişir.

Write script → Push to staging → Query staging → Test → Push to production → Query production

1. Adım: Betiği Yazma

ES mantığınızı yerel bir .es dosyası olarak kaydedin. Aşağıdaki örnekte, URI sonekini kontrol ederek tüm M3U8 isteklerini engelleyen ve bir 400 Bad Request yanıtı döndüren m3u8.es kullanılmaktadır.

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

2. Adım: Betiği Hazırlama Ortamına Gönderme

Betiği üretim ortamına ulaşmadan önce hazırlama ortamına dağıtmak için push_test_env komutunu çalıştırın.

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

Kural Parametreleri


Parametre


Açıklama


Örnek Değer


pos


İstek işlem hattındaki yürütme konumu


head


pri


Öncelik (daha düşük sayı = daha yüksek öncelik)


0


rule_path


Yerel .es betik dosyasının yolu


./m3u8.es


enable


Kuralın aktif olup olmadığı


on

Beklenen Yanıt

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

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

Bir RequestId içeren 200 OK yanıtı, betiğin başarıyla gönderildiğini doğrular.

3. Adım: Hazırlama Ortamını Sorgulama

Test etmeden önce betiğin doğru yapılandırıldığını onaylamak için query_test_env komutunu çalıştırın.

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

Beklenen Yanıt

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": "edge_function"
        }
    ],
    "RequestId": "4DDBF3DB-BCAC-4074-AC1E-B6C1F1C6CBFB"
}
Yanıttaki "Status": "success" değeri, betiğin hazırlama ortamında yapılandırıldığını doğrular.

4. Adım: Betiği Test Etme

Betiğin beklendiği gibi davrandığını doğrulamak için hazırlama ortamı üzerinden bir istek gönderin. Staging environment IP ifadesini hazırlama düğümünüzün gerçek IP adresiyle değiştirin.

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

Beklenen Yanıt Başlıkları

< 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

X-DEBUG-DENY-REASON: block m3u8 başlığını içeren bir 400 Bad Request yanıtı, betiğin M3U8 isteklerini amaçlandığı şekilde engellediğini doğrular.

5. Adım: Betiği Üretim Ortamına Gönderme

Betiği hazırlama ortamında doğruladıktan sonra, bunu üretim ortamına taşımak için publish_test_env komutunu çalıştırın.

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

Beklenen Yanıt

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

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

6. Adım: Üretim Ortamını Sorgulama

Betiğin üretimde etkin olduğunu onaylamak için query_product_env komutunu çalıştırın.

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

Beklenen Yanıt

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": "edge_function"
            }
        ]
    },
    "RequestId": "36D57C1D-C820-43DA-8E70-DADC4B8BD4DD"
}
"Status": "success" değeri, betiğin üretimde etkin olduğunu doğrular. Üretim yanıtı, FunctionArgs için hazırlama yanıtından farklı bir JSON şeması kullanır: FunctionArgs , düz bir dizi yerine bir FunctionArg dizisi içeren bir JSON nesnesidir.

Sonraki Adımlar