Arquive automaticamente os logs offline do Alibaba Cloud CDN no Object Storage Service (OSS) com o Function Compute para retenção e análise de longo prazo.
Contexto
O Alibaba Cloud CDN fornece logs de acesso detalhados para seus nomes de domínio acelerados. Esses logs offline permitem analisar o comportamento do usuário, solucionar problemas e gerar estatísticas operacionais. O Alibaba Cloud CDN retém os arquivos de log offline por apenas 30 dias antes de excluí-los automaticamente.
Para conformidade de dados, auditorias de longo prazo ou análise de dados históricos, talvez seja necessário armazenar esses logs permanentemente. O Object Storage Service (OSS) oferece uma solução de armazenamento altamente disponível, econômica e durável, ideal para arquivamento de logs a longo prazo. O Function Compute monitora eventos de criação de log do Alibaba Cloud CDN e invoca uma função para arquivar os logs no seu bucket do OSS.
Como funciona
Esta solução utiliza o Function Compute como agendador e movimentador de dados entre o Alibaba Cloud CDN e o Object Storage Service (OSS). O fluxo de trabalho é o seguinte:
Disparo de evento: Um gatilho do Function Compute é acionado sempre que o Alibaba Cloud CDN gera um novo arquivo de log.
Execução da função: Ao ser acionado, o gatilho executa automaticamente o código da função associada.
Recuperação do log: O código da função calcula o nome do arquivo de log do dia anterior com base na data atual e gera uma URL de download para o log offline do Alibaba Cloud CDN. Em seguida, envia uma solicitação a essa URL para baixar o arquivo de log para o ambiente temporário do Function Compute.
Transferência para o Object Storage Service (OSS): Após baixar o arquivo de log com sucesso, a função chama a API do OSS para fazer upload do arquivo em um diretório especificado no bucket do OSS designado.
Todo o processo é totalmente automatizado e não requer intervenção manual após a configuração.
Faturamento
Esta solução envolve cobranças dos seguintes produtos:
Alibaba Cloud CDN: A geração e o download de logs offline são gratuitos.
Function Compute: A cobrança é baseada no número de invocações da função, nos recursos consumidos (vCPU e memória) e na duração da execução. Para uma tarefa leve de arquivamento de logs executada apenas algumas vezes ao dia, os custos costumam ser mínimos. Para mais informações, consulte Function Compute Billing Overview.
Object Storage Service (OSS): A cobrança é baseada no espaço de armazenamento utilizado, no número de solicitações de API e em qualquer tráfego de saída para a internet. Para mais informações, consulte Object Storage Service (OSS) Billing Overview.
Pré-requisitos
Ative o Alibaba Cloud CDN, o Function Compute e o Object Storage Service (OSS) na mesma conta Alibaba Cloud para garantir uma autorização tranquila entre serviços.
Crie um bucket do Object Storage Service (OSS) para armazenar os arquivos de log. Para mais informações, consulte Create buckets. Anote o nome do bucket, o endpoint de acesso público e o nome do diretório de armazenamento de logs.
Procedimento
1. Obter detalhes do bucket
Obtenha os detalhes do seu bucket do OSS: nome do bucket, endpoint de acesso público e nome do diretório de armazenamento de logs.
2. Criar a função e o gatilho no Function Compute
Crie uma função no Function Compute para realizar o arquivamento e um gatilho para iniciá-la.
Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Functions.
Na página Functions, clique em Create Function, selecione Event Function e, em seguida, clique em Create Event Function.
-
Ao criar a função de evento, configure os seguintes parâmetros principais:
Basic Configurations - Function Name: Este nome é necessário para operações subsequentes. Recomendamos o uso de
cdn-log-dump.Function Code > Runtime: A função é escrita em Python. Selecione Official Runtimes, Python e, em seguida, Python 3.10.
-
Advanced Settings > Environment Variable: Para passar os detalhes do bucket do OSS para a função, crie as seguintes variáveis de ambiente:
target_oss_bucket: Nome do buckettarget_oss_endpoint: Endpoint de acesso públicotarget_oss_prefix: Nome do diretório para armazenamento de arquivos de log
Por exemplo, defina target_oss_bucket como
demo-bucket, target_oss_endpoint comooss-cn-hangzhou.aliyuncs.come target_oss_prefix comocdn_log.
Após configurar os parâmetros, clique em Create.
Em Function Details, clique em na aba Triggers e, em seguida, clique em Create Trigger.
-
Configure os parâmetros principais do gatilho conforme descrito abaixo e clique em OK.
Trigger Type: Selecione Alibaba Cloud CDN (Sync invocation).
Name: Insira um nome para o gatilho (Recomendado:
cdn-logs-triggers).Trigger Event: Selecione LogFileCreated.
Domain Name: Insira um nome de domínio acelerado ativo que esteja na mesma conta Alibaba Cloud.
Description: Insira uma descrição para o gatilho. Recomendamos "Gatilho de geração de arquivo de log offline do CDN".
Role: Selecione AliyunCDNEventNotificationRole.
Após configurar os parâmetros do gatilho, clique em OK. Se a mensagem No Default Role Is Created for CDN Trigger aparecer, clique em Authorize Now e siga as instruções na tela para criar a função padrão. Caso contrário, o gatilho será criado imediatamente.
-
Em Function Details, clique em na aba Code e, no editor online, insira o código abaixo, que recupera logs offline do Alibaba Cloud CDN e os armazena no Object Storage Service (OSS).
Clique em Deploy.
3. Criar uma função e política personalizadas
A função do Function Compute precisa de permissões para acessar o Object Storage Service (OSS). Conceda essas permissões criando uma função e uma política personalizadas.
Faça login no console do Resource Access Management (RAM). No painel de navegação à esquerda, escolha Permissions > Policies.
Clique em Create Policy e selecione a aba JSON.
-
Na política abaixo, substitua
BucketNamepelo nome do seu bucket e substitua todas as três ocorrências deFC-NAMEpelo nome da função da Etapa 2 (recomendamos o uso decdn-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/*" ] } ] } Clique em OK e insira um Policy Name e Remarks. Em seguida, clique em OK novamente para criar a política (Recomendamos definir o Policy Name como
AliyunCDNLogDumpAccesse a Description como Permissões para gerenciar dumps de logs offline do CDN).No painel de navegação à esquerda, escolha Identities > Roles e clique em Create Role.
Em Select Trusted Entity, selecione Alibaba Cloud Service. Em Trusted Service, selecione Function Compute e clique em OK.
Na caixa de diálogo Create Role, insira um Role Name (recomendamos o uso de
AliyunCDNLogDumpRole) e clique em OK para criar a função.Na aba Permissions, clique em Precise Authorization. Em Policy Type, selecione Custom Policies e, em Policy Name, insira o nome da política criada na Etapa 4 (recomendamos o uso de
AliyunCDNLogDumpAccess). Em seguida, clique em OK.-
Na aba Trust Policy, clique em Edit Trust Policy. No editor JSON, insira a seguinte política de confiança e clique em OK.
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "fc.aliyuncs.com" ] } } ], "Version": "1" }
4. Anexar a função à função do Function Compute
Na aba Functions do console do Function Compute, selecione a função criada na Etapa 2 e clique em Configure.
Na página de detalhes da função, clique em na aba Configurations. Na seção Advanced Settings, clique em Configure.
Em Advanced Settings, localize a opção Permissions - Function Role e selecione a função criada na Etapa 3. Recomendamos o uso de
AliyunCDNLogDumpRole. Em seguida, clique em Deploy para vincular a função à tarefa do Function Compute.
5. Testar a função (Opcional)
O Alibaba Cloud CDN gera logs offline com um atraso de cerca de 24 horas, portanto, não é possível verificar a configuração imediatamente. Para testar a função agora mesmo, utilize as etapas opcionais a seguir.
Na aba Functions do console do Function Compute, selecione a função criada na Etapa 2 e clique em Configure.
-
Na página de detalhes da função, clique em na aba Test. Em Test Event, selecione Create New Test Event. Em Event Template, selecione CDN (LogFileCreated). Em Event Name, insira Test_cdn_log_dump.
O editor JSON é preenchido automaticamente com o modelo de evento CDN LogFileCreated, que inclui campos como
eventName,eventSource,region,eventTime,traceId,userIdentity(aliUid),resource(por exemplo, o domínio é example.com) eeventParameter. -
Utilize os parâmetros obtidos abaixo para modificar o parâmetro
filePathno modelo de evento. Clique em Test Function. Após a conclusão da execução, o resultado retornado será
nulle o status da execução será bem-sucedido.No console do Object Storage Service (OSS), selecione o bucket usado para armazenar os logs do Alibaba Cloud CDN.
Clique em Files e navegue até o diretório configurado para armazenar os logs do Alibaba Cloud CDN. Você verá uma pasta com o nome do domínio acelerado. Dentro dela, uma subpasta com a data contém o arquivo de log arquivado. Isso confirma que a tarefa do Function Compute foi executada com sucesso.