Desenvolver um aplicativo personalizado develop
Antes de começar a desenvolver um aplicativo personalizado:
- Assegure que todas as pré-requisitos são cumpridos.
- Instale o ferramentas de software necessárias.
- Consulte configurar o ambiente para verificar se você está pronto para criar um aplicativo personalizado.
Criar um aplicativo personalizado create-custom-application
Certifique-se de ter o Adobe I/O CLI instalado localmente.
-
Para criar um aplicativo personalizado, criar um projeto do App Builder. Para fazer isso, execute
aio app init <app-name>
no terminal.Se você ainda não tiver feito logon, esse comando solicitará que um navegador solicite que você faça logon na Console do Adobe Developer com sua Adobe ID. Consulte aqui para obter mais informações sobre como fazer logon pela cli.
O Adobe recomenda que você faça logon. Se tiver problemas, siga as instruções para criar um aplicativo sem fazer logon.
-
Depois de fazer logon, siga os prompts na CLI e selecione o
Organization
,Project
, eWorkspace
para usar no aplicativo. Escolha o projeto e o espaço de trabalho que você criou ao configurar o ambiente. Quando solicitadoWhich extension point(s) do you wish to implement ?
, selecioneDX 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
-
Quando solicitado com
Which Adobe I/O App features do you want to enable for this project?
, selecioneActions
. Certifique-se de desmarcarWeb Assets
Os ativos da Web usam diferentes verificações de autenticação e autorização.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
-
Quando solicitado
Which type of sample actions do you want to create?
, selecioneAdobe 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
-
Siga o restante dos prompts e abra o novo aplicativo no Visual Studio Code (ou seu editor de código favorito). Ele contém o andaime e o código de amostra de um aplicativo personalizado.
Leia aqui sobre o principais componentes de um aplicativo App Builder.
O aplicativo de modelo aproveita nossa ASSET COMPUTE SDK para o upload, download e orquestração de representações de aplicativos, de modo que os desenvolvedores só precisam implementar a lógica de aplicativo personalizado. Dentro do
actions/<worker-name>
pasta, a variávelindex.js
é onde adicionar o código de aplicativo personalizado.
Consulte exemplo de aplicativos personalizados para obter exemplos e ideias de aplicativos personalizados.
Adicionar credenciais add-credentials
À medida que você faz logon ao criar o aplicativo, a maioria das credenciais do App Builder é coletada no arquivo ENV. No entanto, o uso da ferramenta de desenvolvedor requer credenciais adicionais.
Credenciais de armazenamento da ferramenta do desenvolvedor developer-tool-credentials
A ferramenta de desenvolvedor usada para testar aplicativos personalizados com o Asset Compute service requer um contêiner de armazenamento em nuvem para hospedar arquivos de teste e para receber e exibir representações geradas por aplicativos.
Certifique-se de ter acesso a um contêiner de armazenamento na nuvem compatível. Esse contêiner pode ser compartilhado por vários desenvolvedores em diferentes projetos, conforme necessário.
Adicionar credenciais ao arquivo ENV add-credentials-env-file
Adicione as seguintes credenciais da ferramenta de desenvolvedor ao arquivo ENV na raiz do projeto do App Builder:
-
Adicione o caminho absoluto ao arquivo de chave privada criado ao adicionar serviços ao seu projeto do App Builder:
code language-conf ASSET_COMPUTE_PRIVATE_KEY_FILE_PATH=
-
Baixe o arquivo no Console do Adobe Developer. Vá para a raiz do projeto e clique em "Baixar tudo" no canto superior direito. O arquivo é baixado com
<namespace>-<workspace>.json
como o nome do arquivo. Siga uma das seguintes opções:-
Renomear o arquivo como
console.json
e mova-a para a raiz do seu projeto. -
Como opção, adicione o caminho absoluto ao arquivo JSON de integração do Console do Adobe Developer. Isso é o mesmo
console.json
arquivo que é baixado na área de trabalho do projeto.code language-conf ASSET_COMPUTE_INTEGRATION_FILE_PATH=
-
-
Adicione credenciais de armazenamento do S3 ou do Azure. Você só precisa de acesso a uma solução de armazenamento na nuvem.
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
o arquivo contém credenciais. No seu projeto, adicione o arquivo JSON ao .gitignore
para impedir seu compartilhamento. O mesmo se aplica aos arquivos .env e .aio.Executar o aplicativo run-custom-application
Antes de executar o aplicativo com a Ferramenta de desenvolvedor do Asset compute, configure adequadamente a variável credenciais.
Para executar o aplicativo na ferramenta do desenvolvedor, use aio app run
comando. Ele implanta a ação para Adobe I/O Execute o tempo e inicie a ferramenta de desenvolvimento no computador local. Essa ferramenta é usada para testar solicitações de aplicativos durante o desenvolvimento. Este é um exemplo de solicitação de representação:
"renditions": [
{
"worker": "https://1234_my_namespace.adobeioruntime.net/api/v1/web/example-custom-worker-master/worker",
"name": "image.jpg"
}
]
--local
sinalizador com o run
comando. Não funciona com a Asset Compute aplicativos personalizados e a ferramenta Asset compute Developer. Os aplicativos personalizados são chamados pelo Asset Compute Service que não podem acessar ações executadas nos computadores locais do desenvolvedor.Consulte aqui como testar e depurar seu aplicativo. Quando terminar de desenvolver o aplicativo personalizado, implantar seu aplicativo personalizado.
Experimente o aplicativo de amostra fornecido pelo Adobe try-sample
Veja a seguir exemplos de aplicativos personalizados:
Aplicativo personalizado de modelo template-custom-application
A variável worker-basic é um aplicativo modelo. Ele gera uma representação simplesmente copiando o arquivo de origem. O conteúdo deste aplicativo é o modelo recebido ao escolher Adobe Asset Compute
na criação do aplicativo aio.
O arquivo do aplicativo, worker-basic.js
usa o asset-compute-sdk
para baixar o arquivo de origem, orquestre cada processamento de representação e faça upload das representações resultantes de volta para o armazenamento na nuvem.
A variável renditionCallback
definido no código do aplicativo, é onde executar toda a lógica de processamento do aplicativo. O retorno de chamada da representação em worker-basic
O simplesmente copia o conteúdo do arquivo de origem para o arquivo de representação.
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);
});
Chamar uma API externa call-external-api
No código do aplicativo, é possível fazer chamadas de API externas para ajudar no processamento do aplicativo. Um exemplo de arquivo de aplicativo que chama a API externa está abaixo.
exports.main = worker(async function (source, rendition) {
const response = await fetch('https://adobe.com', {
method: 'GET',
Authorization: params.AUTH_KEY
})
});
Por exemplo, a variável worker-animal-pictures
faz uma solicitação de busca para um URL estático da Wikimedia usando o node-httptransfer
biblioteca.
Envio de parâmetros personalizados pass-custom-parameters
Você pode passar parâmetros definidos pelo cliente pelos objetos de representação. Eles podem ser referenciados dentro do aplicativo no rendition
instruções. Um exemplo de um objeto de representação é:
"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"
}
]
Um exemplo de um arquivo de aplicativo que acessa o parâmetro personalizado é:
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"`
});
A variável example-worker-animal-pictures
passa um parâmetro personalizado animal
para determinar qual arquivo buscar na Wikimedia.
Suporte para autenticação e autorização authentication-authorization-support
Por padrão, os aplicativos personalizados do Asset compute vêm com verificações de Autorização e Autenticação para o projeto do App Builder. Isso é ativado ao configurar o require-adobe-auth
anotação para true
no manifest.yml
.
Acessar outras APIs Adobe access-adobe-apis
Adicione os serviços de API à Asset Compute Espaço de trabalho do console criado na configuração. Esses serviços fazem parte do token de acesso JWT gerado pelo Asset Compute Service. O token e outras credenciais podem ser acessados dentro da ação do aplicativo params
objeto.
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
Transmita credenciais para sistemas de terceiros pass-credentials-for-tp
Para manipular credenciais para outros serviços externos, passe-as como parâmetros padrão nas ações. Elas são criptografadas automaticamente em trânsito. Para obter mais informações, consulte criação de ações no guia do desenvolvedor de tempo de execução. Em seguida, defina-as usando variáveis de ambiente durante a implantação. Esses parâmetros podem ser acessados no campo params
objeto dentro da ação.
Defina os parâmetros padrão dentro do inputs
no manifest.yml
:
packages:
__APP_PACKAGE__:
actions:
worker:
function: 'index.js'
runtime: 'nodejs:10'
web: true
inputs:
secretKey: $SECRET_KEY
annotations:
require-adobe-auth: true
A variável $VAR
A expressão lê o valor de uma variável de ambiente chamada VAR
.
Durante o desenvolvimento, o valor pode ser definido no arquivo ENV local como aio
O lê automaticamente as variáveis de ambiente dos arquivos ENV, além das variáveis definidas no shell de chamada. Neste exemplo, o arquivo ENV tem a seguinte aparência:
#...
SECRET_KEY=secret-value
Para implantação em produção, é possível definir as variáveis de ambiente no sistema CI, por exemplo, usando segredos em Ações do GitHub. Por fim, acesse os parâmetros padrão dentro do aplicativo da seguinte maneira:
const key = params.secretKey;
Dimensionamento de aplicativos sizing-workers
Um aplicativo é executado em um container no Adobe I/O Tempo de execução com limites que pode ser configurado por meio da variável manifest.yml
:
actions:
myworker:
function: /actions/myworker/index.js
limits:
timeout: 300000
memorySize: 512
concurrency: 1
Devido ao processamento mais extenso normalmente feito pelos aplicativos do Asset compute, é mais provável que seja necessário ajustar esses limites para obter o desempenho ideal (grande o suficiente para lidar com ativos binários) e a eficiência (não desperdiçar recursos devido à memória do contêiner não utilizada).
O tempo limite padrão para ações em Tempo de execução é de um minuto, mas pode ser aumentado definindo o parâmetro timeout
limite (em milissegundos). Se você espera processar arquivos maiores, aumente esse tempo. Considere o tempo total necessário para baixar a origem, processar o arquivo e fazer upload da representação. Se uma ação atingir o tempo limite, ou seja, não retornar a ativação antes do tempo limite especificado, o Tempo de execução descartará o contêiner e não o reutilizará.
Por natureza, os aplicativos de asset compute tendem a ser vinculados à rede e à entrada ou saída de disco. Primeiro, é necessário baixar o arquivo de origem. Geralmente, o processamento consome muitos recursos e, em seguida, as representações resultantes são carregadas novamente.
A memória disponível para um contêiner de ação é especificada por memorySize
em MB. Atualmente, isso também define quanto acesso à CPU o contêiner recebe e, mais importante, é um elemento essencial do custo de uso do Tempo de execução (contêineres maiores custam mais). Use um valor maior aqui quando o processamento exigir mais memória ou CPU, mas tenha cuidado para não desperdiçar recursos, pois quanto maior for o contêiner, menor será o throughput geral.
Além disso, é possível controlar a simultaneidade da ação em um contêiner usando o concurrency
configuração. Esse é o número de ativações simultâneas que um único contêiner (da mesma ação) obtém. Nesse modelo, o container de ação é como um servidor Node.js que recebe várias solicitações simultâneas, até esse limite. Se não estiver definido, o padrão em Tempo de execução será 200, o que é ótimo para ações menores do Construtor de aplicativos, mas geralmente muito grande para aplicativos do Asset compute, devido ao processamento local e à atividade de disco mais intensos. Alguns aplicativos, dependendo de sua implementação, também podem não funcionar bem com a atividade simultânea. O SDK do Asset compute garante que as ativações sejam separadas gravando arquivos em pastas exclusivas diferentes.
Teste os aplicativos para encontrar os números ideais para concurrency
e memorySize
. Contêineres maiores = limite de memória mais alto pode permitir mais simultaneidade, mas também pode ser um desperdício para tráfego mais baixo.