Este tópico descreve como usar um nó do Function Compute no DataWorks para invocar o Function Compute e adicionar marcas d'água periodicamente a arquivos PDF incrementais no OSS.
Contexto
O DataWorks utiliza um nó do Function Compute para invocar o service. Isso permite executar lógicas personalizadas como parte de um fluxo de trabalho do DataWorks.
Pré-requisitos
O Function Compute está ativado. Para mais informações, consulte Quickly create a function.
O OSS está ativado. Para mais informações, consulte Activate OSS. Crie um bucket e faça upload dos arquivos PDF aos quais deseja adicionar marca d'água. Neste exemplo, crie um diretório chamado 2023-08-15 no bucket
bucket-test222e envie o arquivo example.pdf para esse diretório.
Limitações
-
Limitações de recursos
O DataWorks suporta a invocação apenas de funções de evento, e não de funções HTTP. Portanto, utilize uma função de evento para tarefas que precisam ser agendadas periodicamente. Para mais detalhes sobre os tipos de função, consulte Function types.
-
Limitações de região
O recurso Function Compute está disponível somente em workspaces localizados nas seguintes regiões: China (Hangzhou), China (Shanghai), China (Beijing), China (Shenzhen), China (Chengdu), China (Hong Kong), Singapore, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Germany (Frankfurt), UK (London), US (Silicon Valley) e US (Virginia).
Etapa 1: Criar um aplicativo do Function Compute
Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Application.
-
Na página Applications, clique em Create Application e selecione Use a Template to Create an Application. Na caixa de pesquisa, busque por "add watermark to PDF files". Na lista de modelos, localize o modelo pdf-watermark, passe o ponteiro do mouse sobre o cartão correspondente e clique em Create Now.
NotaO código-fonte do aplicativo pdf-watermark está disponível no GitHub. Este aplicativo adiciona uma marca d'água especificada a um arquivo PDF no OSS e salva o arquivo com a marca em um novo arquivo no mesmo local do OSS.
-
Configure os parâmetros para Create Application.
Parâmetro
Descrição
Tipo de implantação
Selecione Directly Deploy.
Application Name
Um nome compatível é gerado automaticamente. Altere-o conforme as necessidades do seu negócio.
Role name
Por padrão, AliyunFCServerlessDevsRole vem selecionado. Configure as políticas dessa função conforme necessário.
Ao implantar um aplicativo pelo Serverless App Center, pode ser necessário acessar outros services de cloud. Por exemplo, talvez você precise implantar services e recursos de função do Function Compute, ou criar e atualizar recursos de VPC, NAS e SLS. Nesses casos, conceda ao Function Compute as permissões de acesso necessárias. Primeiro, associe uma função de service RAM ao aplicativo ou ambiente e defina o service confiável como Function Compute. O Serverless App Center usa AssumeRole para acessar seus services de cloud.
Para simplificar a autorização, o Serverless App Center fornece uma função de sistema padrão chamada AliyunFCServerlessDevsRole. Essa função contém as permissões que o Serverless App Center precisa para acessar alguns recursos da cloud. Acesse o console de gerenciamento de funções RAM para visualizar as permissões da função AliyunFCServerlessDevsRole.
Region
Região onde o aplicativo será criado. Ao selecionar um OSS bucket name, escolha apenas um bucket do OSS nesta mesma região.
Function Name
Um nome compatível é gerado automaticamente. Modifique-o de acordo com as necessidades do seu negócio.
Time Zone
O fuso horário da região atual é selecionado automaticamente. Ajuste-o conforme as necessidades do seu negócio.
OSS bucket name
Selecione apenas um bucket que esteja na mesma região do aplicativo.
RAM role ARN
Por padrão, AliyunFcDefaultRole vem selecionado. Altere-o se necessário.
Para simplificar a autorização, o Function Compute fornece uma função de service padrão chamada AliyunFcDefaultRole. Essa função contém as permissões que o Function Compute precisa para acessar certos recursos da cloud. Para saber como criar e vincular a função padrão AliyunFcDefaultRole, consulte Step 1: Activate Function Compute.
NotaSe aparecer uma mensagem informando que o aplicativo selecionado requer permissões adicionais durante a criação, clique em Authorized to go.
Clique em Create and Deploy Default Environment. Quando Deployed for exibido na página de detalhes, a implantação estará concluída.
Na página Applications, clique no nome do aplicativo para acessar a página de detalhes do aplicativo.
-
Na seção Default Environment, clique na aba Environment Details e, em seguida, clique no nome da Function para ir à página de detalhes da Function.
O nome da função encontra-se na seção Function Resources, dentro da área Resource Information na parte inferior da página; por exemplo,
pdf_add_watermark_t36b. -
Clique em Test, insira os parâmetros e teste a função.
Event name: Insira um nome para o evento.
-
Event content: Insira o conteúdo no formato JSON. Este tópico utiliza o seguinte exemplo:
ImportanteAo copiar o exemplo JSON abaixo, remova os comentários que começam com
//. Caso contrário, a validação do JSON falhará.// The following configuration adds the watermark text "DataWorks" to the PDF file 2023-08-15/example.pdf by using the 20-point Helvetica font. For the meaning of each parameter, see the comments that follow. { "pdf_file": "2023-08-15/example.pdf", // The path of the PDF file in the OSS bucket. "mark_text": "DataWorks", // The watermark text. This parameter is required if you want to add a watermark to a PDF file. "pagesize": [595.275590551181, 841.8897637795275], // Optional. The default page size is A4 (21 cm × 29.7 cm), where 1 cm is equal to 28.346456692913385. "font": "Helvetica", // Optional. The default font is Helvetica. For Chinese text, you can use zenhei or microhei. "font_size": 20, // Optional. The default font size is 30. "font_color": [0, 0, 0], // The font color in RGB format. The default color is black. "rotate": 30, // Optional. The default rotation angle is 0. "opacity": 0.1, // Optional. The default opacity is 0.1. A value of 1 indicates that the text is opaque. "density": [198.4251968503937, 283.46456692913387] // The watermark density. The default value is [141.73228346456693, 141.73228346456693], which corresponds to (7 cm, 10 cm). This means the interval between watermarks is 7 cm on the x-axis and 10 cm on the y-axis. }
-
Clique em Test Function. Após a execução bem-sucedida, visualize o arquivo PDF com marca d'água no mesmo diretório do OSS onde está o arquivo de source. Neste exemplo, o arquivo de saída é
example-out.pdf.Visualize os arquivos no OSS:
A lista de arquivos do bucket OSS contém o arquivo de source
example.pdfe o arquivo gerado com marca d'águaexample_out.pdf.
Etapa 2: Configurar um nó do Function Compute
Faça login no console do DataWorks.
Na barra de navegação superior, mude para a região especificada na Etapa 1: Criar um aplicativo do Function Compute.
No painel de navegação à esquerda, escolha Data Development and O&M > Data Studio. Selecione seu workspace para acessar a página Data Development.
Clique no nome do Workflow desejado. No nó General expandido, clique com o botão direito e selecione Function Compute. Na caixa de diálogo exibida, insira um nome para o nó e clique em Determine para criar o nó do Function Compute.
-
Configure os parâmetros do nó do Function Compute.
Parâmetro
Descrição
Select Function
Selecione a função criada na Etapa 1. Para criar uma nova função, consulte Manage functions.
NotaO DataWorks suporta a invocação apenas de funções de evento, e não de funções HTTP. Portanto, utilize uma função de evento para tarefas que precisam ser agendadas periodicamente. Para mais detalhes sobre os tipos de função, consulte Function types.
Select Version or Alias
Escolha a versão ou alias do service a ser usado na invocação da função. A versão padrão é LATEST. Neste exemplo, selecione Default Version.
-
Versão do service
O Function Compute oferece um recurso de versionamento no nível do service que permite publicar uma ou mais versões dele. Ao publicar uma versão, o Function Compute cria um snapshot do service, incluindo sua configuração, código da função e configurações da função. Os gatilhos não são incluídos. Em seguida, o Function Compute atribui automaticamente um número de versão ao snapshot para uso futuro. Para mais informações, consulte Publish a version.
-
Alias da versão
O Function Compute permite criar um alias para uma versão do service. Um alias aponta para uma versão específica, facilitando operações como publicação, rollbacks e lançamentos canário. Um alias não pode existir independentemente de um service ou versão. Ao usar um alias para acessar um service ou função, o Function Compute resolve o alias para a versão correspondente. O chamador não precisa conhecer a versão específica. Para mais informações, consulte Create an alias.
Invocation Method
Selecione and synchronizes para este exemplo. Para mais informações, consulte synchronous invocation e asynchronous invocation.
-
Synchronous invocation: O evento aciona diretamente a função. O Function Compute executa a função e aguarda uma resposta. Após a invocação, o Function Compute retorna o resultado da execução.
-
Asynchronous invocation: O Function Compute coloca a solicitação de evento na fila e retorna uma resposta imediatamente, sem esperar a conclusão da solicitação.
-
Se uma função for demorada, consumir muitos recursos ou contiver lógica propensa a erros, utilize a invocação assíncrona para melhorar a velocidade de resposta e lidar com picos de tráfego de forma confiável.
-
Para tarefas do Function Compute com duração superior a uma hora, utilize a invocação assíncrona.
-
Variable
Estes são os parâmetros para invocar a função. Este exemplo modifica o JSON da seção Event content para adicionar marcas d'água a novos arquivos PDF no OSS diariamente.
// The following configuration adds a watermark to the PDF file at ${current_date}/example.pdf. { "pdf_file": "${current_date}/example.pdf", // The path of the PDF file in the OSS bucket. "mark_text": "DataWorks", // The watermark text. This parameter is required if you want to add a watermark to a PDF file. "pagesize": [595.275590551181, 841.8897637795275], // Optional. The default page size is A4 (21 cm × 29.7 cm), where 1 cm is equal to 28.346456692913385. "font": "Helvetica", // Optional. The default font is Helvetica. For Chinese text, you can use zenhei or microhei. "font_size": 20, // Optional. The default font size is 30. "font_color": [0, 0, 0], // The font color in RGB format. The default color is black. "rotate": 30, // Optional. The default rotation angle is 0. "opacity": 0.1, // Optional. The default opacity is 0.1. A value of 1 indicates that the text is opaque. "density": [198.4251968503937, 283.46456692913387] // The watermark density. The default value is [141.73228346456693, 141.73228346456693], which corresponds to (7 cm, 10 cm). This means the interval between watermarks is 7 cm on the x-axis and 10 cm on the y-axis. }NotaNo valor de
pdf_file, que é${current_date}/example.pdf,${current_date}representa uma variável chamadacurrent_date.Quando o DataWorks agenda uma tarefa, ele substitui
${current_date}pelo valor real. Configure essa variável nos parâmetros de agendamento. Por exemplo,pdf_fileserá2023-08-15/example.pdfquando a tarefa for executada em 15 de agosto de 2023, epdf_fileserá2023-08-16/example.pdfquando executada em 16 de agosto de 2023.Seu sistema de negócios precisa apenas gerar os arquivos PDF no caminho correspondente antes da execução da tarefa agendada. Isso permite adicionar marcas d'água dinamicamente a novos arquivos PDF todos os dias.
Antes de executar a tarefa, envie um arquivo PDF correspondente ao caminho
${current_date}/example.pdfpara o OSS. Por exemplo,2023-08-15/example.pdf.
-
Opcional: Depure o nó do Function Compute. Após configurar o nó, clique no ícone
, especifique um grupo de recursos para a tarefa e atribua uma constante à variável de código para depuração. Isso testa se a lógica de código do nó está correta. Por exemplo, definir current_date=2023-08-15faz com que o Function Compute adicione uma marca d'água ao arquivo2023-08-15/example.pdfno OSS.Configure as propriedades de agendamento periódico do nó. O DataWorks fornece parâmetros de agendamento para permitir a passagem dinâmica de parâmetros em cenários de agendamento. Abra o painel Scheduling à direita e defina os parâmetros na seção Parameter. Este exemplo adiciona um parâmetro chamado
current_datecom o valor$[yyyy-mm-dd], que representa o ano, mês e dia atuais no momento da execução da tarefa. Para mais informações sobre parâmetros de agendamento, consulte Supported formats for scheduling parameters. Para mais detalhes sobre propriedades de agendamento, consulte Task scheduling properties overview.
Etapa 3: Confirmar e implantar o nó
Para executar um nó do Function Compute em um agendamento automático, confirme-o e implante-o no ambiente de produção.
-
Salve e confirme o nó.
Clique nos ícones
e
na barra de ferramentas para salvar e confirmar o nó. Na caixa de diálogo de confirmação, insira uma descrição da alteração e, se necessário, selecione as opções para revisão de código e teste de fumaça.NotaConfigure a propriedade Rerun attribute e os Parent Nodes nas propriedades de agendamento antes de confirmar o nó.
Se a revisão de código estiver ativada, o código de um nó confirmado deve ser aprovado por um revisor antes da implantação. Para mais informações, consulte Code review.
Para garantir que o nó agendado funcione conforme esperado, recomendamos realizar testes de fumaça na tarefa antes de implantá-la. Para mais informações, consulte Smoke testing.
-
Opcional. Implante o nó.
Se estiver usando um workspace no modo padrão, clique em Deploy no canto superior direito para implantar o nó após confirmá-lo. Para mais informações, consulte Workspaces in standard mode e Deploy tasks.
Próximas etapas
Após a confirmação e implantação da tarefa, ela é agendada pelo Operation Center. Gerencie e monitore a tarefa no Operation Center do DataWorks. Para mais informações, consulte Operation Center.
Depois de dominar as etapas básicas para criar e usar um nó do Function Compute, explore as melhores práticas para obter um entendimento mais profundo do nó. Para mais informações, consulte Dynamically add watermarks to PDFs by using a Function Compute node in DataWorks.