2017-12-27 20 views
0

s3バケットに格納された単一のcsvファイルに複数の行を挿入することを望んでいました。各ポストフォームデータは、新しい行のs3バケット内の同じcsvファイルに保存する必要があります。現在、新しいエントリは個別のファイルとして保存されています。s3バケットにcsvファイルを追加する方法

exports.handler = (event, context, callback) => { 
    var fs = require('fs'); 
    var AWS = require('aws-sdk'); 
    var s3 = new AWS.S3(); 

    var name = event.name 
    var phonenumber = event.phonenumber 
    var email = event.email 
    var gender = event.gender 
    var message = event.message 
    var region = event.region 
    var favfood = event.favfood 

    var timestamp = Math.floor(Date.now()/1000); 
    var filename = "phase1_" + timestamp + ".csv" 

    fs.writeFileSync("/tmp/" + filename, name+ ',' +phonenumber+ ',' +email+ ',' +gender+ ',' +message+ ',' +region+ ',' +favfood); 
    var body = fs.createReadStream("/tmp/" + filename); 
    // var base64data = new Buffer(data, 'binary'); 
    s3.putObject({ 
        Bucket: 'mybucket', 
        Key: filename, 
        Body:body, 
        ACL: 'public-read-write' 
        },function(err, data) { 
        if (err) { 
        console.log(err.message); 
         } 
        console.log('Successfully uploaded file.'); 

        }); 



}; 

答えて

3

残念ながら、S3のオブジェクトに追加することはできません。Refer this

オブジェクトがいったんアップロードされると、それをその場所で変更する方法はありません。あなたの唯一の選択肢は、あなたの要件を満たしていない新しいオブジェクトをアップロードすることです。

あなたはエントリがSQSキューに送られてきた可能性があり、キューサイズ が設定された数に達したとき、あなたはログメッセージが一緒に をバッチ処理し、あなたのS3バケット内のオブジェクトとして追加されている可能性があります。これは、単一のオブジェクトに追加するという要求を で満たしていません。

関連する問題