Bei der Arbeit mit Azure Functions im Flex-Consumption-Modus können Entwickler auf Probleme stoßen, wenn sie einen Blob-Trigger für Python-Funktions-Apps einrichten. Dieser Artikel beschreibt die Lösung, damit der Blob-Trigger wie erwartet funktioniert, und nennt weitere Ressourcen für die Implementierung.
Problemübersicht
Das Problem tritt auf, wenn versucht wird, einen Blob-Trigger für eine Python-Funktions-App einzurichten, die im Flex-Consumption-Modus bereitgestellt wurde. Trotz korrekter Bereitstellung wird der Trigger möglicherweise nicht ausgelöst, wenn ein Blob in den angegebenen Container hochgeladen wird. Häufige Symptome sind:
- Der Blob-Trigger wird nicht ausgelöst.
- Die Überwachung in Application Insights zeigt keine Anfragen an.
- Dokumentation und Beispiele für Blob-Trigger im Flex-Consumption-Modus sind begrenzt oder unklar.
Ursache
Blob-Trigger im Flex-Consumption-Modus erfordern Event Grid-basierte Trigger , um ordnungsgemäß zu funktionieren. Dies unterscheidet sich vom Standardverhalten des Blob-Triggers im Standard-Consumption-Plan. Fehlkonfigurationen oder veraltete Dokumentation können zu Bereitstellungsfehlern führen.
Lösung
Das Problem wurde behoben, indem auf einen Event Grid-basierten Trigger für Blob Storage umgestellt wurde. Im Folgenden sind die Schritte zur Umsetzung der Lösung aufgeführt:
Schritte zum Konfigurieren des Blob-Triggers im Flex-Consumption-Modus
- Event Grid für Blob Storage verwenden
Azure Blob Storage-Trigger sind auf Event Grid-Benachrichtigungen angewiesen, um im Flex-Consumption-Modus zu funktionieren. Befolgen Sie die offizielle Dokumentation hier: Azure Blob Storage-Trigger für Azure Functions. - Funktionscode aktualisieren
Stellen Sie sicher, dass Ihre Python-Funktions-App für die Verarbeitung von Event Grid-Ereignissen konfiguriert ist. Nachfolgend finden Sie ein Beispiel für den Funktionscode:
import logging
import azure.functions as func
def main(event: func.EventGridEvent):
logging.info('Event received: %s', event.get_json())
- Blob Storage und Event Grid konfigurieren
- Erstellen Sie ein Blob Storage-Konto und aktivieren Sie Event Grid -Benachrichtigungen.
- Richten Sie ein Event Grid-Abonnement ein, um Ereignisse an Ihre Azure-Funktion weiterzuleiten.
- Mit Bicep- oder ARM-Vorlagen bereitstellen
Nachfolgend finden Sie eine Bicep-Beispielvorlage für die Bereitstellung der Funktions-App mit Event Grid-Integration:
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'
]
}
}
}
- Bereitstellung überprüfen
- Laden Sie einen Blob in den angegebenen Container in Blob Storage hoch.
- Prüfen Sie Application Insights auf eingehende Anfragen.
Zusätzliche Hinweise
- Wenn Sie GitHub Actions oder Azure DevOps für die Bereitstellung verwenden, stellen Sie sicher, dass die richtigen Einstellungen für den Flex-Consumption-Modus angewendet werden.
- Zur Fehlerbehebung ziehen Sie Azure Functions-Überwachung für Einblicke in die Triggeraktivität heran.
Fazit
Das Problem beim Konfigurieren eines Blob-Triggers für Python-Funktions-Apps im Flex-Consumption-Modus kann durch die Verwendung von Event Grid-basierten Triggern behoben werden. Wenn Sie die oben beschriebenen Schritte befolgen, können Sie sicherstellen, dass Ihr Blob-Trigger nahtlos mit Azure Functions funktioniert.
Weitere Informationen finden Sie in der offiziellen Dokumentation: Azure Blob Storage-Trigger für Azure Functions.