Umgang mit Zeitproblemen beim Erstellen von Ordnern und Importieren von Assets mit der AEM Assets Author-API
In diesem Artikel wird beschrieben, wie Sie zeitweise auftretende Fehler beim Importieren von Assets in neu erstellte Ordner mithilfe der Assets-Autoren-API von Adobe Experience Manager (AEM) beheben können, indem Sie eine Wiederholungslogik implementieren, um sicherzustellen, dass Ordner vor dem Importieren von Assets vollständig verfügbar sind.
Beschreibung description
Umgebungen
Adobe Experience Manager (AEM), einschließlich AEM as a Cloud Service und anderer Bereitstellungsmodelle unter Verwendung der Assets-Autoren-API und OpenAPI-basierter Endpunkte.
Symptome
Beim Automatisieren von Asset-Importen führt eine externe Anwendung folgende Schritte aus:
- Überprüft mithilfe der HEAD-API (Folder Exists), ob ein Zielordner vorhanden ist.
- Erstellt den Ordner, falls er noch nicht mit der Create Folder-API existiert.
- Erhält eine erfolgreiche Antwort zur Ordnererstellung und ein nachfolgender HEAD-API-Aufruf (Folder Exists) gibt zurück HTTP 200.
- Ruft sofort die Assets-Import-API (
/import/fromUrl) auf, um ein Asset hochzuladen. - Die Importanfrage schlägt manchmal mit HTTP 400- oder HTTP 403-Fehlern fehl, z. B. Ordner kann nicht aufgelöst werden oder anderen schreibbezogenen Fehlern.
- In einigen Fällen gibt die Create Folder-API HTTP 200 zurück, aber die Antwort-Payload zeigt einen Fehler an (zum Beispiel: leeres Erfolgs-Array und Fehlermeldung).
Beispiel für API-Anfragen und -Antworten
Create Folder API response (failure despite HTTP 200):{"operation": "adobe.folders.createFolders","status": 200,"description": "Created folders","data": { "values": { "successes": [ ] } },"errors": [ {"type": "https://api.adobeaemcloud.com/adobe/meta/errors/internal_server_error","title": "Internal Server Error","detail": "Failed to create folder /content/dam/folder1 due to an exception: Unable to commit changes to session."}] ,"warnings": [ ] }
Ursache
AEM zeigt nach der Ordnererstellung eine gewisse Konsistenz, was zu einer kurzen Verzögerung führt, bevor der Ordner vollständig für Asset-Vorgänge verfügbar ist. Eine erfolgreiche HEAD-Antwort (Folder Exists) garantiert nicht immer die sofortige Bereitschaft für Asset-Importe.
Lösung resolution
Gehen Sie wie folgt vor, um das Problem zu beheben:
-
Überprüfen Sie nach dem Erstellen eines Ordners immer die Antwort-Payload der Ordner-API erstellen :
-
Bestätigen Sie, dass das
successes-Array den erwarteten Ordnerpfad enthält. -
Überprüfen Sie die Antwort auf Fehler, auch wenn der HTTP-Status 200 lautet.
-
-
Rufen Sie die Assets-Import-API nach der Ordnererstellung nicht sofort auf. Implementieren Sie stattdessen einen begrenzten Wiederholungsmechanismus:
-
Warten Sie ein kurzes Intervall (z. B. 1 Sekunde), bevor Sie die Prüfung auf Ordnerexistenz wiederholen.
-
Wiederholen Sie die Prüfung eine begrenzte Anzahl von Malen (z. B.: 2-3 Versuche mit zunehmenden Verzögerungen wie 1s, 2s, 4s).
-
Rufen Sie erst dann die Assets-Import-API auf, wenn die Ordnerexistenzprüfung durchgängig "200“ zurückgegeben und bestätigt wurde, dass der Ordner verfügbar ist (und die Antwort auf die Ordnererstellung erfolgreich war).
-
-
Wenn der Importvorgang mit Ordnerauflösung oder vorübergehenden Schreib-/Zugriffsfehlern immer noch fehlschlägt, versuchen Sie es für eine begrenzte Anzahl von Versuchen erneut, bevor Sie ihn als endgültigen Fehler behandeln.
-
Wenn anhaltende 403-Fehler auftreten, überprüfen Sie die Berechtigungen und die API-Zugriffskonfiguration für den Zielpfad.
Bestätigung: Vergewissern Sie sich, dass der Asset-Importvorgang nach den oben genannten Schritten ohne Fehler bei der Ordnerauflösung erfolgreich ist.