Tous les produits
Search
Centre de documentation

CDN:Gérer EdgeScript avec la CLI

Dernière mise à jour :Aug 18, 2026

Utilisez la CLI EdgeScript (ES) pour gérer le cycle de vie complet des scripts : rédigez un script localement, déployez-le dans l'environnement de préproduction, vérifiez son comportement, puis promouvez-le en production. Ce flux de travail vous permet de tester en toute sécurité la logique EdgeScript (ES) avant qu'elle n'impacte le trafic en direct.

Pour consulter la documentation de référence complète de la CLI ES, voir Utiliser la CLI EdgeScript pour gérer les scripts .

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • L'outil CLI es.py téléchargé et disponible dans votre répertoire de travail

  • Un nom de domaine accéléré configuré dans Alibaba Cloud CDN

  • Un fichier de script ES prêt à être déployé (les exemples ci-dessous utilisent m3u8.es)

Fonctionnement

Toutes les commandes utilisent es.py avec un paramètre action pour sélectionner l'opération. Le même domaine est ciblé à toutes les étapes ; seule la valeur du paramètre action change pour passer d'un environnement à l'autre.

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

Étape 1 : Rédiger le script

Enregistrez votre logique ES dans un fichier local .es. L'exemple suivant utilise m3u8.es pour bloquer toutes les requêtes M3U8 en vérifiant le suffixe de l'URI et en renvoyant une réponse 400 Bad Request.

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

Étape 2 : Pousser le script vers l'environnement de préproduction

Exécutez push_test_env pour déployer le script en préproduction avant qu'il n'atteigne la production.

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

Paramètres de règle

Paramètre

Description

Valeur d'exemple

pos

Position d'exécution dans le pipeline de requête

head

pri

Priorité (un chiffre plus bas indique une priorité plus élevée)

0

rule_path

Chemin d'accès au fichier de script local .es

./m3u8.es

enable

Indique si la règle est active

on

Réponse attendue

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

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

Une réponse 200 OK accompagnée d'un RequestId confirme que le script a bien été poussé.

Étape 3 : Interroger l'environnement de préproduction

Exécutez query_test_env pour confirmer que le script est correctement configuré avant de lancer les tests.

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

Réponse attendue

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"
}
La présence de "Status": "success" dans la réponse confirme que le script est configuré dans l'environnement de préproduction.

Étape 4 : Tester le script

Envoyez une requête via l'environnement de préproduction pour vérifier que le script se comporte comme prévu. Remplacez Staging environment IP par l'adresse IP réelle de votre nœud de préproduction.

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

En-têtes de réponse attendus

< 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

Une réponse 400 Bad Request accompagnée de l'en-tête X-DEBUG-DENY-REASON: block m3u8 confirme que le script bloque bien les requêtes M3U8.

Étape 5 : Pousser le script vers l'environnement de production

Après avoir vérifié le script en préproduction, exécutez publish_test_env pour le promouvoir en production.

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

Réponse attendue

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

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

Étape 6 : Interroger l'environnement de production

Exécutez query_product_env pour confirmer que le script est actif en production.

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

Réponse attendue

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"
}
La mention "Status": "success" confirme que le script est actif en production. La réponse de production utilise un schéma JSON différent pour FunctionArgs par rapport à la réponse de préproduction : FunctionArgs est un objet JSON contenant un tableau FunctionArg , plutôt qu'un tableau plat.

Étapes suivantes