본문으로 건너뛰기
  1. Ibms/

ICOS - S3 API with NodeJS

·
ICOS 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

관련 글

Image Gallery using ICOS API
ICOS Cloud Nodejs
1. Overview # 클라우드상에서 간단한 웹 애플리케이션을 제작할것입니다. 백엔드 저장소로 ICOS(IBM Cloud Object Storage)를 사용할 것이고, ICOS의 API를 이용해 통신할 것입니다. 만드려는 application의 기능은 웹상에서 ICOS에 이미지를 저장시키고, 이미지를 불러오는 기능입니다.
Curl Command for ICOS REST API
ICOS
1. IBM Cloud Object Storage API # IBM Cloud Object Storage API는 객체 읽기 및 쓰기를 위한 REST 기반 API 입니다. 인증을 위해 IBM Cloud Identity와 Access Management를 사용하며, S3 API의 서브셋을 지원하여 app이 IBM Cloud로 쉽게 마이그레이션되도록 합니다.
Build a TensorFlow model using Watson ML CLI Tutorial
ML ICOS Watson Cloud
1. Overview # 최근 ML(Machine Learning)에 대한 관심이 높아지면서 너도나도 ML에 발을 담그고 있습니다. 하지만 ML은 매우 많은 연산량을 요구하고 보통의 컴퓨터로는 결과를 내려면 굉장히 많은 시간이 소요됩니다. 이번 문서에서는 IBM Cloud와 IBM Watson Studio를 통해 빠르고 쉽게 모델을 training 시키고, deploy하는 과정을 진행하겠습니다.