- Vue d'ensemble (Overview)
- Fonctions JavaScript
- Démarrage
- Construire des fonctions JavaScript
- Déclencheurs et routage HTTP
- Contexte de la fonction
- Accéder aux services de la plateforme
- Test et débogage
- Fonctions Python
- Déployer et exécuter
Accéder aux services de la plateforme
Les ressources, les compartiments, les files d'attente et les processus Orchestrator disponibles pour une fonction JavaScript via le SDK UiPath TypeScript, avec le choix entre l'identité déléguée et de fonction.
Les fonctions JavaScript atteignent les ressources de la plate-forme via le SDK TypeScript d'UiPath. Rien n'est codé en dur dans le package: les coordonnées proviennent de ctx.platform et le jeton de l'une des deux identités fournies par le 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 appartient à dependencies, et non devDependencies: la fonction déployée installe uniquement les dépendances de production.
Choix de l’identité
| Modèle | Jeton | Qui a besoin d’un accès au dossier |
|---|---|---|
| Délégué | ctx.user.accessToken | L'utilisateur appelant a besoin de Assets.View dans le dossier |
| Identité de la fonction | ctx.robot.accessToken | Compte de service de la fonction uniquement; l'appelant n'a besoin de rien |
Délégué est le choix par défaut: les propres autorisations de l'appelant s'appliquent, de sorte que la fonction ne peut pas être utilisée pour en savoir plus que ce à quoi l'appelant a le droit. L'identité propre de la fonction correspond aux ressources qui doivent rester hors de la portée de l'appelant — des informations d'identification dans un dossier restreint que seule la fonction peut lire.
Dans ce cas, ce que le gestionnaire récupère doit être contrôlé. Un backend à privilèges qui lit un nom de ressource fourni par l'appelant transmettra tout ce que son identité peut voir:
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);
}
Actifs
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 est requis: sans cela, l'appel renvoie les métadonnées avec des valeurs vides.
folderId est l'identifiant numérique du dossier, et non sa clé. Une clé de dossier est un GUID, et en transmettre une où appartient l'identifiant numérique est rejetée comme une erreur d'autorisations plutôt qu'un identifiant incorrect, ce qui vous renvoie au mauvais endroit. ctx.platform.folderKey vous donne la clé de l'invocation actuelle; résolvez l'identifiant numérique à partir de celui-ci lorsqu'un appel en a besoin.
Le nom d'utilisateur et le mot de passe d'une ressource Credential ne sont pas renvoyés par ces points de terminaison, pour tout jeton. La lecture de l'un d'eux requiert la propre identité de la fonction et la route d'exécution du robot, qui a besoin de ctx.robot.key — il ne fonctionne donc que dans une exécution déployée. Consultez Appel d'Orchestrator.
Pour une ressource Secret , la valeur arrive dans le champ SecretValue . StringValue, le champ qui porte la valeur d'une ressource Texte, est vide pour un Secret - sa lecture ressemble à une fonctionnalité interrompue plutôt que le mauvais champ.
Une ressource a également un paramètre AllowDirectApiAccess qui rend sa valeur lisible avec le propre jeton de l'appelant. L'activer constitue une étape d'extension et non d'activation: le paramètre est Masqué d'identité, de sorte que la valeur devient lisible par chaque tenant Assets.View du dossier, y compris un navigateur détenant le jeton de l'utilisateur connecté. L'identité propre de la fonction est le choix le plus sûr pour activer ce paramètre.
Autres services
Le même client expose les compartiments, les files d'attente, les tâches, les processus, les entités et les connexions Integration Service. Voir la référence du SDK pour la surface complète.
Informations d’identification et sécurité
- Les secrets se trouvent dans les ressources Orchestrator et sont lus au moment de l'exécution - ne les codez jamais en dur et ne les confiez pas au projet.
- Le contrôle d’accès basé sur les rôles au niveau du dossier régit ce que chaque identité peut lire. Avec le modèle délégué correspondant à l’accès de l’appelant; avec la propre identité de la fonction, il s'agit du compte de service.
- Retournez un résultat dérivé plutôt qu’un secret partout où vous le pouvez, et enregistrez l’action, jamais la valeur.