ICOS - S3 API with NodeJS
1. Overview
이 문서에서는 Nodejs로 ICOS를 사용하는 법을 알아보도록 하겠습니다.
2. Environment
Nodejs : v10.15.3
npm : 6.4.1
aws-sdk : ^2.438.0
express : ^4.16.4
Icos 생성 및 credential얻기 : https://gruuuuu.github.io/simple-tutorial/mnist-tuto/#cloud-object-storage
생성할때
access_key_id
와secret_access_key
는 메모해둡시다.
endpoint
: cos>Buckets>Configuration에서 해당 정보를 확인할 수 있습니다.
3. API
js에서 s3모듈을 사용하기 위해 aws-sdk를 추가합니다.
//aws api를 사용하기위해 추가
var aws = require('aws-sdk');
3.1 Create S3 Client
aws.s3 api를 사용하기 위한 인증정보들을 추가합니다.
//s3프로토콜을 위한 정보 기입
var ep = new aws.Endpoint('https://s3.us-south.cloud-object-storage.appdomain.cloud');
var s3 = new aws.S3({
endpoint: ep,
region: 'us-south',
accessKeyId:'b01c551bb9604c8ebc22fefe36e4fbc7',
secretAccessKey:'06d88e8c4d75adba1d51ce863144fe29b02d6fcb36c15f39'
});
3.2 Create Bucket
버킷을 생성합니다.
var createBucket=function(req,res){
//bucket 이름은 unique해야함.
var params = {Bucket: '190418testbucket'};
s3.createBucket(params, function(err) {
if (err) {
console.log("Error data: ", err);
} else{
console.log("checking for data "+ JSON.stringify(data));
}
});
};
response
//success
null
cos 인스턴스에 가서 확인해보면 버킷이 생성된 것을 확인할 수 있습니다.
3.3 Storing Object
버킷에 file object를 저장합니다.
var putObject=function(req,res){
var data = {Bucket: '{버킷이름}', Key: '{저장할 파일의 이름}', Body: require('fs').createReadStream('{파일경로}')};
s3.putObject(data, function(err, data) {
if (err) {
console.log("Error uploading data: ", err);
} else {
console.log("Successfully uploaded file to bucket");
}
});
};
response
//success
{"ETag":"\"99fb31087791f6317ad7c6da1433f172\""}
3.4 Listing Object
bucket에 담긴 object들의 리스트를 반환합니다.
var listObject = function (req, res) {
var params = {Bucket: {버킷이름}};
s3.listObjectsV2(params, function (err, data) {
if (err) {
console.log("Error data: ", err);
} else{
console.log("checking for data "+ JSON.stringify(data));
}
});
};
response
//success
{
"IsTruncated":false,
"Contents":[{
"Key":"hellohello.txt",
"LastModified":"2019-04-18T02:16:40.853Z",
"ETag":"\\"99fb31087791f6317ad7c6da1433f172\\"",
"Size":15, "StorageClass":"STANDARD"},
{"Key":"mykey",
"LastModified":"2019-04-18T01:31:02.978Z",
"ETag":"\\"952d2c56d0485958336747bcdd98590d\\"",
"Size":6,"StorageClass":"STANDARD"},
{"Key":"test.txt",
"LastModified":"2019-04-18T04:14:57.559Z",
"ETag":"\\"99fb31087791f6317ad7c6da1433f172\\"",
"Size":15,"StorageClass":"STANDARD"
}],
"Name":"190418testbucket","Prefix":"",
"Delimiter":"","MaxKeys":1000,
"CommonPrefixes":[],"KeyCount":3
}
3.5 Deletion of Objects
버킷에 담긴 object들을 삭제합니다.
var delObject=function(req,res){
var itemsToDelete = Array();
itemsToDelete.push ({ Key : '{file이름}' });
itemsToDelete.push ({ Key : '{file이름}' });
var params = {
Bucket: myBucket,
Delete: {
Objects: itemsToDelete,
Quiet: false}
};
s3.deleteObjects(params, function(err, data) {
if (err) {
console.log("Error data: ", err);
} else {
console.log("checking for data "+ JSON.stringify(data));
};
});
}
response
//success
{"Deleted":[],"Errors":[]}
3.6 Deletion of Bucket
버킷을 삭제합니다.
var delBucket=function(req,res){
var params={Bucket:{버킷이름}};
s3.deleteBucket(params, function(err, data) {
if (err) {
console.log("Error data: ", err);
}
else {
console.log("checking for data "+ JSON.stringify(data));
};
});
}
response
//success
null
댓글남기기