AWS S3 の使い方 (Node.js)

AWS S3 を Node.js で使ってみます。

１）バケットの一覧

```js:s3_list.js
#! /usr/bin/node
//
//	s3_list.js
//
//					Mar/02/2020
// ---------------------------------------------------------------
var AWS = require('aws-sdk')

var s3 = new AWS.S3({apiVersion: '2006-03-01'})

s3.listBuckets(function(err, data) {
	if (err) {
		console.log("Error", err)
	} else {
		console.log("Success", data.Buckets)
	}
})

// ---------------------------------------------------------------
```

２）バケット内のファイル一覧

```js:s3_listobjects.js
#! /usr/bin/node
//
//	s3_listobject.js
//
//					Mar/02/2020
// ---------------------------------------------------------------
var AWS = require('aws-sdk')


var s3 = new AWS.S3({apiVersion: '2006-03-01'})

console.log(process.argv.length)

if (process.argv.length < 3)
	{
	console.error ("*** error ***")
	process.exit(1)
	}

const bucket_name=process.argv[2]

console.log (bucket_name)

var bucketParams = { Bucket : bucket_name, }

s3.listObjects(bucketParams, function(err, data) {
  if (err) {
    console.log("Error", err)
  } else {
    console.log("Success", data)
  }
})

// ---------------------------------------------------------------
```

３）ファイルのアップロード

```js:s3_upload.js
#! /usr/bin/node
//
//	s3_upload.js
//
//					Mar/02/2020
//
// ---------------------------------------------------------------
var AWS = require('aws-sdk');

var s3 = new AWS.S3({apiVersion: '2006-03-01'})

console.log(process.argv.length)

if (process.argv.length < 4)
	{
	console.error ("*** error ***")
	process.exit(1)
	}

const bucket_name = process.argv[2]
const file_name = process.argv[3]

console.log(bucket_name)
console.log(file_name)

var uploadParams = {Bucket: bucket_name, Key: '', Body: ''}

var fs = require('fs')
var fileStream = fs.createReadStream(file_name)
fileStream.on('error', function(err) {
  console.log('File Error', err)
});

uploadParams.Body = fileStream
var path = require('path')
uploadParams.Key = path.basename(file_name)

s3.upload (uploadParams, function (err, data) {
  if (err) {
    console.log("Error", err)
  } if (data) {
    console.log("Upload Success", data.Location)
  }
})

// ---------------------------------------------------------------
```

４）ファイルのダウンロード

```js:s3_download.js
#! /usr/bin/node
//
//	s3_download.js
//
//					Mar/02/2020
// ---------------------------------------------------------------
var AWS = require('aws-sdk')
var s3 = new AWS.S3()
var fs = require("fs")

console.error ("*** 開始 ***")

console.log(process.argv.length)

if (process.argv.length < 4)
	{
	console.error ("*** error ***")
	process.exit(1)
	}

const bucket_name = process.argv[2]
const file_name = process.argv[3]
console.log(bucket_name)
console.log(file_name)

const params = {
    Bucket: bucket_name,
    Key: file_name
}

const file_out = file_name

s3.getObject(params, function(err, data) {
    if (err) {
        console.log(err, err.stack)
    } else {
	str_out = data.Body.toString()
	fs.writeFile (file_out,str_out,function (err)
	{
	if (err) {
		console.error ("Error on write: " + err)
		}
	else {
		fs.chmodSync (file_out,0666)
		console.log("File written.")
		console.error ("*** 終了 ***")
		}
	})
    }
})

// ---------------------------------------------------------------
```

５）ファイルの削除

```js:s3_rm.js
#! /usr/bin/node
//
// ---------------------------------------------------------------
var AWS = require('aws-sdk');

var s3 = new AWS.S3({apiVersion: '2006-03-01'});

console.log(process.argv.length)

if (process.argv.length < 4)
	{
	console.error ("*** error ***")
	process.exit(1)
	}

const bucket_name = process.argv[2]
const file_name = process.argv[3]

console.error ("*** 開始 ***")

const params = {
    Bucket: bucket_name,
    Key: file_name
}


s3.deleteObject(params, function(err, data) {
    if (err) {
        console.log(err, err.stack)
    } else {
	console.log("Success", data)
	}
console.error ("*** 終了 ***")
    })


// ---------------------------------------------------------------
```

６）ファイルの作成

```js:s3_put.js
#! /usr/bin/node
//
//	s3_put.js
//
//					Mar/02/2020
//
// ---------------------------------------------------------------
var AWS = require('aws-sdk');

var s3 = new AWS.S3({apiVersion: '2006-03-01'})

console.log(process.argv.length)

if (process.argv.length < 4)
	{
	console.error ("*** error ***")
	process.exit(1)
	}

const bucket_name = process.argv[2]
const file_name = process.argv[3]

console.log(bucket_name)
console.log(file_name)

var str_data = 'Good Morning\n'
str_data += 'Good Afternoon\n'
str_data += 'Good Evening\n'
str_data += 'Good Night\n'

var Params = {Bucket: bucket_name,
	 Key: file_name,
	 Body: str_data}


s3.putObject (Params, function (err, data) {
	if (err) {
		console.log("Error", err)
	} if (data) {
		console.log("Put Success", data)
	}
})

// ---------------------------------------------------------------
```