處理使用AEM Assets Author API建立資料夾和匯入資產時的計時問題
本文說明如何使用Adobe Experience Manager (AEM) Assets Author API將資產匯入新建立的資料夾時,如何實作重試邏輯,確保資料夾在資產匯入作業之前完全可用,以解決間歇性失敗。
說明 description
環境
Adobe Experience Manager (AEM),包括使用AEM as a Cloud Service製作API和OpenAPI型端點的Assets和其他部署模型。
症狀
自動匯入資產時,外部應用程式:
- 使用資料夾存在(HEAD) API檢查目標資料夾是否存在。
- 使用建立資料夾API建立資料夾(如果該資料夾不存在)。
- 收到成功的資料夾建立回應,後續資料夾存在(HEAD) API呼叫傳回HTTP 200。
- 立即呼叫Assets匯入API (
/import/fromUrl)以上傳資產。 - 匯入要求有時會失敗,並出現 HTTP 400 或 HTTP 403 錯誤,例如 無法解析資料夾 或其他與寫入相關的錯誤。
- 在某些情況下,建立資料夾API會傳回HTTP 200,但回應裝載指出失敗(例如:空白的成功陣列和錯誤訊息)。
範例API請求和回應
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": [ ] }
原因
AEM會在建立資料夾後展現最終一致性,導致在資料夾完全可用於資產作業之前會有短暫的延遲。 成功的資料夾存在(HEAD)回應不一定能保證資產匯入立即整備。
解決方法 resolution
請依照下列步驟解決問題:
-
建立資料夾後,請一律檢查建立資料夾API回應裝載:
-
確認
successes陣列包含預期的資料夾路徑。 -
檢查回應中是否有任何錯誤,即使HTTP狀態為200。
-
-
建立資料夾後,請勿立即呼叫Assets匯入API。 請改為實作限制式重試機制:
-
在重試資料夾存在檢查之前,請等候較短的間隔(例如:1秒)。
-
重試檢查的次數有限(例如:2到3次嘗試,延遲時間增加,例如1秒、2秒、4秒)。
-
只有在資料夾存在性檢查一致傳回 HTTP 200 且資料夾已確認可用(且資料夾建立回應成功)之後,才繼續呼叫Assets匯入API。
-
-
如果匯入操作仍因資料夾解析或暫時寫入/存取錯誤而失敗,請繼續進行有限次數的重試,然後再將其視為最終失敗。
-
如果發生持續性 403 錯誤,請驗證目標路徑的許可權和API存取設定。
驗證:執行上述步驟後,確認資產匯入作業成功,且沒有資料夾解析錯誤。
recommendation-more-help
experience-cloud-kcs-help-kbarticles