Programmgesteuerter Asset-Upload in AEM as a Cloud Service
Erfahren Sie, wie Sie Assets mithilfe des Client-Programms, das die Bibliothek aem-upload Node.js verwendet, in die AEM as a Cloud Service-Umgebung hochladen.
Lerninhalt
In diesem Tutorial erfahren Sie mehr über:
- Verwendung des Ansatzes direkter binärer Upload zum Hochladen von Assets in die AEM as a Cloud Service-Umgebung (RDE, Dev, Staging, Prod) mithilfe der aem-upload Node.js-Bibliothek.
- Konfigurieren und Ausführen der Anwendung "-asset-upload-sample zum Hochladen von Assets in die AEM as a Cloud Service-Umgebung.
- Überprüfen Sie den Beispiel-Anwendungs-Code und verstehen Sie die Implementierungsdetails.
- Machen Sie sich mit den Best Practices für den programmgesteuerten Asset-Upload in die AEM as a Cloud Service-Umgebung vertraut.
Grundlegendes zum Ansatz direkter binärer Upload
Mit dem direkten binären Upload-Ansatz können Sie Dateien aus Ihrem Quellsystem direkt in den Cloud-Speicher) AEM as a Cloud Service-Umgebung mithilfe einer vordefinierten URL hochladen. Binärdaten müssen nicht mehr durch die Java-Prozesse von AEM geroutet werden, was zu schnelleren Uploads und geringerer Serverlast führt.
Bevor wir die Beispielanwendung ausführen, sollten wir den direkten binären Upload-Fluss verstehen.
Im direkten binären Upload-Fluss werden die Binärdaten mit vordefinierten URLs direkt in den Cloud-Speicher hochgeladen. Die AEM as a Cloud Service ist für eine schlanke Verarbeitung verantwortlich, z. B. für das Generieren der vordefinierten URLs und die Benachrichtigung des AEM Asset Compute-Service über den Abschluss des Uploads. Das folgende logische Flussdiagramm veranschaulicht den Fluss des direkten binären Uploads.
Die aem-upload-Bibliothek
Die Bibliothek aem-upload Node.js abstrahiert die Implementierungsdetails des Ansatzes direkter binärer Upload. Es stehen zwei Klassen zur Orchestrierung des Upload-Prozesses zur Verfügung:
- FileSystemUpload - Wird beim Hochladen von Dateien aus dem lokalen Dateisystem verwendet, einschließlich Unterstützung für Verzeichnisstrukturen
- DirectBinaryUpload - Damit können Sie den binären Upload-Prozess genauer steuern, z. B. das Hochladen aus Streams oder Puffern
Beispielanwendung
Verwenden Sie das Programm aem-asset-upload-sample, um mehr über den programmgesteuerten Upload-Prozess für Assets zu erfahren. Die Beispielanwendung zeigt die Verwendung von FileSystemUpload und DirectBinaryUpload Klassen aus der Bibliothek aem-upload.
Voraussetzungen
Bevor Sie die Beispielanwendung ausführen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
- AEM as a Cloud Service-Autorenumgebung, z. B. schnelle Entwicklungsumgebung (RDE), Entwicklungsumgebung usw.
- Node.js (neueste LTS-Version)
- Grundlegendes zu Node.js und npm
Beispielanwendung herunterladen
-
Laden Sie die ZIP-Datei aem-asset-upload-sample des Programms herunter und extrahieren Sie sie.
code language-bash $ unzip aem-asset-upload-sample.zip -
Öffnen Sie den extrahierten Ordner in Ihrem bevorzugten Code-Editor.
code language-bash $ cd aem-asset-upload-sample $ code . -
Installieren Sie mithilfe des Code-Editor-Terminals die Abhängigkeiten.
code language-bash $ npm install
Beispielanwendung konfigurieren
Bevor Sie die Beispielanwendung ausführen, müssen Sie sie mit den erforderlichen AEM as a Cloud Service-Umgebungsdetails wie AEM-Autoren-URL, Authentifizierungsmethode und Asset-Ordnerpfad konfigurieren.
Es (mehrere Authentifizierungsmethoden), von der Bibliothek aem-upload Node.js unterstützt werden. In der folgenden Tabelle sind die unterstützten Authentifizierungsmethoden und ihr Zweck aufgeführt.
Gehen Sie wie folgt vor, um die Beispielanwendung zu konfigurieren:
-
Kopieren Sie die
env.examplein.envDatei .code language-bash $ cp env.example .env -
Öffnen Sie die
.envund aktualisieren Sie dieAEM_URLUmgebungsvariable mit der AEM as a Cloud Service-Autoren-URL. -
Wählen Sie die Authentifizierungsmethode aus den folgenden Optionen aus und aktualisieren Sie die entsprechenden Umgebungsvariablen.
Um die Standardauthentifizierung zu verwenden, müssen Sie einen Benutzer in der AEM as a Cloud Service-Umgebung erstellen.
-
Melden Sie sich bei Ihrer AEM as a Cloud Service-Umgebung an.
-
Navigieren Sie zu Tools > Sicherheit > Benutzer und klicken Sie auf die Schaltfläche Erstellen.
-
Benutzerdetails eingeben
-
Fügen Sie auf Registerkarte die Gruppe DAM-Benutzer hinzu. Klicken Sie auf Schaltfläche „Speichern und schließen.
-
Aktualisieren Sie die Umgebungsvariablen
AEM_USERNAMEundAEM_PASSWORDmit dem Benutzernamen und Kennwort des erstellten Benutzers.
Um das lokale Entwicklungs-Token abzurufen, müssen Sie die AEM-Developer Console verwenden. Das generierte Token ist vom Typ JSON Web Token (JWT).
-
Melden Sie sich bei Adobe Cloud Manager an und gehen Sie zur gewünschten Detailseite Umgebung. Klicken Sie auf die "…“ und wählen Sie Developer Console.
-
Melden Sie sich bei AEM Developer Console an und verwenden Sie die Schaltfläche Neue Konsole, um zur neueren Konsole zu wechseln.
-
Wählen Sie im Abschnitt Tools die Option Integrationen und klicken Sie auf die Schaltfläche Lokales Token.
-
Kopieren Sie den Token-Wert und aktualisieren Sie die
AEM_BEARER_TOKENUmgebungsvariable mit dem Token-Wert.
Beachten Sie, dass das lokale Entwicklungs-Token 24 Stunden lang gültig ist und für den Benutzer ausgestellt wird, der das Token generiert hat.
Um die Dienstanmeldeinformationen abzurufen, müssen Sie die AEM-Developer Console verwenden. Sie wird verwendet, um das Token vom Typ JSON Web Token (JWT) mit dem npm-Modul jwt-auth zu generieren.
-
Melden Sie sich bei Adobe Cloud Manager an und gehen Sie zur gewünschten Detailseite Umgebung. Klicken Sie auf die "…“ und wählen Sie Developer Console.
-
Melden Sie sich bei AEM Developer Console an und verwenden Sie die Schaltfläche Neue Konsole, um zur neueren Konsole zu wechseln.
-
Wählen Sie im Abschnitt Tools die Option Integrationen und klicken Sie auf die Schaltfläche Neues technisches Konto erstellen.
-
Klicken Sie auf Option „Anzeigen, um die JSON-Dienstanmeldeinformationen zu kopieren.
-
Erstellen Sie eine
service-credentials.jsonDatei im Stammverzeichnis der Beispielanwendung und fügen Sie die JSON-Datei mit den Dienstanmeldeinformationen in die Datei ein. -
Aktualisieren Sie die Umgebungsvariable
AEM_SERVICE_CREDENTIALS_FILEmit dem Pfad zur Datei service-credentials.json. -
Stellen Sie sicher, dass der Benutzer mit den Service-Anmeldeinformationen über die erforderlichen Berechtigungen zum Hochladen von Assets in die AEM as a Cloud Service-Umgebung verfügt. Weitere Informationen finden Sie auf Seite „Zugriff in AEM .
Im Folgenden finden Sie eine vollständige .env mit allen drei konfigurierten Authentifizierungsmethoden.
# AEM Environment Configuration
# Copy this file to .env and fill in your AEM as a Cloud Service details
# AEM as a Cloud Service Author URL (without trailing slash)
# Example: https://author-p12345-e67890.adobeaemcloud.com
AEM_URL=https://author-p63947-e1733365.adobeaemcloud.com
# Upload Configuration
# Target folder in AEM DAM where assets will be uploaded
TARGET_FOLDER=/content/dam
# DirectBinaryUpload Remote URLs (required for DirectBinaryUpload example)
# URLs for remote files to upload in the DirectBinaryUpload example
# These demonstrate uploading from remote sources (URLs, CDNs, APIs)
REMOTE_FILE_URL_1=https://placehold.co/600x400/red/white?text=Adobe+Experience+Manager+Assets
################################################################
# Authentication - Choose one of the following methods:
################################################################
# Method 1: Service Credentials (RECOMMENDED for production)
# Download service credentials JSON from AEM Developer Console and save it locally
# Then provide the path to the file here
AEM_SERVICE_CREDENTIALS_FILE=./service-credentials.json
# Method 2: Bearer Token Authentication (for manual testing)
AEM_BEARER_TOKEN=eyJhbGciOiJSUzI1NiIsIng1dSI6Imltc19uYTEta2V5LWF0LTEuY2VyIiwia2lkIjoiaW1zX25hM....fsdf-Rgt5hm_8FHutTyNQnkj1x1SUs5OkqUfJaGBaKBKdqQ
# Method 3: Basic Authentication (for development/testing only)
AEM_USERNAME=asset-uploader-local-user
AEM_PASSWORD=asset-uploader-local-user
# Optional: Enable detailed logging
DEBUG=false
Ausführen der Beispielanwendung
Das Beispielprogramm zeigt drei verschiedene Möglichkeiten, Beispiel-Assets in eine AEM as a Cloud Service-Umgebung hochzuladen.
- FileSystemUpload - Hochladen von Dateien aus einem lokalen Dateisystem mit Verzeichnisstrukturunterstützung und automatischer Ordnererstellung
- DirectBinaryUpload - Lädt eine Remote-Datei hoch. Die Binärdatei wird vor dem Hochladen in die AEM as a Cloud Service-Umgebung im Speicher gepuffert.
- Batch-Upload - Lädt mehrere Dateien aus einem lokalen Dateisystem in Batches mit automatischer Wiederholungslogik und Fehlerbehebung hoch. Im Hintergrund verwendet sie die
FileSystemUpload-Klasse zum Hochladen von Dateien aus dem lokalen Dateisystem.
Zu ladende Assets befinden sich im Ordner sample-assets und enthalten img, video und doc Unterordner, die jeweils einige Beispiel-Assets enthalten.
- Um die Beispielanwendung auszuführen, verwenden Sie den folgenden Befehl:
$ npm start
- Geben Sie die gewünschte Option Zahl aus den folgenden Auswahlmöglichkeiten ein:
╔════════════════════════════════════════════════════════════╗
║ AEM Asset Upload Sample Application ║
║ Demonstrating @adobe/aem-upload library ║
╚════════════════════════════════════════════════════════════╝
Choose an upload method:
1. FileSystemUpload - Upload files from local filesystem with auto-folder creation
2. DirectBinaryUpload - Upload from remote URLs/streams to AEM
3. Batch Upload - Upload multiple files in batches with retry logic
4. Exit
Auf den folgenden Registerkarten werden die Ausführung der Beispielanwendung, ihre Ausgabe und hochgeladene Assets in der AEM as a Cloud Service-Umgebung für jede Upload-Methode angezeigt.
- Die Beispielanwendungsausgabe für
FileSystemUploadOption:
| code language-bash |
|---|
|
-
Assets mit
FileSystemUploadOption in AEM as a Cloud Service-Umgebung hochgeladen:
- Die Beispielanwendungsausgabe für
DirectBinaryUploadOption:
| code language-bash |
|---|
|
- Assets mit
DirectBinaryUploadOption in AEM as a Cloud Service-Umgebung hochgeladen:
- Die Beispielanwendungsausgabe für
Batch UploadOption:
| code language-bash |
|---|
|
- Assets mit
Batch UploadOption in AEM as a Cloud Service-Umgebung hochgeladen:
Überprüfen des Beispiel-Anwendungs-Codes
Der Haupteinstiegspunkt der Beispielanwendung ist die index.js. Sie enthält die promptUser, die den Benutzer zur Auswahl auffordert und das ausgewählte Beispiel ausführt.
/**
* Prompts user for choice and executes the selected example
*/
function promptUser() {
rl.question(chalk.bold('Enter your choice (1-4): '), async (answer) => {
console.log('');
try {
switch (answer.trim()) {
case '1':
console.log(chalk.bold.green('\n▶ Running FileSystemUpload Example...\n'));
await filesystemUpload.main();
break;
case '2':
console.log(chalk.bold.green('\n▶ Running DirectBinaryUpload Example...\n'));
await directBinaryUpload.main();
break;
case '3':
console.log(chalk.bold.green('\n▶ Running Batch Upload Example...\n'));
await batchUpload.main();
break;
case '4':
rl.close();
return;
default:
console.log(chalk.red('\n✗ Invalid choice. Please enter 1, 2, 3, or 4.\n'));
}
// After example completes, ask if user wants to continue
rl.question(chalk.bold('\nPress Enter to return to menu or Ctrl+C to exit...'), () => {
displayMenu();
promptUser();
});
} catch (error) {
console.error(chalk.red('\n✗ Error:'), error.message);
rl.question(chalk.bold('\nPress Enter to return to menu...'), () => {
displayMenu();
promptUser();
});
}
});
}
Den vollständigen Code finden Sie in der index.js aus der Beispielanwendung.
Auf den folgenden Registerkarten werden die Implementierungsdetails der einzelnen Upload-Methoden angezeigt.
Die FileSystemUpload-Klasse wird verwendet, um Dateien aus dem lokalen Dateisystem mit Unterstützung der Verzeichnisstruktur und automatischer Ordnererstellung hochzuladen.
| code language-javascript |
|---|
|
Den vollständigen Code finden Sie in der examples/filesystem-upload.js aus der Beispielanwendung.
Die DirectBinaryUpload-Klasse wird zum Hochladen einer Remote-Datei in die AEM as a Cloud Service-Umgebung verwendet.
| code language-javascript |
|---|
|
Den vollständigen Code finden Sie in der examples/direct-binary-upload.js aus der Beispielanwendung.
Die Dateien werden in Batches aufgeteilt und mit automatischer Wiederholungslogik und Fehlerbehebung in Batches hochgeladen. Im Hintergrund verwendet sie die FileSystemUpload-Klasse zum Hochladen von Dateien aus dem lokalen Dateisystem.
| code language-javascript |
|---|
|
Den vollständigen Code finden Sie in der examples/batch-upload.js aus der Beispielanwendung.
Außerdem enthält die README.md aus der Beispielanwendung die ausführliche Dokumentation für die Beispielanwendung.
Best Practices
-
Wählen Sie die richtige Authentifizierungsmethode aus:
Verwenden Sie nur Service-Anmeldeinformationen für Produktionsumgebungen, ein lokales Entwicklungstoken und die Standardauthentifizierung für Entwicklung/Tests. Stellen Sie sicher, dass der Benutzer mit den Service-Anmeldeinformationen über die erforderlichen Berechtigungen zum Hochladen von Assets in die AEM as a Cloud Service-Umgebung verfügt. -
Wählen Sie die richtige Upload-Methode aus:
Verwenden Sie FileSystemUpload für lokale Dateien mit automatischer Ordnererstellung, DirectBinaryUpload für Streams/Puffer/Remote-URLs mit feinabgestimmter Steuerung und Batch-Upload-Muster für Produktionsumgebungen mit mehr als 1000 Dateien, die eine Wiederholungslogik erfordern. -
DirectBinaryUpload-Dateiobjekte korrekt strukturieren
Verwenden Sie die Blob-Eigenschaft (nicht den Puffer) mit den erforderlichen Feldern: { fileName, fileSize, blob: buffer, targetFolder } und denken Sie daran, dass DirectBinaryUpload Ordner NICHT automatisch erstellt. -
Beispielanwendung als Referenz:
Die Beispielanwendung ist eine gute Referenz für die Implementierungsdetails des programmgesteuerten Asset-Upload-Prozesses. Sie können sie als Ausgangspunkt für Ihre eigene Implementierung verwenden.