- Visão geral
- Funções do JavaScript
- Introdução
- Como criar funções do JavaScript
- Gatilhos HTTP e roteamento
- Contexto da função
- Acessando serviços de plataforma
- Teste e depuração
- Funções do Python
- Implantar e executar
Acessando serviços de plataforma
Ativos, buckets, filas e processos do Orchestrator disponíveis para uma função JavaScript por meio do UiPath TypeScript SDK, com a escolha entre identidade delegada e de função.
As funções JavaScript alcançam recursos de plataforma por meio do UiPath TypeScript SDK. Nada está codificado no pacote: as coordenadas vêm de ctx.platform e o token de uma das duas identidades fornecidas pelo runtime.
import { UiPath } from "@uipath/uipath-typescript/core";
import { Assets } from "@uipath/uipath-typescript/assets";
const { baseUrl, orgId, tenantId } = ctx.platform;
const sdk = new UiPath({
baseUrl,
orgName: orgId,
tenantName: tenantId,
secret: ctx.user.accessToken, // or ctx.robot.accessToken
});
import { UiPath } from "@uipath/uipath-typescript/core";
import { Assets } from "@uipath/uipath-typescript/assets";
const { baseUrl, orgId, tenantId } = ctx.platform;
const sdk = new UiPath({
baseUrl,
orgName: orgId,
tenantName: tenantId,
secret: ctx.user.accessToken, // or ctx.robot.accessToken
});
@uipath/uipath-typescript pertence a dependencies, não a devDependencies: a função implantada instala apenas dependências de produção.
Escolhendo a identidade
| Padrão | Token | Quem precisa de acesso à pasta |
|---|---|---|
| Delegado | ctx.user.accessToken | O usuário que está chamando precisa de Assets.View na pasta |
| Identidade da função | ctx.robot.accessToken | Apenas a conta de serviço da função; o chamador não precisa de nada |
Delegado é a escolha padrão: as próprias permissões do chamador se aplicam, portanto, a função não pode ser usada para ver mais do que o chamador tem direito. A própria identidade da função é para recursos que devem ficar fora do alcance do chamador — uma credencial em uma pasta restrita que apenas a função pode ler.
Nesse caso, o que o manipulador busca deve ser restrito. Um back-end privilegiado que lê um nome de recurso fornecido pelo chamador entregará qualquer coisa que sua identidade possa ver:
const READABLE = new Set(["PartnerApiCredential"]);
if (!READABLE.has(input.assetName)) {
throw new FunctionError(`"${input.assetName}" is not readable by this function.`, 403);
}
const READABLE = new Set(["PartnerApiCredential"]);
if (!READABLE.has(input.assetName)) {
throw new FunctionError(`"${input.assetName}" is not readable by this function.`, 403);
}
Ativos
const response = await new Assets(sdk).getAll({
filter: `Name eq 'ApiBaseUrl'`,
folderId: 42,
});
const value = response.items[0]?.value;
const response = await new Assets(sdk).getAll({
filter: `Name eq 'ApiBaseUrl'`,
folderId: 42,
});
const value = response.items[0]?.value;
folderId é necessário: sem ele a chamada retorna metadados com valores vazios.
folderId o ID numérico da pasta, não sua chave. Uma chave de pasta é um GUID, e passar um onde o ID numérico pertence é rejeitado como um erro de permissões em vez de um identificador incorreto, que faz você procurar no lugar errado. ctx.platform.folderKey fornece a chave da invocação atual; resolver o ID numérico dele quando uma chamada precisar de um.
O nome de usuário e a senha de um ativo Credential não são retornados por esses endpoints, para qualquer token. A leitura de um requer a própria identidade da função e a rota de execução do robô, que precisa de ctx.robot.key — portanto, funciona apenas em uma execução implantada. Consulte Chamada do Orchestrator.
Para um ativo secreto , o valor chega no campo SecretValue . StringValue, o campo que carrega o valor de um ativo de Texto, está vazio para um segredo. A leitura parece uma funcionalidade quebrada em vez do campo errado.
Um ativo também tem uma configuração AllowDirectApiAccess que torna seu valor legível com o próprio token do chamador. Ativá-la é uma extensão, não uma etapa de habilitação: a configuração é oculta à identidade, então o valor se torna legível por cada identidade que contém Assets.View na pasta, incluindo um navegador que contém o token do usuário conectado. A própria identidade da função é a escolha mais segura do que habilitar essa configuração.
Outros Serviços
O mesmo cliente expõe buckets, filas, trabalhos, processos, entidades e conexões do Integration Service. Consulte a referência do SDK para a superfície completa.
Credenciais e segurança
- Os segredos residem em ativos do Orchestrator e são lidos no runtime — nunca insira código ou confirme-os para o projeto.
- O controle de acesso baseado em funções no nível da pasta (RBAC) rege o que cada identidade pode ler. Com o padrão delegado que é o acesso do chamador; com a própria identidade da função, é a da conta de serviço.
- Retorne um resultado derivados em vez de um segredo sempre que puder e registre a ação, nunca o valor.