Archive automáticamente los registros sin conexión de Alibaba Cloud CDN en Object Storage Service (OSS) mediante Function Compute para conservarlos y analizarlos a largo plazo.
Contexto
Alibaba Cloud CDN proporciona registros de acceso detallados para sus nombres de dominio acelerados. Estos registros sin conexión permiten analizar el comportamiento de los usuarios, solucionar problemas y obtener estadísticas operativas. Alibaba Cloud CDN conserva los archivos de registro sin conexión únicamente durante 30 días y luego los elimina automáticamente.
Si necesita cumplir con normativas de datos, ejecutar auditorías a largo plazo o analizar información histórica, es probable que deba almacenar estos registros de forma permanente. Object Storage Service (OSS) ofrece una solución de almacenamiento altamente disponible, rentable y duradera, ideal para archivar registros a largo plazo. Function Compute detecta los eventos de creación de registros de Alibaba Cloud CDN e invoca una función para archivarlos en su bucket de OSS.
Cómo funciona
Esta solución utiliza Function Compute como programador y motor de transferencia de datos entre Alibaba Cloud CDN y Object Storage Service (OSS). El flujo de trabajo es el siguiente:
Activación del evento: un trigger de Function Compute se activa cada vez que Alibaba Cloud CDN genera un nuevo archivo de registro.
Ejecución de la función: cuando se activa el trigger, se ejecuta automáticamente el código de la función asociada.
Recuperación del registro: el código de la función calcula el nombre del archivo de registro del día anterior con base en la fecha actual. Después, genera una URL de descarga para el registro sin conexión de Alibaba Cloud CDN y envía una solicitud a dicha URL para descargar el archivo al entorno temporal de Function Compute.
Transferencia a Object Storage Service (OSS): una vez que la función descarga correctamente el archivo de registro, llama a la API de OSS para cargarlo en un directorio específico del bucket de OSS designado.
Todo el proceso está completamente automatizado y no requiere intervención manual después de la configuración inicial.
Facturación
Esta solución genera cargos por los siguientes productos:
Alibaba Cloud CDN: la generación y descarga de registros sin conexión es gratuita.
Function Compute: se le cobra según el número de invocaciones de la función, los recursos consumidos (vCPU y memoria) y la duración de la ejecución. Para una tarea ligera de archivado de registros que se ejecuta solo unas cuantas veces al día, los costos suelen ser mínimos. Para obtener más información, consulte Function Compute Billing Overview.
Object Storage Service (OSS): se le cobra según el espacio de almacenamiento utilizado, el número de solicitudes de API y el tráfico saliente hacia internet. Para obtener más información, consulte Object Storage Service (OSS) Billing Overview.
Requisitos previos
Active Alibaba Cloud CDN, Function Compute y Object Storage Service (OSS) con la misma cuenta de Alibaba Cloud para garantizar que la autorización entre servicios funcione sin problemas.
Cree un bucket de Object Storage Service (OSS) para almacenar los archivos de registro. Para obtener más información, consulte Create buckets. Anote el nombre del bucket, el endpoint de acceso público y el nombre del directorio de almacenamiento de registros.
Procedimiento
1. Obtener los detalles del bucket
Obtenga los detalles de su bucket de OSS: el nombre del bucket, el endpoint de acceso público y el nombre del directorio de almacenamiento de registros.
2. Crear la función y el trigger en Function Compute
Cree una función de Function Compute para realizar el archivado y un trigger para iniciarla.
Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, elija Functions.
En la página Functions, haga clic en Create Function, seleccione Event Function y luego haga clic en Create Event Function.
-
Al crear la función de evento, configure los siguientes parámetros clave:
Basic Configurations-Function Name: este nombre es obligatorio para las operaciones posteriores. Se recomienda utilizar
cdn-log-dump.Function Code > Runtime: la función está escrita en Python. Seleccione Official Runtimes, Python y luego Python 3.10.
-
Advanced Settings > Environment Variable: para pasar los detalles del bucket de OSS a la función, cree las siguientes variables de entorno:
target_oss_bucket: nombre del buckettarget_oss_endpoint: endpoint de acceso públicotarget_oss_prefix: nombre del directorio para almacenar los archivos de registro
Por ejemplo, establezca target_oss_bucket en
demo-bucket, target_oss_endpoint enoss-cn-hangzhou.aliyuncs.comy target_oss_prefix encdn_log.
Después de configurar los parámetros, haga clic en Create.
En Function Details, haga clic en la pestaña Triggers y luego en Create Trigger.
-
Configure los parámetros clave del trigger de la siguiente manera y haga clic en OK.
Trigger Type: seleccione Alibaba Cloud CDN (Sync invocation).
Name: introduzca un nombre para el trigger (se recomienda
cdn-logs-triggers).Trigger Event: seleccione LogFileCreated.
Domain Name: introduzca un nombre de dominio acelerado activo que pertenezca a la misma cuenta de Alibaba Cloud.
Description: introduzca una descripción para el trigger. Se recomienda usar "CDN offline log file generation trigger".
Role: seleccione AliyunCDNEventNotificationRole.
Una vez configurados los parámetros del trigger, haga clic en OK. Si aparece el mensaje No Default Role Is Created for CDN Trigger, haga clic en Authorize Now y siga las instrucciones en pantalla para crear el rol predeterminado. De lo contrario, el trigger se crea de inmediato.
-
En Function Details, haga clic en la pestaña Code. En el editor en línea, introduzca el siguiente código, el cual recupera los registros sin conexión de Alibaba Cloud CDN y los almacena en Object Storage Service (OSS).
Haga clic en Deploy.
3. Crear un rol y una política personalizados
La función de Function Compute necesita permisos para acceder a Object Storage Service (OSS). Otorgue estos permisos mediante la creación de un rol y una política personalizados.
Inicie sesión en la consola de Resource Access Management (RAM). En el panel de navegación izquierdo, elija Permissions > Policies.
Haga clic en Create Policy y seleccione la pestaña JSON.
-
En la siguiente política, reemplace
BucketNamepor el nombre de su bucket y sustituya las tres apariciones deFC-NAMEpor el nombre de la función del paso 2 (se recomienda usarcdn-log-dump).{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:PutObject", "Resource": "acs:oss:*:*:BucketName/*" }, { "Effect": "Allow", "Action": "fc:InvokeFunction", "Resource": [ "acs:fc:*:*:services/FC-NAME/functions/FC-NAME", "acs:fc:*:*:services/FC-NAME.*/functions/*" ] } ] } Haga clic en OK e introduzca un Policy Name y un campo Remarks. Después, vuelva a hacer clic en OK para crear la política (se recomienda establecer Policy Name en
AliyunCDNLogDumpAccessy Description en Permisos para gestionar volcados de registros sin conexión de CDN).En el panel de navegación izquierdo, elija Identities > Roles y haga clic en Create Role.
En Select Trusted Entity, seleccione Alibaba Cloud Service. En Trusted Service, elija Function Compute y haga clic en OK.
En el cuadro de diálogo Create Role, introduzca un Role Name (se recomienda usar
AliyunCDNLogDumpRole) y haga clic en OK para crear el rol.En la pestaña Permissions, haga clic en Precise Authorization. En Policy Type, seleccione Custom Policies y, en Policy Name, introduzca el nombre de la política creada en el paso 4 (se recomienda usar
AliyunCDNLogDumpAccess). Luego, haga clic en OK.-
En la pestaña Trust Policy, haga clic en Edit Trust Policy. En el editor JSON, introduzca la siguiente política de confianza y haga clic en OK.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "fc.aliyuncs.com" ] } } ], "Version": "1" }
4. Asignar el rol a la función
En la pestaña Functions de la consola de Function Compute, seleccione la función creada en el paso 2 y haga clic en Configure.
En la página de detalles de la función, haga clic en la pestaña Configurations. En la sección Advanced Settings, haga clic en Configure.
Dentro de Advanced Settings, busque la opción Permissions - Function Role y seleccione el rol creado en el paso 3. Se recomienda utilizar
AliyunCDNLogDumpRole. Después, haga clic en Deploy para vincular el rol a la tarea de Function Compute.
5. Probar la función (opcional)
Alibaba Cloud CDN genera los registros sin conexión con un retraso aproximado de 24 horas, por lo que no es posible comprobar la configuración de inmediato. Si desea probar la función al momento, siga estos pasos opcionales.
En la pestaña Functions de la consola de Function Compute, seleccione la función creada en el paso 2 y haga clic en Configure.
-
En la página de detalles de la función, haga clic en la pestaña Test. En Test Event, seleccione Create New Test Event. En Event Template, elija CDN (LogFileCreated). En Event Name, introduzca Test_cdn_log_dump.
El editor JSON se llena automáticamente con la plantilla del evento LogFileCreated de CDN. Esta plantilla incluye campos como
eventName,eventSource,region,eventTime,traceId,userIdentity(aliUid),resource(por ejemplo, si el dominio es example.com) yeventParameter. -
Utilice los parámetros obtenidos a continuación para modificar el parámetro
filePathde la plantilla del evento. Haga clic en Test Function. Cuando finalice la ejecución, el resultado devuelto será
nully el estado de ejecución indicará que se completó correctamente.En la consola de Object Storage Service (OSS), seleccione el bucket que utiliza para almacenar los registros de Alibaba Cloud CDN.
Haga clic en Files y vaya al directorio que configuró para almacenar los registros de Alibaba Cloud CDN. Verá una carpeta con el nombre del dominio acelerado. Dentro de ella, una subcarpeta con la fecha contendrá el archivo de registro archivado. Esto confirma que la tarea de Function Compute se ejecutó correctamente.