AEMaaCS エラー応答で X-Correlation-Id を保持(404/500)
Adobe Experience Manager as a Cloud Serviceでは、X-Correlation-Id ヘッダーを使用して、AEM、Dispatcherおよび CDN レイヤーをまたいでリクエストをトレースします。 このヘッダーは成功した(200 OK)応答では表示されますが、404 Not Found や 500 Internal Server Error などのエラー応答では見つかりません。ただし、AEMのログで設定が確認されています。 デフォルトでは、CDN はAEMのエラー応答を合成ページに置き換え、カスタムヘッダーを削除します。 これにより、監視ワークフローとデバッグワークフローが機能しなくなり、クライアントサイドのエラーとバックエンドログを関連付けるのが難しくなります。
これを修正するには、エラー応答に x-aem-error-pass: true ヘッダーを追加します。 これにより、CDN は合成エラーページを生成するのではなく、元のAEM応答を転送し、X-Correlation-Id ヘッダーがすべての応答タイプで保持されるようにします。
説明 description
環境
- Adobe Experience Manager as a Cloud Service(AEMaaCS)
responseTransformationsを使用した CDN 設定- コンテキスト:AEM、Dispatcher、CDN をまたいで相関関係 ID を実装したりメカニズムをトレースしたりする場合
問題/症状
X-Correlation-Idヘッダーは200 OK応答には存在しますが、404 応答または 500 応答には存在しません。- AEM ログは、ヘッダーが設定されていることを示しますが、ブラウザーまたは API クライアントには到達しません。
cURL、Postmanまたはブラウザーdeveloper toolsを使用して、リクエストトラッキングまたはデバッグ動作を検証する際に検出されました。 - 相関ヘッダーがないため、監視システムは失敗したトランザクションのトレースに失敗します。
- CDN 設定は、エラー応答でヘッダーを抑制しているように見えます。
解決策 resolution
AEMの元のエラー応答とそのヘッダーがクライアントに到達するのを許可するには:
-
AEM エラーハンドラーを設定して、エラー応答にヘッダー
x-aem-error-pass: trueを含めます。 -
これは、CDN に、合成エラーページの生成を回避し、元のAEMまたはDispatcherの応答(ヘッダーを含む)を直接クライアントに転送するように指示します。
-
この変更を適用した後:
X-Correlation-Idヘッダーは、成功した応答と失敗した応答の両方に表示されます。- クライアントサイドの監視ツールは、リクエストのライフサイクル全体を正確に追跡できます。
その他の考慮事項:
- セキュリティとコンプライアンス:このヘッダーを実稼動環境で有効にする前に、エラーペイロードが機密性の高い内部詳細を公開しないようにしてください。
- 範囲:この動作は、AEMまたはDispatcherによって生成された応答にのみ適用されます。 CDN レベルのエラーは、引き続き合成ページを提供します。
- 一般的な誤解:合成エラー応答で
responseTransformationsヘッダーを再挿入できません。 - テストのヒント:curl -i -v またはブラウザーのデベロッパーツールを使用して、修正を適用する前と後でヘッダーの存在を確認します。 例:
-i -v https:///path-that-triggers-error
ベストプラクティスの推奨事項:
- バックエンドリクエストでは、常に相関関係 ID を生成および設定します。
- ログとヘッダーに同じ ID を含めます。
- 完全なトレーサビリティを必要とするエラー応答、特にデバッグや統合テスト中に
x-aem-error-pass: trueを使用します。 - 実稼動環境での使用を制御されたシナリオに制限して、CDN の標準エラー処理を上書きしないようにします。
関連資料
- AEM as a Cloud Service チュートリアルの ログを使用したAEM as a Cloud Serviceのデバッグ 。
- AEM Dispatcher ガイドの AEM Dispatcherの設定 。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f