我使用AWS SDK从S3存储桶中检索数据,但我得到的响应不包含任何数据。
这是我的代码:
const init = (S3_REGION) => {
AWS.config.update({
'region': S3_REGION
}
);
return new AWS.S3();
};
const getFileFromAWS = async (S3_REGION, S3_BUCKET) => {
const s3 = init(S3_REGION);
const params = {
Bucket: S3_BUCKET,
Key: "filename.txt"
};
try{
const awsResponse = await s3.getObject(params);
logger.info(awsResponse);
}catch(error){
logger.error('Failed to get file');
}
};
响应返回' data:null',如果我发送curl请求,我会得到该文件。 请注意,我只发送'区域'因为我在env中运行,其中所有其他变量都已设置好,我只需要传递该区域。
我从getObject获得的响应
"Body ": {
"type ": "Buffer ",
"data ": [
115,
97,
108,
116,
10
]
}
如何将其转换为字符串? 请指教。
答案 0 :(得分:2)
getObject()方法返回一个AWS.Request对象,它不是一个promise。你应该使用:
const rsp = await s3.getObject(params).promise()
要将下载文件的内容检索为文本字符串,可以使用以下变体:
const txt = rsp.Body.toString('utf-8')
有关在JavaScript SDK中使用promises的更多详细信息,请参阅here。