AWS SDK for Javascript
    • PDF

    AWS SDK for Javascript

    • PDF

    Article Summary

    Available in Classic and VPC

    SDK for S3 API for Javascript

    This is an example using Object Storage of NAVER Cloud Platform using SDK for Javascript provided by AWS S3. The example is based on AWS Javascript SDK 2.348.0 version.

    Install SDK

    npm install --save aws-sdk@2.348.0
    

    Example

    Note

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

    Create 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()
    
    })();
    

    View bucket lists

    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 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();
    
    })();
    

    Upload files

    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, it is not disclosed to public.
            Body: fs.createReadStream(local_file_path)
        }).promise();
    
    })();
    

    View file lists

    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,
        FetchOwner: true
    };
    
    (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(
                `ContinuationToken = ${response.ContinuationToken ? response.ContinuationToken : null}`
            );
            console.log(
                `NextContinuationToken = ${
                    response.NextContinuationToken ? response.NextContinuationToken : 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.ContinuationToken = response.NextContinuationToken;
            } 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(
                `ContinuationToken = ${response.ContinuationToken ? response.ContinuationToken : null}`
            );
            console.log(
                `NextContinuationToken = ${
                    response.NextContinuationToken ? response.NextContinuationToken : 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.ContinuationToken = response.NextContinuationToken;
            } else {
                break;
            }
        }
        
    })();
    

    Download files

    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");
        });
    
    })();
    

    Delete files

    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();
    
    })();
    

    Set 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();
    
    })();
    

    Upload multi-parts

    Caution

    If upload of multi-parts is not completed, residual files remain in the bucket. The residual files are included in the bucket capacity and charged. Please be cautioned that the following method to prevent unnecessary charges by deleting incomplete multi-part objects.

    1. Receive notifications for incomplete multi-part upload objects through Cloud Advisor
      1. For more information on Cloud Advisor, see the Cloud Advisor Guide.
    2. Check and delete incomplete multi-part objects
      1. View information on canceled or uncompleted multi-part upload: ListMultipartUploads API Guide
      2. Delete multi-part: AbortMultipartUpload API Guide
    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();
    
    })();
    

    Set 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?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.