Sign AWS S3 Object Urls
JS
S
JavaScriptTypescript service class to sign S3 Objects
1import AWS from 'aws-sdk';
2import fs from 'fs';
3import path from 'path';
4import { Tags } from 'tsoa';
5import aws4 from 'aws4';
6
7import logService from '../services/log';
8
9@Tags('AWS')
10class AWSService {
11 public s3: AWS.S3;
12 public getSignedUrl: any;
13
14 constructor() {
15 logService.log(`info`, `AWS Service running`, { region: process.env.AWS_REGION });
16 AWS.config.update({
17 accessKeyId: process.env.AWS_ACCESS_KEY_ID,
18 secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
19 region: process.env.AWS_REGION
20 });
21 this.s3 = new AWS.S3({
22 signatureVersion: 'v4',
23 region: process.env.AWS_REGION,
24 accessKeyId: process.env.AWS_ACCESS_KEY_ID,
25 secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
26 });
27 }
28
29 public signS3Url(bucket: string, key: string): Promise<string> {
30 logService.log(`info`, `Signing url..`, { bucket, key });
31 const getSignedUrlParams = {
32 Bucket: bucket,
33 Key: key,
34 Expires: 3600 // Set 1 hour expiry: 60*60 seconds = 3600 seconds
35 };
36 return this.s3.getSignedUrlPromise('getObject', getSignedUrlParams);
37 }
38}
39
40export default new AWSService();Created on 9/24/2019