直接在s3存储桶而不是本地计算机上写入流

时间:2019-12-16 11:12:37

标签: node.js amazon-s3 aws-lambda

我试图将zip上传到S3而不在本地计算机上创建zip。我们可以在S3上直接执行createwritestream吗?目前,我的代码在本地创建一个zip,然后上传到S3,然后从本地计算机删除。我不希望在本地计算机上有任何存储空间

          const zipName = `myzipname.zip`;
          const zipWriteStream = fs.createWriteStream(zipName);

          s3Zip
            .setRegisterFormatOptions('zip-encrypted', zipencrypted)
            .setFormat('zip-encryptable')
            .setArchiverOptions({
              zlib: { level: 8 },
              encryptionMethod: 'my-password',
              password: password
            })
            .archive(
              { region: 'xxxxxxxxxxxxxxxxxxx', bucket: 'xxxxxxxxxxxxxxxxxxx' },
              `test2324234`,
              [`test.png`, `sample.jpg`]
            )
            .pipe(zipWriteStream);

          zipWriteStream.on('finish', async function (err) {
            const uploadzip = fs.readFileSync(zipName);

            const file: FileType = {
              buffer: uploadzip,
              mimetype: 'application/zip'
            } as FileType;
            await uploadZipFileOnS3(file, zipName); 
            fs.unlinkSync(zipName);
          });

0 个答案:

没有答案