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
- Instale o Visual Studio Code numa das plataformas suportadas.
- CLI do Azure. Você pode usá-lo no Azure Cloud Shell ou instalá-lo localmente.
- Uma Conta de Armazenamento do Azure e um blob de Armazenamento. Se você não tiver uma conta de Armazenamento do Azure, crie uma.
- Este guia pressupõe que você conheça os conceitos apresentados no guia do desenvolvedor do Functions e como se conectar a serviços no Functions.
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,
- Abra o
BlobStorageInputFunc/function.json
arquivo, verifique se uma nova associação comtype: blob
edirection: in
foi adicionada a este arquivo. - 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.
- 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.
- 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
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.
- Abra o
function.json
arquivo em seu projeto local, altere oconnection
valor da propriedade embindings
para serMyBlobInputConnection
. - 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.
- Siga o tutorial para implantar sua função no Azure.
- 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.
- No portal do Azure, abra o recurso Aplicativo de Função e selecione Excluir.
- 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.