レプリケーション replication
Adobe Experience Manager as a Cloud Service では、Sling コンテンツ配布機能を使用して、AEM ランタイムの外部にある Adobe Developer で実行されるパイプラインサービスに複製するコンテンツを移動します。
コンテンツの公開方法 methods-of-publishing-content
独自の一括公開カスタムコードを作成することはお勧めできません。
何らかの理由でカスタマイズする必要がある場合は、既存のワークフロー API を使用して、このステップをトリガーできます。
常に、公開する必要のあるコンテンツのみを公開することをお勧めします。 また、必要がない場合は、大量のコンテンツを公開しないようにしてください。 ただし、ツリーアクティベーションワークフローステップを使用したワークフローを通じて送信できるコンテンツの量に制限はありません。
クイック公開/非公開 - 計画的公開/非公開 publish-unpublish
この機能を使用すると、「公開を管理」のアプローチで可能な追加オプションを使用せずに、選択したページを直ちに公開できます。
詳しくは、「公開を管理」を参照してください。
オンタイムとオフタイム - トリガー設定 on-and-off-times-trigger-configuration
オンタイムと オフタイム の追加設定をページのプロパティの「基本」タブで行えます。
この機能の自動レプリケーションを実現するには、OSGi 設定の「オン/オフトリガー設定」で「自動レプリケーション」を有効にします。
公開を管理 manage-publication
公開を管理には、クイック公開よりも多くのオプションがあります。子ページの追加、参照のカスタマイズ、該当するワークフローの開始、後で公開するためのオプションがあります。
「後で公開」オプションにフォルダーの子を含めると、 ツリーレプリケーションワークフローで説明されているコンテンツツリーの公開ワークフローが呼び出されます。
「公開を管理」について詳しくは、 公開の基本に関するドキュメント を参照してください。
詳細なコンテンツ階層を一括でレプリケートするには、ワークフローベースのアプローチを使用します。 推奨されるツリーアクティベーションワークフロー手順、設定パラメーター、監視ガイダンスについては、 ツリーレプリケーションワークフローを参照してください。 非推奨の「コンテンツツリーを公開」ワークフローも、参照のためにドキュメント化されています。
レプリケーション API replication-api
AEM as a Cloud Service に備わっている Replication API を使用してコンテンツを公開できます。
詳しくは、 API のドキュメント を参照してください。
API の基本的な使用法
@Reference
Replicator replicator;
@Reference
ReplicationStatusProvider replicationStatusProvider;
....
Session session = ...
// Activate a single page to all agents, which are active by default
replicator.replicate(session,ReplicationActionType.ACTIVATE,"/content/we-retail/en");
// Activate multiple pages (but try to limit it to approx 100 at max)
replicator.replicate(session,ReplicationActionType.ACTIVATE, new String[]{"/content/we-retail/en","/content/we-retail/de"});
// ways to get the replication status
Resource enResource = resourceResolver.getResource("/content/we-retail/en");
Resource deResource = resourceResolver.getResource("/content/we-retail/de");
ReplicationStatus enStatus = enResource.adaptTo(ReplicationStatus.class);
// if you need to get the status for more than 1 resource at once, this approach is more performant
Map<String,ReplicationStatus> allStatus = replicationStatusProvider.getBatchReplicationStatus(enResource,deResource);
レプリケーションエージェント
AEM as a Cloud Serviceには、作成者からSling Content Distributionを介してターゲット層にコンテンツをルーティングする2つの定義済みレプリケーションエージェントが用意されています。
- publish – アクティブ化されたコンテンツをライブ公開層にレプリケートします。 このエージェントはデフォルトで有効になっており、特に指定しない限り、UI、ワークフロー、またはレプリケーション APIから公開するときに使用されます。
- preview — コンテンツをプレビュー層に複製して、作成者が公開前に変更内容を確認できるようにします。 このエージェントはデフォルトでは有効になっていません。
両方のエージェントは、ツール/デプロイメント/配布から表示および監視できます。
パブリッシュとプレビューを表示する
エージェント カードを選択すると、ステータス、ログ、キューの詳細が開きます。
特定のエージェントを使用したレプリケーション
上記のようにAPIを使用してレプリケートする場合、デフォルトで有効になっているエージェントのみがAEM as a Cloud Serviceで使用されます。つまり、publishのみです。 プレビュー層にのみレプリケートするには、プレビューエージェントを選択するAgentFilterを渡します。
次の例を参照してください。
private static final String PREVIEW_AGENT = "preview";
ReplicationStatus beforeStatus = enResource.adaptTo(ReplicationStatus.class); // beforeStatus.isActivated == false
ReplicationOptions options = new ReplicationOptions();
options.setFilter(new AgentFilter() {
@Override
public boolean isIncluded (Agent agent) {
return agent.getId().equals(PREVIEW_AGENT);
}
});
// will replicate only to preview
replicator.replicate(session,ReplicationActionType.ACTIVATE,"/content/we-retail/en", options);
ReplicationStatus afterStatus = enResource.adaptTo(ReplicationStatus.class); // afterStatus.isActivated == false
ReplicationStatus previewStatus = afterStatus.getStatusForAgent(PREVIEW_AGENT); // previewStatus.isActivated == true
AgentFilterなしでレプリケートする場合、パブリッシュのみが使用され、プレビュー層は影響を受けません。
リソースの全体的なReplicationStatusは、レプリケーションにデフォルトで有効になっているエージェントが少なくとも1つ含まれている場合にのみ更新されます。 上記の例では、previewのみが使用されているので、ReplicationStatus.isActivatedはfalseのままです。 getStatusForAgent()を使用して、特定のエージェントのステータスを確認します。例えば、プレビューのみのレプリケーションの後のgetStatusForAgent("preview")や、ライブ公開層のgetStatusForAgent("publish")などです。
コンテンツの無効化方法 invalidating-content
コンテンツを直接無効にするには、作成者が Sling コンテンツ無効化(SCD)を使用するか(推奨される方法)、Replication API を使用して公開 Dispatcher フラッシュレプリケーションエージェントを呼び出します。 詳しくは、キャッシュページを参照してください。
レプリケーション API容量の制限
一度にレプリケートするパスは 100 個未満で、上限は 500 個です。 上限を超えると、ReplicationException がスローされます。
アプリケーションロジックでアトミックレプリケーションが必要ない場合は、ReplicationOptions.setUseAtomicCallsをfalseに設定することで、この制限を克服できます。これにより、任意の数のパスを受け入れることができますが、内部的にこの制限を下回るようにバケットを作成します。
レプリケーション呼び出しごとに送信されるコンテンツのサイズは、10 MB を超えてはなりません。 このルールにはノードとプロパティが含まれますが、バイナリは含まれません(ワークフローパッケージとコンテンツパッケージはバイナリと見なされません)。
レプリケーションキュー replication-queues
各レプリケーションエージェントには、2つのレプリケーションキューが表示されます。 AEM as a Cloud Serviceでは、パブリッシュポッドごとに個別のキューが表示されなくなりました。パブリッシュ層は自動的にスケーリングされるため、ポッドごとのキューは実用的なメリットを得ることなく複雑になりました。 キューのステータスは、次のように統合されます。
- 永続化 – 変更は永続的にパブリッシュ層に保存されます。 アイテムがこのキューをクリアすると、コンテンツは保持されます。公開インスタンスは時間の経過とともに一貫性のある状態に達します。
- 完全に公開された – 変更はすべての公開ポッドで公開され、影響を受けるパスのDispatcher キャッシュがクリアされます。 アイテムがこのキューをクリアすると、訪問者は更新されたコンテンツを受け取ります。
レプリケーションキューの監視 monitor-replication-queues
-
AEM グローバルナビゲーション から、ツール > デプロイメントに移動します。
-
配布を選択し、公開またはプレビュー エージェント カードを開きます。
-
「ステータス」タブで、各キューが正常なステータスを示していることを確認します。 処理待ちの作業については 処理待ちのアイテム を確認し、最近のアクティビティについては 処理された最後のアイテム を確認します。
-
エージェントが配信サービスに到達できることを確認するには、接続をテストを選択します。
-
「ログ」タブを選択して、コンテンツ公開の履歴を表示します。
トラブルシューティング troubleshooting
コンテンツを公開できない場合、公開はAEM パブリッシュサービスから元に戻されます。 レプリケーションキューの監視を使用して、エージェント ステータス タブを開き、影響を受けるキューを特定します。
キューに赤いステータスが表示された場合は、保留中の項目を確認して、エラーの原因を特定します。 キューを選択して保留中の項目を表示し、必要に応じて個々の項目またはキュー全体をクリアします。