JavaScript SDK v3

This guide details the steps needed to install and use the AWS SDK for JavaScript v3.

The AWS SDK is modulized by clients and commands. To send a request, you only need to import the S3Client and the commands you need.

Installation

To install the this package, simply type add or install @aws-sdk/client-s3 using your favorite package manager:

1npm install @aws-sdk/client-s3
2yarn add @aws-sdk/client-s3
3pnpm add @aws-sdk/client-s3

Usage

To send a request, you:

  • Initiate client with configuration (e.g. credentials).

  • Initiate command with input parameters.

  • Call send operation on client with command object as input.

Tebi Object storage is globally distributed, this means that it doens’t have separate regions, but a single global region instead. Physical location of your files is conterolled by a user-defined Storage Class.

 1import { S3Client } from "@aws-sdk/client-s3";
 2import { ListBucketsCommand, PutObjectCommand } from "@aws-sdk/client-s3";
 3
 4const credentials = {
 5        accessKeyId: "<PUT_YOUR_KEY>",
 6        secretAccessKey: "<PUT_YOUR_SECRET>"
 7};
 8
 9// Create an S3 service client object.
10const s3Client = new S3Client({
11        endpoint: "https://s3.tebi.io",
12        credentials: credentials,
13        region: "global"
14});

Now that you have an S3 Client resource, you can send requests to the service. The following code uses ListBucketsCommand to get and print out all bucket names:

15// List buckets
16const buckets_data = await s3Client.send(
17        new ListBucketsCommand({})
18);
19console.log(buckets_data);

You can also upload and download binary data. For example, the following uploads a new file to S3, assuming that the bucket my-bucket already exists:

20// Upload a file
21const upload_data = await s3Client.send(
22        new PutObjectCommand({
23                Bucket: "my-bucket",
24                Key: "node-js.txt",
25                Body: "some data"
26        })
27);
28console.log(upload_data);

To generate a presigned URL you must install and use @aws-sdk/s3-request-presigner package:

Install it with your favorite package manager:

1npm install @aws-sdk/s3-request-presigner
2yarn add @aws-sdk/s3-request-presigner
3pnpm add @aws-sdk/s3-request-presigner

This code will generate a signed URL that will replace a Content-Disposition server response header as an example to force the browser to use a different file name. Use s3Client variable from the first code example. Please, refer to the full @aws-sdk/s3-request-presigner module documentation for more examples and GetObject API function for a full list of supported headers.

 1import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
 2import { GetObjectCommand } from "@aws-sdk/client-s3";
 3
 4// Generate a presigned URL
 5const get_command = new GetObjectCommand({
 6        Bucket: "test",
 7        Key: "node-js.txt",
 8        ResponseContentDisposition: 'attachment; filename="YOUR_FILENAME.txt"'
 9});
10const url = await getSignedUrl(s3Client, get_command, { expiresIn: 3600 });
11console.log(url);

For more examples, please refer to the official AWS SDK v3 documentation examples, full AWS SDK v3 S3 reference is available here.