Edited at

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

More than 1 year has passed since last update.


背景

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の画面の右上の方の「アカウント名」をクリック>「セキュリティ認証情報」を選択

スクリーンショット 2017-10-22 21.27.28.png

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

スクリーンショット 2017-10-22 21.27.48.png

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


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);
});