Cloud Manager に関する FAQ

このドキュメントでは、AEM as a Cloud Service の Cloud Manager に関するよくある質問に対する回答を提供します。

Cloud Manager ビルドで Java 11 を使用することは可能ですか?

はい。Java 11 用の適切な設定を使用して、maven-toolchains-plugin を追加する必要があります

プロセスは、こちらのドキュメントに記載されています。

例えば、wknd プロジェクトサンプルプロジェクトコードを参照してください。

Java 8 から Java 11 に切り替えた後、maven-scr-plugin に関するエラーでビルドが失敗します。どうすればいいですか?

ビルドを 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]

このプラグインの削除方法については、こちらを参照してください。

Java 8 から Java 11 に切り替えた後、RequireJavaVersion に関するエラーでビルドが失敗します。どうしたらいいでしょうか。

Cloud Manager ビルドの場合、maven-enforcer-plugin がこのエラーで失敗する場合があります。

"[main] [WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireJavaVersion".

これは既知の問題です。Cloud Manager では、maven コマンドの実行に、コードをコンパイルした際と異なるバージョンの Java を使用しているためです。この問題を解決するには、maven-enforcer-plugin の設定から requireJavaVersion を省略するだけです。

コード品質チェックに失敗し、デプロイメントが停止しています。このチェックを回避する方法はありますか?

はい。セキュリティ評価を除くコード品質チェックの失敗はすべて、重要でない指標なので、結果 UI の項目を展開することで、デプロイメントパイプラインの一部として回避できます。

デプロイメントマネージャー、プロジェクトマネージャーまたはビジネスオーナーの役割を持つユーザーは、問題をオーバーライドでき、その場合、パイプラインは続行されます。または、問題を受け入れることもでき、その場合、パイプラインはエラーで停止します。

ドキュメントを参照 コード品質テスト および 実稼動以外のパイプラインの設定 を参照してください。

Maven プロジェクトのバージョンに SNAPSHOT を使用できますか?

はい。開発者向けデプロイメントの場合、Git ブランチの pom.xml ファイルには、<version> 値の最後に -SNAPSHOT が含まれている必要があります。

これにより、バージョンが変更されなかった場合でも、その後のデプロイメントを引き続きインストールできます。デベロッパーデプロイメントでは、maven ビルドの自動バージョンは追加または生成されません。

また、ステージおよび実稼働ビルドまたはデプロイメントのバージョンを -SNAPSHOT に設定することもできます。Cloud Manager では、適切なバージョン番号を自動的に設定し、Git にタグを作成します。このタグは、必要に応じて後で参照できます。

バージョン処理の詳細は、こちらで説明しています

パッケージとバンドルのバージョン管理は、ステージングと実稼動のデプロイメントでどのように機能しますか?

ステージング環境および実稼動環境でのデプロイメントでは、こちらに記載されているように、自動バージョンが生成されます。

ステージング環境および実稼動環境でカスタムバージョンを設定する場合は、1.0.0 のように、適切な 3 つのパートから成る maven バージョンを設定します。実稼動にデプロイするたびに、バージョンを増やします。

Cloud Manager では、自らのバージョンをステージビルドと実稼動ビルドに自動的に追加し、Git ブランチを作成します。特別な設定は必要ありません。前述のように Maven バージョンを設定しない場合でも、デプロイメントは成功し、バージョンが自動的に設定されます。

Maven ビルドが Cloud Manager デプロイメントでは失敗しますが、ローカルではエラーなしでビルドされます。何が問題なのでしょうか。

詳しくは、こちらの Git リソースを参照してください。

AEM as a Cloud Service のデプロイステップで Cloud Manager のデプロイメントが失敗した場合は、どうすればよいですか?

デプロイメントが失敗する最も一般的な理由は、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 はアプリケーションコードが保存されるフォルダー)下のアプリケーションパッケージに追加する必要があります。

AEM as a Cloud Service のデプロイステップで Cloud Manager のデプロイメントが失敗します。RepositoryInitializer OSGi 設定は追加済みです。他に何ができますか?

RepositoryInitializer OSGi 設定の追加でエラーが解決しない場合は、次のような問題の 1 つが原因である可能性があります。

  • 標準のサービスを中断する無効な OSGi 設定が原因で、デプロイメントが失敗する可能性があります。

    • デプロイ時のログを調べて、明らかなエラーがないかどうかを確認します。
  • Dispatcher や Apache の不正な設定が原因でデプロイに失敗する場合があります。

    • SDK に含まれている Docker イメージを使用して、Apache 設定と Dispatcher 設定をローカルでテストしてください。
    • ローカルテストを簡単に行うための Dispatcher Docker コンテナの設定方法については、クラウド内の Dispatcher を参照してください。
  • オーサーインスタンスからパブリッシュインスタンスへのコンテンツパッケージのレプリケーション(Sling 配布)時に他の何らかのエラーが発生したために、デプロイが失敗する場合があります。

    • ローカル設定で問題をシミュレートするには、次の手順に従います。
      1. 最新の AEM SDK JAR を使用して、オーサーインスタンスとパブリッシュインスタンスをインストールします。
      2. オーサーインスタンスにログインします。
      3. ツールデプロイメント配布​に移動します。
      4. コードベースの一部となるコンテンツパッケージを配布し、キューがブロックされてエラーが発生するかどうかを確認します。。

aio コマンドを使用して変数を設定できません。どうしたらいいでしょうか。

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 の権限を参照してください。

このページ