使用 Node.js 的 for-await-of 循环遍历返回的数据流,并对每个对象执行 GetObjectCommand。以下是一个示例代码:
const { S3Client, GetObjectCommand } = require("@aws-sdk/client-s3");
const { Readable } = require("stream");
const s3Client = new S3Client({ region: "us-east-1" });
const objectKeys = ["object1", "object2", "object3"];
async function getAllObjects() {
const objects = [];
for await (const key of objectKeys) {
const getObjectParams = { Bucket: "myBucket", Key: key };
const objectStream = await s3Client.send(new GetObjectCommand(getObjectParams));
const buffer = await streamToBuffer(objectStream);
objects.push(buffer.toString());
}
return objects;
}
function streamToBuffer(stream) {
return new Promise((resolve, reject) => {
const chunks = [];
stream.on("data", (data) => chunks.push(data));
stream.on("end", () => resolve(Buffer.concat(chunks)));
stream.on("error", reject);
});
}
getAllObjects().then((objects) => console.log(objects));