Utilice la CLI de EdgeScript (ES) para gestionar el ciclo de vida completo del script: escriba el script localmente, despliéguelo en el entorno de pruebas, compruebe su comportamiento y, posteriormente, promuévalo a producción. Este flujo de trabajo le permite probar la lógica de EdgeScript (ES) de forma segura antes de que afecte al tráfico en vivo.
Para consultar la documentación de referencia completa de la CLI de ES, consulte Use the EdgeScript CLI to manage scripts .
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
La herramienta CLI
es.pydescargada y disponible en su directorio de trabajoUn nombre de dominio acelerado configurado en Alibaba Cloud CDN
Un archivo de script ES listo para desplegar (los ejemplos siguientes utilizan
m3u8.es)
Funcionamiento
Todos los comandos utilizan es.py con un parámetro action para seleccionar la operación. El mismo dominio se utiliza como destino en todos los pasos; solo cambia el valor de action para pasar de un entorno a otro.
Write script → Push to staging → Query staging → Test → Push to production → Query production
Paso 1: Escribir el script
Guarde su lógica de ES como un archivo .es local. El siguiente ejemplo usa m3u8.es para bloquear todas las solicitudes M3U8 mediante la verificación del sufijo URI y la devolución de una respuesta 400 Bad Request.
$cat m3u8.es
if eq(substr($uri, -5, -1), '.m3u8') {
add_rsp_header('X-DEBUG-DENY-REASON', 'block m3u8')
exit(400)
}
Paso 2: Enviar el script al entorno de pruebas
Ejecute push_test_env para desplegar el script en el entorno de pruebas antes de que llegue a producción.
$./es.py action=push_test_env domain=<your domain> rule='{"pos":"head","pri":"0","rule_path":"./m3u8.es","enable":"on"}'
Parámetros de la regla
|
Parameter |
Description |
Example value |
|
|
Posición de ejecución en la canalización de solicitudes |
|
|
|
Prioridad (un número menor indica mayor prioridad) |
|
|
|
Ruta al archivo de script |
|
|
|
Indica si la regla está activa |
|
Respuesta esperada
Response Code:
=============
200 OK
Response Info:
==============
{
"RequestId": "FB98CC67-8FBA-44CF-A98A-BCE3B19FE510"
}
Una respuesta 200 OK con un RequestId confirma que el script se envió correctamente.
Paso 3: Consultar el entorno de pruebas
Ejecute query_test_env para confirmar que el script se configuró correctamente antes de realizar pruebas.
$./es.py action=query_test_env domain=<your domain>
Respuesta esperada
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"
}
Un valor "Status": "success" en la respuesta confirma que el script está configurado en el entorno de pruebas.
Paso 4: Probar el script
Envíe una solicitud a través del entorno de pruebas para comprobar que el script se comporta según lo esperado. Reemplace Staging environment IP por la dirección IP real de su nodo de pruebas.
$curl -x Staging environment IP:80 -o /dev/null -v 'http://www.archnote.net/test.m3u8'
Encabezados de respuesta esperados
< 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
Una respuesta 400 Bad Request con el encabezado X-DEBUG-DENY-REASON: block m3u8 confirma que el script bloquea las solicitudes M3U8 tal como se diseñó.
Paso 5: Enviar el script al entorno de producción
Después de verificar el script en el entorno de pruebas, ejecute publish_test_env para promoverlo a producción.
$./es.py action=push_product_env domain=<your domain>
Respuesta esperada
Response Code:
=============
200 OK
Response Info:
==============
{
"RequestId": "F4B378F8-6AAE-457A-A70C-E856ED8341D8"
}
Paso 6: Consultar el entorno de producción
Ejecute query_product_env para confirmar que el script está activo en producción.
$./es.py action=query_product_env domain=<your domain>
Respuesta esperada
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"
}
Un valor"Status": "success"confirma que el script está activo en producción. La respuesta de producción utiliza un esquema JSON diferente paraFunctionArgsen comparación con la respuesta de pruebas:FunctionArgses un objeto JSON que contiene una matrizFunctionArg, en lugar de una matriz plana.
Pasos siguientes
Consulte la referencia completa de comandos de la CLI de ES: Use the EdgeScript CLI to manage scripts