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:
- SDK .NET
- CLI do Azure versão 2.4 ou posterior
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:
- v4.x - Windows de 64 bits (recomendado. A depuração do Visual Studio Code requer 64 bits).
- v4.x – Windows 32 bits
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.
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
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.
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
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:
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.
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 sejahttp://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.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.
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.