Componentes internos de um aplicativo personalizado how-custom-application-works

Use a ilustração a seguir para entender o fluxo de trabalho completo quando um ativo digital é processado usando um aplicativo personalizado por um cliente.

Fluxo de trabalho de aplicativo personalizado

Figura: etapas envolvidas no processamento de um ativo usando o Adobe Asset Compute Service.

Registro registration

O cliente deve chamar /register uma vez antes da primeira solicitação para /process para que possa configurar e recuperar a URL do diário para receber Adobe I/O Events Eventos para Adobe Asset compute.

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"

A biblioteca JavaScript @adobe/asset-compute-client pode ser usada em aplicativos NodeJS para manipular todas as etapas necessárias, desde o registro, processamento até a manipulação de eventos assíncronos. Para obter mais informações sobre os cabeçalhos obrigatórios, consulte Autenticação e Autorização.

Processamento processing

O cliente envia uma solicitação processando.

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>

O cliente é responsável por formatar corretamente as representações com URLs pré-assinados. A biblioteca JavaScript @adobe/node-cloud-blobstore-wrapper pode ser usada em aplicativos NodeJS para pré-assinar URLs. Atualmente, a biblioteca é compatível apenas com o Armazenamento de blobs do Azure e com os Contêineres do AWS S3.

A solicitação de processamento retorna um requestId que pode ser usado para sondar Adobe I/O Eventos.

Um exemplo de solicitação de processamento de aplicativo personalizado está abaixo.

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

O Asset Compute Service envia as solicitações de representação do aplicativo personalizado para o aplicativo personalizado. Ele usa um POST HTTP para o URL de aplicativo fornecido, que é o URL de ação da Web seguro do App Builder. Todas as solicitações usam o protocolo HTTPS para maximizar a segurança dos dados.

O SDK do Asset Compute usado por um aplicativo personalizado lida com a solicitação POST HTTP. Também é capaz de fazer download da origem, carregar representações, enviar Adobe I/O Events e manipular erros.

Código do aplicativo application-code

O código personalizado só precisa fornecer um retorno de chamada que use o arquivo de origem disponível localmente (source.path). O rendition.path é o local para colocar o resultado final de uma solicitação de processamento de ativo. O aplicativo personalizado usa o retorno de chamada para transformar os arquivos de origem disponíveis localmente em um arquivo de representação usando o nome transmitido (rendition.path). Um aplicativo personalizado deve gravar em rendition.path para criar uma representação:

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

Baixar arquivos de origem download-source

Um aplicativo personalizado só lida com arquivos locais. O SDK do Asset Compute manipula o download do arquivo de origem.

Criação de representação rendition-creation

O SDK chama uma função de retorno de chamada de representação assíncrona para cada representação.

A função de retorno de chamada tem acesso aos objetos origem e representação. O source.path já existe e é o caminho para a cópia local do arquivo de origem. O rendition.path é o caminho onde a representação processada deve ser armazenada. A menos que o sinalizador disableSourceDownload esteja definido, o aplicativo deve usar exatamente o rendition.path. Caso contrário, o SDK não poderá localizar ou identificar o arquivo de representação e falhará.

A simplificação excessiva do exemplo é feita para ilustrar e se concentrar na anatomia de um aplicativo personalizado. O aplicativo apenas copia o arquivo de origem para o destino da representação.

Para obter mais informações sobre os parâmetros de retorno de chamada de representação, consulte API do SDK do Asset Compute.

Fazer upload de representações upload-rendition

Depois que cada representação é criada e armazenada em um arquivo com o caminho fornecido por rendition.path, o SDK do Asset Compute carrega cada representação em um armazenamento na nuvem (AWS ou Azure). Um aplicativo personalizado obtém várias representações ao mesmo tempo se, e somente se, a solicitação recebida tiver várias representações apontando para o mesmo URL de aplicativo. O upload para o armazenamento na nuvem é feito após cada representação e antes de executar o retorno de chamada para a próxima representação.

O batchWorker() tem um comportamento diferente. Ele processa todas as representações e, somente depois que todas tiverem sido processadas, faz o upload delas.

Adobe I/O Eventos aio-events

O SDK envia o Adobe I/O Events para cada representação. Estes eventos são do tipo rendition_created ou rendition_failed, dependendo do resultado. Para obter mais informações, consulte Asset compute de eventos assíncronos.

Receber Adobe I/O Eventos receive-aio-events

O cliente consulta o diário de Adobe I/O Events de acordo com sua lógica de consumo. A URL inicial do diário é a fornecida na resposta da API /register. Eventos podem ser identificados usando o requestId que está presente nos eventos e é o mesmo retornado em /process. Cada representação tem um evento separado que é enviado assim que a representação é carregada (ou falha). Ao receber um evento correspondente, o cliente pode exibir ou manipular as representações resultantes.

A biblioteca JavaScript asset-compute-client simplifica a sondagem do diário usando o método waitActivation() para obter todos os eventos.

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

Para obter detalhes sobre como obter eventos de diário, consulte Adobe I/O Events API.

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