Een aangepaste toepassing ontwikkelen develop
Voordat u begint met het ontwikkelen van een aangepaste toepassing:
- Zorg ervoor dat aan alle eerste vereistenwordt voldaan.
- Installeer de vereiste softwarehulpmiddelen.
- Zie opstelling uw milieuom ervoor te zorgen u bereid bent om een douanetoepassing tot stand te brengen.
Een aangepaste toepassing maken create-custom-application
Zorg ervoor om Adobe lucht-clite hebben plaatselijk geïnstalleerd.
-
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.
-
Nadat u zich hebt aangemeld, volgt u de aanwijzingen in de CLI en selecteert u de
Organization
,Project
enWorkspace
die u voor de toepassing wilt gebruiken. Kies het project en de werkruimte die u creeerde toen u opstelling uw milieu. SelecteerDX Asset Compute Worker
bij de aanwijzingWhich 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
-
Selecteer
Actions
wanneer dit wordt gevraagd bijWhich Adobe I/O App features do you want to enable for this project?
. Schakel de optieWeb 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
-
Selecteer
Adobe Asset Compute Worker
bij de aanwijzingWhich 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
-
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 bestandindex.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.
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:
-
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=
note note NOTE JWT is afgekeurd en persoonlijke sleutel kan niet worden gedownload. Terwijl wij aan het bijwerken van de testhulpmiddelen werken, merk op dat de douanearbeiders die met OAuth worden gecreeerd kunnen worden opgesteld maar de apparaten niet zouden werken. -
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.json
dossier dat in uw projectwerkruimte wordt gedownload.code language-conf ASSET_COMPUTE_INTEGRATION_FILE_PATH=
-
-
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=
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"
}
]
--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.js
gebruikt asset-compute-sdk
om het brondossier te downloaden, elke vertoningsverwerking te ordenen, en de resulterende vertoningen terug naar wolkenopslag te uploaden.
De renditionCallback
die 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-pictures
doet een haalverzoek aan een statische URL van Wikimedia gebruikend de node-httptransfer
bibliotheek.
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.