Sviluppare un’applicazione personalizzata develop

Prima di iniziare a sviluppare un’applicazione personalizzata:

Creare un’applicazione personalizzata create-custom-application

Assicurati di avere Adobe aio-cli installato localmente.

  1. Per creare un'applicazione personalizzata: creare un progetto App Builder. Per farlo, esegui aio app init <app-name> nel tuo terminale.

    Se non hai già effettuato l’accesso, questo comando richiede a un browser di accedere al Adobe Developer Console con il tuo Adobe ID. Consulta qui per ulteriori informazioni sull’accesso da cli.

    L'Adobe consiglia di effettuare prima l'accesso. In caso di problemi, segui le istruzioni per creare un'app senza effettuare l'accesso.

  2. Dopo aver effettuato l’accesso, segui le istruzioni riportate nella CLI e seleziona la Organization, Project, e Workspace da utilizzare per l’applicazione. Scegli il progetto e l’area di lavoro creati al momento della configurare l’ambiente. Quando richiesto Which extension point(s) do you wish to implement ?, assicurati di selezionare DX Asset Compute Worker:

    code language-sh
    $ aio app init <app-name>
    Retrieving information from Adobe I/O Console.
    ? Select Org My Adobe Org
    ? Select Project MyAdobe Developer App BuilderProject
    ? Which extension point(s) do you wish to implement ? (Press <space> to select, <a>
    to toggle all, <i> to invert selection)
    ❯◯ DX Experience Cloud SPA
    ◯ DX Asset Compute Worker
    
  3. Quando richiesto con Which Adobe I/O App features do you want to enable for this project?, seleziona Actions. Assicurati di deselezionare Web Assets come risorse web utilizza diversi controlli di autenticazione e autorizzazione.

    code language-bash
    ? Which Adobe I/O App features do you want to enable for this project?
    select components to include (Press <space> to select, <a> to toggle all, <i> to invert selection)
    ❯◉ Actions: Deploy Runtime actions
    ◯ Events: Publish to Adobe I/O Events
    ◯ Web Assets: Deploy hosted static assets
    ◯ CI/CD: Include GitHub Actions based workflows for Build, Test and Deploy
    
  4. Quando richiesto Which type of sample actions do you want to create?, assicurati di selezionare Adobe Asset Compute Worker:

    code language-bash
    ? Which type of sample actions do you want to create?
    Select type of actions to generate
    ❯◉ Adobe Asset Compute Worker
    ◯ Generic
    
  5. Seguire le altre istruzioni visualizzate e aprire la nuova applicazione in Visual Studio Code o nell'editor di codice preferito. Contiene lo scaffolding e il codice di esempio per un’applicazione personalizzata.

    Leggi qui le informazioni sulla componenti principali di un’app App Builder.

    L’applicazione modello sfrutta le funzionalità di Adobe SDK ASSET COMPUTE per il caricamento, il download e l’orchestrazione delle rappresentazioni delle applicazioni, in modo che gli sviluppatori debbano implementare solo la logica dell’applicazione personalizzata. All'interno del actions/<worker-name> cartella, la index.js file è il punto in cui aggiungere il codice personalizzato dell'applicazione.

Consulta esempi di applicazioni personalizzate esempi e idee per applicazioni personalizzate.

Aggiungi credenziali add-credentials

Quando effettui l’accesso durante la creazione dell’applicazione, la maggior parte delle credenziali di App Builder viene raccolta nel file ENV. Tuttavia, l’utilizzo dello strumento per sviluppatori richiede credenziali aggiuntive.

Credenziali di archiviazione dello strumento per sviluppatori developer-tool-credentials

Lo strumento che consente agli sviluppatori di valutare le app personalizzate utilizzando Asset Compute service richiede l’utilizzo di un contenitore di archiviazione cloud. Questo contenitore è essenziale per memorizzare i file di test e per la ricezione e la presentazione delle rappresentazioni prodotte dalle app.

NOTE
Questo contenitore è separato dall’archiviazione cloud di Adobe Experience Manager as a Cloud Service. Si applica solo per lo sviluppo e il testing con lo strumento per sviluppatori Asset Compute.

Assicurati di avere accesso a contenitore di archiviazione cloud supportato. Questo contenitore viene utilizzato collettivamente da vari sviluppatori per progetti diversi, quando necessario.

Aggiungi credenziali al file ENV add-credentials-env-file

Inserisci le credenziali successive per lo strumento di sviluppo in .env file. Il file si trova nella directory principale del progetto App Builder:

  1. Aggiungi il percorso assoluto al file della chiave privata creato durante l’aggiunta di servizi al progetto App Builder:

    code language-conf
    ASSET_COMPUTE_PRIVATE_KEY_FILE_PATH=
    
  2. Scarica il file da Adobe Developer Console. Vai alla directory principale del progetto e fai clic su "Scarica tutto" nell’angolo in alto a destra. Il file viene scaricato con <namespace>-<workspace>.json come nome del file. Effettua una delle operazioni seguenti:

    • Rinomina il file come console.json e spostarlo nella directory principale del progetto.

    • Facoltativamente, puoi aggiungere il percorso assoluto al file JSON dell’integrazione di Adobe Developer Console. Questo file è lo stesso console.json file scaricato nell’area di lavoro del progetto.

      code language-conf
      ASSET_COMPUTE_INTEGRATION_FILE_PATH=
      
  3. Aggiungi le credenziali di archiviazione S3 o Azure. È sufficiente accedere a una sola soluzione di archiviazione cloud.

    code language-conf
    # S3 credentials
    S3_BUCKET=
    AWS_ACCESS_KEY_ID=
    AWS_SECRET_ACCESS_KEY=
    AWS_REGION=
    
    # Azure Storage credentials
    AZURE_STORAGE_ACCOUNT=
    AZURE_STORAGE_KEY=
    AZURE_STORAGE_CONTAINER_NAME=
    
TIP
Il config.json il file contiene le credenziali. Dall’interno del progetto, aggiungi il file JSON al tuo .gitignore per impedire la condivisione. Lo stesso vale per .env e .aio file.

Eseguire l’applicazione run-custom-application

Prima di eseguire l’applicazione con lo strumento per sviluppatori Asset Compute, configura correttamente credenziali.

Per eseguire l’applicazione nello strumento per sviluppatori, utilizza aio app run comando. Distribuisce l’azione in Adobe I/O Runtimee avvia lo strumento di sviluppo sul computer locale. Questo strumento viene utilizzato per testare le richieste dell’applicazione durante lo sviluppo. Di seguito è riportato un esempio di richiesta di rappresentazione:

"renditions": [
    {
        "worker": "https://1234_my_namespace.adobeioruntime.net/api/v1/web/example-custom-worker-master/worker",
        "name": "image.jpg"
    }
]
NOTE
Non utilizzare il --local contrassegno con run comando. Non funziona con Asset Compute applicazioni personalizzate e lo strumento per sviluppatori Asset Compute. Le applicazioni personalizzate vengono richiamate da Asset Compute servizio che non può accedere alle azioni in esecuzione nei computer locali dello sviluppatore.

Consulta qui come testare ed eseguire il debug dell’applicazione. Al termine dello sviluppo dell'applicazione personalizzata, distribuire l’applicazione personalizzata.

Prova l’applicazione di esempio fornita da Adobe try-sample

Di seguito sono riportati alcuni esempi di applicazioni personalizzate:

Applicazione personalizzata modello template-custom-application

Il worker-basic è un'applicazione modello. Genera una copia trasformata semplicemente copiando il file di origine. Il contenuto di questa applicazione è il modello ricevuto al momento della scelta Adobe Asset Compute nella creazione dell'app aio.

Il fascicolo dell'applicazione, worker-basic.js utilizza asset-compute-sdk per scaricare il file di origine, orchestra ogni elaborazione della rappresentazione e carica di nuovo le rappresentazioni risultanti nell’archiviazione cloud.

Il renditionCallback definito all’interno del codice dell’applicazione, è il punto in cui eseguire tutta la logica di elaborazione dell’applicazione. Il callback della rappresentazione in worker-basic copia semplicemente il contenuto del file di origine nel file della copia trasformata.

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

exports.main = worker(async (source, rendition) => {
    // copy source to rendition to transfer 1:1
    await fs.copyFile(source.path, rendition.path);
});

Chiamare un’API esterna call-external-api

Nel codice dell’applicazione, puoi effettuare chiamate API esterne per facilitare l’elaborazione dell’applicazione. Di seguito è riportato un esempio di file di applicazione che richiama un’API esterna.

exports.main = worker(async function (source, rendition) {

    const response = await fetch('https://adobe.com', {
        method: 'GET',
        Authorization: params.AUTH_KEY
    })
});

Ad esempio, il worker-animal-pictures effettua una richiesta di recupero di un URL statico da Wikimedia utilizzando node-httptransfer libreria.

Trasmettere i parametri personalizzati pass-custom-parameters

Potete trasmettere parametri definiti personalizzati attraverso gli oggetti di rendering. È possibile farvi riferimento all’interno dell’applicazione in rendition istruzioni. Un esempio di oggetto di rendering è:

"renditions": [
    {
        "worker": "https://1234_my_namespace.adobeioruntime.net/api/v1/web/example-custom-worker-master/worker",
        "name": "image.jpg",
        "my-custom-parameter": "my-custom-parameter-value"
    }
]

Di seguito è riportato un esempio di file di applicazione che accede a un parametro personalizzato:

exports.main = worker(async function (source, rendition) {

    const customParam = rendition.instructions['my-custom-parameter'];
    console.log('Custom paramter:', customParam);
    // should print out `Custom parameter: "my-custom-parameter-value"`
});

Il example-worker-animal-pictures trasmette un parametro personalizzato animal per determinare quale file recuperare da Wikimedia.

Supporto di autenticazione e autorizzazione authentication-authorization-support

Per impostazione predefinita, le applicazioni personalizzate di Asset compute sono fornite con i controlli di autorizzazione e autenticazione per il progetto App Builder. Attivato impostando require-adobe-auth annotazione a true nel manifest.yml.

Accedere ad altre API Adobe access-adobe-apis

Aggiungi i servizi API alla Asset Compute Area di lavoro della console creata durante la configurazione. Questi servizi fanno parte del token di accesso JWT generato da Asset Compute Service. Il token e le altre credenziali sono accessibili all’interno dell’azione dell’applicazione params oggetto.

const accessToken = params.auth.accessToken; // JWT token for Technical Account with entitlements from the console workspace to the API service
const clientId = params.auth.clientId; // Technical Account client Id
const orgId = params.auth.orgId; // Experience Cloud Organization

Trasmettere le credenziali per i sistemi di terze parti pass-credentials-for-tp

Per gestire le credenziali per altri servizi esterni, trasmettile come parametri predefiniti sulle azioni. Vengono crittografati automaticamente in transito. Per ulteriori informazioni, consulta creazione di azioni nella guida per gli sviluppatori di Adobe I/O Runtime. Quindi impostale utilizzando le variabili di ambiente durante la distribuzione. È possibile accedere a questi parametri in params all'interno dell'azione.

Imposta i parametri di default all'interno del inputs nel manifest.yml:

packages:
  __APP_PACKAGE__:
    actions:
      worker:
        function: 'index.js'
        runtime: 'nodejs:10'
        web: true
        inputs:
           secretKey: $SECRET_KEY
        annotations:
          require-adobe-auth: true

Il $VAR espressione legge il valore da una variabile di ambiente denominata VAR.

Durante lo sviluppo, puoi assegnare il valore nella .env file. Il motivo è perché aio importa automaticamente le variabili di ambiente da .env insieme alle variabili impostate dalla shell di origine. In questo esempio, la proprietà .env il file ha un aspetto simile al seguente:

#...
SECRET_KEY=secret-value

Per la distribuzione di produzione è possibile impostare le variabili di ambiente nel sistema CI, ad esempio utilizzando i segreti nelle azioni GitHub. Infine, accedi ai parametri predefiniti all’interno dell’applicazione in quanto tale:

const key = params.secretKey;

Ridimensionamento delle applicazioni sizing-workers

Un’applicazione viene eseguita in un contenitore in Adobe I/O Runtime con limiti che possono essere configurati tramite manifest.yml:

    actions:
      myworker:
        function: /actions/myworker/index.js
        limits:
          timeout: 300000
          memorySize: 512
          concurrency: 1

A causa dell’elaborazione intensiva eseguita dalle applicazioni Asset Compute, è necessario regolare questi limiti per ottenere prestazioni ottimali (abbastanza grandi da gestire le risorse binarie) ed efficienza (senza sprecare risorse a causa della memoria contenitore non utilizzata).

Il timeout predefinito per le azioni in fase di esecuzione è di un minuto, ma può essere aumentato impostando timeout limite (in millisecondi). Se prevedi di elaborare file di dimensioni maggiori, aumenta questo tempo. Considera il tempo totale necessario per scaricare l’origine, elaborare il file e caricare la rappresentazione. Se un’azione si interrompe per timeout, ovvero non restituisce l’attivazione prima del limite di timeout specificato, Runtime elimina il contenitore e non lo riutilizza.

Le applicazioni di Asset compute per natura tendono ad essere collegate alla rete e al disco. Il file di origine deve essere scaricato per primo. L’elaborazione richiede spesso molte risorse, quindi le rappresentazioni risultanti vengono caricate di nuovo.

È possibile specificare la memoria allocata a un contenitore di azioni in megabyte utilizzando memorySize parametro. Attualmente, questo parametro definisce anche la quantità di accesso alla CPU che il contenitore ottiene e, soprattutto, è un elemento chiave del costo di utilizzo di Runtime (i contenitori più grandi costano di più). Utilizzare un valore maggiore quando l'elaborazione richiede una quantità maggiore di memoria o CPU, ma prestare attenzione a non sprecare risorse, poiché più grandi sono i contenitori, minore è la velocità effettiva complessiva.

Inoltre, è possibile controllare la concorrenza delle azioni all’interno di un contenitore utilizzando concurrency impostazione. Questa impostazione corrisponde al numero di attivazioni simultanee ottenute da un singolo contenitore (della stessa azione). In questo modello, il contenitore delle azioni è simile a un server Node.js che riceve più richieste simultanee, fino a tale limite. Il valore predefinito memorySize in fase di esecuzione è impostato su 200 MB, ideale per azioni App Builder di dimensioni inferiori. Ad Asset compute, questo valore predefinito può essere eccessivo a causa della maggiore complessità dell'elaborazione locale e dell'utilizzo del disco. Alcune applicazioni, a seconda dell’implementazione, potrebbero non funzionare correttamente con le attività simultanee. L’SDK di Asset compute garantisce che le attivazioni siano separate scrivendo file in diverse cartelle univoche.

Eseguire test delle applicazioni per trovare i numeri ottimali per concurrency e memorySize. Contenitori più grandi = un limite di memoria più alto potrebbe consentire una maggiore concorrenza, ma potrebbe anche sprecare per un traffico più basso.

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