- Vue d'ensemble (Overview)
- Fonctions JavaScript
- Fonctions Python
- Déployer et exécuter
Contexte de la fonction
Les identités, les coordonnées de la plateforme et les données de la requête que le runtime transmet à chaque gestionnaire de fonctions JavaScript.
Chaque gestionnaire reçoit un objet de contexte comme deuxième argument. Il transporte qui a appelé la fonction, l'identité de la plate-forme de la fonction et où envoyer les appels de plate-forme sortants. Ainsi, aucun de ces éléments ne doit être transmis en tant qu'entrée.
handler: async (input, ctx) => {
ctx.user?.accessToken // the caller's OAuth token
ctx.user?.sub // the caller's user id
ctx.robot?.accessToken // the function's own platform token
ctx.robot?.key // the serverless robot key
ctx.platform?.baseUrl // e.g. "https://cloud.uipath.com"
ctx.platform?.orgId // organization id
ctx.platform?.tenantId // tenant id
ctx.platform?.folderKey // folder of the invocation, if any
ctx.params // path parameters, as strings
ctx.headers // request headers, lowercase keys
}
handler: async (input, ctx) => {
ctx.user?.accessToken // the caller's OAuth token
ctx.user?.sub // the caller's user id
ctx.robot?.accessToken // the function's own platform token
ctx.robot?.key // the serverless robot key
ctx.platform?.baseUrl // e.g. "https://cloud.uipath.com"
ctx.platform?.orgId // organization id
ctx.platform?.tenantId // tenant id
ctx.platform?.folderKey // folder of the invocation, if any
ctx.params // path parameters, as strings
ctx.headers // request headers, lowercase keys
}
Deux identités
Une fonction reçoit deux identités par invocation, et le choix entre elles est une décision de sécurité.
ctx.user | ctx.robot | |
|---|---|---|
| À qui il s'agit | L'appelant qui a invoqué la fonction | L'identité de la plate-forme de la fonction |
| Autorisations qui s'appliquent | Le propre fichier de l'appelant | Compte de service de la fonction |
| Utilisez-le pour | Agir au nom de l’utilisateur connecté | Lecture des ressources que l’appelant ne doit pas atteindre directement |
ctx.user.accessToken s'applique lorsque l'appelant doit uniquement voir ce que ses propres autorisations autorisent. ctx.robot.accessToken s'applique lorsque la fonction doit atteindre quelque chose que l'appelant ne peut pas faire, par exemple des informations d’identification dans un dossier restreint. Consultez la section Accès aux services de la plate-forme.
ctx.robot est l'identité la plus privilégiée. Un gestionnaire qui lit le nom de la ressource qui arrive dans la requête agit en tant qu’assistant pour la requête de l’appelant avec les propres privilèges de la fonction. La récupération doit être limitée à un ensemble fixe de code.
Coordonnées de la plateforme
ctx.platform fournit baseUrl, orgId et tenantId pour les appels de plate-forme sortants. Ceux-ci proviennent du runtime, mais jamais de l'appelant, de sorte qu'une requête ne peut pas rediriger vers la fonction d'envoi de son trafic, et ils ne doivent jamais être acceptés comme champs d'entrée.
C'est tout ou rien: ctx.platform est null, sauf si les trois sont disponibles. folderKey peut être null seul, pour une invocation sans dossier.
Indique où
| Déclencheur HTTP | Job | Local serve | |
|---|---|---|---|
ctx.user | L'identité de l'appelant | Aucune identité d’appelant | Affiché lorsque la requête comporte un jeton de porteur |
ctx.robot | Oui (Yes) | Oui (Yes) | null |
ctx.platform | Oui (Yes) | Oui (Yes) | Uniquement avec UIPATH_BASE_URL, UIPATH_ORG_ID et UIPATH_TENANT_ID définis |
ctx.params, ctx.headers | Oui (Yes) | Vide: il n’y a pas de requête HTTP | Oui (Yes) |
Étant donné que ctx.robot est null localement, le code qui a besoin d'un jeton de plate-forme doit basculer vers une variable d'environnement pour le développement local:
const token = ctx.robot?.accessToken || process.env["UIPATH_ACCESS_TOKEN"] || "";
const token = ctx.robot?.accessToken || process.env["UIPATH_ACCESS_TOKEN"] || "";
Prochaines étapes
- Accéder aux services de la plateforme
- Test et débogage
- Référence du contexte — le type complet et chaque champ.