Tutorial: função Python com o Armazenamento de Tabelas do Azure como saída

Neste tutorial, você aprenderá a configurar uma função do Python com a Tabela de Armazenamento como saída concluindo as tarefas a seguir.

  • Use o Visual Studio Code para criar um projeto de função do Python.
  • Adicione uma associação de função de saída da Tabela de Armazenamento.
  • Use o Visual Studio Code para executar a função localmente.
  • Use a CLI do Azure para criar uma conexão entre a Função do Azure e a Tabela de Armazenamento com o Service Connector.
  • Use o Visual Studio para implantar a 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 Tabela de armazenamento do Azure
Associação de função Gatilho HTTP, Tabela de Armazenamento como Saída
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 aplicativo 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 HTTP trigger.
Forneça um nome de função Digite TableStorageOutputFunc.
Nível de autorização Escolha Anonymous, o que permite que qualquer pessoa chame o ponto de extremidade da função. 

Você criou um projeto de função Python com um gatilho HTTP.

Adicionar uma associação de saída da tabela de armazenamento

Os atributos de associação são definidos no arquivo function.json para uma determinada função. Para criar uma associação, clique com o botão direito do mouse (Ctrl+clique no macOS) no arquivo function.json na pasta da função e escolha Adicionar associação.... Siga os prompts para definir as seguintes propriedades de associação para a nova associação:

Prompt Valor Descrição
Selecionar direção de associação out A associação é uma associação de saída.
Selecionar associação com direção... Azure Table Storage A associação é uma associação de tabela do Armazenamento do Microsoft Azure.
O nome usado para identificar essa associação em seu código outMessage Nome que identifica o parâmetro de associação referenciado em seu código.
Nome da tabela na conta de armazenamento na qual os dados serão gravados testTable O nome da tabela que a função grava como saída. Crie uma tabela de nome testTable em sua conta de armazenamento se ela ainda não existir.
Selecione a configuração de "local.setting.json" Create new local app settings Selecione a Conta de Armazenamento que a função grava como saída. O Visual Studio Code recupera sua cadeia de conexão para a conexão de projeto local.

Para verificar se a associação foi adicionada com êxito:

  1. Abra o arquivo TableStorageOutputFunc/function.json, verifique se uma nova associação type: table direction: out foi adicionada a esse arquivo.
  2. Abra o arquivo local.settings.json, verifique se um novo par chave-valor <your-storage-account-name>_STORAGE: <your-storage-account-connection-string> que contém a cadeia de conexão da conta de armazenamento foi adicionado a esse arquivo.

Depois que a associação for adicionada, atualize os códigos de função para consumir a associação substituindo TableStorageOutputFunc/__init__.py pelo arquivo Python aqui.

import logging
import uuid
import json
import azure.functions as func

def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:

    rowKey = str(uuid.uuid4())
    data = {
        "Name": "Output binding message",
        "PartitionKey": "message",
        "RowKey": rowKey
    }

    outMessage.set(json.dumps(data))
    return func.HttpResponse(f"Message created with the rowKey: {rowKey}")

Executar a função localmente

Siga o tutorial para executar a função localmente e verificar a saída da tabela.

  1. Selecione a Conta de Armazenamento que você escolheu ao criar o recurso de função do Azure se for necessário se conectar a uma conta de armazenamento. Esse valor é usado no runtime do Azure Functions. Não é necessariamente a mesma conta de armazenamento que você usa para a saída.
  2. Para iniciar a função localmente, pressione <kbd>F5</kbd>ou selecione o íconeExecutar e Depurar na barra Atividade do lado esquerdo.
  3. Para verificar se a função pode gravar na tabela, clique com o botão direito do mouse em Execute Function Now... na função na exibiçãoWORKSPACE do Visual Studio Code e verifique a resposta da função. A mensagem de resposta deve conter a rowKey que foi gravada na tabela.

Criar uma conexão usando o Service Connector

Na última etapa, você verificou o projeto de função localmente. Agora, você aprenderá a configurar a conexão entre a Função do Azure e a Tabela de Armazenamento do Microsoft Azure na nuvem, para que a função possa gravar no blob de armazenamento depois de ser implantada na nuvem.

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

Você criou um recurso do Service Connector que configura uma variável AZURE_STORAGETABLE_CONNECTIONSTRING nas Configurações de Aplicativo da função. Essa configuração de aplicativo será consumida pela associação de função para se conectar ao armazenamento e permitir que a função grave na tabela de armazenamento. Você pode saber mais sobre como o Service Connector 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 a associação de saída da tabela de armazenamento funciona.

  1. Siga este tutorial do Azure Functions para implantar a função no Azure.
  2. Para verificar se a função pode gravar na tabela, clique com o botão direito do mouse em Execute Function Now... na função na exibiçãoRECURSOS do Visual Studio Code e verifique a resposta da função. A mensagem de resposta deve conter o rowKey que a função acabou de gravar na tabela.

Solucionar problemas

Se houver erros relacionados ao host de armazenamento, por exemplo, No such host is known (<acount-name>.table.core.windows.net:443), você precisará verificar se a cadeia de conexão usada para se conectar ao Armazenamento do Microsoft Azure contém o ponto de extremidade da tabela ou não. Caso contrário, vá para o portal do Armazenamento do Microsoft Azure, copie a cadeia de conexão da folha Access keys e substitua os valores.

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

Se isso acontecer quando você implantar a função na nuvem (nesse caso, a implantação da função geralmente 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 Service Connector e como ele ajuda o Azure Functions a se conectar a outros serviços de nuvem.