AWS SDK for Javascript
- Print
- PDF
AWS SDK for Javascript
- Print
- PDF
Article summary
Did you find this summary helpful?
Thank you for your feedback
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
- AWS Javascript SDK source: https://github.com/aws/aws-sdk-js
- Related document: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html
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.
- Receive notifications for incomplete multi-part upload objects through Cloud Advisor
- For more information on Cloud Advisor, see the Cloud Advisor Guide.
- Check and delete incomplete multi-part objects
- View information on canceled or uncompleted multi-part upload: ListMultipartUploads API Guide
- 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?