Node.js
Express
S3

S3の画像ファイルをExpressで表示する

More than 3 years have passed since last update.

S3の画像ファイルを表示する以外何もしない単純なwebアプリ。

nodeパッケージ

$ npm install express@4.9.8
$ npm install jade
$ npm install aws-sdk

aws-sdk用設定

$HOME/.aws/credentials
[default]
aws_access_key_id = XXXX
aws_secret_access_key = XXXX

テンプレート

views/index.jade
doctype html
html
  body
    img(src='./fig.png')

アプリケーション

index.js
var express = require('express');

var app = express();

app.set('view engine', 'jade');
app.set('views', __dirname + '/views');

var aws = require('aws-sdk');
var region = 'ap-northeast-1';

var s3 = new aws.S3({region:region});

app.get('/', function (req, res) {
  res.render('index');
});

app.get('/fig.png', function (req, res) {
  bucket= 'BUCKET';
  key = 'fig.png';
  s3.getObject({Bucket:bucket, Key:key},
          function(err,data) {
              if (err) {
                  // some error handling
              }
              else {
                  res.send(data.Body);
              }
          }
  );

});

var PORT = 8080;
app.listen(PORT);
$ node index.js

ポートは任意。$IP_ADDRESS:8080で画像が表示される。