AWS S3 Upload

JS
S
JavaScript

Using AWS SDK for Node.js

1  public uploadFile(filePath: string): Promise<CsvReport> {
2    const tenant = String(process.env.TENANT_CONSTANT).toLowerCase();
3    const key = `${tenant}/reports/${filePath}`;
4    return new Promise((resolve, reject) => {
5      const fileStream = fs.createReadStream(filePath);
6      const params = {
7        ACL: 'private',
8        Body: fileStream,
9        Bucket: `${process.env.S3_BUCKET}`,
10        Key: key,
11        Tagging: 'reportenv=staging'
12      };
13      logService.log('info', 'Uploading file...', { params });
14      AWSService.s3.putObject(
15        params,
16        (err: Error, data: AWS.S3.PutObjectOutput) => {
17          if (err) {
18            logService.log('error', 'failed s3 upload', err);
19            reject(err);
20          } else {
21            logService.log('info', `completed upload`, data);
22            const finalPath = this.buildUploadedFinalPath(filePath);
23            const result: CsvReport = {
24              path: finalPath,
25              aws: data
26            };
27            resolve(result);
28          }
29        }
30      );
31    });
32  }
33}

Created on 4/11/2020