处理使用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 Import 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