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

Neste tutorial, configuras uma função Python para usar o Armazenamento de Tabelas do Azure como uma ligação de saída. Depois implementas a função no Funções do Azure e usas o Service Connector para ligar a aplicação Funções do Azure ao Table Storage.

Utiliza o Visual Studio Code para completar as seguintes tarefas:

  • Crie um projeto de função em Python.
  • Adicione uma associação de função de saída ao Armazenamento de Tabela.
  • Execute a função localmente.
  • Implemente a função no Azure.
  • Crie uma ligação entre a aplicação Funções do Azure e o Table Storage usando o Service Connector.

O serviço fonte do Service Connector é Funções do Azure e o serviço alvo é Armazenamento de Tabelas do Azure. A ligação de funções utiliza um gatilho HTTP com a tabela de armazenamento como saída. O tipo de autenticação local e na cloud é cadeia de ligação.

Pré-requisitos

Criar o projeto de função

No Visual Studio Code, cria um projeto de função Python com um trigger HTTP.

  1. Pressione F1 para abrir a paleta de comandos, procure pelo comando Funções do Azure: Criar Novo Projeto e selecione-o.
  2. Para selecionar a pasta que irá conter o seu projeto de função, selecione Navegar e crie uma nova pasta ou escolha uma pasta vazia para o espaço de trabalho do projeto. Não escolha uma pasta de projeto que já faça parte de um espaço de trabalho.
  3. Para Selecione um tipo de projeto, selecione Python.
  4. Para Selecione um modelo de programação Python, selecione Model V1.
  5. Para Selecione um interpretador Python para criar um ambiente virtual, selecione Introduza manualmente Python interpretador ou caminho completo e introduza o caminho completo para o seu executável Python.
  6. Para selecionar um modelo para a primeira função do seu projeto, selecione HTTP trigger.
  7. Para Fornecer um nome de função, introduza TableStorageOutputFunc.
  8. Para o nível de Autorização, selecione Anónimo.
  9. Para Selecionar como deseja abrir o seu projeto, selecione Abrir na janela atual.

Para mais informações, consulte Criar e implementar código de função para Azure usando Visual Studio Code.

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

O procedimento seguinte edita os ficheirosfunction.json e local.settings.json do seu projeto para criar uma ligação de saída de tabela para a sua função.

  1. Clique com o botão direito no ficheirofunction.json na sua pasta de funções e selecione Adicionar ligação no menu contextual.
  2. Na paleta de comandos, para Selecionar a direção de associação, selecione saida.
  3. Para Selecionar a associação com direção "out", selecione Armazenamento de Tabelas do Azure.
  4. Para o nome usado para identificar esta ligação no seu código, introduza outMessage.
  5. Para o nome da tabela na conta de armazenamento onde os dados serão escritos, insira testTable.
  6. Para Selecionar a configuração de aplicação com a cadeia de conexão da sua conta de armazenamento a partir de "local.settings.json", selecione Criar nova configuração de aplicação local.
  7. Para Select subscription, selecione a sua subscrição Azure.
  8. Para Selecione um tipo de conta de armazenamento para desenvolvimento, selecione Use Armazenamento do Azure para armazenamento remoto.
  9. Para Selecionar uma conta de armazenamento, escolha a conta de armazenamento do Azure para utilizar como saída.

Verifique a vinculação adicionada

  • Abra o ficheiro TableStorageOutputFunc/function.json e certifique-se de que a ligação de saída da tabela está corretamente adicionada ao ficheiro. Se algum dos valores for diferente, edite-os para os seguintes valores:

        {
          "type": "table",
          "direction": "out",
          "name": "outMessage",
          "tableName": "testtable",
          "connection": "<your-storage-account-name>_STORAGE"
        }
    
  • Abra o ficheirolocal.settings.json e certifique-se de que o seguinte par chave-valor está neste ficheiro: <your-storage-account-name>_STORAGE: <your-storage-account-connection-string>.

Editar o código Python

Abra o ficheiro TableStorageOutputFunc/__init__.py e substitua o seu conteúdo pelo seguinte código:

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

Para executar a função localmente, pressione F5. Se for solicitado a ligar-se a uma conta de armazenamento, selecione uma conta Armazenamento do Azure. Este valor é usado para o runtime do Funções do Azure e pode ser, mas não tem de ser a mesma conta de armazenamento que usas para a saída da função.

Enquanto a função está a correr, verifique se pode escrever na sua tabela de Armazenamento de Tabela clicando com o botão direito na função TableStorageOutputFunc na vista Workspace da barra de Atividade e selecionando Executar Função Agora. Verifique a resposta da função para garantir que contém um rowKey valor que foi escrito na tabela.

Implantar sua função no Azure

Cria uma aplicação Funções do Azure e implementa a tua função no Azure.

  1. No ficheiro function.json do seu projeto, altere o valor da propriedade no connection para AZURE_STORAGETABLE_CONNECTIONSTRING.
  2. Pressione F1 para abrir a paleta de comandos, procurar e selecionar o comando Funções do Azure: Implementar para Aplicação de Função.
  3. Para Select subscription, selecione a sua subscrição Azure.
  4. Para Selecionar uma aplicação de função, selecione Criar nova aplicação de função.
  5. Para Seleciona uma localização para novos recursos, seleciona uma região Azure para a tua aplicação de Funções do Azure, preferencialmente da mesma região da tua conta de Armazenamento.
  6. Para introduzir um nome para a nova aplicação de função, pode inserir o mesmo nome da sua função local, TableStorageOutputFunc.
  7. Para selecionar uma stack de execução, selecionar Python 3.10.
  8. Para selecionar o tipo de autenticação de recurso, selecione Segredos.

Important

O fluxo de autenticação de cadeia de ligação usando segredos requer um elevado grau de confiança na aplicação e acarreta riscos que não estão presentes noutros fluxos. Você deve usar esse fluxo somente quando fluxos mais seguros, como identidades gerenciadas, não forem viáveis.

Criar uma conexão usando o Service Connector

Depois de criares a aplicação Functions, podes usar o Service Connector para ligar a app à tua tabela de Armazenamento de Tabelas, para que a tua app possa facilmente escrever a saída na tua conta de armazenamento. O comando seguinte cria um recurso Service Connector que configura a AZURE_STORAGETABLE_CONNECTIONSTRING variável nas Definições da Aplicação da função.

A ligação de funções consome esta configuração da aplicação para se ligar à conta de armazenamento, de modo a que a função possa escrever na tabela de armazenamento. Para mais informações, consulte Como o Service Connector ajuda Funções do Azure a ligar-se aos serviços.

Para criar a ligação, pode executar o seguinte comando CLI do Azure em Visual Studio Code, ou usar Azure Cloud Shell ou local CLI do Azure. Substitua os valores provisórios da seguinte forma:

  • <function-resource-id>:
    /subscriptions/<your-subscription>/resourceGroups/<function-resource-group>/providers/Microsoft.Web/sites/<function-name>

  • <storage-resource-id>:
    /subscriptions/<your-subscription>/resourceGroups/<storage-resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/tableServices/default

az functionapp connection create storage-table --source-id "<function-resource-id>" --target-id "<storage-resource-id>" --secret

Resolver problemas

Se aparecer erros relacionados com o host de armazenamento, como No such host is known (<account-name>.table.core.windows.net:443), certifique-se de que o cadeia de ligação usado para ligar ao Armazenamento de Tabelas contém o endpoint da tabela. Se não, vá à página do Armazenamento do Azure, copie a cadeia de conexão de Chaves de Acesso em Segurança + redes, e substitua o valor.

Se este erro ocorrer ao correr localmente, verifique o ficheirolocal.settings.json . Se o erro ocorrer quando implementa a sua função no Azure, verifique as Definições da aplicação Functions.

Limpar recursos

Se já não quiser os recursos do Azure que criou para este tutorial, pode apagá-los.

  • No portal Azure, abra a aplicação Funções ou o recurso da conta de Armazenamento e selecione Delete na barra de menu superior. Introduza o nome do recurso e selecione Eliminar.

  • No CLI do Azure, execute um ou ambos os comandos seguintes, substituindo os marcadores de posição pela sua própria informação.

    az functionapp delete --name <functionapp-name> --resource-group <functionapp-resource-group>
    az storage account delete --name <storageaccount-name> --resource-group <storageaccount-resource-group>