Een aangepaste toepassing ontwikkelen develop

Voordat u begint met het ontwikkelen van een aangepaste toepassing:

Een aangepaste toepassing maken create-custom-application

Zorg ervoor om Adobe lucht-clite hebben plaatselijk geïnstalleerd.

  1. Om een douanetoepassing tot stand te brengen, creeer een project van App Builder. Voer hiervoor aio app init <app-name> in de terminal uit.

    Als u niet reeds hebt het programma geopend, zet dit bevel browser ertoe aan vragend u om in Adobe Developer Consolemet uw Adobe ID te ondertekenen. Zie hiervoor meer informatie bij het ondertekenen binnen van de klem.

    Adobe raadt u aan zich eerst aan te melden. Als u kwesties hebt, dan volg de instructies om een app tot stand te brengen zonder het programma te openen.

  2. Nadat u zich hebt aangemeld, volgt u de aanwijzingen in de CLI en selecteert u de Organization , Project en Workspace die u voor de toepassing wilt gebruiken. Kies het project en de werkruimte die u creeerde toen u opstelling uw milieu. Selecteer DX Asset Compute Worker bij de aanwijzing Which extension point(s) do you wish to implement ? :

    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. Selecteer Actions wanneer dit wordt gevraagd bij Which Adobe I/O App features do you want to enable for this project? . Schakel de optie Web Assets uit als webelementen verschillende verificatie- en autorisatiecontroles gebruiken.

    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. Selecteer Adobe Asset Compute Worker bij de aanwijzing Which type of sample actions do you want to create? :

    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. Volg de rest herinneringen en open de nieuwe toepassing in de Code van Visual Studio (of uw favoriete coderedacteur). Het bevat de basiscode en voorbeeldcode voor een aangepaste toepassing.

    Lees hier over de belangrijkste componenten van een App Builder app.

    De de hefboomwerkingen van de malplaatjetoepassing Asset compute SDK van de Adobevoor het uploaden, het downloaden, en het orchestreren van toepassingsuitvoeringen zodat moeten de ontwikkelaars slechts de logica van de douanetoepassing uitvoeren. In de map actions/<worker-name> voegt u in het bestand index.js de aangepaste toepassingscode toe.

Zie de toepassingen van de voorbeelddouanevoor voorbeelden en ideeën voor douanetoepassingen.

Referenties toevoegen add-credentials

Wanneer u zich aanmeldt bij het maken van de toepassing, worden de meeste App Builder-gegevens verzameld in uw ENV-bestand. Voor het gebruik van het ontwikkelaarsgereedschap zijn echter aanvullende gegevens vereist.

Inloggegevens voor opslag van het gereedschap Ontwikkelaar developer-tool-credentials

Het hulpmiddel voor ontwikkelaars om aangepaste apps met behulp van Asset Compute service te evalueren, vereist het gebruik van een container voor cloudopslag. Deze container is essentieel voor het opslaan van testbestanden en voor het ontvangen en presenteren van uitvoeringen die door de apps worden gemaakt.

NOTE
Deze container staat los van de cloudopslag van Adobe Experience Manager als een Cloud Service . Het is alleen van toepassing voor het ontwikkelen en testen met het Asset compute developer tool.

Zorg ervoor om toegang tot a gesteunde container van de wolkenopslagte hebben. Deze container wordt gebruikt collectief door diverse ontwikkelaars voor verschillende projecten wanneer noodzakelijk.

Referenties toevoegen aan ENV-bestand add-credentials-env-file

Voeg de volgende gegevens voor het ontwikkelprogramma in het .env -bestand in. Het bestand bevindt zich in de hoofdmap van uw App Builder-project:

  1. Voeg het absolute pad toe aan het gemaakte persoonlijke sleutelbestand terwijl u services toevoegt aan uw App Builder-project:

    code language-conf
    ASSET_COMPUTE_PRIVATE_KEY_FILE_PATH=
    
  2. Download het bestand van de Adobe Developer Console. Ga naar de hoofdmap van het project en klik op Alles downloaden rechtsboven in het scherm. Het bestand wordt gedownload met <namespace>-<workspace>.json als bestandsnaam. Voer een van de volgende handelingen uit:

    • Wijzig de naam van het bestand in console.json en verplaats het in de hoofdmap van het project.

    • U kunt ook het absolute pad naar het JSON-bestand voor Adobe Developer Console-integratie toevoegen. Dit dossier is het zelfde console.jsondossier dat in uw projectwerkruimte wordt gedownload.

      code language-conf
      ASSET_COMPUTE_INTEGRATION_FILE_PATH=
      
  3. Voeg S3 of Azure opslaggeloofsbrieven toe. U hebt slechts toegang tot één cloudopslagoplossing nodig.

    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
Het bestand config.json bevat referenties. Voeg vanuit uw project het JSON-bestand toe aan uw .gitignore -bestand om te voorkomen dat het wordt gedeeld. Hetzelfde geldt voor .env - en .aio -bestanden.

De toepassing uitvoeren run-custom-application

Alvorens de toepassing met het hulpmiddel van de ontwikkelaar van de Asset compute uit te voeren, vorm behoorlijk de geloofsbrieven.

Gebruik de opdracht aio app run om de toepassing uit te voeren in het gereedschap Ontwikkelaar. De toepassing implementeert de actie naar Adobe I/O Runtime en start het hulpprogramma voor ontwikkeling op uw lokale computer. Dit hulpmiddel wordt gebruikt om toepassingsverzoeken tijdens ontwikkeling te testen. Hier volgt een voorbeeld van een verzoek om uitvoering:

"renditions": [
    {
        "worker": "https://1234_my_namespace.adobeioruntime.net/api/v1/web/example-custom-worker-master/worker",
        "name": "image.jpg"
    }
]
NOTE
Gebruik de markering --local niet met de opdracht run . De functie werkt niet met aangepaste toepassingen van Asset Compute en het Asset compute-ontwikkelaarsgereedschap. Aangepaste toepassingen worden aangeroepen door de service Asset Compute die geen toegang heeft tot handelingen die op de lokale computers van de ontwikkelaar worden uitgevoerd.

Zie hierom uw toepassing te testen en te zuiveren. Wanneer u wordt gebeëindigd ontwikkelend uw douanetoepassing, stelt uw douanetoepassingop.

Probeer de voorbeeldtoepassing van de Adobe try-sample

Hieronder vindt u voorbeelden van aangepaste toepassingen:

Aangepaste toepassing sjabloon template-custom-application

worker-basicis een malplaatjetoepassing. Het produceert een vertoning door het brondossier eenvoudig te kopiëren. De inhoud van deze toepassing is de sjabloon die wordt ontvangen wanneer u Adobe Asset Compute kiest bij het maken van de audio-app.

Het toepassingsdossier, worker-basic.jsgebruikt asset-compute-sdkom het brondossier te downloaden, elke vertoningsverwerking te ordenen, en de resulterende vertoningen terug naar wolkenopslag te uploaden.

De renditionCallbackdie binnen de toepassingscode wordt bepaald is waar te om alle logica van de toepassingsverwerking uit te voeren. De rendercallback in worker-basic kopieert eenvoudig de inhoud van het bronbestand naar het weergavebestand.

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);
});

Een externe API aanroepen call-external-api

In de toepassingscode kunt u externe API-aanroepen maken die u helpen bij de verwerking van toepassingen. Hieronder ziet u een voorbeeld van een toepassingsbestand dat een externe API aanroept.

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

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

Bijvoorbeeld, worker-animal-picturesdoet een haalverzoek aan een statische URL van Wikimedia gebruikend de node-httptransferbibliotheek.

Aangepaste parameters doorgeven pass-custom-parameters

U kunt aangepaste gedefinieerde parameters doorgeven via de weergaveobjecten. Binnen de toepassing kan naar deze instructies worden verwezen in rendition instructies. Een voorbeeld van een weergaveobject is:

"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"
    }
]

Een voorbeeld van een toepassingsbestand dat toegang heeft tot een aangepaste parameter is het volgende:

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"`
});

example-worker-animal-pictures gaat een douaneparameter animal overom te bepalen welk dossier van Wikimedia moet halen.

Ondersteuning voor verificatie en autorisatie authentication-authorization-support

Standaard worden aangepaste toepassingen voor Asset computen geleverd met verificatie- en verificatiecontroles voor het App Builder-project. Ingeschakeld door de require-adobe-auth -annotatie in te stellen op true in de manifest.yml .

Andere Adobe-API's openen access-adobe-apis

Voeg de API-services toe aan de Asset Compute Console-werkruimte die in Setup is gemaakt. Deze services maken deel uit van het JWT-toegangstoken dat door Asset Compute Service wordt gegenereerd. Het token en andere gegevens zijn toegankelijk binnen het object application params .

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

Referenties doorgeven voor systemen van derden pass-credentials-for-tp

Om geloofsbrieven voor andere externe diensten te behandelen, ga hen als standaardparameters over de acties. Ze worden automatisch tijdens de doortocht versleuteld. Voor meer informatie, zie creërend acties in de de ontwikkelaarsgids van Adobe I/O Runtime. Stel ze vervolgens in met behulp van omgevingsvariabelen tijdens de implementatie. Deze parameters zijn toegankelijk in het params -object binnen de handeling.

Stel de standaardparameters in in de inputs in de manifest.yml :

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

De expressie $VAR leest de waarde van een omgevingsvariabele met de naam VAR .

Tijdens het ontwikkelen kunt u de waarde in het lokale .env -bestand toewijzen. De reden hiervoor is dat aio omgevingsvariabelen automatisch importeert uit .env -bestanden, samen met de variabelen die zijn ingesteld door de initiërende shell. In dit voorbeeld ziet het .env -bestand er als volgt uit:

#...
SECRET_KEY=secret-value

Voor productieplaatsing zou men de milieuvariabelen in het systeem van CI kunnen plaatsen, bijvoorbeeld gebruikend geheimen in Acties GitHub. Tot slot hebt u als volgt toegang tot de standaardparameters binnen de toepassing:

const key = params.secretKey;

Toepassingen vergroten/verkleinen sizing-workers

Een toepassing loopt in een container in Adobe I/O Runtime met grenzendie door manifest.yml kunnen worden gevormd:

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

Vanwege de uitgebreide verwerking door Asset compute-toepassingen moet u deze limieten aanpassen voor optimale prestaties (groot genoeg om binaire elementen te verwerken) en efficiëntie (zonder bronnen te verspillen vanwege ongebruikt containergeheugen).

De standaardtime-out voor acties in Runtime is een minuut, maar deze kan worden verhoogd door de limiet timeout in milliseconden in te stellen. Verhoog deze tijd als u grotere bestanden wilt verwerken. Houd rekening met de totale tijd die nodig is om de bron te downloaden, het bestand te verwerken en de vertoning te uploaden. Als een handeling uitvalt, dat wil zeggen dat de activering niet wordt geretourneerd vóór de opgegeven time-outlimiet, verwijdert Runtime de container en gebruikt deze niet opnieuw.

De toepassingen van de asset compute door aard neigen om netwerk en schijfInput of output gebonden te zijn. Het bronbestand moet eerst worden gedownload. De verwerking is vaak bronintensief en de resulterende uitvoeringen worden dan opnieuw geüpload.

U kunt het geheugen dat aan een actiecontainer wordt toegewezen, in megabytes opgeven met de parameter memorySize . Momenteel, bepaalt deze parameter ook hoeveel toegang van cpu tot de container krijgt, en het belangrijkste is het een zeer belangrijk element van de kosten om Runtime (grotere containers kosten meer) te gebruiken. Gebruik hier een grotere waarde wanneer uw verwerking meer geheugen of cpu vereist maar ben voorzichtig om geen middelen te verspillen aangezien groter de containers zijn, lager de algemene productie is.

Bovendien is het mogelijk om de gelijktijdig uitgevoerde handelingen in een container te beheren met de instelling concurrency . Deze instelling is het aantal gelijktijdige activeringen dat een enkele container (van dezelfde handeling) krijgt. In dit model, is de actiecontainer als server Node.js die veelvoudige gezamenlijke verzoeken, tot die grens ontvangt. De standaardwaarde memorySize in de runtime is ingesteld op 200 MB, ideaal voor kleinere App Builder-handelingen. Voor Asset compute-toepassingen kan deze standaardinstelling overdreven zijn vanwege de zwaardere lokale verwerking en het hogere schijfgebruik. Sommige toepassingen, afhankelijk van hun implementatie, werken mogelijk ook niet goed met gelijktijdige activiteit. De Asset compute SDK zorgt ervoor dat de activeringen worden gescheiden door bestanden naar verschillende unieke mappen te schrijven.

Test toepassingen om de optimale getallen voor concurrency en memorySize te vinden. Grotere containers = de hogere geheugengrens kon voor meer gelijktijdige uitvoering toestaan maar kon ook verkwistend voor lager verkeer zijn.

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