Ao trabalhar com Azure Functions no modo de consumo flexível, os programadores podem ter dificuldades em configurar um acionador de Blob para aplicações de funções Python. Este artigo descreve a solução para garantir que o acionador de Blob funciona como esperado e fornece recursos adicionais para a implementação.
Descrição do problema
O problema surge ao tentar configurar um acionador de Blob para uma aplicação de funções Python implementada no modo de consumo flexível. Apesar de uma implementação correta, o acionador pode não ser ativado quando um blob é carregado para o contentor especificado. Os sintomas comuns incluem:
- O acionador de Blob não dispara.
- A monitorização no Application Insights não mostra quaisquer pedidos.
- A documentação e os exemplos de acionadores de Blob no modo de consumo flexível são limitados ou pouco claros.
Causa raiz
Os acionadores de Blob no modo de consumo flexível requerem acionadores baseados no Event Grid para funcionarem corretamente. Isto difere do comportamento predefinido do acionador de Blob no plano de consumo padrão. Uma configuração incorreta ou a dependência de documentação desatualizada pode levar a falhas de implementação.
Solução
O problema foi resolvido ao mudar para um acionador baseado no Event Grid para o Armazenamento de Blobs. Seguem-se os passos para implementar a solução:
Passos para configurar o acionador de Blob no modo de consumo flexível
- Utilizar o Event Grid para o Armazenamento de Blobs
Os acionadores do Armazenamento de Blobs do Azure dependem de notificações do Event Grid para funcionarem no modo de consumo flexível. Siga a documentação oficial aqui: Acionador do Armazenamento de Blobs do Azure para o Azure Functions. - Atualizar o código da função
Certifique-se de que a sua aplicação de funções Python está configurada para lidar com eventos do Event Grid. Segue-se um exemplo do código da função:
import logging
import azure.functions as func
def main(event: func.EventGridEvent):
logging.info('Event received: %s', event.get_json())
- Configurar o Armazenamento de Blobs e o Event Grid
- Crie uma conta de Armazenamento de Blobs e ative as notificações do Event Grid .
- Configure uma subscrição do Event Grid para reencaminhar eventos para a sua Função do Azure.
- Implementar com modelos Bicep ou ARM
Segue-se um modelo Bicep de exemplo para implementar a aplicação de funções com integração do Event Grid:
resource blobStorage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: 'myBlobStorage'
location: 'East US'
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource eventGridSubscription 'Microsoft.EventGrid/eventSubscriptions@2022-06-15' = {
name: 'myBlobEventSubscription'
scope: blobStorage
properties: {
destination: {
endpointType: 'AzureFunction'
properties: {
functionAppResourceId: '<FunctionAppResourceId>'
}
}
filter: {
includedEventTypes: [
'Microsoft.Storage.BlobCreated'
]
}
}
}
- Verificar a implementação
- Carregue um blob para o contentor especificado no Armazenamento de Blobs.
- Verifique o Application Insights para ver os pedidos recebidos.
Notas adicionais
- Se estiver a utilizar o GitHub Actions ou o Azure DevOps para a implementação, certifique-se de que as definições corretas para o modo de consumo flexível são aplicadas.
- Para a resolução de problemas, consulte a Monitorização do Azure Functions para obter informações sobre a atividade do acionador.
Conclusão
O problema de configurar um acionador de Blob para aplicações de funções Python no modo de consumo flexível pode ser resolvido utilizando acionadores baseados no Event Grid. Ao seguir os passos descritos acima, pode garantir que o seu acionador de Blob funciona perfeitamente com o Azure Functions.
Para mais informações, consulte a documentação oficial: Acionador do Armazenamento de Blobs do Azure para o Azure Functions.