aws-delivlib 13.6.2 → 13.7.0
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/cdk.out/{asset.98dba9b3d79739d40a37e0621754556a791eef3b1c96e913c6e8d5df3a379bd4 → asset.0ff875115bf3a3ba9f32946b1f2b9b153553ecba0e511c42ac11bef064968c40}/index.js +30 -30
- package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/__entrypoint__.js +119 -0
- package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/index.d.ts +1 -0
- package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/index.js +81 -0
- package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/_cloud-formation.js +0 -0
- package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/_exec.js +0 -0
- package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/_lambda.js +0 -0
- package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/_rmrf.js +0 -0
- package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/certificate-signing-request.js +18 -3
- package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/index.js +18 -3
- package/cdk.out/delivlib-test.assets.json +22 -8
- package/cdk.out/delivlib-test.template.json +237 -4
- package/cdk.out/manifest.json +129 -16
- package/cdk.out/tree.json +228 -2
- package/lib/code-signing/certificate-signing-request.d.ts +4 -1
- package/lib/code-signing/certificate-signing-request.js +11 -1
- package/lib/code-signing/certificate-signing-request.ts +17 -1
- package/lib/custom-resource-handlers/bin/certificate-signing-request/certificate-signing-request.js +18 -3
- package/lib/custom-resource-handlers/bin/certificate-signing-request/index.js +18 -3
- package/lib/custom-resource-handlers/src/certificate-signing-request.js +18 -3
- package/lib/custom-resource-handlers/src/certificate-signing-request.ts +19 -2
- package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
- package/lib/package-integrity/handler/validate.bundle.js +11 -11
- package/lib/pipeline.d.ts +1 -0
- package/lib/pipeline.js +7 -1
- package/lib/pipeline.ts +7 -0
- package/package.json +5 -4
|
@@ -2691,9 +2691,9 @@ var require_axios2 = __commonJS({
|
|
|
2691
2691
|
}
|
|
2692
2692
|
});
|
|
2693
2693
|
|
|
2694
|
-
// node_modules/uuid/dist/rng.js
|
|
2694
|
+
// node_modules/node-ical/node_modules/uuid/dist/rng.js
|
|
2695
2695
|
var require_rng = __commonJS({
|
|
2696
|
-
"node_modules/uuid/dist/rng.js"(exports) {
|
|
2696
|
+
"node_modules/node-ical/node_modules/uuid/dist/rng.js"(exports) {
|
|
2697
2697
|
"use strict";
|
|
2698
2698
|
Object.defineProperty(exports, "__esModule", {
|
|
2699
2699
|
value: true
|
|
@@ -2715,9 +2715,9 @@ var require_rng = __commonJS({
|
|
|
2715
2715
|
}
|
|
2716
2716
|
});
|
|
2717
2717
|
|
|
2718
|
-
// node_modules/uuid/dist/regex.js
|
|
2718
|
+
// node_modules/node-ical/node_modules/uuid/dist/regex.js
|
|
2719
2719
|
var require_regex = __commonJS({
|
|
2720
|
-
"node_modules/uuid/dist/regex.js"(exports) {
|
|
2720
|
+
"node_modules/node-ical/node_modules/uuid/dist/regex.js"(exports) {
|
|
2721
2721
|
"use strict";
|
|
2722
2722
|
Object.defineProperty(exports, "__esModule", {
|
|
2723
2723
|
value: true
|
|
@@ -2728,9 +2728,9 @@ var require_regex = __commonJS({
|
|
|
2728
2728
|
}
|
|
2729
2729
|
});
|
|
2730
2730
|
|
|
2731
|
-
// node_modules/uuid/dist/validate.js
|
|
2731
|
+
// node_modules/node-ical/node_modules/uuid/dist/validate.js
|
|
2732
2732
|
var require_validate = __commonJS({
|
|
2733
|
-
"node_modules/uuid/dist/validate.js"(exports) {
|
|
2733
|
+
"node_modules/node-ical/node_modules/uuid/dist/validate.js"(exports) {
|
|
2734
2734
|
"use strict";
|
|
2735
2735
|
Object.defineProperty(exports, "__esModule", {
|
|
2736
2736
|
value: true
|
|
@@ -2748,9 +2748,9 @@ var require_validate = __commonJS({
|
|
|
2748
2748
|
}
|
|
2749
2749
|
});
|
|
2750
2750
|
|
|
2751
|
-
// node_modules/uuid/dist/stringify.js
|
|
2751
|
+
// node_modules/node-ical/node_modules/uuid/dist/stringify.js
|
|
2752
2752
|
var require_stringify = __commonJS({
|
|
2753
|
-
"node_modules/uuid/dist/stringify.js"(exports) {
|
|
2753
|
+
"node_modules/node-ical/node_modules/uuid/dist/stringify.js"(exports) {
|
|
2754
2754
|
"use strict";
|
|
2755
2755
|
Object.defineProperty(exports, "__esModule", {
|
|
2756
2756
|
value: true
|
|
@@ -2776,9 +2776,9 @@ var require_stringify = __commonJS({
|
|
|
2776
2776
|
}
|
|
2777
2777
|
});
|
|
2778
2778
|
|
|
2779
|
-
// node_modules/uuid/dist/v1.js
|
|
2779
|
+
// node_modules/node-ical/node_modules/uuid/dist/v1.js
|
|
2780
2780
|
var require_v1 = __commonJS({
|
|
2781
|
-
"node_modules/uuid/dist/v1.js"(exports) {
|
|
2781
|
+
"node_modules/node-ical/node_modules/uuid/dist/v1.js"(exports) {
|
|
2782
2782
|
"use strict";
|
|
2783
2783
|
Object.defineProperty(exports, "__esModule", {
|
|
2784
2784
|
value: true
|
|
@@ -2846,9 +2846,9 @@ var require_v1 = __commonJS({
|
|
|
2846
2846
|
}
|
|
2847
2847
|
});
|
|
2848
2848
|
|
|
2849
|
-
// node_modules/uuid/dist/parse.js
|
|
2849
|
+
// node_modules/node-ical/node_modules/uuid/dist/parse.js
|
|
2850
2850
|
var require_parse = __commonJS({
|
|
2851
|
-
"node_modules/uuid/dist/parse.js"(exports) {
|
|
2851
|
+
"node_modules/node-ical/node_modules/uuid/dist/parse.js"(exports) {
|
|
2852
2852
|
"use strict";
|
|
2853
2853
|
Object.defineProperty(exports, "__esModule", {
|
|
2854
2854
|
value: true
|
|
@@ -2887,9 +2887,9 @@ var require_parse = __commonJS({
|
|
|
2887
2887
|
}
|
|
2888
2888
|
});
|
|
2889
2889
|
|
|
2890
|
-
// node_modules/uuid/dist/v35.js
|
|
2890
|
+
// node_modules/node-ical/node_modules/uuid/dist/v35.js
|
|
2891
2891
|
var require_v35 = __commonJS({
|
|
2892
|
-
"node_modules/uuid/dist/v35.js"(exports) {
|
|
2892
|
+
"node_modules/node-ical/node_modules/uuid/dist/v35.js"(exports) {
|
|
2893
2893
|
"use strict";
|
|
2894
2894
|
Object.defineProperty(exports, "__esModule", {
|
|
2895
2895
|
value: true
|
|
@@ -2950,9 +2950,9 @@ var require_v35 = __commonJS({
|
|
|
2950
2950
|
}
|
|
2951
2951
|
});
|
|
2952
2952
|
|
|
2953
|
-
// node_modules/uuid/dist/md5.js
|
|
2953
|
+
// node_modules/node-ical/node_modules/uuid/dist/md5.js
|
|
2954
2954
|
var require_md5 = __commonJS({
|
|
2955
|
-
"node_modules/uuid/dist/md5.js"(exports) {
|
|
2955
|
+
"node_modules/node-ical/node_modules/uuid/dist/md5.js"(exports) {
|
|
2956
2956
|
"use strict";
|
|
2957
2957
|
Object.defineProperty(exports, "__esModule", {
|
|
2958
2958
|
value: true
|
|
@@ -2975,9 +2975,9 @@ var require_md5 = __commonJS({
|
|
|
2975
2975
|
}
|
|
2976
2976
|
});
|
|
2977
2977
|
|
|
2978
|
-
// node_modules/uuid/dist/v3.js
|
|
2978
|
+
// node_modules/node-ical/node_modules/uuid/dist/v3.js
|
|
2979
2979
|
var require_v3 = __commonJS({
|
|
2980
|
-
"node_modules/uuid/dist/v3.js"(exports) {
|
|
2980
|
+
"node_modules/node-ical/node_modules/uuid/dist/v3.js"(exports) {
|
|
2981
2981
|
"use strict";
|
|
2982
2982
|
Object.defineProperty(exports, "__esModule", {
|
|
2983
2983
|
value: true
|
|
@@ -2994,9 +2994,9 @@ var require_v3 = __commonJS({
|
|
|
2994
2994
|
}
|
|
2995
2995
|
});
|
|
2996
2996
|
|
|
2997
|
-
// node_modules/uuid/dist/v4.js
|
|
2997
|
+
// node_modules/node-ical/node_modules/uuid/dist/v4.js
|
|
2998
2998
|
var require_v4 = __commonJS({
|
|
2999
|
-
"node_modules/uuid/dist/v4.js"(exports) {
|
|
2999
|
+
"node_modules/node-ical/node_modules/uuid/dist/v4.js"(exports) {
|
|
3000
3000
|
"use strict";
|
|
3001
3001
|
Object.defineProperty(exports, "__esModule", {
|
|
3002
3002
|
value: true
|
|
@@ -3026,9 +3026,9 @@ var require_v4 = __commonJS({
|
|
|
3026
3026
|
}
|
|
3027
3027
|
});
|
|
3028
3028
|
|
|
3029
|
-
// node_modules/uuid/dist/sha1.js
|
|
3029
|
+
// node_modules/node-ical/node_modules/uuid/dist/sha1.js
|
|
3030
3030
|
var require_sha1 = __commonJS({
|
|
3031
|
-
"node_modules/uuid/dist/sha1.js"(exports) {
|
|
3031
|
+
"node_modules/node-ical/node_modules/uuid/dist/sha1.js"(exports) {
|
|
3032
3032
|
"use strict";
|
|
3033
3033
|
Object.defineProperty(exports, "__esModule", {
|
|
3034
3034
|
value: true
|
|
@@ -3051,9 +3051,9 @@ var require_sha1 = __commonJS({
|
|
|
3051
3051
|
}
|
|
3052
3052
|
});
|
|
3053
3053
|
|
|
3054
|
-
// node_modules/uuid/dist/v5.js
|
|
3054
|
+
// node_modules/node-ical/node_modules/uuid/dist/v5.js
|
|
3055
3055
|
var require_v5 = __commonJS({
|
|
3056
|
-
"node_modules/uuid/dist/v5.js"(exports) {
|
|
3056
|
+
"node_modules/node-ical/node_modules/uuid/dist/v5.js"(exports) {
|
|
3057
3057
|
"use strict";
|
|
3058
3058
|
Object.defineProperty(exports, "__esModule", {
|
|
3059
3059
|
value: true
|
|
@@ -3070,9 +3070,9 @@ var require_v5 = __commonJS({
|
|
|
3070
3070
|
}
|
|
3071
3071
|
});
|
|
3072
3072
|
|
|
3073
|
-
// node_modules/uuid/dist/nil.js
|
|
3073
|
+
// node_modules/node-ical/node_modules/uuid/dist/nil.js
|
|
3074
3074
|
var require_nil = __commonJS({
|
|
3075
|
-
"node_modules/uuid/dist/nil.js"(exports) {
|
|
3075
|
+
"node_modules/node-ical/node_modules/uuid/dist/nil.js"(exports) {
|
|
3076
3076
|
"use strict";
|
|
3077
3077
|
Object.defineProperty(exports, "__esModule", {
|
|
3078
3078
|
value: true
|
|
@@ -3083,9 +3083,9 @@ var require_nil = __commonJS({
|
|
|
3083
3083
|
}
|
|
3084
3084
|
});
|
|
3085
3085
|
|
|
3086
|
-
// node_modules/uuid/dist/version.js
|
|
3086
|
+
// node_modules/node-ical/node_modules/uuid/dist/version.js
|
|
3087
3087
|
var require_version = __commonJS({
|
|
3088
|
-
"node_modules/uuid/dist/version.js"(exports) {
|
|
3088
|
+
"node_modules/node-ical/node_modules/uuid/dist/version.js"(exports) {
|
|
3089
3089
|
"use strict";
|
|
3090
3090
|
Object.defineProperty(exports, "__esModule", {
|
|
3091
3091
|
value: true
|
|
@@ -3106,9 +3106,9 @@ var require_version = __commonJS({
|
|
|
3106
3106
|
}
|
|
3107
3107
|
});
|
|
3108
3108
|
|
|
3109
|
-
// node_modules/uuid/dist/index.js
|
|
3109
|
+
// node_modules/node-ical/node_modules/uuid/dist/index.js
|
|
3110
3110
|
var require_dist = __commonJS({
|
|
3111
|
-
"node_modules/uuid/dist/index.js"(exports) {
|
|
3111
|
+
"node_modules/node-ical/node_modules/uuid/dist/index.js"(exports) {
|
|
3112
3112
|
"use strict";
|
|
3113
3113
|
Object.defineProperty(exports, "__esModule", {
|
|
3114
3114
|
value: true
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = exports.external = void 0;
|
|
4
|
+
const https = require("https");
|
|
5
|
+
const url = require("url");
|
|
6
|
+
// for unit tests
|
|
7
|
+
exports.external = {
|
|
8
|
+
sendHttpRequest: defaultSendHttpRequest,
|
|
9
|
+
log: defaultLog,
|
|
10
|
+
includeStackTraces: true,
|
|
11
|
+
userHandlerIndex: './index',
|
|
12
|
+
};
|
|
13
|
+
const CREATE_FAILED_PHYSICAL_ID_MARKER = 'AWSCDK::CustomResourceProviderFramework::CREATE_FAILED';
|
|
14
|
+
const MISSING_PHYSICAL_ID_MARKER = 'AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID';
|
|
15
|
+
async function handler(event, context) {
|
|
16
|
+
exports.external.log(JSON.stringify(event, undefined, 2));
|
|
17
|
+
// ignore DELETE event when the physical resource ID is the marker that
|
|
18
|
+
// indicates that this DELETE is a subsequent DELETE to a failed CREATE
|
|
19
|
+
// operation.
|
|
20
|
+
if (event.RequestType === 'Delete' && event.PhysicalResourceId === CREATE_FAILED_PHYSICAL_ID_MARKER) {
|
|
21
|
+
exports.external.log('ignoring DELETE event caused by a failed CREATE event');
|
|
22
|
+
await submitResponse('SUCCESS', event);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
// invoke the user handler. this is intentionally inside the try-catch to
|
|
27
|
+
// ensure that if there is an error it's reported as a failure to
|
|
28
|
+
// cloudformation (otherwise cfn waits).
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
30
|
+
const userHandler = require(exports.external.userHandlerIndex).handler;
|
|
31
|
+
const result = await userHandler(event, context);
|
|
32
|
+
// validate user response and create the combined event
|
|
33
|
+
const responseEvent = renderResponse(event, result);
|
|
34
|
+
// submit to cfn as success
|
|
35
|
+
await submitResponse('SUCCESS', responseEvent);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
const resp = {
|
|
39
|
+
...event,
|
|
40
|
+
Reason: exports.external.includeStackTraces ? e.stack : e.message,
|
|
41
|
+
};
|
|
42
|
+
if (!resp.PhysicalResourceId) {
|
|
43
|
+
// special case: if CREATE fails, which usually implies, we usually don't
|
|
44
|
+
// have a physical resource id. in this case, the subsequent DELETE
|
|
45
|
+
// operation does not have any meaning, and will likely fail as well. to
|
|
46
|
+
// address this, we use a marker so the provider framework can simply
|
|
47
|
+
// ignore the subsequent DELETE.
|
|
48
|
+
if (event.RequestType === 'Create') {
|
|
49
|
+
exports.external.log('CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored');
|
|
50
|
+
resp.PhysicalResourceId = CREATE_FAILED_PHYSICAL_ID_MARKER;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// otherwise, if PhysicalResourceId is not specified, something is
|
|
54
|
+
// terribly wrong because all other events should have an ID.
|
|
55
|
+
exports.external.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(event)}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// this is an actual error, fail the activity altogether and exist.
|
|
59
|
+
await submitResponse('FAILED', resp);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.handler = handler;
|
|
63
|
+
function renderResponse(cfnRequest, handlerResponse = {}) {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
// if physical ID is not returned, we have some defaults for you based
|
|
66
|
+
// on the request type.
|
|
67
|
+
const physicalResourceId = (_b = (_a = handlerResponse.PhysicalResourceId) !== null && _a !== void 0 ? _a : cfnRequest.PhysicalResourceId) !== null && _b !== void 0 ? _b : cfnRequest.RequestId;
|
|
68
|
+
// if we are in DELETE and physical ID was changed, it's an error.
|
|
69
|
+
if (cfnRequest.RequestType === 'Delete' && physicalResourceId !== cfnRequest.PhysicalResourceId) {
|
|
70
|
+
throw new Error(`DELETE: cannot change the physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${handlerResponse.PhysicalResourceId}" during deletion`);
|
|
71
|
+
}
|
|
72
|
+
// merge request event and result event (result prevails).
|
|
73
|
+
return {
|
|
74
|
+
...cfnRequest,
|
|
75
|
+
...handlerResponse,
|
|
76
|
+
PhysicalResourceId: physicalResourceId,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
async function submitResponse(status, event) {
|
|
80
|
+
var _a;
|
|
81
|
+
const json = {
|
|
82
|
+
Status: status,
|
|
83
|
+
Reason: (_a = event.Reason) !== null && _a !== void 0 ? _a : status,
|
|
84
|
+
StackId: event.StackId,
|
|
85
|
+
RequestId: event.RequestId,
|
|
86
|
+
PhysicalResourceId: event.PhysicalResourceId || MISSING_PHYSICAL_ID_MARKER,
|
|
87
|
+
LogicalResourceId: event.LogicalResourceId,
|
|
88
|
+
NoEcho: event.NoEcho,
|
|
89
|
+
Data: event.Data,
|
|
90
|
+
};
|
|
91
|
+
exports.external.log('submit response to cloudformation', json);
|
|
92
|
+
const responseBody = JSON.stringify(json);
|
|
93
|
+
const parsedUrl = url.parse(event.ResponseURL);
|
|
94
|
+
const req = {
|
|
95
|
+
hostname: parsedUrl.hostname,
|
|
96
|
+
path: parsedUrl.path,
|
|
97
|
+
method: 'PUT',
|
|
98
|
+
headers: { 'content-type': '', 'content-length': responseBody.length },
|
|
99
|
+
};
|
|
100
|
+
await exports.external.sendHttpRequest(req, responseBody);
|
|
101
|
+
}
|
|
102
|
+
async function defaultSendHttpRequest(options, responseBody) {
|
|
103
|
+
return new Promise((resolve, reject) => {
|
|
104
|
+
try {
|
|
105
|
+
const request = https.request(options, _ => resolve());
|
|
106
|
+
request.on('error', reject);
|
|
107
|
+
request.write(responseBody);
|
|
108
|
+
request.end();
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
reject(e);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function defaultLog(fmt, ...params) {
|
|
116
|
+
// eslint-disable-next-line no-console
|
|
117
|
+
console.log(fmt, ...params);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZWpzLWVudHJ5cG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJub2RlanMtZW50cnlwb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsMkJBQTJCO0FBRTNCLGlCQUFpQjtBQUNKLFFBQUEsUUFBUSxHQUFHO0lBQ3RCLGVBQWUsRUFBRSxzQkFBc0I7SUFDdkMsR0FBRyxFQUFFLFVBQVU7SUFDZixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLGdCQUFnQixFQUFFLFNBQVM7Q0FDNUIsQ0FBQztBQUVGLE1BQU0sZ0NBQWdDLEdBQUcsd0RBQXdELENBQUM7QUFDbEcsTUFBTSwwQkFBMEIsR0FBRyw4REFBOEQsQ0FBQztBQVczRixLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWtELEVBQUUsT0FBMEI7SUFDMUcsZ0JBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbEQsdUVBQXVFO0lBQ3ZFLHVFQUF1RTtJQUN2RSxhQUFhO0lBQ2IsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEtBQUssZ0NBQWdDLEVBQUU7UUFDbkcsZ0JBQVEsQ0FBQyxHQUFHLENBQUMsdURBQXVELENBQUMsQ0FBQztRQUN0RSxNQUFNLGNBQWMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsT0FBTztLQUNSO0lBRUQsSUFBSTtRQUNGLHlFQUF5RTtRQUN6RSxpRUFBaUU7UUFDakUsd0NBQXdDO1FBQ3hDLGlFQUFpRTtRQUNqRSxNQUFNLFdBQVcsR0FBWSxPQUFPLENBQUMsZ0JBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakQsdURBQXVEO1FB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QUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFO0tBQ3ZFLENBQUM7SUFFRixNQUFNLGdCQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsS0FBSyxVQUFVLHNCQUFzQixDQUFDLE9BQTZCLEVBQUUsWUFBb0I7SUFDdkYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxJQUFJO1lBQ0YsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsR0FBVyxFQUFFLEdBQUcsTUFBYTtJQUMvQyxzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0ICogYXMgdXJsIGZyb20gJ3VybCc7XG5cbi8vIGZvciB1bml0IHRlc3RzXG5leHBvcnQgY29uc3QgZXh0ZXJuYWwgPSB7XG4gIHNlbmRIdHRwUmVxdWVzdDogZGVmYXVsdFNlbmRIdHRwUmVxdWVzdCxcbiAgbG9nOiBkZWZhdWx0TG9nLFxuICBpbmNsdWRlU3RhY2tUcmFjZXM6IHRydWUsXG4gIHVzZXJIYW5kbGVySW5kZXg6ICcuL2luZGV4Jyxcbn07XG5cbmNvbnN0IENSRUFURV9GQUlMRURfUEhZU0lDQUxfSURfTUFSS0VSID0gJ0FXU0NESzo6Q3VzdG9tUmVzb3VyY2VQcm92aWRlckZyYW1ld29yazo6Q1JFQVRFX0ZBSUxFRCc7XG5jb25zdCBNSVNTSU5HX1BIWVNJQ0FMX0lEX01BUktFUiA9ICdBV1NDREs6OkN1c3RvbVJlc291cmNlUHJvdmlkZXJGcmFtZXdvcms6Ok1JU1NJTkdfUEhZU0lDQUxfSUQnO1xuXG5leHBvcnQgdHlwZSBSZXNwb25zZSA9IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQgJiBIYW5kbGVyUmVzcG9uc2U7XG5leHBvcnQgdHlwZSBIYW5kbGVyID0gKGV2ZW50OiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50LCBjb250ZXh0OiBBV1NMYW1iZGEuQ29udGV4dCkgPT4gUHJvbWlzZTxIYW5kbGVyUmVzcG9uc2UgfCB2b2lkPjtcbmV4cG9ydCB0eXBlIEhhbmRsZXJSZXNwb25zZSA9IHVuZGVmaW5lZCB8IHtcbiAgRGF0YT86IGFueTtcbiAgUGh5c2ljYWxSZXNvdXJjZUlkPzogc3RyaW5nO1xuICBSZWFzb24/OiBzdHJpbmc7XG4gIE5vRWNobz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCwgY29udGV4dDogQVdTTGFtYmRhLkNvbnRleHQpIHtcbiAgZXh0ZXJuYWwubG9nKEpTT04uc3RyaW5naWZ5KGV2ZW50LCB1bmRlZmluZWQsIDIpKTtcblxuICAvLyBpZ25vcmUgREVMRVRFIGV2ZW50IHdoZW4gdGhlIHBoeXNpY2FsIHJlc291cmNlIElEIGlzIHRoZSBtYXJrZXIgdGhhdFxuICAvLyBpbmRpY2F0ZXMgdGhhdCB0aGlzIERFTEVURSBpcyBhIHN1YnNlcXVlbnQgREVMRVRFIHRvIGEgZmFpbGVkIENSRUFURVxuICAvLyBvcGVyYXRpb24uXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ0RlbGV0ZScgJiYgZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkID09PSBDUkVBVEVfRkFJTEVEX1BIWVNJQ0FMX0lEX01BUktFUikge1xuICAgIGV4dGVybmFsLmxvZygnaWdub3JpbmcgREVMRVRFIGV2ZW50IGNhdXNlZCBieSBhIGZhaWxlZCBDUkVBVEUgZXZlbnQnKTtcbiAgICBhd2FpdCBzdWJtaXRSZXNwb25zZSgnU1VDQ0VTUycsIGV2ZW50KTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIC8vIGludm9rZSB0aGUgdXNlciBoYW5kbGVyLiB0aGlzIGlzIGludGVudGlvbmFsbHkgaW5zaWRlIHRoZSB0cnktY2F0Y2ggdG9cbiAgICAvLyBlbnN1cmUgdGhhdCBpZiB0aGVyZSBpcyBhbiBlcnJvciBpdCdzIHJlcG9ydGVkIGFzIGEgZmFpbHVyZSB0b1xuICAgIC8vIGNsb3VkZm9ybWF0aW9uIChvdGhlcndpc2UgY2ZuIHdhaXRzKS5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgIGNvbnN0IHVzZXJIYW5kbGVyOiBIYW5kbGVyID0gcmVxdWlyZShleHRlcm5hbC51c2VySGFuZGxlckluZGV4KS5oYW5kbGVyO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVzZXJIYW5kbGVyKGV2ZW50LCBjb250ZXh0KTtcblxuICAgIC8vIHZhbGlkYXRlIHVzZXIgcmVzcG9uc2UgYW5kIGNyZWF0ZSB0aGUgY29tYmluZWQgZXZlbnRcbiAgICBjb25zdCByZXNwb25zZUV2ZW50ID0gcmVuZGVyUmVzcG9uc2UoZXZlbnQsIHJlc3VsdCk7XG5cbiAgICAvLyBzdWJtaXQgdG8gY2ZuIGFzIHN1Y2Nlc3NcbiAgICBhd2FpdCBzdWJtaXRSZXNwb25zZSgnU1VDQ0VTUycsIHJlc3BvbnNlRXZlbnQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc3QgcmVzcDogUmVzcG9uc2UgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIFJlYXNvbjogZXh0ZXJuYWwuaW5jbHVkZVN0YWNrVHJhY2VzID8gZS5zdGFjayA6IGUubWVzc2FnZSxcbiAgICB9O1xuXG4gICAgaWYgKCFyZXNwLlBoeXNpY2FsUmVzb3VyY2VJZCkge1xuICAgICAgLy8gc3BlY2lhbCBjYXNlOiBpZiBDUkVBVEUgZmFpbHMsIHdoaWNoIHVzdWFsbHkgaW1wbGllcywgd2UgdXN1YWxseSBkb24ndFxuICAgICAgLy8gaGF2ZSBhIHBoeXNpY2FsIHJlc291cmNlIGlkLiBpbiB0aGlzIGNhc2UsIHRoZSBzdWJzZXF1ZW50IERFTEVURVxuICAgICAgLy8gb3BlcmF0aW9uIGRvZXMgbm90IGhhdmUgYW55IG1lYW5pbmcsIGFuZCB3aWxsIGxpa2VseSBmYWlsIGFzIHdlbGwuIHRvXG4gICAgICAvLyBhZGRyZXNzIHRoaXMsIHdlIHVzZSBhIG1hcmtlciBzbyB0aGUgcHJvdmlkZXIgZnJhbWV3b3JrIGNhbiBzaW1wbHlcbiAgICAgIC8vIGlnbm9yZSB0aGUgc3Vic2VxdWVudCBERUxFVEUuXG4gICAgICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdDcmVhdGUnKSB7XG4gICAgICAgIGV4dGVybmFsLmxvZygnQ1JFQVRFIGZhaWxlZCwgcmVzcG9uZGluZyB3aXRoIGEgbWFya2VyIHBoeXNpY2FsIHJlc291cmNlIGlkIHNvIHRoYXQgdGhlIHN1YnNlcXVlbnQgREVMRVRFIHdpbGwgYmUgaWdub3JlZCcpO1xuICAgICAgICByZXNwLlBoeXNpY2FsUmVzb3VyY2VJZCA9IENSRUFURV9GQUlMRURfUEhZU0lDQUxfSURfTUFSS0VSO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBpZiBQaHlzaWNhbFJlc291cmNlSWQgaXMgbm90IHNwZWNpZmllZCwgc29tZXRoaW5nIGlzXG4gICAgICAgIC8vIHRlcnJpYmx5IHdyb25nIGJlY2F1c2UgYWxsIG90aGVyIGV2ZW50cyBzaG91bGQgaGF2ZSBhbiBJRC5cbiAgICAgICAgZXh0ZXJuYWwubG9nKGBFUlJPUjogTWFsZm9ybWVkIGV2ZW50LiBcIlBoeXNpY2FsUmVzb3VyY2VJZFwiIGlzIHJlcXVpcmVkOiAke0pTT04uc3RyaW5naWZ5KGV2ZW50KX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aGlzIGlzIGFuIGFjdHVhbCBlcnJvciwgZmFpbCB0aGUgYWN0aXZpdHkgYWx0b2dldGhlciBhbmQgZXhpc3QuXG4gICAgYXdhaXQgc3VibWl0UmVzcG9uc2UoJ0ZBSUxFRCcsIHJlc3ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlclJlc3BvbnNlKFxuICBjZm5SZXF1ZXN0OiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZUV2ZW50ICYgeyBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmcgfSxcbiAgaGFuZGxlclJlc3BvbnNlOiB2b2lkIHwgSGFuZGxlclJlc3BvbnNlID0geyB9KTogUmVzcG9uc2Uge1xuXG4gIC8vIGlmIHBoeXNpY2FsIElEIGlzIG5vdCByZXR1cm5lZCwgd2UgaGF2ZSBzb21lIGRlZmF1bHRzIGZvciB5b3UgYmFzZWRcbiAgLy8gb24gdGhlIHJlcXVlc3QgdHlwZS5cbiAgY29uc3QgcGh5c2ljYWxSZXNvdXJjZUlkID0gaGFuZGxlclJlc3BvbnNlLlBoeXNpY2FsUmVzb3VyY2VJZCA/PyBjZm5SZXF1ZXN0LlBoeXNpY2FsUmVzb3VyY2VJZCA/PyBjZm5SZXF1ZXN0LlJlcXVlc3RJZDtcblxuICAvLyBpZiB3ZSBhcmUgaW4gREVMRVRFIGFuZCBwaHlzaWNhbCBJRCB3YXMgY2hhbmdlZCwgaXQncyBhbiBlcnJvci5cbiAgaWYgKGNmblJlcXVlc3QuUmVxdWVzdFR5cGUgPT09ICdEZWxldGUnICYmIHBoeXNpY2FsUmVzb3VyY2VJZCAhPT0gY2ZuUmVxdWVzdC5QaHlzaWNhbFJlc291cmNlSWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERFTEVURTogY2Fubm90IGNoYW5nZSB0aGUgcGh5c2ljYWwgcmVzb3VyY2UgSUQgZnJvbSBcIiR7Y2ZuUmVxdWVzdC5QaHlzaWNhbFJlc291cmNlSWR9XCIgdG8gXCIke2hhbmRsZXJSZXNwb25zZS5QaHlzaWNhbFJlc291cmNlSWR9XCIgZHVyaW5nIGRlbGV0aW9uYCk7XG4gIH1cblxuICAvLyBtZXJnZSByZXF1ZXN0IGV2ZW50IGFuZCByZXN1bHQgZXZlbnQgKHJlc3VsdCBwcmV2YWlscykuXG4gIHJldHVybiB7XG4gICAgLi4uY2ZuUmVxdWVzdCxcbiAgICAuLi5oYW5kbGVyUmVzcG9uc2UsXG4gICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBwaHlzaWNhbFJlc291cmNlSWQsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN1Ym1pdFJlc3BvbnNlKHN0YXR1czogJ1NVQ0NFU1MnIHwgJ0ZBSUxFRCcsIGV2ZW50OiBSZXNwb25zZSkge1xuICBjb25zdCBqc29uOiBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZVJlc3BvbnNlID0ge1xuICAgIFN0YXR1czogc3RhdHVzLFxuICAgIFJlYXNvbjogZXZlbnQuUmVhc29uID8/IHN0YXR1cyxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkIHx8IE1JU1NJTkdfUEhZU0lDQUxfSURfTUFSS0VSLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGV2ZW50Lk5vRWNobyxcbiAgICBEYXRhOiBldmVudC5EYXRhLFxuICB9O1xuXG4gIGV4dGVybmFsLmxvZygnc3VibWl0IHJlc3BvbnNlIHRvIGNsb3VkZm9ybWF0aW9uJywganNvbik7XG5cbiAgY29uc3QgcmVzcG9uc2VCb2R5ID0gSlNPTi5zdHJpbmdpZnkoanNvbik7XG4gIGNvbnN0IHBhcnNlZFVybCA9IHVybC5wYXJzZShldmVudC5SZXNwb25zZVVSTCk7XG4gIGNvbnN0IHJlcSA9IHtcbiAgICBob3N0bmFtZTogcGFyc2VkVXJsLmhvc3RuYW1lLFxuICAgIHBhdGg6IHBhcnNlZFVybC5wYXRoLFxuICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgaGVhZGVyczogeyAnY29udGVudC10eXBlJzogJycsICdjb250ZW50LWxlbmd0aCc6IHJlc3BvbnNlQm9keS5sZW5ndGggfSxcbiAgfTtcblxuICBhd2FpdCBleHRlcm5hbC5zZW5kSHR0cFJlcXVlc3QocmVxLCByZXNwb25zZUJvZHkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWZhdWx0U2VuZEh0dHBSZXF1ZXN0KG9wdGlvbnM6IGh0dHBzLlJlcXVlc3RPcHRpb25zLCByZXNwb25zZUJvZHk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gaHR0cHMucmVxdWVzdChvcHRpb25zLCBfID0+IHJlc29sdmUoKSk7XG4gICAgICByZXF1ZXN0Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICByZXF1ZXN0LndyaXRlKHJlc3BvbnNlQm9keSk7XG4gICAgICByZXF1ZXN0LmVuZCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0TG9nKGZtdDogc3RyaW5nLCAuLi5wYXJhbXM6IGFueVtdKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKGZtdCwgLi4ucGFyYW1zKTtcbn1cbiJdfQ==
|
package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function handler(event: AWSLambda.CloudFormationCustomResourceEvent): Promise<void>;
|
package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/index.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
5
|
+
const aws_sdk_1 = require("aws-sdk");
|
|
6
|
+
const AUTO_DELETE_OBJECTS_TAG = 'aws-cdk:auto-delete-objects';
|
|
7
|
+
const s3 = new aws_sdk_1.S3();
|
|
8
|
+
async function handler(event) {
|
|
9
|
+
var _a;
|
|
10
|
+
switch (event.RequestType) {
|
|
11
|
+
case 'Create':
|
|
12
|
+
return;
|
|
13
|
+
case 'Update':
|
|
14
|
+
return onUpdate(event);
|
|
15
|
+
case 'Delete':
|
|
16
|
+
return onDelete((_a = event.ResourceProperties) === null || _a === void 0 ? void 0 : _a.BucketName);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.handler = handler;
|
|
20
|
+
async function onUpdate(event) {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
const updateEvent = event;
|
|
23
|
+
const oldBucketName = (_a = updateEvent.OldResourceProperties) === null || _a === void 0 ? void 0 : _a.BucketName;
|
|
24
|
+
const newBucketName = (_b = updateEvent.ResourceProperties) === null || _b === void 0 ? void 0 : _b.BucketName;
|
|
25
|
+
const bucketNameHasChanged = newBucketName != null && oldBucketName != null && newBucketName !== oldBucketName;
|
|
26
|
+
/* If the name of the bucket has changed, CloudFormation will try to delete the bucket
|
|
27
|
+
and create a new one with the new name. So we have to delete the contents of the
|
|
28
|
+
bucket so that this operation does not fail. */
|
|
29
|
+
if (bucketNameHasChanged) {
|
|
30
|
+
return onDelete(oldBucketName);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Recursively delete all items in the bucket
|
|
35
|
+
*
|
|
36
|
+
* @param bucketName the bucket name
|
|
37
|
+
*/
|
|
38
|
+
async function emptyBucket(bucketName) {
|
|
39
|
+
var _a, _b;
|
|
40
|
+
const listedObjects = await s3.listObjectVersions({ Bucket: bucketName }).promise();
|
|
41
|
+
const contents = [...(_a = listedObjects.Versions) !== null && _a !== void 0 ? _a : [], ...(_b = listedObjects.DeleteMarkers) !== null && _b !== void 0 ? _b : []];
|
|
42
|
+
if (contents.length === 0) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const records = contents.map((record) => ({ Key: record.Key, VersionId: record.VersionId }));
|
|
46
|
+
await s3.deleteObjects({ Bucket: bucketName, Delete: { Objects: records } }).promise();
|
|
47
|
+
if (listedObjects === null || listedObjects === void 0 ? void 0 : listedObjects.IsTruncated) {
|
|
48
|
+
await emptyBucket(bucketName);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function onDelete(bucketName) {
|
|
52
|
+
if (!bucketName) {
|
|
53
|
+
throw new Error('No BucketName was provided.');
|
|
54
|
+
}
|
|
55
|
+
if (!await isBucketTaggedForDeletion(bucketName)) {
|
|
56
|
+
process.stdout.write(`Bucket does not have '${AUTO_DELETE_OBJECTS_TAG}' tag, skipping cleaning.\n`);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
await emptyBucket(bucketName);
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
if (e.code !== 'NoSuchBucket') {
|
|
64
|
+
throw e;
|
|
65
|
+
}
|
|
66
|
+
// Bucket doesn't exist. Ignoring
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The bucket will only be tagged for deletion if it's being deleted in the same
|
|
71
|
+
* deployment as this Custom Resource.
|
|
72
|
+
*
|
|
73
|
+
* If the Custom Resource is every deleted before the bucket, it must be because
|
|
74
|
+
* `autoDeleteObjects` has been switched to false, in which case the tag would have
|
|
75
|
+
* been removed before we get to this Delete event.
|
|
76
|
+
*/
|
|
77
|
+
async function isBucketTaggedForDeletion(bucketName) {
|
|
78
|
+
const response = await s3.getBucketTagging({ Bucket: bucketName }).promise();
|
|
79
|
+
return response.TagSet.some(tag => tag.Key === AUTO_DELETE_OBJECTS_TAG && tag.Value === 'true');
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2REFBNkQ7QUFDN0QscUNBQTZCO0FBRTdCLE1BQU0sdUJBQXVCLEdBQUcsNkJBQTZCLENBQUM7QUFFOUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxZQUFFLEVBQUUsQ0FBQztBQUViLEtBQUssVUFBVSxPQUFPLENBQUMsS0FBa0Q7O0lBQzlFLFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRTtRQUN6QixLQUFLLFFBQVE7WUFDWCxPQUFPO1FBQ1QsS0FBSyxRQUFRO1lBQ1gsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxRQUFRLE9BQUMsS0FBSyxDQUFDLGtCQUFrQiwwQ0FBRSxVQUFVLENBQUMsQ0FBQztLQUN6RDtBQUNILENBQUM7QUFURCwwQkFTQztBQUVELEtBQUssVUFBVSxRQUFRLENBQUMsS0FBa0Q7O0lBQ3hFLE1BQU0sV0FBVyxHQUFHLEtBQTBELENBQUM7SUFDL0UsTUFBTSxhQUFhLFNBQUcsV0FBVyxDQUFDLHFCQUFxQiwwQ0FBRSxVQUFVLENBQUM7SUFDcEUsTUFBTSxhQUFhLFNBQUcsV0FBVyxDQUFDLGtCQUFrQiwwQ0FBRSxVQUFVLENBQUM7SUFDakUsTUFBTSxvQkFBb0IsR0FBRyxhQUFhLElBQUksSUFBSSxJQUFJLGFBQWEsSUFBSSxJQUFJLElBQUksYUFBYSxLQUFLLGFBQWEsQ0FBQztJQUUvRzs7c0RBRWtEO0lBQ2xELElBQUksb0JBQW9CLEVBQUU7UUFDeEIsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDaEM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILEtBQUssVUFBVSxXQUFXLENBQUMsVUFBa0I7O0lBQzNDLE1BQU0sYUFBYSxHQUFHLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxTQUFHLGFBQWEsQ0FBQyxRQUFRLG1DQUFJLEVBQUUsRUFBRSxTQUFHLGFBQWEsQ0FBQyxhQUFhLG1DQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDekIsT0FBTztLQUNSO0lBRUQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUV2RixJQUFJLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxXQUFXLEVBQUU7UUFDOUIsTUFBTSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDL0I7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLFFBQVEsQ0FBQyxVQUFtQjtJQUN6QyxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ2hEO0lBQ0QsSUFBSSxDQUFDLE1BQU0seUJBQXlCLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDaEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLHVCQUF1Qiw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3BHLE9BQU87S0FDUjtJQUNELElBQUk7UUFDRixNQUFNLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMvQjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtZQUM3QixNQUFNLENBQUMsQ0FBQztTQUNUO1FBQ0QsaUNBQWlDO0tBQ2xDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxLQUFLLFVBQVUseUJBQXlCLENBQUMsVUFBa0I7SUFDekQsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3RSxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyx1QkFBdUIsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0FBQ2xHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBTMyB9IGZyb20gJ2F3cy1zZGsnO1xuXG5jb25zdCBBVVRPX0RFTEVURV9PQkpFQ1RTX1RBRyA9ICdhd3MtY2RrOmF1dG8tZGVsZXRlLW9iamVjdHMnO1xuXG5jb25zdCBzMyA9IG5ldyBTMygpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLkNsb3VkRm9ybWF0aW9uQ3VzdG9tUmVzb3VyY2VFdmVudCkge1xuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgIHJldHVybjtcbiAgICBjYXNlICdVcGRhdGUnOlxuICAgICAgcmV0dXJuIG9uVXBkYXRlKGV2ZW50KTtcbiAgICBjYXNlICdEZWxldGUnOlxuICAgICAgcmV0dXJuIG9uRGVsZXRlKGV2ZW50LlJlc291cmNlUHJvcGVydGllcz8uQnVja2V0TmFtZSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gb25VcGRhdGUoZXZlbnQ6IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQpIHtcbiAgY29uc3QgdXBkYXRlRXZlbnQgPSBldmVudCBhcyBBV1NMYW1iZGEuQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZVVwZGF0ZUV2ZW50O1xuICBjb25zdCBvbGRCdWNrZXROYW1lID0gdXBkYXRlRXZlbnQuT2xkUmVzb3VyY2VQcm9wZXJ0aWVzPy5CdWNrZXROYW1lO1xuICBjb25zdCBuZXdCdWNrZXROYW1lID0gdXBkYXRlRXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzPy5CdWNrZXROYW1lO1xuICBjb25zdCBidWNrZXROYW1lSGFzQ2hhbmdlZCA9IG5ld0J1Y2tldE5hbWUgIT0gbnVsbCAmJiBvbGRCdWNrZXROYW1lICE9IG51bGwgJiYgbmV3QnVja2V0TmFtZSAhPT0gb2xkQnVja2V0TmFtZTtcblxuICAvKiBJZiB0aGUgbmFtZSBvZiB0aGUgYnVja2V0IGhhcyBjaGFuZ2VkLCBDbG91ZEZvcm1hdGlvbiB3aWxsIHRyeSB0byBkZWxldGUgdGhlIGJ1Y2tldFxuICAgICBhbmQgY3JlYXRlIGEgbmV3IG9uZSB3aXRoIHRoZSBuZXcgbmFtZS4gU28gd2UgaGF2ZSB0byBkZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZVxuICAgICBidWNrZXQgc28gdGhhdCB0aGlzIG9wZXJhdGlvbiBkb2VzIG5vdCBmYWlsLiAqL1xuICBpZiAoYnVja2V0TmFtZUhhc0NoYW5nZWQpIHtcbiAgICByZXR1cm4gb25EZWxldGUob2xkQnVja2V0TmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBkZWxldGUgYWxsIGl0ZW1zIGluIHRoZSBidWNrZXRcbiAqXG4gKiBAcGFyYW0gYnVja2V0TmFtZSB0aGUgYnVja2V0IG5hbWVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZW1wdHlCdWNrZXQoYnVja2V0TmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGxpc3RlZE9iamVjdHMgPSBhd2FpdCBzMy5saXN0T2JqZWN0VmVyc2lvbnMoeyBCdWNrZXQ6IGJ1Y2tldE5hbWUgfSkucHJvbWlzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IFsuLi5saXN0ZWRPYmplY3RzLlZlcnNpb25zID8/IFtdLCAuLi5saXN0ZWRPYmplY3RzLkRlbGV0ZU1hcmtlcnMgPz8gW11dO1xuICBpZiAoY29udGVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVjb3JkcyA9IGNvbnRlbnRzLm1hcCgocmVjb3JkOiBhbnkpID0+ICh7IEtleTogcmVjb3JkLktleSwgVmVyc2lvbklkOiByZWNvcmQuVmVyc2lvbklkIH0pKTtcbiAgYXdhaXQgczMuZGVsZXRlT2JqZWN0cyh7IEJ1Y2tldDogYnVja2V0TmFtZSwgRGVsZXRlOiB7IE9iamVjdHM6IHJlY29yZHMgfSB9KS5wcm9taXNlKCk7XG5cbiAgaWYgKGxpc3RlZE9iamVjdHM/LklzVHJ1bmNhdGVkKSB7XG4gICAgYXdhaXQgZW1wdHlCdWNrZXQoYnVja2V0TmFtZSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gb25EZWxldGUoYnVja2V0TmFtZT86IHN0cmluZykge1xuICBpZiAoIWJ1Y2tldE5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIEJ1Y2tldE5hbWUgd2FzIHByb3ZpZGVkLicpO1xuICB9XG4gIGlmICghYXdhaXQgaXNCdWNrZXRUYWdnZWRGb3JEZWxldGlvbihidWNrZXROYW1lKSkge1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBCdWNrZXQgZG9lcyBub3QgaGF2ZSAnJHtBVVRPX0RFTEVURV9PQkpFQ1RTX1RBR30nIHRhZywgc2tpcHBpbmcgY2xlYW5pbmcuXFxuYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgZW1wdHlCdWNrZXQoYnVja2V0TmFtZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZS5jb2RlICE9PSAnTm9TdWNoQnVja2V0Jykge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgLy8gQnVja2V0IGRvZXNuJ3QgZXhpc3QuIElnbm9yaW5nXG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgYnVja2V0IHdpbGwgb25seSBiZSB0YWdnZWQgZm9yIGRlbGV0aW9uIGlmIGl0J3MgYmVpbmcgZGVsZXRlZCBpbiB0aGUgc2FtZVxuICogZGVwbG95bWVudCBhcyB0aGlzIEN1c3RvbSBSZXNvdXJjZS5cbiAqXG4gKiBJZiB0aGUgQ3VzdG9tIFJlc291cmNlIGlzIGV2ZXJ5IGRlbGV0ZWQgYmVmb3JlIHRoZSBidWNrZXQsIGl0IG11c3QgYmUgYmVjYXVzZVxuICogYGF1dG9EZWxldGVPYmplY3RzYCBoYXMgYmVlbiBzd2l0Y2hlZCB0byBmYWxzZSwgaW4gd2hpY2ggY2FzZSB0aGUgdGFnIHdvdWxkIGhhdmVcbiAqIGJlZW4gcmVtb3ZlZCBiZWZvcmUgd2UgZ2V0IHRvIHRoaXMgRGVsZXRlIGV2ZW50LlxuICovXG5hc3luYyBmdW5jdGlvbiBpc0J1Y2tldFRhZ2dlZEZvckRlbGV0aW9uKGJ1Y2tldE5hbWU6IHN0cmluZykge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHMzLmdldEJ1Y2tldFRhZ2dpbmcoeyBCdWNrZXQ6IGJ1Y2tldE5hbWUgfSkucHJvbWlzZSgpO1xuICByZXR1cm4gcmVzcG9uc2UuVGFnU2V0LnNvbWUodGFnID0+IHRhZy5LZXkgPT09IEFVVE9fREVMRVRFX09CSkVDVFNfVEFHICYmIHRhZy5WYWx1ZSA9PT0gJ3RydWUnKTtcbn0iXX0=
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -26,6 +26,7 @@ async function handleEvent(event, _context) {
|
|
|
26
26
|
ExtendedKeyUsage: false,
|
|
27
27
|
KeyUsage: true,
|
|
28
28
|
PrivateKeySecretId: true,
|
|
29
|
+
OutputBucket: true,
|
|
29
30
|
});
|
|
30
31
|
}
|
|
31
32
|
switch (event.RequestType) {
|
|
@@ -45,10 +46,24 @@ async function _createSelfSignedCertificate(event) {
|
|
|
45
46
|
await _exec('/opt/openssl', 'req', '-config', configFile, '-key', pkeyFile, '-out', csrFile, '-new');
|
|
46
47
|
const certFile = path.join(tempDir, 'cert.pem');
|
|
47
48
|
await _exec('/opt/openssl', 'x509', '-in', csrFile, '-out', certFile, '-req', '-signkey', pkeyFile, '-days', '365');
|
|
49
|
+
const s3 = new aws.S3();
|
|
50
|
+
const bucketName = event.ResourceProperties.OutputBucket;
|
|
51
|
+
await s3.putObject({
|
|
52
|
+
Bucket: bucketName,
|
|
53
|
+
Key: 'certificate-signing-request.pem',
|
|
54
|
+
Body: await readFile(csrFile, { encoding: 'utf8' }),
|
|
55
|
+
ContentType: 'application/x-pem-file',
|
|
56
|
+
}).promise();
|
|
57
|
+
await s3.putObject({
|
|
58
|
+
Bucket: bucketName,
|
|
59
|
+
Key: 'self-signed-certificate.pem',
|
|
60
|
+
Body: await readFile(certFile, { encoding: 'utf8' }),
|
|
61
|
+
ContentType: 'application/x-pem-file',
|
|
62
|
+
}).promise();
|
|
48
63
|
return {
|
|
49
64
|
Ref: event.LogicalResourceId,
|
|
50
|
-
CSR:
|
|
51
|
-
SelfSignedCertificate:
|
|
65
|
+
CSR: `s3://${bucketName}/certificate-signing-request.pem`,
|
|
66
|
+
SelfSignedCertificate: `s3://${bucketName}/self-signed-certificate.pem`,
|
|
52
67
|
};
|
|
53
68
|
}
|
|
54
69
|
finally {
|
|
@@ -91,4 +106,4 @@ async function _retrievePrivateKey(event, dir) {
|
|
|
91
106
|
await writeFile(file, secret.SecretString, { encoding: 'utf8' });
|
|
92
107
|
return file;
|
|
93
108
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUU3QiwrQkFBK0I7QUFFL0IsMENBQTBDO0FBRTFDLGlDQUFrQztBQUdsQyxpQ0FBa0M7QUFFbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFPekQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFnQixFQUFFLFFBQXdCO0lBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtRQUNoRCxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQy9DLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUk7WUFDcEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4Qix3QkFBd0IsRUFBRSxJQUFJO1lBQzlCLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixR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
|
|
@@ -26,6 +26,7 @@ async function handleEvent(event, _context) {
|
|
|
26
26
|
ExtendedKeyUsage: false,
|
|
27
27
|
KeyUsage: true,
|
|
28
28
|
PrivateKeySecretId: true,
|
|
29
|
+
OutputBucket: true,
|
|
29
30
|
});
|
|
30
31
|
}
|
|
31
32
|
switch (event.RequestType) {
|
|
@@ -45,10 +46,24 @@ async function _createSelfSignedCertificate(event) {
|
|
|
45
46
|
await _exec('/opt/openssl', 'req', '-config', configFile, '-key', pkeyFile, '-out', csrFile, '-new');
|
|
46
47
|
const certFile = path.join(tempDir, 'cert.pem');
|
|
47
48
|
await _exec('/opt/openssl', 'x509', '-in', csrFile, '-out', certFile, '-req', '-signkey', pkeyFile, '-days', '365');
|
|
49
|
+
const s3 = new aws.S3();
|
|
50
|
+
const bucketName = event.ResourceProperties.OutputBucket;
|
|
51
|
+
await s3.putObject({
|
|
52
|
+
Bucket: bucketName,
|
|
53
|
+
Key: 'certificate-signing-request.pem',
|
|
54
|
+
Body: await readFile(csrFile, { encoding: 'utf8' }),
|
|
55
|
+
ContentType: 'application/x-pem-file',
|
|
56
|
+
}).promise();
|
|
57
|
+
await s3.putObject({
|
|
58
|
+
Bucket: bucketName,
|
|
59
|
+
Key: 'self-signed-certificate.pem',
|
|
60
|
+
Body: await readFile(certFile, { encoding: 'utf8' }),
|
|
61
|
+
ContentType: 'application/x-pem-file',
|
|
62
|
+
}).promise();
|
|
48
63
|
return {
|
|
49
64
|
Ref: event.LogicalResourceId,
|
|
50
|
-
CSR:
|
|
51
|
-
SelfSignedCertificate:
|
|
65
|
+
CSR: `s3://${bucketName}/certificate-signing-request.pem`,
|
|
66
|
+
SelfSignedCertificate: `s3://${bucketName}/self-signed-certificate.pem`,
|
|
52
67
|
};
|
|
53
68
|
}
|
|
54
69
|
finally {
|
|
@@ -91,4 +106,4 @@ async function _retrievePrivateKey(event, dir) {
|
|
|
91
106
|
await writeFile(file, secret.SecretString, { encoding: 'utf8' });
|
|
92
107
|
return file;
|
|
93
108
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUU3QiwrQkFBK0I7QUFFL0IsMENBQTBDO0FBRTFDLGlDQUFrQztBQUdsQyxpQ0FBa0M7QUFFbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFPekQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFnQixFQUFFLFFBQXdCO0lBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtRQUNoRCxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQy9DLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUk7WUFDcEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4Qix3QkFBd0IsRUFBRSxJQUFJO1lBQzlCLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixR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
|
|
@@ -99,15 +99,29 @@
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
},
|
|
102
|
-
"
|
|
102
|
+
"9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9": {
|
|
103
103
|
"source": {
|
|
104
|
-
"path": "asset.
|
|
104
|
+
"path": "asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9",
|
|
105
105
|
"packaging": "zip"
|
|
106
106
|
},
|
|
107
107
|
"destinations": {
|
|
108
108
|
"712950704752-us-east-1": {
|
|
109
109
|
"bucketName": "cdk-hnb659fds-assets-712950704752-us-east-1",
|
|
110
|
-
"objectKey": "
|
|
110
|
+
"objectKey": "9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9.zip",
|
|
111
|
+
"region": "us-east-1",
|
|
112
|
+
"assumeRoleArn": "arn:${AWS::Partition}:iam::712950704752:role/cdk-hnb659fds-file-publishing-role-712950704752-us-east-1"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538": {
|
|
117
|
+
"source": {
|
|
118
|
+
"path": "asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538",
|
|
119
|
+
"packaging": "zip"
|
|
120
|
+
},
|
|
121
|
+
"destinations": {
|
|
122
|
+
"712950704752-us-east-1": {
|
|
123
|
+
"bucketName": "cdk-hnb659fds-assets-712950704752-us-east-1",
|
|
124
|
+
"objectKey": "15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538.zip",
|
|
111
125
|
"region": "us-east-1",
|
|
112
126
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::712950704752:role/cdk-hnb659fds-file-publishing-role-712950704752-us-east-1"
|
|
113
127
|
}
|
|
@@ -225,21 +239,21 @@
|
|
|
225
239
|
}
|
|
226
240
|
}
|
|
227
241
|
},
|
|
228
|
-
"
|
|
242
|
+
"0ff875115bf3a3ba9f32946b1f2b9b153553ecba0e511c42ac11bef064968c40": {
|
|
229
243
|
"source": {
|
|
230
|
-
"path": "asset.
|
|
244
|
+
"path": "asset.0ff875115bf3a3ba9f32946b1f2b9b153553ecba0e511c42ac11bef064968c40",
|
|
231
245
|
"packaging": "zip"
|
|
232
246
|
},
|
|
233
247
|
"destinations": {
|
|
234
248
|
"712950704752-us-east-1": {
|
|
235
249
|
"bucketName": "cdk-hnb659fds-assets-712950704752-us-east-1",
|
|
236
|
-
"objectKey": "
|
|
250
|
+
"objectKey": "0ff875115bf3a3ba9f32946b1f2b9b153553ecba0e511c42ac11bef064968c40.zip",
|
|
237
251
|
"region": "us-east-1",
|
|
238
252
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::712950704752:role/cdk-hnb659fds-file-publishing-role-712950704752-us-east-1"
|
|
239
253
|
}
|
|
240
254
|
}
|
|
241
255
|
},
|
|
242
|
-
"
|
|
256
|
+
"c9a95a9366347258da0d2af5ffd2ec969caf38f51888e77082836696d557b5c3": {
|
|
243
257
|
"source": {
|
|
244
258
|
"path": "delivlib-test.template.json",
|
|
245
259
|
"packaging": "file"
|
|
@@ -247,7 +261,7 @@
|
|
|
247
261
|
"destinations": {
|
|
248
262
|
"712950704752-us-east-1": {
|
|
249
263
|
"bucketName": "cdk-hnb659fds-assets-712950704752-us-east-1",
|
|
250
|
-
"objectKey": "
|
|
264
|
+
"objectKey": "c9a95a9366347258da0d2af5ffd2ec969caf38f51888e77082836696d557b5c3.json",
|
|
251
265
|
"region": "us-east-1",
|
|
252
266
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::712950704752:role/cdk-hnb659fds-file-publishing-role-712950704752-us-east-1"
|
|
253
267
|
}
|