1. ホーム
  2. node.js

[解決済み] ノードfsを使ったaws s3バケットからのファイル読み込み

2023-02-03 07:47:11

質問

awsのs3バケットにあるファイルを読み込もうとしています。

fs.readFile(file, function (err, contents) {
  var myLines = contents.Body.toString().split('\n')
})

node aws-sdkを使用してファイルのダウンロードとアップロードはできましたが、単純にファイルを読み込んで中身を解析する方法がわからず困っています。

以下は、私がs3からファイルを読み取る方法の例です。

var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'myKey.csv'}
var s3file = s3.getObject(params)

どのように解決するのですか?

いくつかのオプションがあります。第2引数にコールバックを指定し、エラーメッセージとオブジェクトを指定して呼び出すことができます。これは の例です。 はAWSのドキュメントからそのまま引用しています。

s3.getObject(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

あるいは、出力をストリームに変換することもできます。また の例 の例もあります。

var s3 = new AWS.S3({apiVersion: '2006-03-01'});
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');
s3.getObject(params).createReadStream().pipe(file);