오브젝트스토리지

송용근 에반젤리스트

iwinv Object Storage - Java script SDK (Node.js)

 

해당 메뉴얼은 AWS S3에서 제공하는 Java Script SDK (Nodejs) 를 이용하여 iwinv Object Storage를 사용하는 방법을 설명합니다.

 

참고문서 

  https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide

  https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/s3

 

 

Java script SDK 사용하기



테스트 OS : Ubuntu 18.04 LTS

 

[인증키 확인]

Endpoint -> 오브젝트 스토리지 -> 스토리지 관리 -> 인증키 관리 -> API {IDC} Endpoint 

Access_Key  : console.iwinv.kr -> 오브젝트 스토리지 -> 스토리지 관리 -> 인증키 관리 -> Access Key ID

Secret_Key   : console.iwinv.kr -> 오브젝트 스토리지 -> 스토리지 관리 -> 인증키 관리 -> Secret Key ID

 

 

 

node.js / npm 설치하기

sudo apt install nodejs
sudo apt install npm

 

AWS Javascript SDK 설치하기  

npm install --save aws-sdk

 

AWS Javascript SDK 버젼확인 

 npm 명령어를 통해 AWS Javascript SDK 설치완료시 버젼을 표시합니다. 

/home/ubuntu/java
└─┬ aws-sdk@2.721.0
├─┬ buffer@4.9.2
│ ├── base64-js@1.3.1
│ └── isarray@1.0.0
├── events@1.1.1
├── ieee754@1.1.13
├── jmespath@0.15.0
├── querystring@0.2.0
├── sax@1.2.1
├─┬ url@0.10.3
│ └── punycode@1.3.2
├── uuid@3.3.2
└─┬ xml2js@0.4.19
└── xmlbuilder@9.0.7

 

 

Config.Json 파일 생성하기 

java script 실행파일 경로에 config.json파일 생성 

 

# config.json 

{
"accessKeyId": "Access_Key",
"secretAccessKey": "Secret_Key",
"region": "default",
"endpoint" : "Endpoint",
"s3ForcePathStyle" : "true"
}

 

 

# 예제코드


 

버킷 생성

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'default'});

s3 = new AWS.S3({apiVersion: '2006-03-01'});

var bucketParams = {
Bucket : process.argv[2]
};


s3.createBucket(bucketParams, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.Location);
}
});

 

# 실행 명령어 

node 파일명.js [Bucket_Name]

 

 

버킷 삭제

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'REGION'});

s3 = new AWS.S3({apiVersion: '2006-03-01'});

var bucketParams = {
Bucket : process.argv[2]
};

s3.deleteBucket(bucketParams, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});

 

# 실행 명령어 

node 파일명.js [Bucket_Name]

 

 

버킷 리스트 확인

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

AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'default'});

s3 = new AWS.S3({apiVersion: '2006-03-01'});

s3.listBuckets(function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data.Buckets);
}
});

 

 

오브젝트 업로드

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'REGION'});

s3 = new AWS.S3({apiVersion: '2006-03-01'});

var uploadParams = {Bucket: process.argv[2], Key: '', Body: ''};
var file = process.argv[3];

var fs = require('fs');
var fileStream = fs.createReadStream(file);
fileStream.on('error', function(err) {
console.log('File Error', err);
});
uploadParams.Body = fileStream;
var path = require('path');
uploadParams.Key = path.basename(file);

s3.upload (uploadParams, function (err, data) {
if (err) {
console.log("Error", err);
} if (data) {
console.log("Upload Success", data.Location);
}
});

 

# 실행 명령어 

node 파일명.js [Bucket_Name] [Object_Name]

 

 

오브젝트 다운로드

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

AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'REGION'});

s3 = new AWS.S3({apiVersion: '2006-03-01'});

var file = require('fs').createWriteStream(process.argv[4]);

var params = {Bucket:'process.argv[2]', Key:'process.argv[3]'};

s3.getObject(params).createReadStream().pipe(file);

 

# 실행 명령어 

node 파일명.js [Bucket_Name] [Object_Name] [Path/filename] 

ex) node object_upload.js iwinv-bucket test.txt /home/ubuntu/test.txt 

 

 

오브젝트 리스트 확인

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'REGION'});

s3 = new AWS.S3({apiVersion: '2006-03-01'});

var bucketParams = {
Bucket : process.argv[2]
};

s3.listObjects(bucketParams, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});

 

# 실행 명령어 

node 파일명.js [Bucket_Name]

 

 

오브젝트 삭제

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'REGION'});

s3 = new AWS.S3({apiVersion: '2006-03-01'});

var params = {
Bucket: process.argv[2],
Key: process.argv[3]
};
s3.deleteObject(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
/*
data = {
}
*/
});

 

# 실행 명령어 

node 파일명.js [Bucket_Name] [Object_Name]