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
- Instale o Visual Studio Code em uma das plataformas compatíveis.
- A CLI do Azure. Você pode usá-la no Azure Cloud Shell ou instalá-la localmente.
- Uma conta de Armazenamento do Microsoft Azure e uma tabela de Armazenamento. Se você não possuir uma conta de armazenamento, crie uma.
- O guia pressupõe que você conhece os conceitos apresentados no guia do desenvolvedor do Functions e em Como se conectar aos serviços no Azure Functions.
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:
- Abra o arquivo
TableStorageOutputFunc/function.json
, verifique se uma nova associaçãotype: table
direction: out
foi adicionada a esse arquivo. - 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.
- 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.
- Para iniciar a função localmente, pressione
<kbd>
F5</kbd>
ou selecione o íconeExecutar e Depurar na barra Atividade do lado esquerdo. - 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 arowKey
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.
- Abra o arquivo
function.json
no projeto local, altere o valor da propriedadeconnection
embindings
paraAZURE_STORAGETABLE_CONNECTIONSTRING
. - 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.
- Siga este tutorial do Azure Functions para implantar a função no Azure.
- 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 orowKey
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.
- No portal do Azure, abra o recurso Aplicativo de Funções e selecione Excluir.
- 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.