The AWS SDK for JavaScript V3 API Reference Guide describes in detail all the API operations for the AWS SDK for JavaScript version 3 (V3).
Get started with Node.js
This guide shows you how to initialize an NPM package, add a service client to your package, and use the JavaScript SDK to call a service action.
The scenario
Create a new NPM package with one main file that does the following:
Creates an Amazon Simple Storage Service bucket
Puts an object in the Amazon S3 bucket
Reads the object in the Amazon S3 bucket
Confirms if the user wants to delete resources
Prerequisites
Before you can run the example, you must do the following:
-
Configure your SDK authentication. For more information, see SDK authentication with AWS.
-
Install Node.js
.
Step 1: Set up the package structure and installing client packages
To set up the package structure and install the client packages:
Create a new folder
nodegetstarted
to contain the package.From the command line, navigate to the new folder.
Run the following command to create a default
package.json
file:npm init -y
Run the following command to install the Amazon S3 client package:
npm i @aws-sdk/client-s3
-
Add
"type": "module"
to thepackage.json
file. This tells Node.js to use modern ESM syntax. The finalpackage.json
should look similar to the following:{ "name": "example-javascriptv3-get-started-node", "version": "1.0.0", "description": "This guide shows you how to initialize an NPM package, add a service client to your package, and use the JavaScript SDK to call a service action.", "main": "index.js", "scripts": { "test": "vitest run **/*.unit.test.js" }, "author": "Your Name", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-s3": "^3.420.0" }, "type": "module" }
Step 2: Add necessary imports and SDK code
Add the following code to a file named index.js
in the nodegetstarted
folder.
// This is used for getting user input. import { createInterface } from "node:readline/promises"; import { S3Client, PutObjectCommand, CreateBucketCommand, DeleteObjectCommand, DeleteBucketCommand, paginateListObjectsV2, GetObjectCommand, } from "@aws-sdk/client-s3"; export async function main() { // A region and credentials can be declared explicitly. For example // `new S3Client({ region: 'us-east-1', credentials: {...} })` would //initialize the client with those settings. However, the SDK will // use your local configuration and credentials if those properties // are not defined here. const s3Client = new S3Client({}); // Create an Amazon S3 bucket. The epoch timestamp is appended // to the name to make it unique. const bucketName = `test-bucket-${Date.now()}`; await s3Client.send( new CreateBucketCommand({ Bucket: bucketName, }), ); // Put an object into an Amazon S3 bucket. await s3Client.send( new PutObjectCommand({ Bucket: bucketName, Key: "my-first-object.txt", Body: "Hello JavaScript SDK!", }), ); // Read the object. const { Body } = await s3Client.send( new GetObjectCommand({ Bucket: bucketName, Key: "my-first-object.txt", }), ); console.log(await Body.transformToString()); // Confirm resource deletion. const prompt = createInterface({ input: process.stdin, output: process.stdout, }); const result = await prompt.question("Empty and delete bucket? (y/n) "); prompt.close(); if (result === "y") { // Create an async iterator over lists of objects in a bucket. const paginator = paginateListObjectsV2( { client: s3Client }, { Bucket: bucketName }, ); for await (const page of paginator) { const objects = page.Contents; if (objects) { // For every object in each page, delete it. for (const object of objects) { await s3Client.send( new DeleteObjectCommand({ Bucket: bucketName, Key: object.Key }), ); } } } // Once all the objects are gone, the bucket can be deleted. await s3Client.send(new DeleteBucketCommand({ Bucket: bucketName })); } } // Call a function if this file was run directly. This allows the file // to be runnable without running on import. import { fileURLToPath } from "node:url"; if (process.argv[1] === fileURLToPath(import.meta.url)) { main(); }
The example code can be found
here on GitHub
Step 3: Run the example
Note
Remember to sign in! If you are using IAM Identity Center to authenticate, remember to sign in using
the AWS CLI aws sso login
command.
Run
node index.js
.Choose whether to empty and delete the bucket.
If you don't delete the bucket, be sure to manually empty and delete it later.