Interfaces van een aangepaste toepassing how-custom-application-works
Gebruik de volgende illustratie om inzicht te krijgen in de end-to-end workflow wanneer een digitaal element wordt verwerkt met een aangepaste toepassing van een client.
Cijfer: Stappen betrokken wanneer het verwerken van activa gebruikend Adobe Asset Compute Service.
Registratie registration
De client moet /register
één keer vóór de eerste aanvraag naar /process
aanroepen, zodat deze de journaal-URL voor het ontvangen van Adobe I/O Events -gebeurtenissen voor de Asset compute van Adobe kan instellen en ophalen.
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"
De @adobe/asset-compute-client
JavaScript bibliotheek kan in toepassingen worden gebruikt NodeJS om alle noodzakelijke stappen van registratie, verwerking aan asynchrone gebeurtenisbehandeling te behandelen. Voor meer informatie over de vereiste kopballen, zie Authentificatie en Vergunning.
Verwerking processing
De cliënt verzendt a verwerkingsverzoek.
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>
De client is verantwoordelijk voor de juiste opmaak van de uitvoeringen met vooraf ondertekende URL's. De @adobe/node-cloud-blobstore-wrapper
JavaScript-bibliotheek kan in NodeJS-toepassingen worden gebruikt om URL's vooraf te ondertekenen. Momenteel ondersteunt de bibliotheek alleen Azure Blob Storage en AWS S3 Containers.
De verwerkingsaanvraag retourneert een requestId
die kan worden gebruikt voor opiniepeilingen van Adobe I/O -gebeurtenissen.
Hieronder ziet u een voorbeeld van een aangepaste aanvraag voor de verwerking van toepassingen.
{
"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"
}
}
De Asset Compute Service verzendt de aanvragen voor de uitvoering van de aangepaste toepassing naar de aangepaste toepassing. Er wordt een HTTP-POST gebruikt naar de opgegeven toepassings-URL, de beveiligde webactie-URL van App Builder. Voor alle aanvragen wordt het HTTPS-protocol gebruikt om de gegevensbeveiliging te maximaliseren.
De Asset compute SDKdie door een douanetoepassing wordt gebruikt behandelt het verzoek van de POST van HTTP. Het handelt ook het downloaden van de bron, het uploaden van uitvoeringen, het verzenden van Adobe I/O Events en fout behandeling af.
Toepassingscode application-code
De code van de douane moet slechts callback verstrekken die het plaatselijk beschikbare brondossier (source.path
) neemt. De rendition.path
is de locatie waar het uiteindelijke resultaat van een aanvraag voor de verwerking van middelen wordt geplaatst. De douanetoepassing gebruikt callback om de plaatselijk beschikbare brondossiers in een vertoningsdossier te veranderen gebruikend de binnen overgegaan naam (rendition.path
). Een aangepaste toepassing moet naar rendition.path
schrijven om een uitvoering te maken:
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);
});
Bronbestanden downloaden download-source
Een aangepaste toepassing heeft alleen betrekking op lokale bestanden. De Asset compute SDKbehandelt het downloaden van het brondossier.
Vertoning maken rendition-creation
SDK roept een asynchrone functie van de vertoningscallback van de vertoningvoor elke vertoning.
De callback functie heeft toegang tot de bronen vertoningvoorwerpen. Het source.path
bestaat al en is het pad naar de lokale kopie van het bronbestand. rendition.path
is het pad waarin de verwerkte vertoning moet worden opgeslagen. Tenzij de disableSourceDownload vlagwordt geplaatst, moet de toepassing precies rendition.path
gebruiken. Anders kan de SDK het weergavebestand niet vinden of identificeren en mislukt.
De overdreven vereenvoudiging van het voorbeeld wordt gedaan om de anatomie van een douanetoepassing te illustreren en te concentreren. De toepassing kopieert het bronbestand alleen naar de weergavebestemming.
Voor meer informatie over de parameters van de vertoningscallback, zie Asset compute SDK API.
Uitvoeringen uploaden upload-rendition
Nadat elke vertoning wordt gecreeerd en in een dossier met de weg opgeslagen die door rendition.path
wordt verstrekt, uploadt de Asset compute SDKelke vertoning aan een wolkenopslag (of AWS of Azure). Een aangepaste toepassing krijgt meerdere uitvoeringen tegelijkertijd als en alleen als de binnenkomende aanvraag meerdere uitvoeringen bevat die verwijzen naar dezelfde toepassings-URL. Het uploaden naar de cloudopslag vindt plaats na elke uitvoering en voordat de callback voor de volgende uitvoering wordt uitgevoerd.
De batchWorker()
heeft een ander gedrag. Alle uitvoeringen worden verwerkt en pas nadat ze zijn verwerkt, worden ze geüpload.
Adobe I/O Gebeurtenissen aio-events
De SDK verzendt Adobe I/O Events voor elke uitvoering. Deze gebeurtenissen zijn van het type rendition_created
of rendition_failed
afhankelijk van het resultaat. Voor meer informatie, zie Asset compute asynchrone gebeurtenissen.
Adobe I/O Gebeurtenissen ontvangen receive-aio-events
De client pollt het Adobe I/O Events journaal volgens de logica van het verbruik. De eerste journaal-URL is de URL die wordt opgegeven in de API-reactie van /register
. Gebeurtenissen kunnen worden geïdentificeerd met de requestId
die aanwezig is in de gebeurtenissen en die hetzelfde is als die wordt geretourneerd in /process
. Elke vertoning heeft een aparte gebeurtenis die wordt verzonden zodra de vertoning is geüpload (of mislukt). Wanneer de client een overeenkomende gebeurtenis ontvangt, kan de client de resulterende uitvoeringen weergeven of op een andere manier afhandelen.
De bibliotheek van JavaScript asset-compute-client
maakt de dagboekopiniepeiling eenvoudig gebruikend de waitActivation()
methode om alle gebeurtenissen te krijgen.
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)
}
}));
Voor details op hoe te om dagboekgebeurtenissen te krijgen, zie Adobe I/O Events API.