Como baixar um arquivo do bucket do Amazon S3 no node.js de forma síncrona
Eu tenho que baixar vários arquivos do bucket do S3 usando o node.js. Para isso eu tenho que escrever umfor loop
& Ligar paras3.getObject(param)
método para baixar. Após o download dos arquivos, tenho que mesclar o conteúdo deles.
Eu escrevi assim:
var fileContentList = new ArrayList();
for(i=0; i<fileNameList.length i++){
s3.getObject({ Bucket: "my-bucket", Key: fileNameList.get(i) }, function (error, data) {
if (error != null) {
alert("Failed to retrieve an object: " + error);
} else {
alert("Loaded " + data.ContentLength + " bytes");
fileContentList.add(data.Body.toString());
}
}
);
}
//Do merging with the fileContentList.
Mas comos3.getObject
é uma chamada assíncrona, o encadeamento atual se move e nada é adicionado aofileContentList
enquanto estou fazendo a fusão.
Como posso resolver o problema? Qualquer ideia?
Existe algum método síncrono no aws-sdk para baixar o arquivo?