Amazon S3 バケット内のいくつかの小さなファイルを管理する方法として、node.js の knox モジュールを試しています。ファイルをアップロードしたり、ファイルをダウンロードしたりできます。ただし、定期的なスケジュールでファイルをダウンロードできるようにしたいと考えています。間隔を置いて実行するようにコードを変更すると、ダウンロードしたファイルが上書きされるのではなく、前のインスタンスに追加されます。
ファイル書き込みコードを間違えたのか、knox 処理コードを間違えたのかわかりません。いくつかの異なる書き込みアプローチ (writeFile、writeStream など) を試し、knox ソース コードを見てきました。私にとって明らかなことは何も問題として目立ちません。私が使用しているコードは次のとおりです。
knox = require('knox');
fs = require('fs');
var downFile = DOWNFILE;
var downTxt = '';
var timer = INTERVAL;
var path = S3PATH + downFile;
setInterval(function()
{
var s3client = knox.createClient(
{
key: '********************',
secret: '**********************************',
bucket: '********'
});
s3client.get(path).on('response', function(response)
{
response.setEncoding('ascii');
response.on('data', function(chunk)
{
downTxt += chunk;
});
response.on('end', function()
{
fs.writeFileSync(downFile, downTxt, 'ascii');
});
}).end();
},
timer);