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
- Instale o Visual Studio Code em uma das plataformas compatíveis.
- CLI do Azure. Você pode usá-la no Azure Cloud Shell ou instalá-la localmente.
- Uma Conta de Armazenamento do Microsoft Azure e um blob de Armazenamento. Se você não tiver uma conta de Armazenamento do Microsoft Azure, crie uma.
- Este guia pressupõe que você conhece os conceitos apresentados no guia do desenvolvedor do Azure Functions e como se conectar aos serviços no 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 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,
- Abra o arquivo
BlobStorageInputFunc/function.json
, verifique se uma nova associação comtype: blob
edirection: in
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 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.
- 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.
- Para iniciar a função localmente, pressione
<kbd>
F5</kbd>
ou selecione o ícone Executar e Depurar na barra de atividades do lado esquerdo. - 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.
- Abra o arquivo
function.json
no projeto local e altere o valor da propriedadeconnection
embindings
paraMyBlobInputConnection
. - 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.
- Siga o tutorial para implantar sua função no Azure.
- 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.
- 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.