Partilhar via


Tutorial: Função Python com o Armazenamento de Blobs do Azure como entrada

Neste tutorial, você aprenderá a configurar uma função Python com o armazenamento de Blob do Azure como entrada concluindo as seguintes tarefas:

  • Use o Visual Studio Code para criar um projeto de função Python.
  • Altere os códigos para adicionar a vinculação da função de entrada do blob 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 o Blob 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 Azure Storage Blob
Vinculação de função Gatilho HTTP, Blob de armazenamento como entrada
Tipo de autenticação de projeto local Cadeia de Ligação
Tipo de autenticação de função de nuvem Identidade gerenciada atribuída pelo sistema

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 BlobStorageInputFunc.
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 ligação de entrada de Armazenamento de Blob

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 in A ligação é uma ligação de entrada.
Selecione a vinculação com a direção... Azure Blob Storage A associação é uma associação de blob de Armazenamento do Azure.
O nome usado para identificar essa associação em seu código inputBlob Nome que identifica o parâmetro de vinculação referenciado em seu código.
O caminho dentro da sua conta de armazenamento a partir do qual o blob será lido testcontainer/test.txt O caminho de blob que sua função leu como entrada. Prepare um arquivo chamado test.txt, com a Hello, World! como o conteúdo do arquivo. Crie um contêiner chamado testcontainer , e carregue o arquivo para o contêiner.
Selecione a configuração de "local.setting.json" Create new local app settings Selecione a Conta de armazenamento que sua função lê como entrada. 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 BlobStorageInputFunc/function.json arquivo, verifique se uma nova associação com type: blob e direction: in 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 BlobStorageInputFunc/__init__.py pelo arquivo Python aqui.

import logging
import azure.functions as func

def main(req: func.HttpRequest, inputBlob: bytes) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    return func.HttpResponse('The triggered function executed successfully. And read blob content: {}'.format(inputBlob))

Executar a função localmente

Siga o tutorial para executar a função localmente e verificar a entrada de blob.

  1. Selecione a conta de armazenamento que você usou ao criar o recurso do Azure Function se for solicitado a se conectar ao Armazenamento. Ele é para uso interno do tempo de execução do Azure Function e não é necessariamente o mesmo que você usa para entrada.
  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 ler o blob, clique Execute Function Now... com o botão direito do mouse na função no Visual Studio Code WORKSPACE e verifique a resposta da função. A mensagem de resposta deve conter o conteúdo do arquivo de blob.

Criar uma conexão usando o Service Connector

Você acabou de executar o projeto e verificou a função localmente, e seu projeto local se conecta ao seu blob de armazenamento usando uma cadeia de conexão.

Agora você aprenderá como configurar a conexão entre a Função do Azure e o Armazenamento de Blobs do Azure, para que sua função possa ler o blob depois de ser implantada na nuvem. No ambiente de nuvem, demonstramos como autenticar usando uma identidade gerenciada atribuída ao sistema.

  1. Abra o function.json arquivo em seu projeto local, altere o connection valor da propriedade em bindings para ser MyBlobInputConnection.
  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-blob --source-id "<your-function-resource-id>" --target-id "<your-storage-blob-resource-id>" --system-identity --customized-keys AZURE_STORAGEBLOB_RESOURCEENDPOINT=MyBlobInputConnection__serviceUri
  • --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}/blobServices/default

Você criou uma conexão entre o Azure Function e o Armazenamento de Blobs do Azure usando o Service Connector, com uma identidade gerenciada atribuída ao sistema.

O Service Connector configurou uma MyBlobInputConnection__serviceUri variável nas configurações do aplicativo da função usada pelo tempo de execução da vinculação de função para se conectar ao armazenamento, para que a função possa ler dados do armazenamento de blob. 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 entrada do blob de armazenamento funciona.

  1. Siga o tutorial para implantar sua função no Azure.
  2. Para verificar se a função pode ler o blob, clique Execute Function Now... com o botão direito do mouse na função na visualização Visual Studio Code RESOURCES e verifique a resposta da função. A mensagem de resposta deve conter o conteúdo do arquivo de blob.

Resolver problemas

Se houver erros relacionados ao host de armazenamento, como No such host is known (<account-name>.blob.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 de blob ou não. Caso contrário, vá para o Armazenamento do Azure no portal do Azure, copie a cadeia de conexão da folha e substitua Access keys os valores.

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

Se o erro acontecer quando você implantar 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.