Partilhar via


Desenvolvendo aplicativos Node.js sem servidor com o Azure Functions

O Azure Functions fornece uma poderosa infraestrutura sem servidor, permitindo-lhe desenvolver endereços de funcionalidades HTTP escaláveis e sob demanda com facilidade. Usando JavaScript ou TypeScript, você pode criar aplicativos sem servidor que respondem a vários eventos, permitindo que você se concentre em escrever código sem se preocupar em gerenciar servidores. Este guia ajuda você a começar a desenvolver aplicativos Node.js sem servidor usando o Azure Functions, integrando-se perfeitamente com outros serviços do Azure.

O que é um recurso de função?

Um recurso do Azure Function é uma unidade lógica para todas as funções relacionadas em um único local geográfico do Azure. O recurso pode conter uma única função ou muitas funções, que podem ser independentes umas das outras ou relacionadas com ligações de entrada ou saída. Você pode selecionar entre muitas funções comuns ou criar a sua própria.

As configurações de recursos de função incluem configurações típicas sem servidor, incluindo variáveis de ambiente, autenticação, registro em log e CORS.

Funções duráveis e com estado

As Funções Duráveis mantêm o estado ou gerenciam funções de longa execução no Azure. Crie sua primeira função durável em JavaScript.

As aplicações Web estáticas incluem funções

Ao desenvolver um aplicativo cliente front-end estático (como Angular, React ou Vue), que também precisa de APIs sem servidor, use aplicativos Web estáticos com funções para agrupar ambos.

Proxy do aplicativo cliente para a API

Se você pretende implantar sua API com seu aplicativo Web estático, não precisa fazer proxy das chamadas de API do aplicativo cliente. O proxy é estabelecido para você quando você implanta o aplicativo Azure Functions como um aplicativo gerenciado.

Quando desenvolve localmente com uma Static Web App e com Azure Functions, a CLI do Azure Static Web Apps fornece o proxy local.

Configurações de segurança comuns que você precisa definir para sua Função do Azure

As seguintes configurações comuns devem ser definidas para manter sua Função do Azure segura:

  • Autenticação e autorização:
    • Use o Microsoft Entra ID (anteriormente Azure Active Directory) para autenticação robusta. Configura a tua aplicação de funções para exigir tokens OAuth2 para cargas de trabalho de produção.
    • Evite usar teclas de função para aplicações sensíveis. Em vez disso, integre com o ID do Microsoft Entra ou valide tokens JWT no seu código de função.
    • Use identidades geridas para autenticar a sua aplicação de funções com outros recursos do Azure, garantindo que cada função recebe apenas o acesso necessário.
  • Definições de configuração:
    • Definições de aplicação - cria definições de aplicação para definições que não afetem a segurança.
    • Segredos e chaves - para quaisquer definições que afetem a segurança, use esta abordagem em níveis:
      1. Primeiro, utilize Microsoft Entra ID para autenticação onde for suportado.
      2. Para integrações que não suportam o Entra ID, armazene os segredos no Azure Key Vault e extraia essas definições do seu Key Vault.
      3. Nunca incorpore segredos em código ou ficheiros de configuração.
    • Para outras definições de segurança da plataforma, veja Securing Azure Functions.
  • Segurança de rede:
    • CORS - configure seus domínios de cliente. Não use *, indicando todos os domínios.
    • Integração de rede virtual – utilize endpoints privados ou integração de rede virtual para limitar a exposição da rede e restringir o tráfego de entrada proveniente de fontes confiáveis.
  • HTTPS e encriptação:
    • Configuração TLS/SSL para HTTPS - por padrão, sua API aceita solicitações HTTP e HTTPS. Habilite HTTPS somente nas configurações TLS/SSL. Como seu aplicativo Function está hospedado em um subdomínio seguro, você pode usá-lo imediatamente (com https) e atrasar a compra de um nome de domínio e o uso de um certificado para o domínio até estar pronto.
  • Implementação e monitorização:
    • Slots de implantação - crie um slot de implantação, como stage or preflight e envie por push para esse slot. Troque este slot de estágio para a produção quando estiver pronto. Não adquira o hábito de empurrar manualmente para a produção. Sua base de código deve ser capaz de indicar a versão ou confirmação que está em um slot.
    • Ative o Application Insights para telemetria em tempo real, alertas e deteção de anomalias para monitorizar as suas funções e auditar registos em busca de atividades suspeitas.

Para orientações abrangentes sobre segurança, consulte Securing Azure Functions.

Opções de alojamento para Azure Functions

Pode alojar Azure Functions de diferentes formas, dependendo das suas necessidades:

Planos de alojamento de recursos Azure Functions

Quando cria um recurso Azure Functions, pode escolher entre estes planos de alojamento:

  • Plano de consumo: Pague apenas pelo tempo em que as suas funções funcionam com escalabilidade automática.
  • Plano Flex Consumption: Proporciona controlo melhorado com instâncias sempre prontas para reduzir arranques a frio, integração com redes virtuais e tamanhos de instância configuráveis (512 MB a 4 GB). Este plano é recomendado para novas cargas de trabalho baseadas em Linux que requerem funcionalidades de segurança e desempenho empresarial. Note que este plano utiliza faturação baseada em execução, semelhante ao plano de Consumo, mas com custos adicionais para funcionalidades como instâncias sempre prontas.
  • Plano premium: Oferece desempenho melhorado com instâncias pré-aquecidas, conectividade de rede virtual e durações de execução mais longas.
  • Plano dedicado (App Service): Executar funções em máquinas virtuais dedicadas para custos previsíveis e controlo total sobre o ambiente de execução.

Para mais informações sobre como escolher o plano de alojamento adequado, consulte as opções de alojamento Azure Functions.

Azure Container Apps resource

Em alternativa, pode implementar o Azure Functions num recurso Azure Container Apps como workloads containerizados. Esta opção oferece controlo total sobre o ambiente do contentor e é ideal quando precisa de dependências personalizadas, processos de longa duração ou pretende combinar funções com outros microserviços containerizados. Consulte Aplicações de Contêiner do Azure com hospedagem de Funções do Azure para obter mais informações.

Pré-requisitos para desenvolver o Azure Functions

  • Node.js LTS - Utilize a versão mais recente de Suporte a Longo Prazo (LTS) para obter as melhores atualizações de compatibilidade e segurança com o Azure Functions.
  • Azure Functions Core Tools - Use a versão mais recente para desenvolvimento local e debug.

Uma função JavaScript simples para solicitações HTTP

Uma função é uma função assíncrona exportada com informações de solicitação e contexto. A captura de tela parcial a seguir do portal do Azure mostra o código da função.

import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";

export async function status(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    context.log(`Http function processed request for url "${request.url}"`);

    return {
        status: 200,
        jsonBody: {
            env: process.env
        }
    };
};

app.http('status', {
    route: "status",
    methods: ['GET'],
    authLevel: 'anonymous',
    handler: status
});

Desenvolva funções localmente com o Visual Studio Code e extensões

Crie sua primeira função usando o Visual Studio Code. O Visual Studio Code simplifica muitos dos detalhes com a extensão Azure Functions.

Esta extensão ajuda-o a criar funções JavaScript e TypeScript com modelos comuns.

Integrar noutros serviços do Azure

As funções sem servidor removem grande parte da configuração e do gerenciamento do servidor para que você possa se concentrar apenas no código de que precisa.

  • Funções low-code: Com o Azure Functions, crias funções desencadeadas por outros serviços Azure ou que são enviadas para outros serviços Azure usando trigger bindings. O modelo de programação v4 regista todos os gatilhos e bindings diretamente no seu código, tornando o tipo de configuração seguro e intuitivo.
  • Funções de código alto: Para mais controlo, use os SDKs do Azure para coordenar e controlar outros serviços Azure. Use identidades geridas para autenticar de forma segura as suas funções com outros recursos Azure sem gerir credenciais.