nodejs aws-sdkでs3ファイルアップロード


背景

node.jsでaws-sdkを利用してファイルのアップロードしようと思ったけど古い記事が多かったのでまとめさせていただきます。
正規なやつは下記を参照…
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html

最初に

下記の項目は飛ばさせていただきます…
1. node.jsやらnpmやらのインストール
2. awsのアカウント作成
3. awsのs3のバケット作成

やり方

aws-sdkのインストール

 npm init
 npm install --save aws-sdk fs

アクセスキーの取得

AWSの画面の右上の方の「アカウント名」をクリック>「セキュリティ認証情報」を選択

アクセスキーの項目で「新しいアクセスキーの作成」をクリックして作成

下記のようなファイルがダウンロード出来ます。

rootkey.csv
AWSAccessKeyId=xxxxxxxxxxxxxxxxxxxx
AWSSecretKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

これをこんな感じで変更して拡張子をjsonに変更

rootkey.json
{"accessKeyId": "xxxxxxxxxxxxxxxxxxxx",
 "secretAccessKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}

コーディング

上記のファイルをプロジェクトファイルに移動して…

index.js
var AWS = require('aws-sdk');
var fs  = require('fs');

AWS.config.loadFromPath('./rootkey.json');
AWS.config.update({region: 'リージョン名'});

var s3 = new AWS.S3();
var params = {
 Bucket: "バケット名",
 Key: "アップロード後のファイル名.jpg"
};
var v= fs.readFileSync("./アップロード対象ファイル名.jpg");
params.Body=v;
s3.putObject(params, function(err, data) {
  if (err) console.log(err, err.stack);
  else     console.log(data);
});