Partilhar via


Tutorial: Configurar uma função Python com a saída do Armazenamento de Tabela do Azure

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

  • Use o Visual Studio Code para criar um projeto de função Python.
  • Adicione uma ligaçã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 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 Função do Azure
Serviço de Destino Tabela de Armazenamento do Azure
Vinculação de função Gatilho HTTP, Tabela de armazenamento como saída
Tipo de autenticação de projeto local Cadeia de Ligação
Tipo de autenticação de função de nuvem Cadeia de Ligação

Aviso

A Microsoft recomenda que você use o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento requer um grau muito alto de confiança no aplicativo e acarreta 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ção Python

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

Pedido Seleção
Selecione um idioma Selecione Python. (modelo de linguagem de programação v1)
Selecione um interpretador Python para criar um ambiente virtual Escolha o seu interpretador Python preferido. Se uma opção não for mostrada, digite o caminho completo para o binário do Python.
Selecione um modelo para a primeira função do seu projeto Selecione HTTP trigger.
Fornecer um nome de função Introduzir TableStorageOutputFunc.
Nível de autorização Escolha Anonymous, que permite que qualquer pessoa chame seu ponto de extremidade de função. 

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

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

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

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

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

  1. Abra o TableStorageOutputFunc/function.json arquivo, verifique se uma nova associação com type: table e direction: out foi adicionada a este arquivo.
  2. Abra o local.settings.json arquivo, verifique se um novo par <your-storage-account-name>_STORAGE: <your-storage-account-connection-string> chave-valor 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 seus códigos de função para consumir a vinculaçã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 escolhida ao criar o recurso Função do Azure se lhe for pedido para ligar a uma conta de armazenamento. Esse valor é usado para o tempo de execução do Azure Function. 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 ícone Executar e Depurar na barra de atividades do lado esquerdo.
  3. Para verificar se a função pode gravar em sua tabela, clique Execute Function Now... com o botão direito do mouse na função no modo de exibição Visual Studio Code WORKSPACE e verifique a resposta da função. A mensagem de resposta deve conter o rowKey que foi escrito na tabela.

Criar uma conexão usando o Service Connector

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

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

Você criou um recurso do Service Connector que configura uma AZURE_STORAGETABLE_CONNECTIONSTRING variável nas Configurações do aplicativo da função. Essa configuração do aplicativo será consumida pela associação de função para se conectar ao armazenamento, para que a função possa gravar na tabela de armazenamento. Você pode saber mais sobre como o Service Connector ajuda o Azure Functions a se conectar a serviços.

Implantar sua função no Azure

Agora você pode implantar sua função no Azure e verificar se a vinculação de saída da tabela de armazenamento funciona.

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

Resolver problemas

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

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

Se isso acontecer quando você implanta sua função na nuvem (neste caso, a implantação da função geralmente falha), Syncing triggers verifique as Configurações do aplicativo da sua função.

Clean up resources (Limpar recursos)

Se você não vai continuar a usar este projeto, exclua o recurso Function App que você criou anteriormente.

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

Próximos passos

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.