AWS SDK for Javascript
  • PDF

AWS SDK for Javascript

  • PDF

It is available in a Classic/VPC environment.

SDK for S3 API for Javascript

In this guide, you can find the example of using NAVER Cloud Platform's Object Storage through SDK for Javascript provided by AWS S3. This guide is based on the AWS Javascript SDK 2.348.0 version.

SDK installation

npm install --save aws-sdk@2.348.0

Example

Note

You should enter the registered API authentication key information in the accessKey and secretKey value used in the example.

Create a bucket

const AWS = require('aws-sdk');

const endpoint = new AWS.Endpoint('https://kr.object.ncloudstorage.com');
const region = 'kr-standard';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';

const S3 = new AWS.S3({
    endpoint,
    region,
    credentials: {
        accessKeyId : access_key,
        secretAccessKey: secret_key
    }
});


const bucket_name = 'sample-bucket';


(async () => {

    await S3.createBucket({
        Bucket: bucket_name,
        CreateBucketConfiguration: {}
    }).promise()

})();

Search bucket list

const AWS = require('aws-sdk');

const endpoint = new AWS.Endpoint('https://kr.object.ncloudstorage.com');
const region = 'kr-standard';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';

const S3 = new AWS.S3({
    endpoint: endpoint,
    region: region,
    credentials: {
        accessKeyId : access_key,
        secretAccessKey: secret_key
    }
});

(async () => {

    let { Buckets } = await S3.listBuckets().promise();

    for(let bucket of Buckets) {
        console.log(bucket.Name);
    }

})();

Delete a bucket

const AWS = require('aws-sdk');

const endpoint = new AWS.Endpoint('https://kr.object.ncloudstorage.com');
const region = 'kr-standard';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';

const S3 = new AWS.S3({
    endpoint: endpoint,
    region: region,
    credentials: {
        accessKeyId : access_key,
        secretAccessKey: secret_key
    }
});



const bucket_name = 'sample-bucket';

(async () => {

    await S3.deleteBucket({
        Bucket: bucket_name
    }).promise();

})();

Uploading a file

const AWS = require('aws-sdk');
const fs = require('fs');
const endpoint = new AWS.Endpoint('https://kr.object.ncloudstorage.com');
const region = 'kr-standard';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';


const S3 = new AWS.S3({
    endpoint: endpoint,
    region: region,
    credentials: {
        accessKeyId : access_key,
        secretAccessKey: secret_key
    }
});


const bucket_name = 'sample-bucket';
const local_file_path = '/tmp/test.txt';



(async () => {

    let object_name = 'sample-folder/';
    // create folder
    await S3.putObject({
        Bucket: bucket_name,
        Key: object_name
    }).promise();

    object_name = 'sample-object';

    // upload file
    await S3.putObject({
        Bucket: bucket_name,
        Key: object_name,
        ACL: 'public-read',
        // If ACL is deleted, then it will not be open to all.
        Body: fs.createReadStream(local_file_path)
    }).promise();

})();

View the file list

const AWS = require('aws-sdk');
const endpoint = new AWS.Endpoint('https://kr.object.ncloudstorage.com');
const region = 'kr-standard';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';


const S3 = new AWS.S3({
    endpoint: endpoint,
    region: region,
    credentials: {
        accessKeyId : access_key,
        secretAccessKey: secret_key
    }
});

const bucket_name = 'sample-bucket';
const MAX_KEYS = 300;

var params = {
    Bucket: bucket_name,
    MaxKeys: MAX_KEYS
};

(async () => {

    // List All Objects
    console.log('List All In The Bucket');
    console.log('==========================');

    while(true) {

        let response = await S3.listObjectsV2(params).promise();

        console.log(`IsTruncated = ${response.IsTruncated}`);
        console.log(`Marker = ${response.Marker ? response.Marker : null}`);
        console.log(`NextMarker = ${response.NextMarker ? response.NextMarker : null}`);
        console.log(`  Object Lists`);
        for(let content of response.Contents) {
            console.log(`    Name = ${content.Key}, Size = ${content.Size}, Owner = ${content.Owner.ID}`);
        }

        if(response.IsTruncated) {
            params.Marker = response.NextMarker;
        } else {
            break;
        }

    }

    // List Top Level Folder And Files
    params.Delimiter = '/';
    console.log('Top Level Folders And Files In The Bucket');
    console.log('==========================');

    while(true) {

        let response = await S3.listObjectsV2(params).promise();

        console.log(`IsTruncated = ${response.IsTruncated}`);
        console.log(`Marker = ${response.Marker ? response.Marker : null}`);
        console.log(`NextMarker = ${response.NextMarker ? response.NextMarker : null}`);

        console.log(`  Folder Lists`);
        for(let folder of response.CommonPrefixes) {
            console.log(`    Name = ${folder.Prefix}`)
        }

        console.log(`  File Lists`);
        for(let content of response.Contents) {
            console.log(`    Name = ${content.Key}, Size = ${content.Size}, Owner = ${content.Owner.ID}`)
        }


        if(response.IsTruncated) {
            params.Marker = response.NextMarker;
        } else {
            break;
        }

    }

})();

Downloading a file

const AWS = require('aws-sdk');
const fs = require('fs');
const endpoint = new AWS.Endpoint('https://kr.object.ncloudstorage.com');
const region = 'kr-standard';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';


const S3 = new AWS.S3({
    endpoint: endpoint,
    region: region,
    credentials: {
        accessKeyId : access_key,
        secretAccessKey: secret_key
    }
});

const bucket_name = 'sample-bucket';
const object_name = 'sample-object';
const local_file_path = '/tmp/test.txt';


(() => {

    let outStream = fs.createWriteStream(local_file_path);
    let inStream = S3.getObject({
        Bucket: bucket_name,
        Key: object_name
    }).createReadStream();

    inStream.pipe(outStream);
    inStream.on('end', () => {
        console.log("Download Done");
    });

})();

Deleting a file

const AWS = require('aws-sdk');
const endpoint = new AWS.Endpoint('https://kr.object.ncloudstorage.com');
const region = 'kr-standard';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';


const S3 = new AWS.S3({
    endpoint: endpoint,
    region: region,
    credentials: {
        accessKeyId : access_key,
        secretAccessKey: secret_key
    }
});

const bucket_name = 'sample-bucket';

(async () => {

    // Delete Folder
    let object_name = 'sample-folder/';

    await S3.deleteObject({
        Bucket: bucket_name,
        Key: object_name
    }).promise();

    // Delete File
    object_name = 'sample-object';

    await S3.deleteObject({
        Bucket: bucket_name,
        Key: object_name
    }).promise();

})();

Setting ACL

const AWS = require('aws-sdk');
const endpoint = new AWS.Endpoint('https://kr.object.ncloudstorage.com');
const region = 'kr-standard';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';


const S3 = new AWS.S3({
    endpoint: endpoint,
    region: region,
    credentials: {
        accessKeyId : access_key,
        secretAccessKey: secret_key
    }
});

const bucket_name = 'sample-bucket'
const object_name = 'sample-object'
const owner_id = 'test-owner-id'
const target_id = 'test-user-id'

(async () => {

    await S3.putObjectAcl({
        Bucket: bucket_name,
        Key: object_name,
        AccessControlPolicy: {
            'Grants': [
                {
                    'Grantee': {
                        'ID': owner_id,
                        'Type': 'CanonicalUser'
                    },
                    'Permission': 'FULL_CONTROL'
                },
                {
                    'Grantee': {
                        'ID': target_id,
                        'Type': 'CanonicalUser'
                    },
                    'Permission': 'READ'
                }
            ],
            'Owner': {
                'ID': owner_id
            }
        }
    }).promise();

})();

Uploading multiple parts

const AWS = require('aws-sdk');
const fs = require('fs');
const endpoint = new AWS.Endpoint('https://kr.object.ncloudstorage.com');
const region = 'kr-standard';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';

const S3 = new AWS.S3({
    endpoint: endpoint,
    region: region,
    credentials: {
        accessKeyId : access_key,
        secretAccessKey: secret_key
    }
});

const bucket_name = 'sample-bucket';
const local_file_name = '/tmp/sample.file';
const object_name = 'sample-large-object';

let options = {
    partSize: 5 * 1024 * 1024
};


(async () => {

    await S3.upload({
        Bucket: bucket_name,
        Key: object_name,
        Body: fs.createReadStream(local_file_name)
    }, options).promise();

})();

Setting Cross-Origin Resource Sharing (CORS)

const AWS = require("aws-sdk");

const endpoint = new AWS.Endpoint("https://kr.object.ncloudstorage.com");
const region = "kr-standard";
const access_key = "<ACCESS_KEY>";
const secret_key = "<SECRET_KEY>";

const S3 = new AWS.S3({
  endpoint,
  region,
  credentials: {
    accessKeyId: access_key,
    secretAccessKey: secret_key,
  },
});

const bucket_name = "sample-bucket";

const params = {
  Bucket: bucket_name,
  CORSConfiguration: {
    CORSRules: [
      {
        AllowedHeaders: ["*"],
        AllowedMethods: ["GET", "PUT"],
        AllowedOrigins: ["*"],
        MaxAgeSeconds: 3000,
      },
    ],
  },
};

(async () => {
// Set CORS
  await S3.putBucketCors(params).promise();
  
// Get CORS
  const response = await S3.getBucketCors({ Bucket: bucket_name }).promise();
  console.log(JSON.stringify(response, null, 2));
})();

Was this article helpful?