Compartilhar via


Criar a primeira função no Azure Arc (versão prévia)

Neste guia de início rápido, você criará um projeto do Azure Functions e o implantará em um aplicativo de funções em execução em um cluster do Kubernetes habilitado para o Azure Arc. Para saber mais, confira Serviço de Aplicativo, Funções e Aplicativos Lógicos no Azure Arc. Esse cenário dá suporte apenas a aplicativos de funções em execução no Linux.

Observação

Atualmente, o suporte para executar funções em um cluster do Kubernetes habilitado para Azure Arc está em versão prévia.

No momento, não há suporte para a publicação de projetos de funções do PowerShell em clusters do Kubernetes habilitados para o Azure Arc. Se você precisar implantar funções do PowerShell em clusters do Kubernetes habilitados para o Azure Arc, crie seu aplicativo de funções em um contêiner.

Se você precisar personalizar o contêiner no qual seu aplicativo de funções é executado, confira Criar suas primeiras funções em contêineres no Azure Arc (versão prévia).

Pré-requisitos

No seu computador local:

Instalação das ferramentas básicas do Azure Functions

A maneira recomendada de instalar o Core Tools depende do sistema operacional do computador de desenvolvimento local.

As etapas a seguir usam um instalador do Windows (MSI) para instalar o Core Tools v4.x. Para obter mais informações sobre outros instaladores baseados em pacote, confira o arquivo leiame do Core Tools.

Baixe e execute o instalador do Core Tools, com base em sua versão do Windows:

Se você usou anteriormente o instalador do Windows (MSI) para instalar o Core Tools no Windows, desinstale a versão antiga em Adicionar ou Remover Programas antes de instalar a versão mais recente.

Criar o ambiente Kubernetes do Serviço de Aplicativo

Antes de começar, você deve criar um ambiente de Kubernetes do Serviço de Aplicativo para um cluster Kubernetes habilitado para Azure Arc

Observação

Ao criar o ambiente, anote o nome do local personalizado e o nome do grupo de recursos que contém o local personalizado. Você pode usá-los para localizar a ID de local personalizada, que será necessária ao criar seu aplicativo de funções no ambiente.

Se você não criou o ambiente, verifique com o administrador do cluster.

Adicionar extensões da CLI do Azure

Inicie o ambiente Bash no Azure Cloud Shell.

Como esses comandos da CLI ainda não fazem parte do conjunto da CLI principal, adicione-os com os comandos a seguir:

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

Criar o projeto de função local

No Azure Functions, um projeto de função é uma unidade de implantação e execução para uma ou mais funções individuais que respondem, cada uma, a um gatilho específico. Todas as funções em um projeto compartilham as configurações locais e de hospedagem. Nesta seção, você cria um projeto de função que contém apenas uma função.

  1. Execute o comando func init da seguinte maneira para criar um projeto de funções em uma pasta chamada LocalFunctionProj com o runtime especificado:

    func init LocalFunctionProj --dotnet
    
  2. Navegue até a pasta do projeto:

    cd LocalFunctionProj
    

    Essa pasta contém vários arquivos do projeto, incluindo arquivos de configuração chamados local.settings.json e host.json. Por padrão, o arquivo local.settings.json é excluído do controle do código-fonte no arquivo .gitignore. Essa exclusão ocorre porque o arquivo pode conter segredos baixados do Azure.

  3. Adicione uma função ao projeto usando o comando a seguir, em que o argumento --name é o nome exclusivo da função (HttpExample) e o argumento --template especifica o gatilho da função (HTTP).

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

Executar a função localmente

  1. Execute a função iniciando o host de runtime local do Azure Functions na pasta LocalFunctionProj.

    func start
    

    Perto do fim da saída, as seguintes linhas precisam ser exibidas:

    Captura de tela da saída da janela do terminal ao executar a função localmente.

    Observação

    Se HttpExample não aparece conforme mostrado acima, é provável que você tenha iniciado o host fora da pasta raiz do projeto. Nesse caso, use CTRL+C para interromper o host, procure a pasta raiz do projeto e execute o comando anterior novamente.

  2. Copie a URL da função HTTP dessa saída para um navegador e acrescente a cadeia de caracteres de consulta ?name=<YOUR_NAME>, fazendo com que a URL completa seja http://localhost:7071/api/HttpExample?name=Functions. O navegador exibirá uma mensagem de resposta que retorna o valor da cadeia de consulta. O terminal em que você iniciou seu projeto também mostra a saída do log conforme você faz solicitações.

  3. Quando terminar, pressione CTRL + C e digite y para interromper o host de funções.

Obter um local personalizado

Para poder criar um aplicativo de funções em um local personalizado, obtenha informações sobre o ambiente.

Obtenha as seguintes informações sobre o local personalizado do administrador do cluster (consulte Criar um local personalizado).

customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"

Obtenha a ID de localização personalizada para a próxima etapa.

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

Criar recursos do Azure

Antes de implantar o código de função no novo ambiente de Kubernetes do Serviço de Aplicativo, você precisa criar mais dois recursos:

  • Uma conta de armazenamento. Embora este artigo crie uma conta de armazenamento, em alguns casos uma conta de armazenamento pode não ser necessária. Para obter mais informações, confira Clusters habilitados para o Azure Arc no artigo de considerações de armazenamento.
  • Um aplicativo de funções, que fornece o contexto para a execução do código de função. O aplicativo de funções é executado no ambiente de Kubernetes do Serviço de Aplicativo e mapeia para seu projeto de função local. Um aplicativo de funções permite que você agrupe funções como uma unidade lógica para facilitar o gerenciamento, a implantação e o compartilhamento de recursos.

Observação

Os aplicativos de funções são executados em um ambiente de Kubernetes do Serviço de Aplicativo em um plano Dedicado (Serviço de Aplicativo). Quando você cria o aplicativo de funções sem um plano existente, o plano correto é criado para você.

Criar Conta de Armazenamento

Use o comando az storage account create para criar uma conta de armazenamento para uso geral no grupo de recursos e região:

az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Observação

Em alguns casos, uma conta de armazenamento pode não ser necessária. Para obter mais informações, confira Clusters habilitados para o Azure Arc no artigo de considerações de armazenamento.

No exemplo anterior, substitua <STORAGE_NAME> por um nome que seja apropriado para você e exclusivo no Armazenamento do Azure. Os nomes devem conter de 3 a 24 caracteres e podem conter somente números e letras minúsculas. Standard_LRS especifica uma conta de uso geral, que é compatível com o Functions. O valor --location é uma região padrão do Azure.

Crie o aplicativo de funções

Execute o comando az functionapp create para criar um novo aplicativo de funções no ambiente.

az functionapp create --resource-group MyResourceGroup --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --functions-version 4 --runtime dotnet 

Neste exemplo, substitua <CUSTOM_LOCATION_ID> pela ID do local personalizado que você especificou para o ambiente de Kubernetes do Serviço de Aplicativo. Além disso, substitua <STORAGE_NAME> pelo nome da conta usada na etapa anterior e substitua <APP_NAME> por um nome globalmente exclusivo que seja apropriado para você.

Implantar o projeto de funções no Azure

Depois de criar com êxito o seu aplicativo de funções no Azure, agora você estará pronto para implantar seu projeto de funções local usando o comando func azure functionapp publish.

Na pasta raiz do projeto, execute este comando func azure functionapp publish:

func azure functionapp publish <APP_NAME>

Nesse exemplo, substitua <APP_NAME> pelo nome de seu aplicativo. Uma implantação bem-sucedida mostra resultados semelhantes à seguinte saída (truncada para simplificar):

...

Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.

...

Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in msdocs-azurefunctions-qs:
    HttpExample - [httpTrigger]
        Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample

Como pode levar algum tempo até que uma implantação completa seja concluída em um cluster do Kubernetes habilitado para o Azure Arc, talvez você queira executar novamente o seguinte comando para verificar as suas funções publicadas:

func azure functionapp list-functions

Invocar a função no Azure

Como a função usa um gatilho HTTP, você a invoca fazendo uma solicitação HTTP para sua URL no navegador ou usando uma ferramenta como curl.

Copie a URL de Invocação completa mostrada na saída do comando de publicação na barra de endereços de um navegador, acrescentando o parâmetro de consulta ?name=Functions. O navegador deverá exibir uma saída semelhante à que foi exibida quando você executou a função localmente.

A saída da função executada no Azure em um navegador

Próximas etapas

Agora que o aplicativo de funções está em execução em um contêiner de um ambiente do Kubernetes do Serviço de Aplicativo habilitado para Azure Arc, você pode conectá-lo ao Armazenamento do Azure Adicionando uma associação de saída do Armazenamento de Filas.