Tutorial: Função do Python com o Armazenamento de Filas do Azure como gatilho

Neste tutorial, você aprenderá a configurar uma função do Python com a fila de armazenamento como gatilho concluindo as tarefas a seguir.

  • Usar o Visual Studio Code para criar um projeto de funções do Python.
  • Usar o Visual Studio Code para executar a função localmente.
  • Usar a CLI do Azure para criar uma conexão entre a função do Azure e a fila de armazenamento com o conector de serviço.
  • Usar o Visual Studio para implantar sua função.

Uma visão geral dos componentes do projeto de função neste tutorial:

Componente do projeto Seleção/solução
Serviço de origem Azure Function
Serviço de Destino Fila de Armazenamento do Azure
Associação de função Fila de armazenamento como gatilho
Tipo de autenticação de projeto local Cadeia de conexão
Tipo de autenticação de função de nuvem Cadeia de conexão

Aviso

A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento exige um grau muito alto de confiança no aplicativo e traz riscos que não estão presentes em outros fluxos. Você só deve usar esse fluxo quando outros fluxos mais seguros, como identidades gerenciadas, não forem viáveis.

Pré-requisitos

Criar um projeto de funções do Python

Siga o tutorial para criar um projeto local do Azure Functions e forneça as seguintes informações nos prompts:

Prompt Seleção
Selecionar um idioma Escolha Python. (modelo de linguagem de programação v1)
Selecione o interpretador do Python para criar um ambiente virtual Escolha seu interpretador do Python preferido. Se uma opção não for mostrada, digite o caminho completo no binário do Python.
Selecione um modelo para a primeira função do projeto Escolha Azure Queue Storage trigger.
Forneça um nome de função Digite QueueStorageTriggerFunc.
Selecione a configuração a partir de "local.settings.json" Escolha Create new local app settings, que permite selecionar sua conta de armazenamento e informar o nome da fila que funciona como o gatilho.

Você criou um projeto de função Python com o Armazenamento do Microsoft Azure Queue como gatilho. O projeto local se conecta ao Armazenamento do Microsoft Azure por meio da cadeia de conexão salva no arquivo local.settings.json. Por fim, a função main do arquivo __init__.py da função pode consumir a cadeia de conexão com a ajuda da associação de função definida no arquivo function.json.

Executar a função localmente

Siga o tutorial para executar a função localmente e verificar o gatilho.

  1. Selecione a conta de armazenamento escolhida ao criar o recurso de função do Azure caso precise se conectar ao armazenamento. Esse valor é usado para o runtime da função do Azure e não é necessariamente o mesmo que a conta de armazenamento usada para o gatilho.
  2. Para iniciar a função localmente, pressione <kbd>F5</kbd> ou selecione o ícone Executar e Depurar na barra de atividades do lado esquerdo.
  3. Para verificar se o gatilho funciona corretamente, mantenha a função em execução localmente e abra o painel Fila de Armazenamento no portal do Azure, selecione Adicionar mensagem e forneça uma mensagem de teste. Você verá que a função é disparada e processada como um item de fila no terminal do Visual Studio Code.

Criar uma conexão usando o conector de serviço

Na última etapa, você verificou o projeto de funções localmente. Agora você aprenderá a configurar a conexão entre a função do Azure e a tabela do Armazenamento do Microsoft Azure na nuvem, para que a função possa ser disparada pela fila de armazenamento depois de ser implantada na nuvem.

  1. Abra o arquivo function.json no projeto local e altere o valor da propriedade connection em bindings para AZURE_STORAGEQUEUE_CONNECTIONSTRING.
  2. Execute o comando da CLI do Azure a seguir para criar uma conexão entre a função do Azure e a conta de armazenamento do Azure.
az functionapp connection create storage-queue --source-id "<your-function-resource-id>" --target-id "<your-storage-queue-resource-id>" --secret
  • Formato de --source-id: /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • Formato de --target-id: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/queueServices/default

Esta etapa criará um recurso do conector de serviço que configura uma variável AZURE_STORAGEQUEUE_CONNECTIONSTRING nas configurações de aplicativo da função. O runtime de associação de função a usará para se conectar ao armazenamento, para que a função possa aceitar gatilhos da fila de armazenamento. Para obter mais informações, acesse Como o conector de serviço ajuda o Azure Functions a se conectar aos serviços.

Implantar sua função no Azure

Agora você pode implantar a função no Azure e verificar se o gatilho da fila de armazenamento funciona.

  1. Siga este tutorial do Azure Functions para implantar a função no Azure.
  2. Abra o painel Fila de Armazenamento no portal do Azure, selecione Adicionar mensagem e forneça uma mensagem de teste. Você verá que a função é disparada e processada como um item de fila nos logs da função.

Solucionar problemas

Se houver erros relacionados ao host de armazenamento, como No such host is known (<acount-name>.queue.core.windows.net:443), verifique se a cadeia de conexão usada para se conectar ao Armazenamento do Microsoft Azure contém o ponto de extremidade da fila ou não. Caso contrário, acesse o Armazenamento do Microsoft Azure no portal do Azure, copie a sequência de conexão do painel Access keys e substitua os valores.

Se esse erro acontecer quando você iniciar o projeto localmente, verifique o arquivo local.settings.json.

Se esse erro acontecer quando você implantar sua função na nuvem (nesse caso, a implantação da função costuma falhar em Syncing triggers), verifique as configurações de aplicativo da função.

Limpar os recursos

Se você não quiser continuar usando esse projeto, exclua o recurso Aplicativo de Funções criado anteriormente.

  1. No portal do Azure, abra o recurso Aplicativo de Funções e selecione Excluir.
  2. Insira o nome do aplicativo e selecione Excluir para confirmar.

Próximas etapas

Leia os artigos abaixo para saber mais sobre os conceitos do conector de serviço e como ele ajuda o Azure Functions a se conectar aos serviços.