Adobe Experience Manager as a Cloud ServiceでAsset Manager APIを使用すると、アセットのアップロードに失敗する
統合でcom.day.cq.dam.api.AssetManager.createAssetなどのJVM内APIを使用すると、アセットのアップロードに失敗します。 これらのAPIは非推奨(廃止予定)であり、Adobe Experience Manager as a Cloud Serviceでのバイナリアップロードではサポートされていません。 AEM JVM内のバイナリのアップロードは、クラウドのアンチパターンとして扱われます。 この問題を解決するには、ダイレクト バイナリ アップロード ワークフローに移行するか、一括読み込みを使用してアセットを取り込みます。
説明 description
環境
- Adobe Experience Manager as a Cloud Service
- Adobe Developer App Builder
- AEM Dynamic Media
問題/症状
- BPA レポートフラグ unsupported.asset.api
com.day.cq.dam.api.AssetManager.createAssetまたは類似のAPIの使用状況- AEM JVM内でアセットのアップロードを実行
- アセットのアップロードをExperience Manager JVM内で実行できないという警告
- デベロッパーの警告は、アセットのアップロードをExperience Manager JVM内で実行してはならないことを示しています
解決策 resolution
-
コードベースで
com.day.cq.dam.api.AssetManager.createAsset、createOrReplaceAsset、およびAEM内でバイナリを記述するその他のアセット作成方法を検索します。 -
BPA フラグまたはIDEの警告がこれらのAPI (unsupported.asset.apiなど)を参照していることを確認します
-
影響を受けるコードが見つからない場合は、BPA出力とファイルパスを収集し、Adobe サポートと共有します。
-
以下の診断ブランチを使用します。
- 外部システムからアセットをアップロードする場合は、Direct Binary Upload API (
initiateupload → binary upload → complete-upload)を使用します。 - 大量の取り込みを実行する場合は、クラウドストレージ(S3、Azure、GCP、Dropbox、OneDrive)から AEM一括読み込み を使用します。
- 定期的なスケジュールされた取り込みが必要な場合は、Adobe App Builder + AEM Assets HTTP APIを使用します。
- 外部システムからアセットをアップロードする場合は、Direct Binary Upload API (
-
ユースケースで、JVM内のアセットのアップロードが必要でないことを確認します。
-
Adobe Developer ConsoleでOAuth サーバー間の資格情報を生成します。
-
資格情報に正しい製品プロファイルを割り当てます。
-
アクセストークンを生成し、Adobe Developer Consoleが有効なベアラートークンを返すことを確認します。
-
トークンの生成が失敗した場合は、割り当てられた製品プロファイルに書き込み権限が含まれていることを確認します。
-
AEM オーサーにログインし、 ツール
>セキュリティ>ユーザーに移動します。 -
最初のAPI呼び出しの後に表示されるテクニカルアカウントユーザーを探します。
-
ユーザーが
/content/damにjcr:readおよびrep:write権限を持つサービスユーザーグループに属していることを確認します。 -
サービス ユーザーグループの ツール
>セキュリティ>権限を確認してください。 -
ダイレクト バイナリ アップロード ワークフローを開始します。
-
バイナリを返されたクラウドストレージの場所に直接アップロードします。
-
アップロードリクエストを完了して、AEM アセット処理を開始します。
-
対象フォルダーのAssets
>Files>に移動し、対象フォルダーにアセットが表示されていることを確認します。 -
アップロードが失敗した場合は、API リクエストとレスポンスのペイロードを収集し、Adobe サポートと共有します。
-
サポートされているクラウドストレージプロバイダーにアセットを移動し、AEMで 一括読み込み を設定します
-
読み込んだアセットがAEMに表示されていることを確認します。