Sling JobConsumerの「バンドルとサブサービスのユーザー名を取得できません」エラー
この記事では、Sling JobConsumerがAdobe Experience Manager as a Cloud Service環境でスケジュールされたジョブを処理できない場合に、「バンドルのユーザー名を取得できない」や「サブサービス …」などのエラーが発生する問題を解決する方法について説明します。 このソリューションには、サービスユーザーマッピング、サービスユーザーの存在、権限の検証が含まれます。
説明 description
環境
- Adobe Experience Manager(AEM)as a Cloud Service
問題/症状
-
スケジュールされたジョブは未処理のままになり、キュー内で停止します
-
レポートが新しいデータで更新されない
-
ジョブキューダッシュボードには、消費されていないキューに入ったパスが表示されます
-
ログには、次のようなエラーが含まれます。
Cannot derive user name for bundle [ bundle-symbolic-name] and sub service [ subservice-name]
原因
このエラーは、Sling JobConsumerが、環境で必要な権限が欠落している、誤って設定されている、または不足しているサブサービスマッピングを使用してサービス ResourceResolverを取得しようとしたときに発生します。 その結果、キューに入ったジョブは処理できません。
解決策 resolution
バンドルおよびサブサービス のユーザー名を取得できないエラーを解決し、Sling JobConsumer処理を復元するには、次の手順に従います。
-
Sling サービスユーザーマッピングを確認します。
- 環境設定に正しいサービスユーザーマッピングが存在することを確認します。
- マッピングが、コードで使用されているバンドルシンボリック名とサブサービス名と一致することを確認します。
- マッピングが古いバンドルシンボリック名または不正なバンドルシンボリック名を参照していないことを確認します。
org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-*設定でのマッピングの例:code language-none { "user.mapping": [ "[ bundle-symbolic-name] :[ subservice-name] =[ service-user-name] " ] }[ bundle-symbolic-name]、[ subservice-name]および[ service-user-name]を実際の値に置き換えます。 -
サービスユーザーの存在と権限を検証します。
-
マッピングで指定されたサービスユーザーが環境に存在することを確認します。
-
サービスユーザーが、該当するパスでジョブに必要な権限を持っていることを確認します。
/content/dam/var/home- ジョブで使用される任意のカスタムパス(
/var/yourproject/attestation)
-
エラーログで権限またはリソースリゾルバーログインの問題を確認します。
-
-
バンドルのデプロイメントとアクティベーションを確認.
- AEM System Console (
/system/console/bundles)で、関連するバンドルがデプロイされ、アクティブであることを確認します。 - バンドルが見つからない場合は、デプロイします。 非アクティブな場合は、OSGiの問題を解決してアクティベーションを防ぎます。
- AEM System Console (
-
JobConsumerとスケジューラーの設定を確認します。
- Sling
JobConsumerとスケジューラーが登録され、アクティブであることを確認します。 - ポッドのシャットダウン中に、
@Deactivateメソッドなどのライフサイクルコードがジョブのスケジュールを解除しないようにします。これは、クラスター環境に影響を与える可能性があります。
- Sling
-
ジョブ処理をテストおよび監視します。
- マッピングと権限を修正した後、影響を受けるパスを再キューに入れ、ジョブの実行を監視します。
- ログでジョブ処理が正常に実行されたことを確認し、「バンドルおよびサブサービスのユーザー名を取得できません」エラーが表示されなくなったことを確認します。