AWS S3 を Node.js で使ってみます。
1)バケットの一覧
s3_list.js
#! /usr/bin/node
//// s3_list.js//// Mar/02/2020// ---------------------------------------------------------------varAWS=require('aws-sdk')s3=newAWS.S3({apiVersion:'2006-03-01'})s3.listBuckets(function(err,data){if(err){console.log("Error",err)}else{console.log("Success",data.Buckets)}})// ---------------------------------------------------------------
2)バケット内のファイル一覧
s3_listobjects.js
#! /usr/bin/node
//// s3_listobject.js//// Mar/02/2020// ---------------------------------------------------------------varAWS=require('aws-sdk')s3=newAWS.S3({apiVersion:'2006-03-01'})console.log(process.argv.length)if(process.argv.length<3){console.error("*** error ***")process.exit(1)}constbucket_name=process.argv[2]console.log(bucket_name)varbucketParams={Bucket:bucket_name,}s3.listObjects(bucketParams,function(err,data){if(err){console.log("Error",err)}else{console.log("Success",data)}})// ---------------------------------------------------------------
3)ファイルのアップロード
s3_upload.js
#! /usr/bin/node
//// s3_upload.js//// Mar/02/2020//// ---------------------------------------------------------------varAWS=require('aws-sdk');s3=newAWS.S3({apiVersion:'2006-03-01'})console.log(process.argv.length)if(process.argv.length<4){console.error("*** error ***")process.exit(1)}constbucket_name=process.argv[2]constfile_name=process.argv[3]console.log(bucket_name)console.log(file_name)varuploadParams={Bucket:bucket_name,Key:'',Body:''}varfs=require('fs')varfileStream=fs.createReadStream(file_name)fileStream.on('error',function(err){console.log('File Error',err)});uploadParams.Body=fileStreamvarpath=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)}})// ---------------------------------------------------------------
4)ファイルのダウンロード
s3_download.js
#! /usr/bin/node
//// s3_download.js//// Mar/02/2020// ---------------------------------------------------------------varAWS=require('aws-sdk')vars3=newAWS.S3()varfs=require("fs")console.error("*** 開始 ***")console.log(process.argv.length)if(process.argv.length<4){console.error("*** error ***")process.exit(1)}constbucket_name=process.argv[2]constfile_name=process.argv[3]console.log(bucket_name)console.log(file_name)constparams={Bucket:bucket_name,Key:file_name}constfile_out=file_names3.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("*** 終了 ***")}})}})// ---------------------------------------------------------------
5)ファイルの削除
s3_rm.js
#! /usr/bin/node
//// ---------------------------------------------------------------varAWS=require('aws-sdk');s3=newAWS.S3({apiVersion:'2006-03-01'});console.log(process.argv.length)if(process.argv.length<4){console.error("*** error ***")process.exit(1)}constbucket_name=process.argv[2]constfile_name=process.argv[3]console.error("*** 開始 ***")constparams={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("*** 終了 ***")})// ---------------------------------------------------------------
6)ファイルの作成
s3_put.js
#! /usr/bin/node
//// s3_put.js//// Mar/02/2020//// ---------------------------------------------------------------varAWS=require('aws-sdk');s3=newAWS.S3({apiVersion:'2006-03-01'})console.log(process.argv.length)if(process.argv.length<4){console.error("*** error ***")process.exit(1)}constbucket_name=process.argv[2]constfile_name=process.argv[3]console.log(bucket_name)console.log(file_name)varstr_data='Good Morning\n'str_data+='Good Afternoon\n'str_data+='Good Evening\n'str_data+='Good Night\n'varParams={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)}})// ---------------------------------------------------------------