AEM Assets オーサーAPIでフォルダーを作成し、アセットを読み込む際のタイミングの問題の処理
この記事では、Adobe Experience Manager(AEM)Assets オーサーAPIを使用して新しく作成されたフォルダーにアセットを読み込む際に、アセットの読み込み操作の前にフォルダーが完全に利用可能であることを確認するために再試行ロジックを実装して、断続的なエラーに対処する方法について説明します。
説明 description
環境
Adobe Experience Manager(AEM)には、AEM as a Cloud Serviceや、Assets Author APIおよびOpenAPI ベースのエンドポイントを使用するその他のデプロイメントモデルが含まれます。
症状
アセットのインポートを自動化する場合、外部アプリケーションは次のようになります。
- Folder Exists (HEAD) APIを使用して、ターゲットフォルダーが存在するかどうかを確認します。
- フォルダーを作成APIを使用してフォルダーが存在しない場合にフォルダーを作成します。
- 正常なフォルダー作成応答を受け取り、後続のFolder Exists (HEAD) API呼び出しで HTTP 200 が返されます。
- Assets Import API (
/import/fromUrl)を呼び出して、アセットをアップロードします。 - フォルダーやその他の書き込み関連のエラーを解決できないなど、HTTP 400またはHTTP 403 エラーが発生して、読み込み要求が失敗することがあります。
- 場合によっては、Create Folder 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
問題を解決するには、次の手順に従います。
-
フォルダーを作成したら、常にCreate Folder API応答ペイロードを調べます。
-
successes配列に、想定されるフォルダーパスが含まれていることを確認します。 -
HTTP ステータスが 200 の場合でも、応答のエラーを確認します。
-
-
フォルダー作成後に、Assets Import APIを直ちに呼び出さないでください。 代わりに、制限された再試行メカニズムを実装します。
-
フォルダーの存在チェックを再試行する前に、短い間隔(1秒など)を待ちます。
-
限られた回数でチェックを再試行します(例:1秒、2秒、4秒など、遅延が増加した2~3回の試行)。
-
フォルダーの存在チェックで HTTP 200 が一貫して返され、フォルダーが使用可能であることが確認された後にのみ、Assets Import APIの呼び出しに進みます(フォルダー作成の応答は正常に実行されます)。
-
-
読み込み操作が引き続きフォルダー解決または一時的な書き込み/アクセス エラーで失敗する場合は、最終的な失敗として扱う前に、限られた試行回数だけ再試行を続けます。
-
永続的な403 エラーが発生した場合は、ターゲットパスの権限とAPI アクセス設定を検証します。
検証:上記の手順を実行した後、フォルダー解決エラーなしでアセットの読み込み操作が成功することを確認します。