Interni di un’applicazione personalizzata how-custom-application-works

Utilizza l’illustrazione seguente per comprendere il flusso di lavoro end-to-end quando una risorsa digitale viene elaborata da un client utilizzando un’applicazione personalizzata.

Flusso di lavoro dellapplicazione personalizzato

Figura: Passaggi necessari per elaborare una risorsa utilizzando Asset Compute Service.

Registrazione registration

Il client deve chiamare /register una volta prima della prima richiesta a /process per impostare e recuperare l'URL del giornale di registrazione per la ricezione Adobe I/O Ad Adobe Asset compute, gli eventi.

curl -X POST \
  https://asset-compute.adobe.io/register \
  -H "x-ims-org-id: $ORG_ID" \
  -H "x-gw-ims-org-id: $ORG_ID" \
  -H "Authorization: Bearer $JWT_TOKEN" \
  -H "x-api-key: $API_KEY"

Il @adobe/asset-compute-client La libreria JavaScript può essere utilizzata nelle applicazioni NodeJS per gestire tutti i passaggi necessari, dalla registrazione all’elaborazione fino alla gestione asincrona degli eventi. Per ulteriori informazioni sulle intestazioni richieste, consulta Autenticazione e autorizzazione.

Elaborazione processing

Il client invia una elaborazione richiesta.

curl -X POST \
  https://asset-compute.adobe.io/process \
  -H "x-ims-org-id: $ORG_ID" \
  -H "x-gw-ims-org-id: $ORG_ID" \
  -H "Authorization: Bearer $JWT_TOKEN" \
  -H "x-api-key: $API_KEY" \
  -d "<RENDITION_JSON>

Il client è responsabile della corretta formattazione delle rappresentazioni con URL prefirmati. Il @adobe/node-cloud-blobstore-wrapper La libreria JavaScript può essere utilizzata nelle applicazioni NodeJS per pre-firmare gli URL. Attualmente la libreria supporta solo l’archiviazione BLOB di Azure e i contenitori AWS S3.

La richiesta di elaborazione restituisce un requestId che può essere utilizzato per il polling Adobe I/O Eventi.

Di seguito è riportato un esempio di richiesta di elaborazione personalizzata dell’applicazione.

{
    "source": "https://www.adobe.com/some-source-file.jpg",
    "renditions" : [
        {
            "worker": "https://my-project-namespace.adobeioruntime.net/api/v1/web/my-namespace-version/my-worker",
            "name": "rendition1.jpg",
            "target": "https://some-presigned-put-url-for-rendition1.jpg",
        }
    ],
    "userData": {
        "my-asset-id": "1234567890"
    }
}

Il Asset Compute Service invia le richieste di rendering dell’applicazione personalizzata all’applicazione personalizzata. Utilizza un POST HTTP per l’URL dell’applicazione fornito, che è l’URL dell’azione web protetta di App Builder. Tutte le richieste utilizzano il protocollo HTTPS per massimizzare la sicurezza dei dati.

Il SDK ASSET COMPUTE utilizzato da un’applicazione personalizzata gestisce la richiesta HTTP POST. Gestisce anche il download dell’origine, il caricamento delle rappresentazioni e l’invio Adobe I/O e la gestione degli errori.

Codice applicazione application-code

Il codice personalizzato deve fornire solo un callback che accetta il file di origine disponibile localmente (source.path). Il rendition.path è la posizione in cui inserire il risultato finale di una richiesta di elaborazione di risorse. L'applicazione personalizzata utilizza il callback per trasformare i file di origine disponibili localmente in un file di copia trasformata utilizzando il nome passato (rendition.path). Un'applicazione personalizzata deve scrivere in rendition.path per creare una rappresentazione:

const { worker } = require('@adobe/asset-compute-sdk');
const fs = require('fs').promises;

// worker() is the entry point in the SDK "framework".
// The asynchronous function defined is the rendition callback.
exports.main = worker(async (source, rendition) => {

    // Tip: custom worker parameters are available in rendition.instructions.
    console.log(rendition.instructions.name); // should print out `rendition.jpg`.

    // Simplest example: copy the source file to the rendition file destination so as to transfer the asset as is without processing.
    await fs.copyFile(source.path, rendition.path);
});

Scarica i file sorgente download-source

Un’applicazione personalizzata tratta solo i file locali. Il download del file di origine viene gestito da SDK ASSET COMPUTE.

Creazione rappresentazione rendition-creation

L’SDK chiama un’istanza asincrona funzione di callback della rappresentazione per ogni rappresentazione.

La funzione di callback ha accesso al sorgente e rendering oggetti. Il source.path esiste già ed è il percorso della copia locale del file di origine. Il rendition.path è il percorso in cui deve essere memorizzata la rappresentazione elaborata. A meno che flag disableSourceDownload è impostato, l'applicazione deve utilizzare esattamente rendition.path. In caso contrario, l’SDK non è in grado di individuare o identificare il file di rappresentazione e genera un errore.

L'eccessiva semplificazione dell'esempio viene eseguita per illustrare e concentrarsi sull'anatomia di un'applicazione personalizzata. L'applicazione copia semplicemente il file di origine nella destinazione della copia trasformata.

Per ulteriori informazioni sui parametri di callback della rappresentazione, consulta API SDK ASSET COMPUTE.

Carica rappresentazioni upload-rendition

Dopo aver creato e memorizzato ogni copia trasformata in un file con il percorso fornito da rendition.path, il SDK ASSET COMPUTE carica ogni rendering in un’archiviazione cloud (AWS o Azure). Un’applicazione personalizzata ottiene più rappresentazioni contemporaneamente se, e solo se, la richiesta in ingresso ha più rappresentazioni che puntano allo stesso URL dell’applicazione. Il caricamento nell’archiviazione cloud viene eseguito dopo ogni rendering e prima di eseguire il callback per il rendering successivo.

Il batchWorker() ha un comportamento diverso, in quanto elabora effettivamente tutte le rappresentazioni e solo dopo che tutte sono state elaborate carica quelle.

Adobe I/O Eventi aio-events

L’SDK invia Adobe I/O Eventi per ogni rappresentazione. Questi eventi sono di entrambi i tipi rendition_created o rendition_failed a seconda del risultato. Consulta Asset compute di eventi asincroni per i dettagli degli eventi.

Ricezione Adobe I/O Eventi receive-aio-events

Il client esegue il polling di Adobe I/O Giornale di registrazione eventi in base alla sua logica di consumo. L'URL iniziale del giornale di registrazione è quello fornito in /register Risposta API. Gli eventi possono essere identificati utilizzando requestId presente negli eventi e uguale a quello restituito in /process. Ogni rendering ha un evento separato che viene inviato non appena il rendering è stato caricato (o non è riuscito). Una volta ricevuto un evento corrispondente, il client può visualizzare o gestire in altro modo le rappresentazioni risultanti.

Libreria JavaScript asset-compute-client semplifica il polling del diario utilizzando waitActivation() per ottenere tutti gli eventi.

const events = await assetCompute.waitActivation(requestId);
await Promise.all(events.map(event => {
    if (event.type === "rendition_created") {
        // get rendition from cloud storage location
    }
    else if (event.type === "rendition_failed") {
        // failed to process
    }
    else {
        // other event types
        // (could be added in the future)
    }
}));

Per informazioni dettagliate su come ottenere gli eventi del diario, vedere Adobe I/O API Eventi.

recommendation-more-help
b027be24-3772-44c0-a56d-a4ba23dcb50b