truemark-cdk-lib 1.28.0 → 1.28.2
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/dist/aws-bedrock/lib/knowledge-base-collection-index-handler.js +3 -7
- package/dist/aws-patterns-autobackup/lib/autobackup-construct.js +6 -2
- package/dist/aws-vpc/lib/index.d.ts +1 -0
- package/dist/aws-vpc/lib/index.js +2 -1
- package/dist/aws-vpc/lib/nat-instance.d.ts +166 -0
- package/dist/aws-vpc/lib/nat-instance.js +508 -0
- package/dist/aws-vpc/lib/standard-network.d.ts +19 -3
- package/dist/aws-vpc/lib/standard-network.js +42 -3
- package/package.json +1 -2
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handler = handler;
|
|
4
4
|
const crypto = require("node:crypto");
|
|
5
|
-
const credential_provider_node_1 = require("@aws-sdk/credential-provider-node");
|
|
6
5
|
const opensearch_1 = require("@opensearch-project/opensearch");
|
|
7
6
|
const aws_1 = require("@opensearch-project/opensearch/aws");
|
|
8
7
|
function success(event, physicalResourceId, indexName) {
|
|
@@ -63,11 +62,8 @@ async function handler(event) {
|
|
|
63
62
|
...(0, aws_1.AwsSigv4Signer)({
|
|
64
63
|
region,
|
|
65
64
|
service: 'aoss',
|
|
66
|
-
getCredentials
|
|
67
|
-
|
|
68
|
-
const credentialsProvider = (0, credential_provider_node_1.defaultProvider)();
|
|
69
|
-
return credentialsProvider();
|
|
70
|
-
},
|
|
65
|
+
// getCredentials is omitted so the signer falls back to the
|
|
66
|
+
// @aws-sdk/credential-provider-node module provided by the Lambda runtime
|
|
71
67
|
}),
|
|
72
68
|
node: endpoint,
|
|
73
69
|
});
|
|
@@ -146,4 +142,4 @@ async function handler(event) {
|
|
|
146
142
|
: fail(event, physicalResourceId, `Error: ${e}`, indexName);
|
|
147
143
|
}
|
|
148
144
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWJhc2UtY29sbGVjdGlvbi1pbmRleC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy1iZWRyb2NrL2xpYi9rbm93bGVkZ2UtYmFzZS1jb2xsZWN0aW9uLWluZGV4LWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3RUEsMEJBNklDO0FBck5ELHNDQUFzQztBQUN0QyxnRkFBa0U7QUFDbEUsK0RBQXNEO0FBQ3RELDREQUFrRTtBQTJCbEUsU0FBUyxPQUFPLENBQ2QsS0FBMEIsRUFDMUIsa0JBQTBCLEVBQzFCLFNBQWlCO0lBRWpCLE9BQU87UUFDTCxNQUFNLEVBQUUsU0FBUztRQUNqQixrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLFNBQVM7U0FDckI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsSUFBSSxDQUNYLEtBQTBCLEVBQzFCLGtCQUEwQixFQUMxQixNQUFjLEVBQ2QsU0FBaUI7SUFFakIsT0FBTztRQUNMLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLE1BQU0sRUFBRSxNQUFNO1FBQ2Qsa0JBQWtCLEVBQUUsa0JBQWtCO1FBQ3RDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtRQUMxQyxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRTtZQUNKLFNBQVMsRUFBRSxTQUFTO1NBQ3JCO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxLQUFhO0lBQ3pCLE9BQU8sTUFB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LE9BQU8sSUFBSSxDQUNULEtBQUssRUFDTCxrQkFBa0IsRUFDbEIsNkVBQTZFLEVBQzdFLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLENBQUMsWUFBWSxLQUFLO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHtkZWZhdWx0UHJvdmlkZXJ9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZSc7XG5pbXBvcnQge0NsaWVudH0gZnJvbSAnQG9wZW5zZWFyY2gtcHJvamVjdC9vcGVuc2VhcmNoJztcbmltcG9ydCB7QXdzU2lndjRTaWduZXJ9IGZyb20gJ0BvcGVuc2VhcmNoLXByb2plY3Qvb3BlbnNlYXJjaC9hd3MnO1xuXG4vLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvY3JwZy1yZWYtcmVxdWVzdHMuaHRtbFxuaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlRXZlbnQge1xuICByZWFkb25seSBSZXF1ZXN0VHlwZTogJ0NyZWF0ZScgfCAnVXBkYXRlJyB8ICdEZWxldGUnO1xuICByZWFkb25seSBSZXNwb25zZVVSTDogc3RyaW5nO1xuICByZWFkb25seSBTdGFja0lkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IFJlcXVlc3RJZDogc3RyaW5nO1xuICByZWFkb25seSBSZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgTG9naWNhbFJlc291cmNlSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgUGh5c2ljYWxSZXNvdXJjZUlkPzogc3RyaW5nOyAvLyBOb3Qgc2VudCBmb3IgJ0NyZWF0ZScgcmVxdWVzdHNcbiAgcmVhZG9ubHkgUmVzb3VyY2VQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICByZWFkb25seSBPbGRSZXNvdXJjZVByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvY3JwZy1yZWYtcmVzcG9uc2VzLmh0bWxcbmludGVyZmFjZSBDdXN0b21SZXNvdXJjZVJlc3BvbnNlIHtcbiAgU3RhdHVzOiAnU1VDQ0VTUycgfCAnRkFJTEVEJztcbiAgUmVhc29uPzogc3RyaW5nOyAvLyBSZXF1aXJlZCBpZiBzdGF0dXMgaXMgRkFJTEVEXG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZzsgLy8gSWYgdGhlIHZhbHVlIHJldHVybmVkIGlzIHRoZSBzYW1lLCBpdCBpcyBjb25zaWRlcmVkIGEgbm9ybWFsIHVwZGF0ZS4gSWYgdGhlIHZhbHVlIHJldHVybmVkIGlzIGRpZmZlcmVudCwgQVdTIENsb3VkRm9ybWF0aW9uIHJlY29nbml6ZXMgdGhlIHVwZGF0ZSBhcyBhIHJlcGxhY2VtZW50IGFuZCBzZW5kcyBhIGRlbGV0ZSByZXF1ZXN0IHRvIHRoZSBvbGQgcmVzb3VyY2UuXG4gIFN0YWNrSWQ6IHN0cmluZzsgLy8gVGhpcyByZXNwb25zZSB2YWx1ZSBzaG91bGQgYmUgY29waWVkIHZlcmJhdGltIGZyb20gdGhlIHJlcXVlc3QuXG4gIFJlcXVlc3RJZDogc3RyaW5nOyAvLyBUaGlzIHJlc3BvbnNlIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQgdmVyYmF0aW0gZnJvbSB0aGUgcmVxdWVzdC5cbiAgTG9naWNhbFJlc291cmNlSWQ6IHN0cmluZzsgLy8gIFRoaXMgcmVzcG9uc2UgdmFsdWUgc2hvdWxkIGJlIGNvcGllZCB2ZXJiYXRpbSBmcm9tIHRoZSByZXF1ZXN0LlxuICBOb0VjaG8/OiBib29sZWFuOyAvLyBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIEFXUyBDbG91ZEZvcm1hdGlvbiBkb2Vzbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHByb3BlcnR5IHZhbHVlIGluIHRoZSByZXNwb25zZS5cbiAgRGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47IC8vIEEgbWFwIG9mIGtleS12YWx1ZSBwYWlycyB0aGF0IHJlcHJlc2VudCB0aGUgb3V0cHV0IGRhdGEgb2YgdGhlIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlci5cbn1cblxuZnVuY3Rpb24gc3VjY2VzcyhcbiAgZXZlbnQ6IEN1c3RvbVJlc291cmNlRXZlbnQsXG4gIHBoeXNpY2FsUmVzb3VyY2VJZDogc3RyaW5nLFxuICBpbmRleE5hbWU6IHN0cmluZyxcbik6IEN1c3RvbVJlc291cmNlUmVzcG9uc2Uge1xuICByZXR1cm4ge1xuICAgIFN0YXR1czogJ1NVQ0NFU1MnLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YToge1xuICAgICAgSW5kZXhOYW1lOiBpbmRleE5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZmFpbChcbiAgZXZlbnQ6IEN1c3RvbVJlc291cmNlRXZlbnQsXG4gIHBoeXNpY2FsUmVzb3VyY2VJZDogc3RyaW5nLFxuICByZWFzb246IHN0cmluZyxcbiAgaW5kZXhOYW1lOiBzdHJpbmcsXG4pOiBDdXN0b21SZXNvdXJjZVJlc3BvbnNlIHtcbiAgcmV0dXJuIHtcbiAgICBTdGF0dXM6ICdGQUlMRUQnLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YToge1xuICAgICAgSW5kZXhOYW1lOiBpbmRleE5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaGFzaCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUodmFsdWUpLmRpZ2VzdCgnaGV4Jyk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKFxuICBldmVudDogQ3VzdG9tUmVzb3VyY2VFdmVudCxcbik6IFByb21pc2U8Q3VzdG9tUmVzb3VyY2VSZXNwb25zZT4ge1xuICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgZXZlbnQnLCBKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMikpO1xuICAvLyBJbml0aWFsaXplIHZhcmlhYmxlc1xuICBjb25zdCBlbmRwb2ludCA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5vcGVuU2VhcmNoRW5kcG9pbnQ7XG4gIGNvbnN0IGluZGV4TmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5pbmRleE5hbWU7XG4gIGNvbnN0IHBoeXNpY2FsUmVzb3VyY2VJZCA9IGhhc2goYCR7ZW5kcG9pbnR9LyR7aW5kZXhOYW1lfWApO1xuICBjb25zdCBtZXRhZGF0YUZpZWxkTmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5tZXRhZGF0YUZpZWxkTmFtZTtcbiAgY29uc3QgdGV4dEZpZWxkTmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy50ZXh0RmllbGROYW1lO1xuICBjb25zdCB2ZWN0b3JGaWVsZE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMudmVjdG9yRmllbGROYW1lO1xuICBjb25zdCB2ZWN0b3JGaWVsZERpbWVuc2lvbiA9IHBhcnNlSW50KFxuICAgIGV2ZW50LlJlc291cmNlUHJvcGVydGllcy52ZWN0b3JGaWVsZERpbWVuc2lvbixcbiAgICAxMCxcbiAgKTtcbiAgaWYgKE51bWJlci5pc05hTih2ZWN0b3JGaWVsZERpbWVuc2lvbikpIHtcbiAgICBjb25zb2xlLmVycm9yKCd2ZWN0b3JGaWVsZERpbWVuc2lvbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgcmV0dXJuIGZhaWwoXG4gICAgICBldmVudCxcbiAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgICd2ZWN0b3JGaWVsZERpbWVuc2lvbiBtdXN0IGJlIGEgbnVtYmVyJyxcbiAgICAgIGluZGV4TmFtZSxcbiAgICApO1xuICB9XG4gIGNvbnN0IHJlZ2lvbiA9IHByb2Nlc3MuZW52LkFXU19SRUdJT047XG4gIGlmICghcmVnaW9uKSB7XG4gICAgY29uc29sZS5lcnJvcignQVdTX1JFR0lPTiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyByZXF1aXJlZCcpO1xuICAgIHJldHVybiBmYWlsKFxuICAgICAgZXZlbnQsXG4gICAgICBwaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICAnQVdTX1JFR0lPTiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyByZXF1aXJlZCcsXG4gICAgICBpbmRleE5hbWUsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFdlIGRvbid0IHN1cHBvcnQgdXBkYXRlcyBvciBkZWxldGVzIHJpZ2h0IG5vdyBzbyByZXR1cm4gc3VjY2Vzc1xuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdEZWxldGUnIHx8IGV2ZW50LlJlcXVlc3RUeXBlID09PSAnVXBkYXRlJykge1xuICAgIGNvbnNvbGUubG9nKCdJZ25vcmluZyByZXF1ZXN0IHR5cGUnLCBldmVudC5SZXF1ZXN0VHlwZSk7XG4gICAgcmV0dXJuIHN1Y2Nlc3MoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgaW5kZXhOYW1lKTtcbiAgfVxuXG4gIGNvbnN0IGNsaWVudCA9IG5ldyBDbGllbnQoe1xuICAgIC4uLkF3c1NpZ3Y0U2lnbmVyKHtcbiAgICAgIHJlZ2lvbixcbiAgICAgIHNlcnZpY2U6ICdhb3NzJyxcbiAgICAgIGdldENyZWRlbnRpYWxzOiAoKSA9PiB7XG4gICAgICAgIC8vIEFueSBvdGhlciBtZXRob2QgdG8gYWNxdWlyZSBhIG5ldyBDcmVkZW50aWFscyBvYmplY3QgY2FuIGJlIHVzZWQuXG4gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxzUHJvdmlkZXIgPSBkZWZhdWx0UHJvdmlkZXIoKTtcbiAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzUHJvdmlkZXIoKTtcbiAgICAgIH0sXG4gICAgfSksXG4gICAgbm9kZTogZW5kcG9pbnQsXG4gIH0pO1xuXG4gIHRyeSB7XG4gICAgLy8gSWYgZW5kcG9pbnQgZXhpc3RzLCByZXR1cm4gc3VjY2VzcyBhbmQgbW92ZSBvblxuICAgIGNvbnN0IGluZGV4RXhpc3RzID0gYXdhaXQgY2xpZW50LmluZGljZXMuZXhpc3RzKHtpbmRleDogaW5kZXhOYW1lfSk7XG4gICAgaWYgKGluZGV4RXhpc3RzLmJvZHkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdJbmRleCBhbHJlYWR5IGV4aXN0cycpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgaW5kZXhOYW1lKTtcbiAgICB9XG4gICAgLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcGVuc2VhcmNoLXNlcnZpY2UvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3NlcnZlcmxlc3MtdmVjdG9yLXNlYXJjaC5odG1sXG4gICAgY29uc3QgY3JlYXRlUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuaW5kaWNlcy5jcmVhdGUoe1xuICAgICAgaW5kZXg6IGluZGV4TmFtZSxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICBpbmRleDoge1xuICAgICAgICAgICAga25uOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1hcHBpbmdzOiB7XG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgW3ZlY3RvckZpZWxkTmFtZV06IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2tubl92ZWN0b3InLFxuICAgICAgICAgICAgICBkaW1lbnNpb246IHZlY3RvckZpZWxkRGltZW5zaW9uLFxuICAgICAgICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICAgICAgICBlbmdpbmU6ICdmYWlzcycsXG4gICAgICAgICAgICAgICAgbmFtZTogJ2huc3cnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFt0ZXh0RmllbGROYW1lXToge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW21ldGFkYXRhRmllbGROYW1lXToge1xuICAgICAgICAgICAgICB0eXBlOiAna2V5d29yZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChjcmVhdGVSZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdGYWlsZWQgdG8gY3JlYXRlIGluZGV4OicsXG4gICAgICAgIGNyZWF0ZVJlc3BvbnNlLmJvZHkuZXJyb3IucmVhc29uLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWlsKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgICAgICBgRmFpbGVkIHRvIGNyZWF0ZSBpbmRleDogJHtjcmVhdGVSZXNwb25zZS5ib2R5LmVycm9yLnJlYXNvbn1gLFxuICAgICAgICBpbmRleE5hbWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZG8ge1xuICAgICAgY291bnQrKztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGdldFJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmluZGljZXMuZ2V0KHtpbmRleDogaW5kZXhOYW1lfSk7XG4gICAgICAgIGlmIChnZXRSZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICdSZXRyaWV2ZWQgaW5kZXggc3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGdldFJlc3BvbnNlLmJvZHksIG51bGwsIDIpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIGV2ZW4gdGhvdWdoIHRoZSBpbmRleCBpcyBjcmVhdGVkLCB3ZSBuZWVkIHRvIHdhaXQgb3Igd2UgZ2V0IGEgNDAzIGVycm9yIG9uIHRoZSBCZWRyb2NrIEtub3dsZWRnZSBCYXNlXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTUwMDApKTtcbiAgICAgICAgICByZXR1cm4gc3VjY2VzcyhldmVudCwgcGh5c2ljYWxSZXNvdXJjZUlkLCBpbmRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoZS5tZXNzYWdlLmluY2x1ZGVzKCdpbmRleF9ub3RfZm91bmRfZXhjZXB0aW9uJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBdHRlbXB0ICR7Y291bnR9IC0gSW5kZXggbm90IHlldCBjcmVhdGVkYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsKGV2ZW50LCBwaHlzaWNhbFJlc291cmNlSWQsIGUubWVzc2FnZSwgaW5kZXhOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgYEVycm9yOiAke2V9YCwgaW5kZXhOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwMCkpO1xuICAgIH0gd2hpbGUgKGNvdW50IDwgODApOyAvLyBUcmllcyB1cCB0byA0IG1pbnV0ZXMgODAgKiAzMDAwIC8gMTAwMCAvIDYwID00XG4gICAgcmV0dXJuIGZhaWwoXG4gICAgICBldmVudCxcbiAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgICdUaW1lZCBvdXQgd2FpdGluZyBmb3IgaW5kZXggY3JlYXRpb24uIE1hbnVhbCBpbnRlcnZlbnRpb24gbWF5IGJlIG5lY2Vzc2FyeS4nLFxuICAgICAgaW5kZXhOYW1lLFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICA/IGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgZS5tZXNzYWdlLCBpbmRleE5hbWUpXG4gICAgICA6IGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgYEVycm9yOiAke2V9YCwgaW5kZXhOYW1lKTtcbiAgfVxufVxuIl19
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWJhc2UtY29sbGVjdGlvbi1pbmRleC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy1iZWRyb2NrL2xpYi9rbm93bGVkZ2UtYmFzZS1jb2xsZWN0aW9uLWluZGV4LWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1RUEsMEJBMElDO0FBak5ELHNDQUFzQztBQUN0QywrREFBc0Q7QUFDdEQsNERBQWtFO0FBMkJsRSxTQUFTLE9BQU8sQ0FDZCxLQUEwQixFQUMxQixrQkFBMEIsRUFDMUIsU0FBaUI7SUFFakIsT0FBTztRQUNMLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLGtCQUFrQixFQUFFLGtCQUFrQjtRQUN0QyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7UUFDMUMsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUU7WUFDSixTQUFTLEVBQUUsU0FBUztTQUNyQjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxJQUFJLENBQ1gsS0FBMEIsRUFDMUIsa0JBQTBCLEVBQzFCLE1BQWMsRUFDZCxTQUFpQjtJQUVqQixPQUFPO1FBQ0wsTUFBTSxFQUFFLFFBQVE7UUFDaEIsTUFBTSxFQUFFLE1BQU07UUFDZCxrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLFNBQVM7U0FDckI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFDLEtBQWE7SUFDekIsT0FBTyxNQUFNLENBQUMsVUFBVSxD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LENBQUMsWUFBWSxLQUFLO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHtDbGllbnR9IGZyb20gJ0BvcGVuc2VhcmNoLXByb2plY3Qvb3BlbnNlYXJjaCc7XG5pbXBvcnQge0F3c1NpZ3Y0U2lnbmVyfSBmcm9tICdAb3BlbnNlYXJjaC1wcm9qZWN0L29wZW5zZWFyY2gvYXdzJztcblxuLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2NycGctcmVmLXJlcXVlc3RzLmh0bWxcbmludGVyZmFjZSBDdXN0b21SZXNvdXJjZUV2ZW50IHtcbiAgcmVhZG9ubHkgUmVxdWVzdFR5cGU6ICdDcmVhdGUnIHwgJ1VwZGF0ZScgfCAnRGVsZXRlJztcbiAgcmVhZG9ubHkgUmVzcG9uc2VVUkw6IHN0cmluZztcbiAgcmVhZG9ubHkgU3RhY2tJZDogc3RyaW5nO1xuICByZWFkb25seSBSZXF1ZXN0SWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IExvZ2ljYWxSZXNvdXJjZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZzsgLy8gTm90IHNlbnQgZm9yICdDcmVhdGUnIHJlcXVlc3RzXG4gIHJlYWRvbmx5IFJlc291cmNlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgT2xkUmVzb3VyY2VQcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2NycGctcmVmLXJlc3BvbnNlcy5odG1sXG5pbnRlcmZhY2UgQ3VzdG9tUmVzb3VyY2VSZXNwb25zZSB7XG4gIFN0YXR1czogJ1NVQ0NFU1MnIHwgJ0ZBSUxFRCc7XG4gIFJlYXNvbj86IHN0cmluZzsgLy8gUmVxdWlyZWQgaWYgc3RhdHVzIGlzIEZBSUxFRFxuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmc7IC8vIElmIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyB0aGUgc2FtZSwgaXQgaXMgY29uc2lkZXJlZCBhIG5vcm1hbCB1cGRhdGUuIElmIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBkaWZmZXJlbnQsIEFXUyBDbG91ZEZvcm1hdGlvbiByZWNvZ25pemVzIHRoZSB1cGRhdGUgYXMgYSByZXBsYWNlbWVudCBhbmQgc2VuZHMgYSBkZWxldGUgcmVxdWVzdCB0byB0aGUgb2xkIHJlc291cmNlLlxuICBTdGFja0lkOiBzdHJpbmc7IC8vIFRoaXMgcmVzcG9uc2UgdmFsdWUgc2hvdWxkIGJlIGNvcGllZCB2ZXJiYXRpbSBmcm9tIHRoZSByZXF1ZXN0LlxuICBSZXF1ZXN0SWQ6IHN0cmluZzsgLy8gVGhpcyByZXNwb25zZSB2YWx1ZSBzaG91bGQgYmUgY29waWVkIHZlcmJhdGltIGZyb20gdGhlIHJlcXVlc3QuXG4gIExvZ2ljYWxSZXNvdXJjZUlkOiBzdHJpbmc7IC8vICBUaGlzIHJlc3BvbnNlIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQgdmVyYmF0aW0gZnJvbSB0aGUgcmVxdWVzdC5cbiAgTm9FY2hvPzogYm9vbGVhbjsgLy8gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gZG9lc24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSBwcm9wZXJ0eSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2UuXG4gIERhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+OyAvLyBBIG1hcCBvZiBrZXktdmFsdWUgcGFpcnMgdGhhdCByZXByZXNlbnQgdGhlIG91dHB1dCBkYXRhIG9mIHRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXIuXG59XG5cbmZ1bmN0aW9uIHN1Y2Nlc3MoXG4gIGV2ZW50OiBDdXN0b21SZXNvdXJjZUV2ZW50LFxuICBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZyxcbiAgaW5kZXhOYW1lOiBzdHJpbmcsXG4pOiBDdXN0b21SZXNvdXJjZVJlc3BvbnNlIHtcbiAgcmV0dXJuIHtcbiAgICBTdGF0dXM6ICdTVUNDRVNTJyxcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IHtcbiAgICAgIEluZGV4TmFtZTogaW5kZXhOYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGZhaWwoXG4gIGV2ZW50OiBDdXN0b21SZXNvdXJjZUV2ZW50LFxuICBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZyxcbiAgcmVhc29uOiBzdHJpbmcsXG4gIGluZGV4TmFtZTogc3RyaW5nLFxuKTogQ3VzdG9tUmVzb3VyY2VSZXNwb25zZSB7XG4gIHJldHVybiB7XG4gICAgU3RhdHVzOiAnRkFJTEVEJyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IHtcbiAgICAgIEluZGV4TmFtZTogaW5kZXhOYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGhhc2godmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoJ2hleCcpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihcbiAgZXZlbnQ6IEN1c3RvbVJlc291cmNlRXZlbnQsXG4pOiBQcm9taXNlPEN1c3RvbVJlc291cmNlUmVzcG9uc2U+IHtcbiAgY29uc29sZS5sb2coJ1JlY2VpdmVkIGV2ZW50JywgSlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpKTtcbiAgLy8gSW5pdGlhbGl6ZSB2YXJpYWJsZXNcbiAgY29uc3QgZW5kcG9pbnQgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMub3BlblNlYXJjaEVuZHBvaW50O1xuICBjb25zdCBpbmRleE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuaW5kZXhOYW1lO1xuICBjb25zdCBwaHlzaWNhbFJlc291cmNlSWQgPSBoYXNoKGAke2VuZHBvaW50fS8ke2luZGV4TmFtZX1gKTtcbiAgY29uc3QgbWV0YWRhdGFGaWVsZE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMubWV0YWRhdGFGaWVsZE5hbWU7XG4gIGNvbnN0IHRleHRGaWVsZE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMudGV4dEZpZWxkTmFtZTtcbiAgY29uc3QgdmVjdG9yRmllbGROYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLnZlY3RvckZpZWxkTmFtZTtcbiAgY29uc3QgdmVjdG9yRmllbGREaW1lbnNpb24gPSBwYXJzZUludChcbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMudmVjdG9yRmllbGREaW1lbnNpb24sXG4gICAgMTAsXG4gICk7XG4gIGlmIChOdW1iZXIuaXNOYU4odmVjdG9yRmllbGREaW1lbnNpb24pKSB7XG4gICAgY29uc29sZS5lcnJvcigndmVjdG9yRmllbGREaW1lbnNpb24gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIHJldHVybiBmYWlsKFxuICAgICAgZXZlbnQsXG4gICAgICBwaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICAndmVjdG9yRmllbGREaW1lbnNpb24gbXVzdCBiZSBhIG51bWJlcicsXG4gICAgICBpbmRleE5hbWUsXG4gICAgKTtcbiAgfVxuICBjb25zdCByZWdpb24gPSBwcm9jZXNzLmVudi5BV1NfUkVHSU9OO1xuICBpZiAoIXJlZ2lvbikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0FXU19SRUdJT04gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgcmVxdWlyZWQnKTtcbiAgICByZXR1cm4gZmFpbChcbiAgICAgIGV2ZW50LFxuICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgICAgJ0FXU19SRUdJT04gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgcmVxdWlyZWQnLFxuICAgICAgaW5kZXhOYW1lLFxuICAgICk7XG4gIH1cblxuICAvLyBXZSBkb24ndCBzdXBwb3J0IHVwZGF0ZXMgb3IgZGVsZXRlcyByaWdodCBub3cgc28gcmV0dXJuIHN1Y2Nlc3NcbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnRGVsZXRlJyB8fCBldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ1VwZGF0ZScpIHtcbiAgICBjb25zb2xlLmxvZygnSWdub3JpbmcgcmVxdWVzdCB0eXBlJywgZXZlbnQuUmVxdWVzdFR5cGUpO1xuICAgIHJldHVybiBzdWNjZXNzKGV2ZW50LCBwaHlzaWNhbFJlc291cmNlSWQsIGluZGV4TmFtZSk7XG4gIH1cblxuICBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KHtcbiAgICAuLi5Bd3NTaWd2NFNpZ25lcih7XG4gICAgICByZWdpb24sXG4gICAgICBzZXJ2aWNlOiAnYW9zcycsXG4gICAgICAvLyBnZXRDcmVkZW50aWFscyBpcyBvbWl0dGVkIHNvIHRoZSBzaWduZXIgZmFsbHMgYmFjayB0byB0aGVcbiAgICAgIC8vIEBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZSBtb2R1bGUgcHJvdmlkZWQgYnkgdGhlIExhbWJkYSBydW50aW1lXG4gICAgfSksXG4gICAgbm9kZTogZW5kcG9pbnQsXG4gIH0pO1xuXG4gIHRyeSB7XG4gICAgLy8gSWYgZW5kcG9pbnQgZXhpc3RzLCByZXR1cm4gc3VjY2VzcyBhbmQgbW92ZSBvblxuICAgIGNvbnN0IGluZGV4RXhpc3RzID0gYXdhaXQgY2xpZW50LmluZGljZXMuZXhpc3RzKHtpbmRleDogaW5kZXhOYW1lfSk7XG4gICAgaWYgKGluZGV4RXhpc3RzLmJvZHkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdJbmRleCBhbHJlYWR5IGV4aXN0cycpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgaW5kZXhOYW1lKTtcbiAgICB9XG4gICAgLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcGVuc2VhcmNoLXNlcnZpY2UvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3NlcnZlcmxlc3MtdmVjdG9yLXNlYXJjaC5odG1sXG4gICAgY29uc3QgY3JlYXRlUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuaW5kaWNlcy5jcmVhdGUoe1xuICAgICAgaW5kZXg6IGluZGV4TmFtZSxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICBpbmRleDoge1xuICAgICAgICAgICAga25uOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1hcHBpbmdzOiB7XG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgW3ZlY3RvckZpZWxkTmFtZV06IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2tubl92ZWN0b3InLFxuICAgICAgICAgICAgICBkaW1lbnNpb246IHZlY3RvckZpZWxkRGltZW5zaW9uLFxuICAgICAgICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICAgICAgICBlbmdpbmU6ICdmYWlzcycsXG4gICAgICAgICAgICAgICAgbmFtZTogJ2huc3cnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFt0ZXh0RmllbGROYW1lXToge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW21ldGFkYXRhRmllbGROYW1lXToge1xuICAgICAgICAgICAgICB0eXBlOiAna2V5d29yZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChjcmVhdGVSZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdGYWlsZWQgdG8gY3JlYXRlIGluZGV4OicsXG4gICAgICAgIGNyZWF0ZVJlc3BvbnNlLmJvZHkuZXJyb3IucmVhc29uLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWlsKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgICAgICBgRmFpbGVkIHRvIGNyZWF0ZSBpbmRleDogJHtjcmVhdGVSZXNwb25zZS5ib2R5LmVycm9yLnJlYXNvbn1gLFxuICAgICAgICBpbmRleE5hbWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZG8ge1xuICAgICAgY291bnQrKztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGdldFJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmluZGljZXMuZ2V0KHtpbmRleDogaW5kZXhOYW1lfSk7XG4gICAgICAgIGlmIChnZXRSZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICdSZXRyaWV2ZWQgaW5kZXggc3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGdldFJlc3BvbnNlLmJvZHksIG51bGwsIDIpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIGV2ZW4gdGhvdWdoIHRoZSBpbmRleCBpcyBjcmVhdGVkLCB3ZSBuZWVkIHRvIHdhaXQgb3Igd2UgZ2V0IGEgNDAzIGVycm9yIG9uIHRoZSBCZWRyb2NrIEtub3dsZWRnZSBCYXNlXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTUwMDApKTtcbiAgICAgICAgICByZXR1cm4gc3VjY2VzcyhldmVudCwgcGh5c2ljYWxSZXNvdXJjZUlkLCBpbmRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoZS5tZXNzYWdlLmluY2x1ZGVzKCdpbmRleF9ub3RfZm91bmRfZXhjZXB0aW9uJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBdHRlbXB0ICR7Y291bnR9IC0gSW5kZXggbm90IHlldCBjcmVhdGVkYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsKGV2ZW50LCBwaHlzaWNhbFJlc291cmNlSWQsIGUubWVzc2FnZSwgaW5kZXhOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgYEVycm9yOiAke2V9YCwgaW5kZXhOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwMCkpO1xuICAgIH0gd2hpbGUgKGNvdW50IDwgODApOyAvLyBUcmllcyB1cCB0byA0IG1pbnV0ZXMgODAgKiAzMDAwIC8gMTAwMCAvIDYwID00XG4gICAgcmV0dXJuIGZhaWwoXG4gICAgICBldmVudCxcbiAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgICdUaW1lZCBvdXQgd2FpdGluZyBmb3IgaW5kZXggY3JlYXRpb24uIE1hbnVhbCBpbnRlcnZlbnRpb24gbWF5IGJlIG5lY2Vzc2FyeS4nLFxuICAgICAgaW5kZXhOYW1lLFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICA/IGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgZS5tZXNzYWdlLCBpbmRleE5hbWUpXG4gICAgICA6IGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgYEVycm9yOiAke2V9YCwgaW5kZXhOYW1lKTtcbiAgfVxufVxuIl19
|
|
@@ -4,6 +4,7 @@ exports.AutoBackup = void 0;
|
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const aws_backup_1 = require("aws-cdk-lib/aws-backup");
|
|
6
6
|
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
7
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
8
|
const aws_cdk_1 = require("../../aws-cdk");
|
|
8
9
|
class AutoBackup extends aws_cdk_1.ExtendedConstruct {
|
|
9
10
|
daily(days) {
|
|
@@ -33,9 +34,12 @@ class AutoBackup extends aws_cdk_1.ExtendedConstruct {
|
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
36
|
tagSelection(plan, tagValue) {
|
|
36
|
-
plan.addSelection('Selection', {
|
|
37
|
+
const selection = plan.addSelection('Selection', {
|
|
37
38
|
resources: [aws_backup_1.BackupResource.fromTag('backup:policy', tagValue)],
|
|
38
39
|
});
|
|
40
|
+
// The default backup policy does not cover S3, so a tagged bucket fails
|
|
41
|
+
// with a permission error until the S3-specific policy is attached.
|
|
42
|
+
selection.grantPrincipal.addManagedPolicy(aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName('AWSBackupServiceRolePolicyForS3Backup'));
|
|
39
43
|
}
|
|
40
44
|
constructor(scope, id, props = {}) {
|
|
41
45
|
super(scope, id);
|
|
@@ -81,4 +85,4 @@ class AutoBackup extends aws_cdk_1.ExtendedConstruct {
|
|
|
81
85
|
}
|
|
82
86
|
}
|
|
83
87
|
exports.AutoBackup = AutoBackup;
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2JhY2t1cC1jb25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXBhdHRlcm5zLWF1dG9iYWNrdXAvbGliL2F1dG9iYWNrdXAtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFxQztBQUNyQyx1REFNZ0M7QUFDaEMsdURBQWdEO0FBQ2hELGlEQUE4RDtBQUU5RCwyQ0FBZ0Q7QUFnQmhELE1BQWEsVUFBVyxTQUFRLDJCQUFpQjtJQUN2QyxLQUFLLENBQUMsSUFBWTtRQUN4QixPQUFPLElBQUksMkJBQWMsQ0FBQztZQUN4QixRQUFRLEVBQUUsT0FBTztZQUNqQixrQkFBa0IsRUFBRSxxQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDO1lBQzNELFdBQVcsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSwyQkFBYyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGtCQUFrQixFQUFFLHFCQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxJQUFJLEVBQUUsR0FBRztnQkFDVCxNQUFNLEVBQUUsR0FBRztnQkFDWCxPQUFPLEVBQUUsS0FBSzthQUNmLENBQUM7WUFDRixXQUFXLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBWTtRQUMxQixPQUFPLElBQUksMkJBQWMsQ0FBQztZQUN4QixRQUFRLEVBQUUsU0FBUztZQUNuQixrQkFBa0IsRUFBRSxxQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLENBQUM7WUFDckUsc0JBQXNCLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pDLFdBQVcsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFnQixFQUFFLFFBQWdCO1FBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFO1lBQy9DLFNBQVMsRUFBRSxDQUFDLDJCQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMvRCxDQUFDLENBQUM7UUFDSCx3RUFBd0U7UUFDeEUsb0VBQW9FO1FBQ25FLFNBQVMsQ0FBQyxjQUF3QixDQUFDLGdCQUFnQixDQUNsRCx1QkFBYSxDQUFDLHdCQUF3QixDQUNwQyx1Q0FBdUMsQ0FDeEMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBeUIsRUFBRTtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sV0FBVyxHQUFHLElBQUksd0JBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ25ELGVBQWUsRUFBRSxZQUFZO1NBQzlCLENBQUMsQ0FBQztRQUVILGdEQUFnRDtRQUNoRCxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQThCLENBQUM7WUFDakUsUUFBUSxDQUFDLGlCQUFpQixHQUFHO2dCQUMzQixnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQixnQkFBZ0IsRUFBRSxJQUFJO2dCQUN0QixHQUFHLENBQUMsS0FBSyxDQUFDLDBCQUEwQixLQUFLLFNBQVM7b0JBQ2hELENBQUMsQ0FBQyxFQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQywwQkFBMEIsRUFBQztvQkFDdkQsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNSLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDdEQsV0FBVztZQUNYLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDeEQsV0FBVztZQUNYLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFakQsTUFBTSxjQUFjLEdBQUcsSUFBSSx1QkFBVSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUM1RCxXQUFXO1lBQ1gsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ25ELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFFckQsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLHVCQUFVLENBQ3JELElBQUksRUFDSixhQUFhLEVBQ2I7WUFDRSxXQUFXO1lBQ1gsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEUsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0MsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUVwRSxNQUFNLGlDQUFpQyxHQUFHLElBQUksdUJBQVUsQ0FDdEQsSUFBSSxFQUNKLGVBQWUsRUFDZjtZQUNFLFdBQVc7WUFDWCxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2RSxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLGlDQUFpQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGO0FBcEdELGdDQW9HQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RHVyYXRpb259IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEJhY2t1cFBsYW4sXG4gIEJhY2t1cFBsYW5SdWxlLFxuICBCYWNrdXBSZXNvdXJjZSxcbiAgQmFja3VwVmF1bHQsXG4gIHR5cGUgQ2ZuQmFja3VwVmF1bHQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iYWNrdXAnO1xuaW1wb3J0IHtTY2hlZHVsZX0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQge3R5cGUgSVJvbGUsIE1hbmFnZWRQb2xpY3l9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHR5cGUge0NvbnN0cnVjdH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQge0V4dGVuZGVkQ29uc3RydWN0fSBmcm9tICcuLi8uLi9hd3MtY2RrJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRvQmFja3VwUHJvcHMge1xuICAvKipcbiAgICogSWYgdHJ1ZSwgYXBwbGllcyBBV1MgQmFja3VwIFZhdWx0IExvY2sgdG8gdGhlIEF1dG9CYWNrdXAgdmF1bHQuXG4gICAqIE5vdGU6IFZhdWx0IExvY2sgYXBwbGllcyB0byBhbGwgcmVjb3ZlcnkgcG9pbnRzIGluIHRoZSB2YXVsdC5cbiAgICovXG4gIGVuYWJsZUltbXV0YWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gcHJvdmlkZWQgKG1pbiAzKSwgVmF1bHQgTG9jayBpcyBDb21wbGlhbmNlIG1vZGUuXG4gICAqIFdoZW4gb21pdHRlZCwgVmF1bHQgTG9jayBpcyBHb3Zlcm5hbmNlIG1vZGUuXG4gICAqL1xuICB2YXVsdExvY2tDaGFuZ2VhYmxlRm9yRGF5cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9CYWNrdXAgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdCB7XG4gIHByaXZhdGUgZGFpbHkoZGF5czogbnVtYmVyKTogQmFja3VwUGxhblJ1bGUge1xuICAgIHJldHVybiBuZXcgQmFja3VwUGxhblJ1bGUoe1xuICAgICAgcnVsZU5hbWU6ICdEYWlseScsXG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246IFNjaGVkdWxlLmNyb24oe2hvdXI6ICc1JywgbWludXRlOiAnMCd9KSxcbiAgICAgIGRlbGV0ZUFmdGVyOiBEdXJhdGlvbi5kYXlzKGRheXMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB3ZWVrbHkoZGF5czogbnVtYmVyKTogQmFja3VwUGxhblJ1bGUge1xuICAgIHJldHVybiBuZXcgQmFja3VwUGxhblJ1bGUoe1xuICAgICAgcnVsZU5hbWU6ICdXZWVrbHknLFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBTY2hlZHVsZS5jcm9uKHtcbiAgICAgICAgaG91cjogJzUnLFxuICAgICAgICBtaW51dGU6ICcwJyxcbiAgICAgICAgd2Vla0RheTogJ1NBVCcsXG4gICAgICB9KSxcbiAgICAgIGRlbGV0ZUFmdGVyOiBEdXJhdGlvbi5kYXlzKGRheXMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb250aGx5KGRheXM6IG51bWJlcik6IEJhY2t1cFBsYW5SdWxlIHtcbiAgICByZXR1cm4gbmV3IEJhY2t1cFBsYW5SdWxlKHtcbiAgICAgIHJ1bGVOYW1lOiAnTW9udGhseScsXG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246IFNjaGVkdWxlLmNyb24oe2RheTogJzEnLCBob3VyOiAnNScsIG1pbnV0ZTogJzAnfSksXG4gICAgICBtb3ZlVG9Db2xkU3RvcmFnZUFmdGVyOiBEdXJhdGlvbi5kYXlzKDMwKSxcbiAgICAgIGRlbGV0ZUFmdGVyOiBEdXJhdGlvbi5kYXlzKGRheXMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB0YWdTZWxlY3Rpb24ocGxhbjogQmFja3VwUGxhbiwgdGFnVmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHBsYW4uYWRkU2VsZWN0aW9uKCdTZWxlY3Rpb24nLCB7XG4gICAgICByZXNvdXJjZXM6IFtCYWNrdXBSZXNvdXJjZS5mcm9tVGFnKCdiYWNrdXA6cG9saWN5JywgdGFnVmFsdWUpXSxcbiAgICB9KTtcbiAgICAvLyBUaGUgZGVmYXVsdCBiYWNrdXAgcG9saWN5IGRvZXMgbm90IGNvdmVyIFMzLCBzbyBhIHRhZ2dlZCBidWNrZXQgZmFpbHNcbiAgICAvLyB3aXRoIGEgcGVybWlzc2lvbiBlcnJvciB1bnRpbCB0aGUgUzMtc3BlY2lmaWMgcG9saWN5IGlzIGF0dGFjaGVkLlxuICAgIChzZWxlY3Rpb24uZ3JhbnRQcmluY2lwYWwgYXMgSVJvbGUpLmFkZE1hbmFnZWRQb2xpY3koXG4gICAgICBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgJ0FXU0JhY2t1cFNlcnZpY2VSb2xlUG9saWN5Rm9yUzNCYWNrdXAnLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF1dG9CYWNrdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGJhY2t1cFZhdWx0ID0gbmV3IEJhY2t1cFZhdWx0KHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgYmFja3VwVmF1bHROYW1lOiAnQXV0b0JhY2t1cCcsXG4gICAgfSk7XG5cbiAgICAvLyBBcHBseSBWYXVsdCBMb2NrIHdoZW4gZW5hYmxlSW1tdXRhYmxlIGlzIHRydWVcbiAgICBpZiAocHJvcHMuZW5hYmxlSW1tdXRhYmxlKSB7XG4gICAgICBjb25zdCBjZm5WYXVsdCA9IGJhY2t1cFZhdWx0Lm5vZGUuZGVmYXVsdENoaWxkIGFzIENmbkJhY2t1cFZhdWx0O1xuICAgICAgY2ZuVmF1bHQubG9ja0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgIG1pblJldGVudGlvbkRheXM6IDEsXG4gICAgICAgIG1heFJldGVudGlvbkRheXM6IDI1NTUsXG4gICAgICAgIC4uLihwcm9wcy52YXVsdExvY2tDaGFuZ2VhYmxlRm9yRGF5cyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB7Y2hhbmdlYWJsZUZvckRheXM6IHByb3BzLnZhdWx0TG9ja0NoYW5nZWFibGVGb3JEYXlzfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0V2VlayA9IG5ldyBCYWNrdXBQbGFuKHRoaXMsICdEZWZhdWx0V2VlaycsIHtcbiAgICAgIGJhY2t1cFZhdWx0LFxuICAgICAgYmFja3VwUGxhblJ1bGVzOiBbdGhpcy5kYWlseSg3KV0sXG4gICAgfSk7XG4gICAgdGhpcy50YWdTZWxlY3Rpb24oZGVmYXVsdFdlZWssICdkZWZhdWx0LXdlZWsnKTtcblxuICAgIGNvbnN0IGRlZmF1bHRNb250aCA9IG5ldyBCYWNrdXBQbGFuKHRoaXMsICdEZWZhdWx0TW9udGgnLCB7XG4gICAgICBiYWNrdXBWYXVsdCxcbiAgICAgIGJhY2t1cFBsYW5SdWxlczogW3RoaXMuZGFpbHkoMzUpXSxcbiAgICB9KTtcbiAgICB0aGlzLnRhZ1NlbGVjdGlvbihkZWZhdWx0TW9udGgsICdkZWZhdWx0LW1vbnRoJyk7XG5cbiAgICBjb25zdCBkZWZhdWx0UXVhcnRlciA9IG5ldyBCYWNrdXBQbGFuKHRoaXMsICdEZWZhdWx0UXVhcnRlcicsIHtcbiAgICAgIGJhY2t1cFZhdWx0LFxuICAgICAgYmFja3VwUGxhblJ1bGVzOiBbdGhpcy5kYWlseSgzNSksIHRoaXMud2Vla2x5KDkwKV0sXG4gICAgfSk7XG4gICAgdGhpcy50YWdTZWxlY3Rpb24oZGVmYXVsdFF1YXJ0ZXIsICdkZWZhdWx0LXF1YXJ0ZXInKTtcblxuICAgIGNvbnN0IGRlZmF1bHREYWlseTM1V2Vla2x5OTBNb250aGx5MzY1ID0gbmV3IEJhY2t1cFBsYW4oXG4gICAgICB0aGlzLFxuICAgICAgJ0RlZmF1bHRZZWFyJyxcbiAgICAgIHtcbiAgICAgICAgYmFja3VwVmF1bHQsXG4gICAgICAgIGJhY2t1cFBsYW5SdWxlczogW3RoaXMuZGFpbHkoMzUpLCB0aGlzLndlZWtseSg5MCksIHRoaXMubW9udGhseSgzNjUpXSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLnRhZ1NlbGVjdGlvbihkZWZhdWx0RGFpbHkzNVdlZWtseTkwTW9udGhseTM2NSwgJ2RlZmF1bHQteWVhcicpO1xuXG4gICAgY29uc3QgZGVmYXVsdERhaWx5MzVXZWVrbHk5ME1vbnRobHkyNTU1ID0gbmV3IEJhY2t1cFBsYW4oXG4gICAgICB0aGlzLFxuICAgICAgJ0RlZmF1bHQ3WWVhcnMnLFxuICAgICAge1xuICAgICAgICBiYWNrdXBWYXVsdCxcbiAgICAgICAgYmFja3VwUGxhblJ1bGVzOiBbdGhpcy5kYWlseSgzNSksIHRoaXMud2Vla2x5KDkwKSwgdGhpcy5tb250aGx5KDI1NTUpXSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLnRhZ1NlbGVjdGlvbihkZWZhdWx0RGFpbHkzNVdlZWtseTkwTW9udGhseTI1NTUsICdkZWZhdWx0LTcteWVhcnMnKTtcbiAgfVxufVxuIl19
|
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./nat-instance"), exports);
|
|
17
18
|
__exportStar(require("./network-parameters"), exports);
|
|
18
19
|
__exportStar(require("./standard-network"), exports);
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXZwYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUErQjtBQUMvQix1REFBcUM7QUFDckMscURBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uYXQtaW5zdGFuY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXR3b3JrLXBhcmFtZXRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGFuZGFyZC1uZXR3b3JrJztcbiJdfQ==
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import type { Construct } from 'constructs';
|
|
3
|
+
import { ExtendedConstruct, type ExtendedConstructProps } from '../../aws-cdk/index';
|
|
4
|
+
/**
|
|
5
|
+
* An additional file to write via cloud-init write_files.
|
|
6
|
+
*/
|
|
7
|
+
export interface NatInstanceWriteFile {
|
|
8
|
+
/** Absolute path on the instance where the file will be written. */
|
|
9
|
+
readonly path: string;
|
|
10
|
+
/** File content. */
|
|
11
|
+
readonly content: string;
|
|
12
|
+
/** Octal file permissions string, e.g. '0755'. */
|
|
13
|
+
readonly permissions?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Properties for NatInstance.
|
|
17
|
+
*/
|
|
18
|
+
export interface NatInstanceProps extends ExtendedConstructProps {
|
|
19
|
+
/**
|
|
20
|
+
* VPC to place the NAT instance in.
|
|
21
|
+
*/
|
|
22
|
+
readonly vpc: ec2.IVpc;
|
|
23
|
+
/**
|
|
24
|
+
* The public subnet where the ENI and instance will live.
|
|
25
|
+
*/
|
|
26
|
+
readonly publicSubnet: ec2.ISubnet;
|
|
27
|
+
/**
|
|
28
|
+
* CIDR blocks of private subnets. Used for the security group ingress rule
|
|
29
|
+
* so that private instances can route traffic through the NAT instance.
|
|
30
|
+
*/
|
|
31
|
+
readonly privateSubnetCidrBlocks: string[];
|
|
32
|
+
/**
|
|
33
|
+
* Whether to run the ASG at desired capacity of 1. When false the ASG is
|
|
34
|
+
* set to desired/min=0, effectively pausing the NAT instance without
|
|
35
|
+
* destroying the ENI or other resources. Default is true.
|
|
36
|
+
*
|
|
37
|
+
* @default true
|
|
38
|
+
*/
|
|
39
|
+
readonly enabled?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* IDs of private route tables that should receive a 0.0.0.0/0 default
|
|
42
|
+
* route pointing to the NAT instance ENI. Typically one per AZ.
|
|
43
|
+
*/
|
|
44
|
+
readonly privateRouteTableIds?: string[];
|
|
45
|
+
/**
|
|
46
|
+
* Custom AMI ID. When omitted the latest Amazon Linux 2023 standard AMI
|
|
47
|
+
* is used, filtered by the resolved architecture. The standard edition
|
|
48
|
+
* includes the SSM agent for remote management.
|
|
49
|
+
*/
|
|
50
|
+
readonly imageId?: string;
|
|
51
|
+
/**
|
|
52
|
+
* CPU architecture used for the AMI lookup. Default is ARM_64, which
|
|
53
|
+
* corresponds to the default t4g.micro instance type.
|
|
54
|
+
*
|
|
55
|
+
* @default ec2.AmazonLinuxCpuType.ARM_64
|
|
56
|
+
*/
|
|
57
|
+
readonly architecture?: ec2.AmazonLinuxCpuType;
|
|
58
|
+
/**
|
|
59
|
+
* EC2 instance types for the Auto Scaling Group mixed instances policy.
|
|
60
|
+
* Defaults based on architecture: t4g.micro for ARM64 (~$6/month on-demand),
|
|
61
|
+
* t3a.micro for X86_64 (~$7.60/month on-demand).
|
|
62
|
+
*
|
|
63
|
+
* @default [new ec2.InstanceType('t4g.micro')] for ARM64, [new ec2.InstanceType('t3a.micro')] for X86_64
|
|
64
|
+
*/
|
|
65
|
+
readonly instanceTypes?: ec2.InstanceType[];
|
|
66
|
+
/**
|
|
67
|
+
* Use Spot instances instead of On-Demand. Spot can reduce cost to ~$1/month
|
|
68
|
+
* but the instance may be interrupted with a 2-minute warning. Default is false.
|
|
69
|
+
*
|
|
70
|
+
* @default false
|
|
71
|
+
*/
|
|
72
|
+
readonly useSpotInstance?: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Name of an existing EC2 key pair to allow SSH access. When omitted,
|
|
75
|
+
* AWS Systems Manager Session Manager (enabled via the attached SSM policy)
|
|
76
|
+
* is the only console access method.
|
|
77
|
+
*/
|
|
78
|
+
readonly keyName?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Additional cloud-init write_files entries appended after the built-in
|
|
81
|
+
* NAT scripts. Useful for injecting custom configuration files.
|
|
82
|
+
*/
|
|
83
|
+
readonly additionalWriteFiles?: NatInstanceWriteFile[];
|
|
84
|
+
/**
|
|
85
|
+
* Additional cloud-init runcmd entries appended after /opt/nat/runonce.sh.
|
|
86
|
+
* Each inner array represents one command invocation (argv style).
|
|
87
|
+
*/
|
|
88
|
+
readonly additionalRunCmds?: string[][];
|
|
89
|
+
/**
|
|
90
|
+
* ARN of the IAM managed policy attached to the instance role for Systems
|
|
91
|
+
* Manager access. When omitted, uses AmazonSSMManagedInstanceCore resolved
|
|
92
|
+
* for the stack's partition (works in GovCloud and China).
|
|
93
|
+
*
|
|
94
|
+
* @default AmazonSSMManagedInstanceCore (partition-agnostic)
|
|
95
|
+
*/
|
|
96
|
+
readonly ssmPolicyArn?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* A self-healing, cost-optimised NAT instance for private subnet egress.
|
|
100
|
+
*
|
|
101
|
+
* This is a CDK port of the truemark/nat-instance Terraform module. It
|
|
102
|
+
* provisions:
|
|
103
|
+
* - A dedicated secondary Elastic Network Interface (ENI) with source/dest
|
|
104
|
+
* check disabled. Private subnets route to this ENI, which persists across
|
|
105
|
+
* instance replacements. Actual NAT egress happens through the instance's
|
|
106
|
+
* primary interface (which has an auto-assigned public IP by default).
|
|
107
|
+
* - An IAM role with AmazonSSMManagedInstanceCore and the EC2 permissions
|
|
108
|
+
* needed for snat.sh to attach the secondary ENI at boot.
|
|
109
|
+
* - An EC2 Launch Template running Amazon Linux 2023 standard (ARM64 by
|
|
110
|
+
* default) with a cloud-init user-data that installs iptables, attaches
|
|
111
|
+
* the ENI, enables IP forwarding, and sets up NAT masquerading.
|
|
112
|
+
* - An Auto Scaling Group (desired=1) that auto-replaces the instance on
|
|
113
|
+
* failure, keeping the ENI persistent across replacements.
|
|
114
|
+
* - Optional 0.0.0.0/0 routes in private route tables pointing to the ENI.
|
|
115
|
+
*
|
|
116
|
+
* **Usage with StandardNetwork:**
|
|
117
|
+
* ```ts
|
|
118
|
+
* const network = new StandardNetwork(this, 'Network', {
|
|
119
|
+
* name: 'prod',
|
|
120
|
+
* vpcCidr: '10.0.0.0/20',
|
|
121
|
+
* natType: 'none', // no managed NAT gateway
|
|
122
|
+
* });
|
|
123
|
+
*
|
|
124
|
+
* const nat = new NatInstance(this, 'Nat', {
|
|
125
|
+
* vpc: network.vpc,
|
|
126
|
+
* publicSubnet: network.vpc.selectSubnets({subnetGroupName: 'public'}).subnets[0],
|
|
127
|
+
* privateSubnetCidrBlocks: ['10.0.0.0/24'],
|
|
128
|
+
* privateRouteTableIds: network.vpc
|
|
129
|
+
* .selectSubnets({subnetGroupName: 'private'})
|
|
130
|
+
* .subnets.map(s => s.routeTable.routeTableId),
|
|
131
|
+
* });
|
|
132
|
+
*
|
|
133
|
+
* // The instance's primary interface gets an auto-assigned public IP.
|
|
134
|
+
* // For a stable outbound IP, allocate and associate an EIP with the
|
|
135
|
+
* // instance's primary interface using ASG lifecycle hooks or tags.
|
|
136
|
+
* // Example:
|
|
137
|
+
* // const eip = new ec2.CfnEIP(this, 'NatEip', {domain: 'vpc'});
|
|
138
|
+
* // Associate the EIP with new instances via lifecycle hook or tag matching.
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* > **Note:** This construct is optimised for cost (ARM64 spot/on-demand
|
|
142
|
+
* > t4g.micro at ~$2–6/month) and is suitable for dev/staging environments.
|
|
143
|
+
* > For production use prefer AWS NAT Gateway or a larger instance type with
|
|
144
|
+
* > `useSpotInstance: false`.
|
|
145
|
+
*/
|
|
146
|
+
export declare class NatInstance extends ExtendedConstruct {
|
|
147
|
+
/**
|
|
148
|
+
* CloudFormation resource ID of the dedicated secondary ENI. Private subnet
|
|
149
|
+
* routes point to this ENI, which persists across instance replacements.
|
|
150
|
+
* Note: NAT egress occurs through the primary interface, not this ENI.
|
|
151
|
+
*/
|
|
152
|
+
readonly eniId: string;
|
|
153
|
+
/**
|
|
154
|
+
* Primary private IPv4 address of the dedicated ENI.
|
|
155
|
+
*/
|
|
156
|
+
readonly eniPrivateIp: string;
|
|
157
|
+
/**
|
|
158
|
+
* Security group ID of the NAT instance security group.
|
|
159
|
+
*/
|
|
160
|
+
readonly sgId: string;
|
|
161
|
+
/**
|
|
162
|
+
* Name of the IAM role attached to the NAT instance.
|
|
163
|
+
*/
|
|
164
|
+
readonly iamRoleName: string;
|
|
165
|
+
constructor(scope: Construct, id: string, props: NatInstanceProps);
|
|
166
|
+
}
|