Compartilhar 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 Blobs do Azure como entrada concluindo as seguintes tarefas:

  • Use o Visual Studio Code para criar um projeto de função do Python.
  • Altere os códigos para adicionar a associação de função de entrada de 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.
  • Usar 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 Azure Function
Serviço de Destino O Azure Storage Blob
Associação de função Gatilho HTTP, Blob de Armazenamento como Entrada
Tipo de Autenticação de Projeto Local Cadeia de conexão
Tipo de autenticação de função de nuvem Identidade gerenciada atribuída pelo sistema

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 BlobStorageInputFunc.
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 entrada do Armazenamento de Blobs

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 in A associação é uma associação de entrada.
Selecionar associação com direção... Azure Blob Storage A associação é uma associação de blob do Armazenamento do Microsoft Azure.
O nome usado para identificar essa associação em seu código inputBlob Nome que identifica o parâmetro de associação referenciado em seu código.
O caminho dentro de sua conta de armazenamento da qual o blob será lido testcontainer/test.txt O caminho do blob que sua função lê como entrada. Prepare um arquivo chamado test.txt, com um Hello, World! como o conteúdo do arquivo. Crie um contêiner chamado testcontainer , e carregue o arquivo no 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. 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 BlobStorageInputFunc/function.json, verifique se uma nova associação com type: blob e direction: in 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 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 de função do Azure se for solicitado que você se conecte ao Armazenamento. É para uso interno do Azure Function Runtime e não é necessariamente o mesmo com o 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 com o botão Exucute Function Now... direito do mouse na função no WORKSPACE do Visual Studio Code e verifique a resposta da função. A mensagem de resposta deve conter o conteúdo em seu arquivo de blob.

Criar uma conexão usando o conector de serviço

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

Agora você aprenderá a configurar a conexão entre o Azure Function 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 pelo sistema.

  1. Abra o arquivo function.json no projeto local e altere o valor da propriedade connection em bindings para MyBlobInputConnection.
  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-blob --source-id "<your-function-resource-id>" --target-id "<your-storage-blob-resource-id>" --system-identity --customized-keys AZURE_STORAGEBLOB_RESOURCEENDPOINT=MyBlobInputConnection__serviceUri
  • Formato --source-id: /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • Formato de --target-id: /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 pelo sistema.

O Service Connector configurou uma variável MyBlobInputConnection__serviceUri nas configurações de aplicativo da função usadas pelo runtime de associação de função para se conectar ao armazenamento, de modo que a função possa ler dados do armazenamento de blobs. 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 sua função no Azure e verificar se a associação de entrada de 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 com o botão direito do mouse Exucute Function Now... na função no Visual Studio Code RECURSOS exibir e verificar a resposta da função. A mensagem de resposta deve conter o conteúdo em seu arquivo de blob.

Solucionar problemas

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

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

Se o erro ocorrer quando você implantar sua função na nuvem (nesse caso, a implantação da função geralmente falhará em Syncing triggers), verifique as Configurações do Aplicativo da sua 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.