このドキュメントでは、AEM as a Cloud Service の Cloud Manager に関するよくある質問に対する回答を提供します。
はい。Java 11 用の適切な設定を使用して、maven-toolchains-plugin
を追加する必要があります
プロセスは、こちらのドキュメントに記載されています。
例えば、wknd プロジェクトサンプルプロジェクトコードを参照してください。
ビルドを Java 8 から 11 に切り替えようとすると、AEM Cloud Manager のビルドに失敗する場合があります。次のエラーが発生した場合は、maven-scr-plugin
を削除し、すべての OSGi 注釈を OSGi R6 注釈に変換する必要があります。
[main] [ERROR] Failed to execute goal org.apache.felix:maven-scr-plugin:1.26.4:scr (generate-scr-scrdescriptor) on project helloworld.core: /build_root/build/testsite/src/main/java/com/adobe/HelloWorldServiceImpl.java : Unable to load compiled class: com.adobe.HelloWorldServiceImpl: com/adobe/HelloWorldServiceImpl has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 -> [Help 1]
このプラグインの削除方法については、こちらを参照してください。
Cloud Manager ビルドの場合、maven-enforcer-plugin
がこのエラーで失敗する場合があります。
"[main] [WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireJavaVersion".
これは既知の問題です。Cloud Manager では、maven コマンドの実行に、コードをコンパイルした際と異なるバージョンの Java を使用しているためです。この問題を解決するには、maven-enforcer-plugin
の設定から requireJavaVersion
を省略するだけです。
はい。セキュリティ評価以外のコード品質チェックのエラーはすべて、重要な指標ではありません。そのため、結果の UI で項目を展開することで、デプロイメントパイプラインの一部としてこれらのチェックを回避できます。
デプロイメントマネージャー、プロジェクトマネージャーまたはビジネスオーナーの役割を持つユーザーは、問題をオーバーライドでき、その場合、パイプラインは続行されます。または、問題を受け入れることもでき、その場合、パイプラインはエラーで停止します。
コード品質テストおよび実稼動以外のパイプラインの設定について詳しくは、ドキュメントを参照してください。
はい。開発者向けデプロイメントの場合、Git ブランチの pom.xml
ファイルには、<version>
値の最後に -SNAPSHOT
が含まれている必要があります。
これにより、バージョンが変更されなかった場合でも、その後のデプロイメントを引き続きインストールできます。デベロッパーデプロイメントでは、maven ビルドの自動バージョンは追加または生成されません。
また、ステージおよび実稼働ビルドまたはデプロイメントのバージョンを -SNAPSHOT
に設定することもできます。Cloud Manager では、適切なバージョン番号を自動的に設定し、Git にタグを作成します。このタグは、必要に応じて後で参照できます。
バージョン処理の詳細は、こちらで説明しています。
ステージング環境および実稼動環境でのデプロイメントでは、こちらに記載されているように、自動バージョンが生成されます。
ステージング環境および実稼動環境でカスタムバージョンを設定する場合は、1.0.0
のように、適切な 3 つのパートから成る maven バージョンを設定します。実稼動にデプロイするたびに、バージョンを増やします。
Cloud Manager では、自らのバージョンをステージビルドと実稼動ビルドに自動的に追加し、Git ブランチを作成します。特別な設定は必要ありません。前述のように Maven バージョンを設定しない場合でも、デプロイメントは成功し、バージョンが自動的に設定されます。
詳しくは、こちらの Git リソースを参照してください。
デプロイメントが失敗する最も一般的な理由は、sling-distribution-importer
ユーザーの権限が不十分なことです。その場合、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.
sling-distribution-importer
ユーザーは、ui.content package
で定義されたコンテンツパスに対して追加の権限が必要です。これは、通常、/conf
と /var
の両方に対する権限を追加する必要があるということです。
解決策は、RepositoryInitializer OSGi 設定スクリプトをアプリケーションデプロイメントパッケージに追加して、sling-distribution-importer
ユーザーの ACL を追加することです。
上記のエラー例では、パッケージ myapp-base.ui.content-*.zip
の /conf
と /var/workflow
の下にコンテンツが含まれています。デプロイメントを成功させるには、これらのパスの下に sling-distribution-importer
の権限が必要です。
sling-distribution-importer
ユーザーの権限を追加する OSGi 設定の例として、org.apache.sling.jcr.repoinit.RepositoryInitializer-DistributionService.config
を紹介します。この設定により、/var
下に権限が追加されます。このような設定は、/apps/myapp/config
(myapp はアプリケーションコードが保存されるフォルダー)下のアプリケーションパッケージに追加する必要があります。
RepositoryInitializer OSGi 設定の追加でエラーが解決しない場合は、次のような問題の 1 つが原因である可能性があります。
標準のサービスを中断する無効な OSGi 設定が原因で、デプロイメントが失敗する可能性があります。
Dispatcher や Apache の不正な設定が原因でデプロイに失敗する場合があります。
オーサーインスタンスからパブリッシュインスタンスへのコンテンツパッケージのレプリケーション(Sling 配布)時に他の何らかのエラーが発生したために、デプロイが失敗する場合があります。
aio
コマンドでパイプライン変数をリストアップまたは設定しようとすると、次のような 403
エラーが発生することがあります。
$ aio cloudmanager:list-pipeline-variables 222
Cannot get variables: https://cloudmanager.adobe.io/api/program/111/pipeline/222/variables (403 Forbidden)
$ aio cloudmanager:set-pipeline-variables 222 --variable TEST 1
Cannot get variables: https://cloudmanager.adobe.io/api/program/111/pipeline/222/variables (403 Forbidden)
$ aio cloudmanager:set-environment-variables 1755 --variable TEST 1
setting variables... !
Cannot set variables: https://cloudmanager.adobe.io/api/program/111/environment/222/variables (403 Forbidden)
この場合、これらのコマンドを実行するユーザーに、Admin Console でデプロイメントマネージャーの役割を追加する必要があります。
詳しくは、API の権限を参照してください。