Skip to content

S3Bucket ​

Lists, uploads, downloads and shares objects in an Amazon S3 bucket.

js
const bucket = datasource.S3Bucket(
    security.getSecret("S3_ACCESS_KEY"),
    security.getSecret("S3_SECRET_KEY"),
    "my-company-data",
    "ap-southeast-2"
);

bucket.downloadFile("imports/budget.csv", "uploads/budget.csv");

Constructor ​

datasource.S3Bucket datasource.S3Bucket(accessKey, secretKey, bucket, region) S3Bucket ​

Connects to an S3 bucket and returns an S3Bucket. The connection is checked straight away, so it throws if the credentials are wrong or the bucket doesn't exist.

ParameterTypeDescription
accessKeystringThe AWS access key id.
secretKeystringThe AWS secret access key.
bucketstringThe name of the bucket.
regionstringThe bucket's AWS region, for example "ap-southeast-2".
js
const bucket = datasource.S3Bucket(
    security.getSecret("S3_ACCESS_KEY"),
    security.getSecret("S3_SECRET_KEY"),
    "my-company-data",
    "ap-southeast-2"
);

Keep keys out of your scripts

Store the access key and secret key as Secrets and read them with security.getSecret, rather than writing them into the script.

Overview ​

  • Objects and keys: each file in a bucket is an object, identified by its key, such as "exports/2026/actuals.csv". Keys can look like folder paths.
  • Listing: list() returns every object in the bucket. For large buckets, or to look inside one "folder", use listPaginiated().
  • Sharing: generatePresignedURL() creates a link that anyone can use to download an object until it expires, without AWS credentials.

Methods ​

list list() array ​

Returns every object in the bucket. Each object has:

  • name: the object's key.
  • size: its size in bytes.
  • last_modified: when it was last changed, as an ISO timestamp string.

uploadFile uploadFile(objectKey, uploadedFilename) ​

Uploads a file to the bucket. Throws if the credentials don't allow writing to the bucket.

ParameterTypeDescription
objectKeystringThe key to store the object under.
uploadedFilenamestringThe path of the file to upload.

downloadFile downloadFile(objectKey, outputFile) ​

Downloads an object from the bucket to a file. Throws if the object doesn't exist or the credentials don't allow reading it.

ParameterTypeDescription
objectKeystringThe key of the object to download.
outputFilestringThe path to save it to.

generatePresignedURL generatePresignedURL(objectKey, expiresAfterMinutes) string ​

Returns a link that downloads an object without AWS credentials until it expires.

ParameterTypeDescription
objectKeystringThe key of the object.
expiresAfterMinutesnumberHow many minutes the link works for. The minimum is 1.

close close() optional ​

Closes the connection to the bucket. The bucket closes automatically when the process finishes, so only call this to close it early.

Examples ​

Download every file in a folder ​

js
const bucket = datasource.S3Bucket(
    security.getSecret("S3_ACCESS_KEY"),
    security.getSecret("S3_SECRET_KEY"),
    "my-company-data",
    "ap-southeast-2"
);

const page = bucket.listPaginiated("imports/2026/", 100, 1);

for (const object of page.results) {
    const fileName = object.name.split("/").pop();
    bucket.downloadFile(object.name, "uploads/" + fileName);
}

Upload an export ​

js
const bucket = datasource.S3Bucket(
    security.getSecret("S3_ACCESS_KEY"),
    security.getSecret("S3_SECRET_KEY"),
    "my-company-data",
    "ap-southeast-2"
);

bucket.uploadFile("exports/2026/actuals.csv", "exports/actuals.csv");