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_idsecret_access_key는 메모해둡시다.

endpoint : cos>Buckets>Configuration에서 해당 정보를 확인할 수 있습니다.
Image

3. API

AWS s3 api doc : link
아래 예시에서 사용하는 소스코드 : link

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 인스턴스에 가서 확인해보면 버킷이 생성된 것을 확인할 수 있습니다.
image

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

태그: ,

카테고리:

업데이트:

댓글남기기