Todos os produtos
Search
Central de documentação

Function Compute:Configure um gatilho de CDN

Última atualização: Jun 29, 2026

Um gatilho de CDN invoca sua função sempre que o Alibaba Cloud CDN gera um arquivo de log offline para um nome de domínio acelerado especificado. Use gatilhos de CDN para automatizar o processamento de logs, o gerenciamento de cache e os fluxos de trabalho do ciclo de vida de domínios, sem necessidade de polling ou intervenção manual.

Casos de uso

Cenário

Ação recomendada

Processamento de logs

Arquive ou analise arquivos de log offline do CDN assim que forem gerados.

Gerenciamento de cache

Execute lógicas personalizadas quando objetos em cache forem atualizados ou pré-enviados para nós de borda.

Ciclo de vida de domínios

Acione fluxos de trabalho ao adicionar, remover, iniciar ou parar um domínio acelerado por CDN.

Cenário de exemplo

Este guia usa o Object Storage Service (OSS) como servidor de origem. Crie um bucket no console do OSS, obtenha o nome de domínio correspondente para usar como origem e adicione um nome de domínio acelerado para essa origem. Para obter instruções sobre como alterar o tipo de servidor de origem, consulte Configurar um servidor de origem.

O Alibaba Cloud CDN oferece suporte a vários tipos de servidor de origem: nomes de domínio do OSS, endereços IP, nomes de domínio de origem e nomes de domínio do Function Compute. Em cenários com múltiplas origens, defina prioridades primária/secundária e valores de peso para balancear a carga entre os servidores de origem.

Pré-requisitos

Antes de começar, verifique se você tem:

Etapa 1: Crie um gatilho de CDN

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique na função que deseja gerenciar.

  3. Na página de detalhes da função, clique na aba Triggers e, em seguida, clique em Create Trigger.

  4. No painel Create Trigger, configure os parâmetros a seguir e clique em OK.

    Se esta for a primeira vez que você cria um gatilho de CDN, clique em OK no painel e, depois, clique em Authorize Now na caixa de diálogo exibida. Essa ação concede permissão ao CDN para invocar sua função.

    Parâmetro

    Valor a inserir

    Exemplo

    Trigger type

    Selecione CDN.

    CDN

    Name

    Insira um nome para o gatilho.

    cdn-trigger

    Version or alias

    O padrão é LATEST. Para vincular o gatilho a uma versão ou alias específico, selecione-o primeiro na lista suspensa Version Or Alias na página de detalhes da função. Consulte Gerencie versões e Gerencie aliases.

    LATEST

    Triggering event

    Selecione o tipo de evento de CDN que deve invocar a função. Consulte Definições de eventos de CDN para obter uma descrição de cada tipo.

    CdnDomainStarted

    Triggering event version

    Mantenha como 1.0.0. Esta é a única versão suportada.

    1.0.0

    Domain name

    Insira o nome de domínio acelerado por CDN.

    bucket*******.oss-cn-chengdu-internal.aliyuncs.com

    Description

    (Opcional) Insira uma descrição para o gatilho.

    cdntrigger

    Role name

    Selecione AliyunCDNEventNotificationRole.

    AliyunCDNEventNotificationRole

Após a criação, o gatilho aparece na aba Triggers. Para modificá-lo ou excluí-lo, consulte Gerencie gatilhos.

Etapa 2: Configure parâmetros de teste

Configure um evento de teste para verificar se sua função processa corretamente os eventos de CDN.

  1. Na aba Code da página de detalhes da função, clique no ícone image.png ao lado de Test Function e selecione Configure Test Parameters na lista suspensa.

  2. No painel Configure Test Parameters, selecione Create New Test Event ou Edit Existing Test Event, insira um nome e o conteúdo do evento e clique em OK.

Todos os eventos de gatilho de CDN compartilham a mesma estrutura de nível superior. Apenas o campo eventParameter varia conforme o tipo de evento.

Campos de evento compartilhados

Os campos a seguir estão presentes em todos os tipos de evento de CDN.

Campo

Tipo

Descrição

eventName

String

O tipo de evento de CDN, como LogFileCreated ou CdnDomainStarted.

eventSource

String

Sempre cdn.

region

String

A região onde o CDN está localizado, como cn-hangzhou.

eventVersion

String

A versão do esquema do evento. Sempre 1.0.0.

eventTime

String

O horário em que o evento ocorreu, no formato ISO 8601.

traceId

String

Um ID de rastreamento do CDN, usado para solução de problemas.

userIdentity.aliUid

String

O ID da conta Alibaba Cloud.

resource.domain

String

O nome de domínio acelerado por CDN que gerou o evento.

eventParameter

Map

Campos específicos do evento. Consulte as tabelas abaixo.

Campos de eventParameter por tipo de evento

LogFileCreated — acionado quando o CDN gera um arquivo de log offline

Substitua filePath pelo caminho do seu arquivo de log do CDN ou de qualquer arquivo de teste.

{
    "events": [
        {
            "eventName": "LogFileCreated",
            "eventSource": "cdn",
            "region": "cn-hangzhou",
            "eventVersion": "1.0.0",
            "eventTime": "2018-06-14T15:31:49+08:00",
            "traceId": "c6459282-6a4d-4413-894c-e4ea3968****",
            "userIdentity": {
                "aliUid": "164901546557****"
            },
            "resource": {
                "domain": "example.com"
            },
            "eventParameter": {
                "domain": "example.com",
                "startTime": 1528959600,
                "endTime": 1528959900,
                "fileSize": 1788115,
                "filePath": "http://cdnlog.cn-hangzhou.oss.aliyun-inc.com/www.aliyun.com/2017_12_27/www.aliyun.com_2017_12_27_0800_0900.gz?OSSAccessKeyId=xxxx&Expires=xxxx&Signature=xxxx"
            }
        }
    ]
}

Campo

Tipo

Descrição

domain

String

O nome de domínio.

startTime

String

O horário inicial do arquivo de log (timestamp Unix).

endTime

String

O horário final do arquivo de log (timestamp Unix).

fileSize

String

O tamanho do arquivo de log, em bytes.

filePath

String

A URL de download do arquivo de log. Este é o principal campo processado pela sua função.

CachedObjectsRefreshed / CachedObjectsPushed — acionado na atualização de cache ou pré-envio

{
    "events": [
        {
            "eventName": "CachedObjectsRefreshed",
            "eventVersion": "1.0.0",
            "eventSource": "cdn",
            "region": "cn-hangzhou",
            "eventTime": "2018-03-16T14:19:55+08:00",
            "traceId": "cf89e5a8-7d59-4bb5-a33e-4c3d08e2****",
            "resource": {
                "domain": "example.com"
            },
            "eventParameter": {
                "domain": "example.com",
                "taskId": 2089687230,
                "objectType": "File",
                "objectPath": [
                    "/2018/03/16/13/33b430c57e7.mp4",
                    "/2018/03/16/14/4ff6b9bd54d.mp4"
                ],
                "createTime": 1521180769,
                "completeTime": 1521180777
            },
            "userIdentity": {
                "aliUid": "164901546557****"
            }
        }
    ]
}

Campo

Tipo

Descrição

domain

String

O nome de domínio.

taskId

String

O ID da tarefa de limpeza de recursos.

objectType

String

O tipo de limpeza: File ou Directory.

objectPath

String

O identificador do recurso.

createTime

String

Horário de início da atualização (timestamp Unix).

completeTime

String

O horário em que a tarefa foi concluída (timestamp Unix).

CdnDomainStarted / CdnDomainStopped — acionado quando um domínio é ativado ou desativado

{
    "events": [
        {
            "eventName": "CdnDomainStarted",
            "eventVersion": "1.0.0",
            "eventSource": "cdn",
            "region": "cn-hangzhou",
            "eventTime": "2018-03-16T14:19:55+08:00",
            "traceId": "cf89e5a8-7d59-4bb5-a33e-4c3d08e2****",
            "resource": {
                "domain": "example.com"
            },
            "eventParameter": {
                "domain": "example.com",
                "status": "online"
            },
            "userIdentity": {
                "aliUid": "164901546557****"
            }
        }
    ]
}

Campo

Tipo

Descrição

domain

String

O nome de domínio.

status

String

O status do domínio: online ou offline.

CdnDomainAdded / CdnDomainDeleted — acionado quando um domínio é adicionado ou removido

{
    "events": [
        {
            "eventName": "CdnDomainAdded",
            "eventVersion": "1.0.0",
            "eventSource": "cdn",
            "region": "cn-hangzhou",
            "eventTime": "2018-03-16T14:19:55+08:00",
            "traceId": "cf89e5a8-7d59-4bb5-a33e-4c3d08e2****",
            "resource": {
                "domain": "example.com"
            },
            "eventParameter": {
                "domain": "example.com"
            },
            "userIdentity": {
                "aliUid": "164901546557****"
            }
        }
    ]
}

Campo

Tipo

Descrição

domain

String

O nome de domínio que foi adicionado ou excluído.

Etapa 3: Escrever e testar o código da função

Após criar o gatilho, escreva o código da função e verifique se ele processa corretamente cada tipo de evento. Em produção, o gatilho invoca a função automaticamente quando ocorre um evento de CDN.

  1. Na aba Code, escreva o código no editor e clique em Deploy Code. O exemplo a seguir em Python mostra como lidar com cada tipo de evento de CDN:

    # -*- coding: utf-8 -*-
    import logging
    import json
    
    logger = logging.getLogger("cdn-sample")
    
    def handler(event, context):
        evt = json.loads(event)
        eventObj = evt["events"][0]
        eventName = eventObj['eventName']
        info = ""
        eventParam = eventObj['eventParameter']
        domain = eventParam['domain']
        if eventName == "CachedObjectsRefreshed" or eventName == "CachedObjectsPushed":
            objPathList = eventParam['objectPath']
            info = ",".join(objPathList)
        elif eventName == "LogFileCreated":
            info = eventParam['filePath']
        elif eventName == "CdnDomainStarted" or eventName == "CdnDomainStopped":
            # Your business logic here
            pass
        elif eventName == "CdnDomainAdded" or eventName == "CdnDomainDeleted":
            # Your business logic here
            pass
        return f"eventName:{eventName}, domain: {domain}, info: {info}"
  2. Clique em Test Function. Após a conclusão da execução, o resultado aparece acima da aba Code.

Próximos passos

Além do console do Function Compute, configure gatilhos usando:

Para modifique ou exclua um gatilho existente, consulte Gerencie gatilhos.