@webda/aws 4.0.0-beta.2 → 4.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -7
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/services/aws-parameters.d.ts +33 -0
- package/lib/services/aws-parameters.d.ts.map +1 -0
- package/lib/services/aws-parameters.js +18 -0
- package/lib/services/aws-parameters.js.map +1 -0
- package/lib/services/awscommands.service.d.ts +39 -0
- package/lib/services/awscommands.service.d.ts.map +1 -0
- package/lib/services/awscommands.service.js +127 -0
- package/lib/services/awscommands.service.js.map +1 -0
- package/lib/services/cloudwatchlogger.service.d.ts +131 -0
- package/lib/services/cloudwatchlogger.service.d.ts.map +1 -0
- package/lib/services/{cloudwatchlogger.js → cloudwatchlogger.service.js} +60 -28
- package/lib/services/cloudwatchlogger.service.js.map +1 -0
- package/lib/services/contributors.d.ts +37 -0
- package/lib/services/contributors.d.ts.map +1 -0
- package/lib/services/contributors.js +2 -0
- package/lib/services/contributors.js.map +1 -0
- package/lib/services/dynamodb.service.d.ts +297 -0
- package/lib/services/dynamodb.service.d.ts.map +1 -0
- package/lib/services/dynamodb.service.js +985 -0
- package/lib/services/dynamodb.service.js.map +1 -0
- package/lib/services/index.d.ts +11 -31
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/index.js +11 -8
- package/lib/services/index.js.map +1 -1
- package/lib/services/lambdacaller.service.d.ts +81 -0
- package/lib/services/lambdacaller.service.d.ts.map +1 -0
- package/lib/services/lambdacaller.service.js +75 -0
- package/lib/services/lambdacaller.service.js.map +1 -0
- package/lib/services/lambdaserver.service.d.ts +127 -0
- package/lib/services/lambdaserver.service.d.ts.map +1 -0
- package/lib/services/lambdaserver.service.js +294 -0
- package/lib/services/lambdaserver.service.js.map +1 -0
- package/lib/services/{route53.d.ts → route53.service.d.ts} +21 -12
- package/lib/services/route53.service.d.ts.map +1 -0
- package/lib/services/{route53.js → route53.service.js} +25 -28
- package/lib/services/route53.service.js.map +1 -0
- package/lib/services/s3binary.service.d.ts +215 -0
- package/lib/services/s3binary.service.d.ts.map +1 -0
- package/lib/services/{s3binary.js → s3binary.service.js} +93 -55
- package/lib/services/s3binary.service.js.map +1 -0
- package/lib/services/secretsmanager.service.d.ts +102 -0
- package/lib/services/secretsmanager.service.d.ts.map +1 -0
- package/lib/services/{secretsmanager.js → secretsmanager.service.js} +40 -22
- package/lib/services/secretsmanager.service.js.map +1 -0
- package/lib/services/{sqsqueue.d.ts → sqsqueue.service.d.ts} +60 -35
- package/lib/services/sqsqueue.service.d.ts.map +1 -0
- package/lib/services/{sqsqueue.js → sqsqueue.service.js} +53 -28
- package/lib/services/sqsqueue.service.js.map +1 -0
- package/package.json +58 -63
- package/webda.module.json +743 -280
- package/lib/deployers/cloudformation.d.ts +0 -317
- package/lib/deployers/cloudformation.d.ts.map +0 -1
- package/lib/deployers/cloudformation.js +0 -837
- package/lib/deployers/cloudformation.js.map +0 -1
- package/lib/deployers/cloudformation.spec.d.ts +0 -2
- package/lib/deployers/cloudformation.spec.d.ts.map +0 -1
- package/lib/deployers/cloudformation.spec.js +0 -530
- package/lib/deployers/cloudformation.spec.js.map +0 -1
- package/lib/deployers/index.d.ts +0 -255
- package/lib/deployers/index.d.ts.map +0 -1
- package/lib/deployers/index.js +0 -543
- package/lib/deployers/index.js.map +0 -1
- package/lib/deployers/index.spec.d.ts +0 -9
- package/lib/deployers/index.spec.d.ts.map +0 -1
- package/lib/deployers/index.spec.js +0 -595
- package/lib/deployers/index.spec.js.map +0 -1
- package/lib/deployers/lambda-entrypoint.d.ts +0 -2
- package/lib/deployers/lambda-entrypoint.d.ts.map +0 -1
- package/lib/deployers/lambda-entrypoint.js +0 -13
- package/lib/deployers/lambda-entrypoint.js.map +0 -1
- package/lib/deployers/lambdapackager.d.ts +0 -28
- package/lib/deployers/lambdapackager.d.ts.map +0 -1
- package/lib/deployers/lambdapackager.js +0 -26
- package/lib/deployers/lambdapackager.js.map +0 -1
- package/lib/deployers/lambdapackager.spec.d.ts +0 -2
- package/lib/deployers/lambdapackager.spec.d.ts.map +0 -1
- package/lib/deployers/lambdapackager.spec.js +0 -44
- package/lib/deployers/lambdapackager.spec.js.map +0 -1
- package/lib/index.spec.d.ts +0 -11
- package/lib/index.spec.d.ts.map +0 -1
- package/lib/index.spec.js +0 -42
- package/lib/index.spec.js.map +0 -1
- package/lib/services/aws-mixin.d.ts +0 -25
- package/lib/services/aws-mixin.d.ts.map +0 -1
- package/lib/services/aws-mixin.js +0 -18
- package/lib/services/aws-mixin.js.map +0 -1
- package/lib/services/cloudwatchlogger.d.ts +0 -82
- package/lib/services/cloudwatchlogger.d.ts.map +0 -1
- package/lib/services/cloudwatchlogger.js.map +0 -1
- package/lib/services/cloudwatchlogger.spec.d.ts +0 -2
- package/lib/services/cloudwatchlogger.spec.d.ts.map +0 -1
- package/lib/services/cloudwatchlogger.spec.js +0 -104
- package/lib/services/cloudwatchlogger.spec.js.map +0 -1
- package/lib/services/dynamodb.d.ts +0 -174
- package/lib/services/dynamodb.d.ts.map +0 -1
- package/lib/services/dynamodb.js +0 -711
- package/lib/services/dynamodb.js.map +0 -1
- package/lib/services/dynamodb.spec.d.ts +0 -24
- package/lib/services/dynamodb.spec.d.ts.map +0 -1
- package/lib/services/dynamodb.spec.js +0 -344
- package/lib/services/dynamodb.spec.js.map +0 -1
- package/lib/services/lambdacaller.d.ts +0 -69
- package/lib/services/lambdacaller.d.ts.map +0 -1
- package/lib/services/lambdacaller.js +0 -63
- package/lib/services/lambdacaller.js.map +0 -1
- package/lib/services/lambdacaller.spec.d.ts +0 -2
- package/lib/services/lambdacaller.spec.d.ts.map +0 -1
- package/lib/services/lambdacaller.spec.js +0 -70
- package/lib/services/lambdacaller.spec.js.map +0 -1
- package/lib/services/lambdaserver.d.ts +0 -87
- package/lib/services/lambdaserver.d.ts.map +0 -1
- package/lib/services/lambdaserver.js +0 -263
- package/lib/services/lambdaserver.js.map +0 -1
- package/lib/services/lambdaserver.spec.d.ts +0 -2
- package/lib/services/lambdaserver.spec.d.ts.map +0 -1
- package/lib/services/lambdaserver.spec.js +0 -417
- package/lib/services/lambdaserver.spec.js.map +0 -1
- package/lib/services/route53.d.ts.map +0 -1
- package/lib/services/route53.js.map +0 -1
- package/lib/services/route53.spec.d.ts +0 -2
- package/lib/services/route53.spec.d.ts.map +0 -1
- package/lib/services/route53.spec.js +0 -102
- package/lib/services/route53.spec.js.map +0 -1
- package/lib/services/s3binary.d.ts +0 -163
- package/lib/services/s3binary.d.ts.map +0 -1
- package/lib/services/s3binary.js.map +0 -1
- package/lib/services/s3binary.spec.d.ts +0 -2
- package/lib/services/s3binary.spec.d.ts.map +0 -1
- package/lib/services/s3binary.spec.js +0 -284
- package/lib/services/s3binary.spec.js.map +0 -1
- package/lib/services/secretsmanager.d.ts +0 -81
- package/lib/services/secretsmanager.d.ts.map +0 -1
- package/lib/services/secretsmanager.js.map +0 -1
- package/lib/services/secretsmanager.spec.d.ts +0 -2
- package/lib/services/secretsmanager.spec.d.ts.map +0 -1
- package/lib/services/secretsmanager.spec.js +0 -66
- package/lib/services/secretsmanager.spec.js.map +0 -1
- package/lib/services/sqsqueue.d.ts.map +0 -1
- package/lib/services/sqsqueue.js.map +0 -1
- package/lib/services/sqsqueue.spec.d.ts +0 -2
- package/lib/services/sqsqueue.spec.d.ts.map +0 -1
- package/lib/services/sqsqueue.spec.js +0 -157
- package/lib/services/sqsqueue.spec.js.map +0 -1
- package/lib/shell.d.ts +0 -13
- package/lib/shell.d.ts.map +0 -1
- package/lib/shell.js +0 -42
- package/lib/shell.js.map +0 -1
- package/webda.shell.json +0 -11
package/lib/deployers/index.js
DELETED
|
@@ -1,543 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { ACM } from "@aws-sdk/client-acm";
|
|
8
|
-
import { EC2 } from "@aws-sdk/client-ec2";
|
|
9
|
-
import { Route53 } from "@aws-sdk/client-route-53";
|
|
10
|
-
import { NotFound, S3 } from "@aws-sdk/client-s3";
|
|
11
|
-
import { STS } from "@aws-sdk/client-sts";
|
|
12
|
-
import { Cache, WaitFor, WaitLinearDelay, WebdaError } from "@webda/core";
|
|
13
|
-
import { Deployer } from "@webda/shell";
|
|
14
|
-
import bluebird from "bluebird";
|
|
15
|
-
import * as crypto from "crypto";
|
|
16
|
-
import * as fs from "fs";
|
|
17
|
-
import { globSync } from "glob";
|
|
18
|
-
import IamPolicyOptimizer from "iam-policy-optimizer";
|
|
19
|
-
import * as mime from "mime-types";
|
|
20
|
-
import * as path from "path";
|
|
21
|
-
import { randomUUID } from "crypto";
|
|
22
|
-
import { Route53Service } from "../services/route53.js";
|
|
23
|
-
/**
|
|
24
|
-
* Abstract AWS Deployer
|
|
25
|
-
*
|
|
26
|
-
* It includes some basic utilities methods to be used by
|
|
27
|
-
* final deployers
|
|
28
|
-
*/
|
|
29
|
-
export class AWSDeployer extends Deployer {
|
|
30
|
-
constructor(manager, resources) {
|
|
31
|
-
super(manager, resources);
|
|
32
|
-
this.resources.accessKeyId = this.resources.accessKeyId || process.env["AWS_ACCESS_KEY_ID"];
|
|
33
|
-
this.resources.secretAccessKey = this.resources.secretAccessKey || process.env["AWS_SECRET_ACCESS_KEY"];
|
|
34
|
-
this.resources.sessionToken = this.resources.sessionToken || process.env["AWS_SESSION_TOKEN"];
|
|
35
|
-
this.resources.region = this.resources.region || process.env["AWS_DEFAULT_REGION"] || "us-east-1";
|
|
36
|
-
this.resources.endpoints = this.resources.endpoints || {};
|
|
37
|
-
this.resources.Tags = this.resources.Tags || {};
|
|
38
|
-
if (!Array.isArray(this.resources.Tags)) {
|
|
39
|
-
this.resources.Tags = this.transformMapTagsToArray(this.resources.Tags);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Return AWS region
|
|
44
|
-
*/
|
|
45
|
-
getRegion() {
|
|
46
|
-
return this.resources.region;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Return the current AWS Identity used
|
|
50
|
-
*/
|
|
51
|
-
async getAWSIdentity() {
|
|
52
|
-
const sts = new STS({
|
|
53
|
-
endpoint: this.resources.endpoints.STS
|
|
54
|
-
});
|
|
55
|
-
return sts.getCallerIdentity({});
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Return the default VPC for the current region
|
|
59
|
-
*/
|
|
60
|
-
async getDefaultVpc() {
|
|
61
|
-
const defaultVpc = {
|
|
62
|
-
Id: "",
|
|
63
|
-
Subnets: []
|
|
64
|
-
};
|
|
65
|
-
const ec2 = new EC2({
|
|
66
|
-
endpoint: this.resources.endpoints.EC2
|
|
67
|
-
});
|
|
68
|
-
const res = await ec2.describeVpcs({});
|
|
69
|
-
for (const i in res.Vpcs) {
|
|
70
|
-
if (res.Vpcs[i].IsDefault) {
|
|
71
|
-
defaultVpc.Id = res.Vpcs[i].VpcId;
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (defaultVpc.Id === "") {
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
const vpcFilter = {
|
|
79
|
-
Filters: [
|
|
80
|
-
{
|
|
81
|
-
Name: "vpc-id",
|
|
82
|
-
Values: [defaultVpc.Id]
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
};
|
|
86
|
-
const res2 = await ec2.describeSubnets(vpcFilter);
|
|
87
|
-
for (const i in res2.Subnets) {
|
|
88
|
-
defaultVpc.Subnets.push(res2.Subnets[i]);
|
|
89
|
-
}
|
|
90
|
-
return defaultVpc;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Generate a MD5 in hex
|
|
94
|
-
* @param str to hash
|
|
95
|
-
*/
|
|
96
|
-
md5(str) {
|
|
97
|
-
return this.hash(str, "md5", "hex");
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Hash the string
|
|
101
|
-
*
|
|
102
|
-
* @param str to hash
|
|
103
|
-
* @param type of hash
|
|
104
|
-
* @param format hex or b64
|
|
105
|
-
*/
|
|
106
|
-
hash(str, type = "md5", format = "hex") {
|
|
107
|
-
return crypto.createHash(type).update(str).digest(format);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Replace / by _ as theses ID are not allowed in AWS
|
|
111
|
-
*
|
|
112
|
-
* @param id
|
|
113
|
-
*/
|
|
114
|
-
_replaceForAWS(id) {
|
|
115
|
-
return id.replace(/\//g, "_");
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Get a certificate or create it
|
|
119
|
-
*
|
|
120
|
-
* @param domain to get certificate for
|
|
121
|
-
* @param region
|
|
122
|
-
*/
|
|
123
|
-
async getCertificate(domain, region = undefined) {
|
|
124
|
-
if (domain.endsWith(".")) {
|
|
125
|
-
domain = domain.substring(0, domain.length - 1);
|
|
126
|
-
}
|
|
127
|
-
const acm = new ACM({
|
|
128
|
-
endpoint: this.resources.endpoints.ACM,
|
|
129
|
-
region
|
|
130
|
-
});
|
|
131
|
-
const params = {};
|
|
132
|
-
let res;
|
|
133
|
-
let certificate;
|
|
134
|
-
do {
|
|
135
|
-
res = await acm.listCertificates(params);
|
|
136
|
-
certificate = res.CertificateSummaryList.filter(cert => cert.DomainName === domain).pop();
|
|
137
|
-
params.NextToken = res.NextToken;
|
|
138
|
-
} while (!certificate && res.NextToken);
|
|
139
|
-
// We did not find the certificate need to create one
|
|
140
|
-
if (!certificate) {
|
|
141
|
-
const zone = await this.getZoneForDomainName(domain);
|
|
142
|
-
if (!zone) {
|
|
143
|
-
throw new WebdaError.CodeError("ROUTE53_NOTFOUND", "Cannot create certificate as Route53 Zone was not found");
|
|
144
|
-
}
|
|
145
|
-
this.logger.log("INFO", "Creating a certificate for", domain);
|
|
146
|
-
certificate = await this.doCreateCertificate(domain, zone);
|
|
147
|
-
}
|
|
148
|
-
return certificate;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Get the closest zone to the domain
|
|
152
|
-
*
|
|
153
|
-
* @param domain to get zone for
|
|
154
|
-
*/
|
|
155
|
-
async getZoneForDomainName(domain) {
|
|
156
|
-
return Route53Service.getZoneForDomainName(domain);
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Transform a tag map into a tag array
|
|
160
|
-
*
|
|
161
|
-
* @param tags
|
|
162
|
-
*/
|
|
163
|
-
transformMapTagsToArray(tags) {
|
|
164
|
-
if (Array.isArray(tags)) {
|
|
165
|
-
return tags;
|
|
166
|
-
}
|
|
167
|
-
const res = [];
|
|
168
|
-
for (const i in tags) {
|
|
169
|
-
res.push({ Key: i, Value: tags[i] });
|
|
170
|
-
}
|
|
171
|
-
return res;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Transform a tag array into a tag map
|
|
175
|
-
*
|
|
176
|
-
* @param tags
|
|
177
|
-
*/
|
|
178
|
-
transformArrayTagsToMap(tags) {
|
|
179
|
-
if (!Array.isArray(tags)) {
|
|
180
|
-
return tags;
|
|
181
|
-
}
|
|
182
|
-
const res = {};
|
|
183
|
-
tags.forEach(t => (res[t.Key] = t.Value));
|
|
184
|
-
return res;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Take this.resources[key].Tags and add all remaining Tags from this.resources.Tags
|
|
188
|
-
*
|
|
189
|
-
* @param key of the resources to add
|
|
190
|
-
*/
|
|
191
|
-
getDefaultTags(key = undefined) {
|
|
192
|
-
let Tags;
|
|
193
|
-
if (typeof key === "string") {
|
|
194
|
-
Tags = this.resources[key] ? this.transformMapTagsToArray(this.resources[key].Tags) || [] : [];
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
Tags = this.transformMapTagsToArray(key) || [];
|
|
198
|
-
}
|
|
199
|
-
if (this.resources.Tags.length) {
|
|
200
|
-
const TagKeys = Tags.map(t => t.Key);
|
|
201
|
-
Tags.push(...this.resources.Tags.filter(t => TagKeys.indexOf(t.Key) < 0));
|
|
202
|
-
}
|
|
203
|
-
return Tags;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Take this.resources[key].Tags and add all remaining Tags from this.resources.Tags
|
|
207
|
-
*
|
|
208
|
-
* @param key of the resources to add
|
|
209
|
-
*/
|
|
210
|
-
getDefaultTagsAsMap(key = undefined) {
|
|
211
|
-
return this.transformArrayTagsToMap(this.getDefaultTags(key));
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Return the S3 Tagging string
|
|
215
|
-
* @param key of the resources to add
|
|
216
|
-
*/
|
|
217
|
-
getDefaultTagsAsS3Tagging(key = undefined) {
|
|
218
|
-
return this.getDefaultTags(key)
|
|
219
|
-
.map(tag => `${encodeURIComponent(tag.Key)}=${encodeURIComponent(tag.Value)}`)
|
|
220
|
-
.join("&");
|
|
221
|
-
}
|
|
222
|
-
async waitFor(callback, retries, title, delay) {
|
|
223
|
-
return WaitFor(callback, retries, title, this.logger, WaitLinearDelay(delay));
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Create a certificate for a domain
|
|
227
|
-
* Will use Route 53 to do the validation
|
|
228
|
-
*
|
|
229
|
-
* @param domain to create the certificate for
|
|
230
|
-
* @param zone
|
|
231
|
-
*/
|
|
232
|
-
async doCreateCertificate(domain, zone) {
|
|
233
|
-
const acm = new ACM({
|
|
234
|
-
endpoint: this.resources.endpoints.S3
|
|
235
|
-
});
|
|
236
|
-
if (domain.endsWith(".")) {
|
|
237
|
-
domain = domain.substring(0, domain.length - 1);
|
|
238
|
-
}
|
|
239
|
-
const params = {
|
|
240
|
-
DomainName: domain,
|
|
241
|
-
DomainValidationOptions: [
|
|
242
|
-
{
|
|
243
|
-
DomainName: domain,
|
|
244
|
-
ValidationDomain: domain
|
|
245
|
-
}
|
|
246
|
-
],
|
|
247
|
-
ValidationMethod: "DNS",
|
|
248
|
-
IdempotencyToken: "Webda_" + this.md5(domain).substring(0, 26)
|
|
249
|
-
};
|
|
250
|
-
const certificate = await acm.requestCertificate(params);
|
|
251
|
-
let cert = await this.waitFor(async (resolve) => {
|
|
252
|
-
const res = await acm.describeCertificate({
|
|
253
|
-
CertificateArn: certificate.CertificateArn
|
|
254
|
-
});
|
|
255
|
-
if (res.Certificate.DomainValidationOptions && res.Certificate.DomainValidationOptions[0].ResourceRecord) {
|
|
256
|
-
resolve(res.Certificate);
|
|
257
|
-
return true;
|
|
258
|
-
}
|
|
259
|
-
return false;
|
|
260
|
-
}, 5, "Waiting for certificate challenge", 10000);
|
|
261
|
-
if (cert === undefined || cert.Status === "FAILED") {
|
|
262
|
-
throw new WebdaError.CodeError("ACM_VALIDATION_FAILED", "Certificate validation has failed");
|
|
263
|
-
}
|
|
264
|
-
if (cert.Status === "PENDING_VALIDATION") {
|
|
265
|
-
// On create need to wait
|
|
266
|
-
const record = cert.DomainValidationOptions[0].ResourceRecord;
|
|
267
|
-
this.logger.log("INFO", "Need to validate certificate", cert.CertificateArn);
|
|
268
|
-
await this.createDNSEntry(record.Name, "CNAME", record.Value, zone);
|
|
269
|
-
// Waiting for certificate validation
|
|
270
|
-
cert = await this.waitFor(async (resolve, reject) => {
|
|
271
|
-
const res = await acm.describeCertificate({
|
|
272
|
-
CertificateArn: cert.CertificateArn
|
|
273
|
-
});
|
|
274
|
-
if (res.Certificate.Status === "ISSUED") {
|
|
275
|
-
resolve(res.Certificate);
|
|
276
|
-
return true;
|
|
277
|
-
}
|
|
278
|
-
if (res.Certificate.Status !== "PENDING_VALIDATION") {
|
|
279
|
-
reject(res.Certificate);
|
|
280
|
-
return true;
|
|
281
|
-
}
|
|
282
|
-
}, 10, "Waiting for certificate validation", 60000);
|
|
283
|
-
}
|
|
284
|
-
//
|
|
285
|
-
return cert;
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Create DNS entry
|
|
289
|
-
*
|
|
290
|
-
* @param domain to create
|
|
291
|
-
* @param type of DNS
|
|
292
|
-
* @param value the value of the record
|
|
293
|
-
* @param targetZone
|
|
294
|
-
*/
|
|
295
|
-
async createDNSEntry(domain, type, value, targetZone = undefined) {
|
|
296
|
-
this.logger.log("INFO", `Creating DNS entry ${domain} ${type} ${value}`);
|
|
297
|
-
const r53 = new Route53({
|
|
298
|
-
endpoint: this.resources.endpoints.S3
|
|
299
|
-
});
|
|
300
|
-
if (!domain.endsWith(".")) {
|
|
301
|
-
domain = domain + ".";
|
|
302
|
-
}
|
|
303
|
-
if (!targetZone) {
|
|
304
|
-
targetZone = await this.getZoneForDomainName(domain);
|
|
305
|
-
}
|
|
306
|
-
if (!targetZone) {
|
|
307
|
-
throw Error("Domain is not handled on AWS");
|
|
308
|
-
}
|
|
309
|
-
await r53.changeResourceRecordSets({
|
|
310
|
-
HostedZoneId: targetZone.Id,
|
|
311
|
-
ChangeBatch: {
|
|
312
|
-
Changes: [
|
|
313
|
-
{
|
|
314
|
-
Action: "UPSERT",
|
|
315
|
-
ResourceRecordSet: {
|
|
316
|
-
Name: domain,
|
|
317
|
-
ResourceRecords: [
|
|
318
|
-
{
|
|
319
|
-
Value: value
|
|
320
|
-
}
|
|
321
|
-
],
|
|
322
|
-
TTL: 360,
|
|
323
|
-
Type: type
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
],
|
|
327
|
-
Comment: "webda-automated-deploiement"
|
|
328
|
-
}
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
getARNPolicy(accountId, region) {
|
|
332
|
-
return [
|
|
333
|
-
{
|
|
334
|
-
Sid: "WebdaLog",
|
|
335
|
-
Effect: "Allow",
|
|
336
|
-
Action: ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"],
|
|
337
|
-
Resource: ["arn:aws:logs:" + region + ":" + accountId + ":*"]
|
|
338
|
-
}
|
|
339
|
-
];
|
|
340
|
-
}
|
|
341
|
-
/**
|
|
342
|
-
* Generate the `PolicyDocument`
|
|
343
|
-
*
|
|
344
|
-
* It will browse all services for a method `getARNPolicy`
|
|
345
|
-
* Allowing you to write some specific Service or Bean that
|
|
346
|
-
* requires specific AWS permissions
|
|
347
|
-
*/
|
|
348
|
-
async getPolicyDocument(additionalStatements = []) {
|
|
349
|
-
const me = await this.getAWSIdentity();
|
|
350
|
-
const services = this.manager.getWebda().getServices();
|
|
351
|
-
const statements = [];
|
|
352
|
-
// Build policy
|
|
353
|
-
for (const i in services) {
|
|
354
|
-
if ("getARNPolicy" in services[i]) {
|
|
355
|
-
// Update to match recuring policy - might need to split if policy too big
|
|
356
|
-
const res = services[i].getARNPolicy(me.Account, this.getRegion());
|
|
357
|
-
if (Array.isArray(res)) {
|
|
358
|
-
statements.push(...res);
|
|
359
|
-
}
|
|
360
|
-
else {
|
|
361
|
-
statements.push(res);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
statements.push(...this.getARNPolicy(me.Account, this.getRegion()));
|
|
366
|
-
const policyDocument = {
|
|
367
|
-
Version: "2012-10-17",
|
|
368
|
-
Statement: [...statements, ...additionalStatements]
|
|
369
|
-
};
|
|
370
|
-
// @ts-ignore
|
|
371
|
-
return IamPolicyOptimizer.default?.reducePolicyObject(policyDocument);
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Create a bucket if it does not exist
|
|
375
|
-
*
|
|
376
|
-
* @param bucket to create
|
|
377
|
-
*/
|
|
378
|
-
async createBucket(Bucket) {
|
|
379
|
-
const s3 = new S3({
|
|
380
|
-
endpoint: this.resources.endpoints.S3,
|
|
381
|
-
forcePathStyle: this.resources.endpoints.S3 !== undefined
|
|
382
|
-
});
|
|
383
|
-
try {
|
|
384
|
-
await s3.headBucket({
|
|
385
|
-
Bucket
|
|
386
|
-
});
|
|
387
|
-
}
|
|
388
|
-
catch (err) {
|
|
389
|
-
if (err.name === "Forbidden") {
|
|
390
|
-
this.logger.log("ERROR", "S3 bucket already exists in another account or you do not have permissions on it");
|
|
391
|
-
}
|
|
392
|
-
else if (err instanceof NotFound) {
|
|
393
|
-
this.logger.log("INFO", "\tCreating S3 Bucket", Bucket);
|
|
394
|
-
// Setup www permission on it
|
|
395
|
-
await s3.createBucket({
|
|
396
|
-
Bucket: Bucket
|
|
397
|
-
});
|
|
398
|
-
const Tags = this.getDefaultTags([]);
|
|
399
|
-
if (Tags.length) {
|
|
400
|
-
await s3.putBucketTagging({
|
|
401
|
-
Bucket,
|
|
402
|
-
Tagging: {
|
|
403
|
-
TagSet: Tags
|
|
404
|
-
}
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* Send a full folder (recursive) on bucket
|
|
412
|
-
*
|
|
413
|
-
* @param bucket to send data to
|
|
414
|
-
* @param folder path to local folder to send
|
|
415
|
-
* @param prefix prefix on the bucket
|
|
416
|
-
*/
|
|
417
|
-
async putFolderOnBucket(bucket, folder, prefix = "") {
|
|
418
|
-
const absFolder = path.resolve(folder);
|
|
419
|
-
const files = globSync(`${absFolder}/**/*`);
|
|
420
|
-
await this.putFilesOnBucket(bucket,
|
|
421
|
-
// Replace \ by / for Windows system
|
|
422
|
-
files.map(f => ({
|
|
423
|
-
key: `${prefix}${path.relative(absFolder, f).replace(/\\/g, "/")}`,
|
|
424
|
-
src: f
|
|
425
|
-
})));
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* Find the common prefix between two strings
|
|
429
|
-
*
|
|
430
|
-
* Example
|
|
431
|
-
* ```
|
|
432
|
-
* commonPrefix("/test/plop1", "/templates/") => "/te"
|
|
433
|
-
* ```
|
|
434
|
-
*
|
|
435
|
-
*
|
|
436
|
-
* @param str1 to compare
|
|
437
|
-
* @param str2 to compare
|
|
438
|
-
*/
|
|
439
|
-
commonPrefix(str1, str2) {
|
|
440
|
-
let res = "";
|
|
441
|
-
let i = 0;
|
|
442
|
-
while (i < str1.length && i < str2.length && str1[i] === str2[i]) {
|
|
443
|
-
res += str1[i];
|
|
444
|
-
i++;
|
|
445
|
-
}
|
|
446
|
-
return res;
|
|
447
|
-
}
|
|
448
|
-
/**
|
|
449
|
-
* Add files to a bucket
|
|
450
|
-
*
|
|
451
|
-
* It uses hash and ETag to avoid uploading files already present
|
|
452
|
-
*
|
|
453
|
-
*
|
|
454
|
-
* The files src can be either:
|
|
455
|
-
* - a string representing the local path
|
|
456
|
-
* - a Buffer with the dynamic content
|
|
457
|
-
*
|
|
458
|
-
* @param bucket to send bucket
|
|
459
|
-
* @param files to send
|
|
460
|
-
*/
|
|
461
|
-
async putFilesOnBucket(bucket, files) {
|
|
462
|
-
const s3 = new S3({
|
|
463
|
-
endpoint: this.resources.endpoints.S3,
|
|
464
|
-
forcePathStyle: this.resources.endpoints.S3 !== undefined
|
|
465
|
-
});
|
|
466
|
-
if (!files.length) {
|
|
467
|
-
return;
|
|
468
|
-
}
|
|
469
|
-
files.forEach(f => {
|
|
470
|
-
if (f.src === undefined) {
|
|
471
|
-
throw Error("Should have src and key defined");
|
|
472
|
-
}
|
|
473
|
-
else if (!f.key) {
|
|
474
|
-
f.key = path.relative(process.cwd(), f.src);
|
|
475
|
-
}
|
|
476
|
-
});
|
|
477
|
-
// Create the bucket
|
|
478
|
-
await this.createBucket(bucket);
|
|
479
|
-
// Retrieve current files to only upload the one we do not have
|
|
480
|
-
const currentFiles = {};
|
|
481
|
-
const Prefix = files.reduce((prev, cur) => this.commonPrefix(prev, cur.key), files[0].key);
|
|
482
|
-
const Params = {
|
|
483
|
-
Bucket: bucket,
|
|
484
|
-
Prefix,
|
|
485
|
-
MaxKeys: 1000,
|
|
486
|
-
ContinuationToken: undefined
|
|
487
|
-
};
|
|
488
|
-
do {
|
|
489
|
-
const res = await s3.listObjectsV2(Params);
|
|
490
|
-
res.Contents.forEach(obj => {
|
|
491
|
-
currentFiles[obj.Key] = obj;
|
|
492
|
-
});
|
|
493
|
-
Params.ContinuationToken = res.NextContinuationToken;
|
|
494
|
-
} while (Params.ContinuationToken);
|
|
495
|
-
// Should implement multithread here - cleaning too
|
|
496
|
-
const uuid = randomUUID();
|
|
497
|
-
let fullSize = 0;
|
|
498
|
-
files = files.filter(info => {
|
|
499
|
-
if (typeof info.src === "string") {
|
|
500
|
-
const s3obj = currentFiles[info.key];
|
|
501
|
-
const fd = fs.openSync(info.src, "r");
|
|
502
|
-
const stat = fs.fstatSync(fd);
|
|
503
|
-
if (s3obj && stat.size === s3obj.Size) {
|
|
504
|
-
const md5 = `"${this.hash(fs.readFileSync(info.src).toString(), "md5", "hex")}"`;
|
|
505
|
-
if (md5 === s3obj.ETag) {
|
|
506
|
-
this.logger.log("TRACE", "Skipping upload of", info.src, "file with same hash already on bucket");
|
|
507
|
-
return false;
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
fullSize += stat.size;
|
|
511
|
-
}
|
|
512
|
-
return true;
|
|
513
|
-
});
|
|
514
|
-
this.logger.logProgressStart(uuid, files.length, "Uploading to S3 bucket " + bucket);
|
|
515
|
-
await bluebird.map(files, async (info) => {
|
|
516
|
-
// Need to have mimetype to serve the content correctly
|
|
517
|
-
const mimetype = info.mimetype || mime.contentType(path.extname(info.key)) || "application/octet-stream";
|
|
518
|
-
// use of upload and get size length
|
|
519
|
-
await s3.putObject({
|
|
520
|
-
Bucket: bucket,
|
|
521
|
-
Body: typeof info.src === "string" ? fs.createReadStream(info.src) : info.src,
|
|
522
|
-
Key: info.key,
|
|
523
|
-
ContentType: mimetype,
|
|
524
|
-
Tagging: this.getDefaultTagsAsS3Tagging()
|
|
525
|
-
});
|
|
526
|
-
this.logger.logProgressIncrement(1, uuid);
|
|
527
|
-
this.logger.log("INFO", "Uploaded", typeof info.src === "string" ? info.src : "<dynamicContent>", "to", `s3://${bucket}/${info.key}`, "(" + mimetype + ")");
|
|
528
|
-
}, { concurrency: 5 });
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
__decorate([
|
|
532
|
-
Cache()
|
|
533
|
-
], AWSDeployer.prototype, "getAWSIdentity", null);
|
|
534
|
-
__decorate([
|
|
535
|
-
Cache()
|
|
536
|
-
], AWSDeployer.prototype, "getDefaultVpc", null);
|
|
537
|
-
__decorate([
|
|
538
|
-
Cache()
|
|
539
|
-
], AWSDeployer.prototype, "getZoneForDomainName", null);
|
|
540
|
-
__decorate([
|
|
541
|
-
Cache()
|
|
542
|
-
], AWSDeployer.prototype, "getPolicyDocument", null);
|
|
543
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deployers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as sinon from "sinon";
|
|
2
|
-
import { AWSDeployer } from "./index.js";
|
|
3
|
-
export interface Mockable {
|
|
4
|
-
mocks: {
|
|
5
|
-
[key: string]: sinon.SinonStub;
|
|
6
|
-
};
|
|
7
|
-
}
|
|
8
|
-
export declare function MockAWSDeployerMethods(service: AWSDeployer<any>, test: Mockable): void;
|
|
9
|
-
//# sourceMappingURL=index.spec.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../src/deployers/index.spec.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAwB,MAAM,SAAS,CAAC;AAW5D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC;CAC3C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,QAsB/E"}
|