문제
AEM에서 클라우드 서비스 환경으로 Cloud Manager를 배포하는 동안 배포 단계가 실패하고 아래와 같은 오류가 관찰됩니다.
[Queue Processor for Subscriber agent forwardPublisherSubscriber] org.apache.jackrabbit.vault.fs.io.Importer Error while committing changes. Retrying import from checkpoint at /. Retries 4/10 [Queue Processor for Subscriber agent forwardPublisherSubscriber] org.apache.sling.distribution.journal.impl.subscriber.DistributionSubscriber Error processing queue item org.apache.sling.distribution.common.DistributionException: Error processing distribution package dstrpck-1583514457813-c81e7751-2da6-4d00-9814-434187f08d32. Retry attempts 162/infinite. ... Caused by: org.apache.sling.api.resource.PersistenceException: Unable to commit changes to session. ... Caused by: javax.jcr.AccessDeniedException: OakAccess0000: Access denied [EventAdminAsyncThread #7] org.apache.sling.distribution.journal.impl.publisher.DistributionPublisher [null] Error processing distribution package dstrpck-1583514457813-c81e7751-2da6-4d00-9814-434187f08d32. Retry attempts 344/infinite. Message: Error trying to extract package at path /etc/packages/com.myapp/myapp-base.ui.content-5.1.0-SNAPSHOT.zip
원인
sling-distribution-importer 사용자는 ui.content 패키지에 정의된 컨텐츠 경로에 따라 추가 권한이 필요합니다. 이는 일반적으로 /conf 및 /var 모두에 대한 권한을 추가해야 함을 의미합니다.
솔루션
이에 대한 솔루션은 RepositoryInitializer OSGi 구성 스크립트를 앱 배포 패키지에 추가하여 sling-distribution-importer 사용자에 대한 ACL을 추가하는 것입니다.
위의 예제 오류에서 패키지 myapp-base.ui.content-*.zip에는 /conf 및 /var/workflow 아래의 컨텐츠가 포함됩니다. 배포가 실패하지 않도록 이러한 경로 아래에 sling-distribution-importer에 대한 권한을 추가해야 합니다.
다음은 sling-distribution-importer 사용자에 대한 추가 권한을 추가하는 OSGi 구성 중 하나의 예제 [1]입니다.이 구성은 /var 아래에 권한을 추가합니다. [1] 아래의 이 xml 파일을 /apps/myapp/config 아래에 있는 응용 프로그램 패키지에 추가해야 합니다. 여기서 myapp은 응용 프로그램 코드가 저장된 폴더입니다.
[1] org.apache.sling.jcr.repoinit.RepositoryInitializer-DistributionService.config
내 계정 로그인