我有工作代码使用来自 getObject 的 createReadStream 的可读流。我想使用 selectObjectContent 而不是 getObject,这样我就可以过滤使用 SQL 表达式返回的 json 文件,以节省文件传输大小和时间。
工作 getObject 代码:
let objectReadableStream = s3.getObject({
Bucket: event.bucket,
Key: event.sourceKey,
}).createReadStream()
将其移交给 s3.upload 以在其他地方制作副本:
let uploadResult = await s3.upload({
Bucket: event.bucket,
Key: event.destinationKey,
Body: objectReadableStream
}).promise();
我希望将其转换为可读流,我可以将其传递给 s3.upload 的主体,就像我对上面的 getObject 所做的那样。
s3.selectObjectContent({
Bucket: event.bucket,
Key: event.sourceKey,
Expression: event.expression,
ExpressionType: 'SQL',
InputSerialization: {
JSON: {
Type: 'DOCUMENT'
}
},
OutputSerialization: {
JSON: {
RecordDelimiter: ','
}
}
})