Node.js를 통해 웹을 통해 ICOS (IBM Cloud Object Storage)의 이미지 파일 참조

4864 단어 ibmcloudICOSNode.js

하고 싶은 일



느긋하게 빨리, 이하 2점을 실현하고 싶을 때의 방법을 기재하고 있습니다.
・ICOS상에 있는 파일을, Node.js상의 Web 어플리케이션으로부터 참조할 수 있도록(듯이) 하고 싶다 ※1※2
・파일은 인증한 사람만 보이게 하고 싶다 ※3

※1 ICOS상의 이미지 파일을 img 태그의 src로서 이용 가능하게 하는 등.
※2 단순히 Web 사이트를 호스트(ICOS상의 html 파일로 사이트를 공개)하고 싶은 경우는, NGINX를 세우면 좋은 것 같습니다.
참고: NGINX를 사용한 정적 콘텐츠 제공
htps //w w. 이 bm. 이 m / c ぉ d / b ぉ g / s 들 c ぇ b 하고 s ぉ u d b b c cts
※3 인터넷상에 공개해 좋은 파일이면, 버킷마다 퍼블릭·액세스를 허가하면 OK
참고 : 공개 액세스 허용
htps : // c ぉ d. 이 bm. 이 m / 드 cs / c ぉ 우 d 오 b ぇ c t s 똥? 토피 c = c ぉ 우 d b b c c s

참고: IBM Cloud Object Storage(ICOS)에 업로드한 파일을 공개적으로 게시
htps : // 코 m / 야마 짱 360 / ms / 5c017 b5480 81dc8 eb

이 기사의 실현 방법 개요



Node.js 서버에 ICOS 자격 증명을 제공하고 Node.js에서 호스팅하는 사이트에서 ICOS의 파일을 찾습니다.


구현 샘플



github에도 올리고 있습니다.
htps : // 기주 b. 코 m / 고다이 아오키 / 게 ts r d

참고.Node.js의 get started
htps : // 기주 b. 이 m / is BM-C ぉ d / 게 ts r r d
참고.Node.js 사용
h tps : // c ぉ d. 이 bm. 이 m / 드 cs / c ぉ 우 d 오 b ぇ c t s 똥? 토피 c = c ぉ u d b ぇ c t s touge - 그래서

사전 준비



IBM Cloud에 IBM Cloud Object Stroage의 인스턴스를 작성, 버킷 작성 및 파일 업로드합니다.
아래 문서의 "ICOS 서비스 만들기"~ "액세스를 위한 자격 증명 만들기"에 캡처된 절차가 있습니다.

IBM Cloud Object Storage (ICOS)에 WinSCP를 통해 액세스하여 파일 서버로 사용해 보았습니다.
htps : // 코 m / 야마 짱 360 / ms / 2dc986c97 네 1 f6660

1. 라이브러리 설치


npm install -save ibm-cos-sdk

2.실장 샘플 코드(발췌)



GET/images/{파일 이름}의 엔드포인트에서 파일을 다운로드할 수 있습니다.
config의 자격 증명과 bucketName을 사전 준비에서 확인한 내용으로 바꿉니다.
//apikeyIdとInstanceIdはダミー
const config = {
  endpoint: 's3.ap.cloud-object-storage.appdomain.cloud',
  apiKeyId: 'oP581KVXr-6X4AWBWWm6ROQuv23QNbUKHxxxxxxxx',
  region: "ap-geo",
  serviceInstanceId: 'crn:v1:bluemix:public:cloud-object-storage:global:a/8181f93cf3b742dbd2ab762ed34a2319:4eac0af5-594d-464e-9fbxxxxxxxx::'
};

const bucketName = 'ga-test'

var cos = new AWS.S3(config);

/*icosのイメージ参照*/
app.get('/images/:imageFile', function(req, res){
  console.log("filename = " + req.params.imageFile);
      console.log(`Retrieving item from bucket: ` + bucketName +`, key:` + req.params.imageFile);
      return cos.getObject({
          Bucket: bucketName,
          Key: req.params.imageFile
      }).promise()
      .then((data) => {
          // console.log(data);
          if (data != null) {

              // console.log('File Contents: ' + Buffer.from(data.Body).toString());
              res.status(200).send(data.Body);
          }else{
            res.status(404).send();
          }
      })
      .catch((e) => {
          console.log(`ERROR: ${e.code} - ${e.message}\n`);
          res.status(404).send();
      });

});

참고. 인증 구현



앱에서 이용하고 있는 인증·인가를/images의 엔드포인트에 적용합니다. 예를 들어 기본 인증을 구현한다면 다음과 같습니다.
npm install --save basic-auth-connect
const basicAuth = require('basic-auth-connect'); // 基本認証用

app.all('/*', basicAuth(function(user, password) {
   //console.log("userCreds:"+ userCreds.users);
   return user==="test" && password==="test";
}));

실제 동작



예를 들어 index.html의 배경을 ICOS에서 가져옵니다.
<body style="background-image: url('http://localhost:3000/images/holzreiter_small.jpg');">

좋은 웹페이지 즐겨찾기