UNPKG

2.9 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const fs = require("fs-extra");
4const qq = require("qqjs");
5const log_1 = require("./log");
6const debug = log_1.debug.new('aws');
7const cache = {};
8const aws = {
9 get creds() {
10 const creds = {
11 accessKeyId: process.env.AWS_ACCESS_KEY_ID,
12 secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
13 };
14 if (!creds.accessKeyId)
15 throw new Error('AWS_ACCESS_KEY_ID not set');
16 if (!creds.secretAccessKey)
17 throw new Error('AWS_SECRET_ACCESS_KEY not set');
18 return creds;
19 },
20 get s3() { return cache.s3 = cache.s3 || new (require('aws-sdk/clients/s3'))(this.creds); },
21 get cloudfront() { return cache.cloudfront = cache.cloudfront || new (require('aws-sdk/clients/cloudfront'))(this.creds); },
22};
23exports.default = {
24 get cloudfront() {
25 return {
26 createCloudfrontInvalidation: (options) => new Promise((resolve, reject) => {
27 log_1.log('createCloudfrontInvalidation', options.DistributionId, options.InvalidationBatch.Paths.Items);
28 aws.cloudfront.createInvalidation(options, err => {
29 if (err)
30 reject(err);
31 else
32 resolve();
33 });
34 }),
35 };
36 },
37 get s3() {
38 return {
39 uploadFile: (local, options) => new Promise((resolve, reject) => {
40 log_1.log('s3:uploadFile', qq.prettifyPaths(local), `s3://${options.Bucket}/${options.Key}`);
41 options.Body = fs.createReadStream(local);
42 aws.s3.upload(options, err => {
43 if (err)
44 reject(err);
45 else
46 resolve();
47 });
48 }),
49 headObject: (options) => new Promise((resolve, reject) => {
50 debug('s3:headObject', `s3://${options.Bucket}/${options.Key}`);
51 aws.s3.headObject(options, (err, data) => {
52 if (err)
53 reject(err);
54 else
55 resolve(data);
56 });
57 }),
58 };
59 }
60};
61// export const getObject = (options: S3.Types.GetObjectRequest) => new Promise<S3.GetObjectOutput>((resolve, reject) => {
62// debug('getObject', `s3://${options.Bucket}/${options.Key}`)
63// s3().getObject(options, (err, data) => {
64// if (err) reject(err)
65// else resolve(data)
66// })
67// })
68// export const listObjects = (options: S3.Types.ListObjectsV2Request) => new Promise<S3.ListObjectsV2Output>((resolve, reject) => {
69// debug('listObjects', `s3://${options.Bucket}/${options.Prefix}`)
70// s3().listObjectsV2(options, (err, objects) => {
71// if (err) reject(err)
72// else resolve(objects)
73// })
74// })