CloudCode Overview

Introduction

CloudCode is a JourneyApps feature to run JavaScript or TypeScript "tasks" in the cloud, instead of on a mobile device.

Typical use cases include:

  • Basic integration with external services

  • Bulk operations such as archiving data

  • Generating reports, such as CSV files, PDF reports or Excel spreadsheets

  • Sending emails

  • Scheduled tasks

NodeJS environment

CloudCode tasks are NodeJS-based. The specific NodeJS version depends on the CloudCode task version:

  • Task versions 1.12.x use NodeJS 16

  • Task versions 1.11.x use NodeJS 14

  • [Deprecated] Task versions 1.10.x use NodeJS 12

CloudCode task versions

A CloudCode task version can be configured by right-clicking on the task name in OXIDE and selecting CloudCode task settings.

CloudCode makes extensive use of async & await. For an introduction, see this Async & Await section.

All CloudCode tasks run on servers managed by Amazon Web Services (AWS).

Basic CloudCode task structure

A basic task has the following structure:

export async function run() {
    // Your code here
}

CloudCode task triggers

CloudCode tasks can be triggered in one of following ways:

  • Via the Test CloudCode Task action in OXIDE

  • Via a webhook

  • Via HTTP

  • Enqueued from another task

  • Directly from an App

  • On a schedule

You can read more about Triggering a CloudCode Task.

Available packages

The following packages are available in each CloudCode task by default:

  • node-fetch (exposed as a fetch global function).

  • aws-sdk

To add other packages, see CloudCode: Dependencies.

Limits

  • Each task invocation can run for a maximum of 5 minutes.

  • Each task invocation has a limit of 1024MB memory.

  • Each task can run multiple times in parallel.

  • When invoking a task, parameters are converted using JSON.stringify and the resulting string should not exceed 5MB.

  • Web Tasks accept a maximum body size of 5MB for incoming requests, and will return HTTP 413 if this is exceeded.

Last updated