@mavogel/cdk-vscode-server 0.0.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/.jsii +4351 -0
- package/API.md +367 -0
- package/CONTRIBUTING.md +59 -0
- package/LICENSE +202 -0
- package/README.md +183 -0
- package/assets/installer/installer.lambda/index.js +112 -0
- package/assets/secret-retriever/secret-retriever.lambda/index.js +57 -0
- package/docs/img/vscode-server-ui-login-min.png +0 -0
- package/docs/img/vscode-server-ui-min.png +0 -0
- package/docs/img/vscode-server.drawio +108 -0
- package/docs/img/vscode-server.drawio-min.png +0 -0
- package/integ-tests/code-server login.html +48 -0
- package/integ-tests/functions/login-handler.ts +63 -0
- package/integ-tests/integ.al2023.ts +69 -0
- package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.assets.json +32 -0
- package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.template.json +337 -0
- package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.assets.json +110 -0
- package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.template.json +2459 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.23732f3d1982f7fb0da3bd6638a8107337bb767fea165b45eae12000a1dd67ce/index.js +6169 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/cfn-response.js +1 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/consts.js +1 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/framework.js +3 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/outbound.js +1 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/util.js +1 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.512cf155ada4793b37a885c1aa6d9bb8f534e88bac6f63c69672d4d73df2decf.lambda/index.js +112 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.c504585dae89ce8e394d7744ccae054318e7d1aff14afb545438d173d51dc97d.bundle/index.js +30572 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.ce2f3595a340d6c519a65888ef97e3b9b64f053f83608e32cc28162e22d7d99a/index.js +1 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/__entrypoint__.js +1 -0
- package/integ-tests/integ.al2023.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/index.js +1 -0
- package/integ-tests/integ.al2023.ts.snapshot/cdk.out +1 -0
- package/integ-tests/integ.al2023.ts.snapshot/integ.json +22 -0
- package/integ-tests/integ.al2023.ts.snapshot/manifest.json +510 -0
- package/integ-tests/integ.al2023.ts.snapshot/tree.json +2944 -0
- package/integ-tests/integ.ubuntu.ts +66 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.assets.json +32 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.template.json +337 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.assets.json +110 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.template.json +2477 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.23732f3d1982f7fb0da3bd6638a8107337bb767fea165b45eae12000a1dd67ce/index.js +6169 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/cfn-response.js +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/consts.js +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/framework.js +3 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/outbound.js +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e/util.js +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.512cf155ada4793b37a885c1aa6d9bb8f534e88bac6f63c69672d4d73df2decf.lambda/index.js +112 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.c504585dae89ce8e394d7744ccae054318e7d1aff14afb545438d173d51dc97d.bundle/index.js +30572 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.ce2f3595a340d6c519a65888ef97e3b9b64f053f83608e32cc28162e22d7d99a/index.js +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/__entrypoint__.js +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/asset.ee7de53d64cc9d6248fa6aa550f92358f6c907b5efd6f3298aeab1b5e7ea358a/index.js +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/cdk.out +1 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/integ.json +22 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/manifest.json +510 -0
- package/integ-tests/integ.ubuntu.ts.snapshot/tree.json +2962 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +18 -0
- package/lib/installer/installer-function.d.ts +13 -0
- package/lib/installer/installer-function.js +23 -0
- package/lib/installer/installer.d.ts +64 -0
- package/lib/installer/installer.js +707 -0
- package/lib/installer/installer.lambda.d.ts +3 -0
- package/lib/installer/installer.lambda.js +94 -0
- package/lib/mappings.d.ts +2 -0
- package/lib/mappings.js +25 -0
- package/lib/prefixlist-retriever/prefixlist-retriever.d.ts +16 -0
- package/lib/prefixlist-retriever/prefixlist-retriever.js +56 -0
- package/lib/secret-retriever/secret-retriever-function.d.ts +13 -0
- package/lib/secret-retriever/secret-retriever-function.js +23 -0
- package/lib/secret-retriever/secret-retriever.d.ts +33 -0
- package/lib/secret-retriever/secret-retriever.js +72 -0
- package/lib/secret-retriever/secret-retriever.lambda.d.ts +2 -0
- package/lib/secret-retriever/secret-retriever.lambda.js +36 -0
- package/lib/vscode-server.d.ts +97 -0
- package/lib/vscode-server.js +417 -0
- package/node_modules/boolbase/README.md +10 -0
- package/node_modules/boolbase/index.js +8 -0
- package/node_modules/boolbase/package.json +23 -0
- package/node_modules/css-select/LICENSE +11 -0
- package/node_modules/css-select/README.md +264 -0
- package/node_modules/css-select/lib/attributes.d.ts +7 -0
- package/node_modules/css-select/lib/attributes.d.ts.map +1 -0
- package/node_modules/css-select/lib/attributes.js +236 -0
- package/node_modules/css-select/lib/attributes.js.map +1 -0
- package/node_modules/css-select/lib/compile.d.ts +13 -0
- package/node_modules/css-select/lib/compile.d.ts.map +1 -0
- package/node_modules/css-select/lib/compile.js +151 -0
- package/node_modules/css-select/lib/compile.js.map +1 -0
- package/node_modules/css-select/lib/esm/attributes.d.ts +7 -0
- package/node_modules/css-select/lib/esm/attributes.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/attributes.js +222 -0
- package/node_modules/css-select/lib/esm/attributes.js.map +1 -0
- package/node_modules/css-select/lib/esm/compile.d.ts +13 -0
- package/node_modules/css-select/lib/esm/compile.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/compile.js +115 -0
- package/node_modules/css-select/lib/esm/compile.js.map +1 -0
- package/node_modules/css-select/lib/esm/general.d.ts +3 -0
- package/node_modules/css-select/lib/esm/general.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/general.js +144 -0
- package/node_modules/css-select/lib/esm/general.js.map +1 -0
- package/node_modules/css-select/lib/esm/index.d.ts +50 -0
- package/node_modules/css-select/lib/esm/index.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/index.js +115 -0
- package/node_modules/css-select/lib/esm/index.js.map +1 -0
- package/node_modules/css-select/lib/esm/package.json +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.d.ts +5 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js +35 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js.map +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/filters.d.ts +4 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/filters.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/filters.js +143 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/filters.js.map +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/index.d.ts +8 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/index.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/index.js +40 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/index.js.map +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.d.ts +6 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js +79 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js.map +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.d.ts +9 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.js +94 -0
- package/node_modules/css-select/lib/esm/pseudo-selectors/subselects.js.map +1 -0
- package/node_modules/css-select/lib/esm/sort.d.ts +12 -0
- package/node_modules/css-select/lib/esm/sort.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/sort.js +79 -0
- package/node_modules/css-select/lib/esm/sort.js.map +1 -0
- package/node_modules/css-select/lib/esm/types.d.ts +167 -0
- package/node_modules/css-select/lib/esm/types.d.ts.map +1 -0
- package/node_modules/css-select/lib/esm/types.js +2 -0
- package/node_modules/css-select/lib/esm/types.js.map +1 -0
- package/node_modules/css-select/lib/general.d.ts +3 -0
- package/node_modules/css-select/lib/general.d.ts.map +1 -0
- package/node_modules/css-select/lib/general.js +148 -0
- package/node_modules/css-select/lib/general.js.map +1 -0
- package/node_modules/css-select/lib/index.d.ts +50 -0
- package/node_modules/css-select/lib/index.d.ts.map +1 -0
- package/node_modules/css-select/lib/index.js +154 -0
- package/node_modules/css-select/lib/index.js.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/aliases.d.ts +5 -0
- package/node_modules/css-select/lib/pseudo-selectors/aliases.d.ts.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/aliases.js +34 -0
- package/node_modules/css-select/lib/pseudo-selectors/aliases.js.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/filters.d.ts +4 -0
- package/node_modules/css-select/lib/pseudo-selectors/filters.d.ts.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/filters.js +157 -0
- package/node_modules/css-select/lib/pseudo-selectors/filters.js.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/index.d.ts +8 -0
- package/node_modules/css-select/lib/pseudo-selectors/index.d.ts.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/index.js +46 -0
- package/node_modules/css-select/lib/pseudo-selectors/index.js.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/pseudos.d.ts +6 -0
- package/node_modules/css-select/lib/pseudo-selectors/pseudos.d.ts.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/pseudos.js +93 -0
- package/node_modules/css-select/lib/pseudo-selectors/pseudos.js.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/subselects.d.ts +9 -0
- package/node_modules/css-select/lib/pseudo-selectors/subselects.d.ts.map +1 -0
- package/node_modules/css-select/lib/pseudo-selectors/subselects.js +112 -0
- package/node_modules/css-select/lib/pseudo-selectors/subselects.js.map +1 -0
- package/node_modules/css-select/lib/sort.d.ts +12 -0
- package/node_modules/css-select/lib/sort.d.ts.map +1 -0
- package/node_modules/css-select/lib/sort.js +84 -0
- package/node_modules/css-select/lib/sort.js.map +1 -0
- package/node_modules/css-select/lib/types.d.ts +167 -0
- package/node_modules/css-select/lib/types.d.ts.map +1 -0
- package/node_modules/css-select/lib/types.js +3 -0
- package/node_modules/css-select/lib/types.js.map +1 -0
- package/node_modules/css-select/package.json +81 -0
- package/node_modules/css-what/LICENSE +11 -0
- package/node_modules/css-what/lib/commonjs/index.d.ts +4 -0
- package/node_modules/css-what/lib/commonjs/index.d.ts.map +1 -0
- package/node_modules/css-what/lib/commonjs/index.js +23 -0
- package/node_modules/css-what/lib/commonjs/parse.d.ts +20 -0
- package/node_modules/css-what/lib/commonjs/parse.d.ts.map +1 -0
- package/node_modules/css-what/lib/commonjs/parse.js +425 -0
- package/node_modules/css-what/lib/commonjs/stringify.d.ts +8 -0
- package/node_modules/css-what/lib/commonjs/stringify.d.ts.map +1 -0
- package/node_modules/css-what/lib/commonjs/stringify.js +138 -0
- package/node_modules/css-what/lib/commonjs/types.d.ts +70 -0
- package/node_modules/css-what/lib/commonjs/types.d.ts.map +1 -0
- package/node_modules/css-what/lib/commonjs/types.js +42 -0
- package/node_modules/css-what/lib/es/index.d.ts +4 -0
- package/node_modules/css-what/lib/es/index.d.ts.map +1 -0
- package/node_modules/css-what/lib/es/index.js +3 -0
- package/node_modules/css-what/lib/es/parse.d.ts +20 -0
- package/node_modules/css-what/lib/es/parse.d.ts.map +1 -0
- package/node_modules/css-what/lib/es/parse.js +420 -0
- package/node_modules/css-what/lib/es/stringify.d.ts +8 -0
- package/node_modules/css-what/lib/es/stringify.d.ts.map +1 -0
- package/node_modules/css-what/lib/es/stringify.js +126 -0
- package/node_modules/css-what/lib/es/types.d.ts +70 -0
- package/node_modules/css-what/lib/es/types.d.ts.map +1 -0
- package/node_modules/css-what/lib/es/types.js +39 -0
- package/node_modules/css-what/package.json +59 -0
- package/node_modules/css-what/readme.md +69 -0
- package/node_modules/dom-serializer/LICENSE +11 -0
- package/node_modules/dom-serializer/README.md +109 -0
- package/node_modules/dom-serializer/lib/esm/foreignNames.d.ts +3 -0
- package/node_modules/dom-serializer/lib/esm/foreignNames.d.ts.map +1 -0
- package/node_modules/dom-serializer/lib/esm/foreignNames.js +100 -0
- package/node_modules/dom-serializer/lib/esm/index.d.ts +52 -0
- package/node_modules/dom-serializer/lib/esm/index.d.ts.map +1 -0
- package/node_modules/dom-serializer/lib/esm/index.js +190 -0
- package/node_modules/dom-serializer/lib/esm/package.json +1 -0
- package/node_modules/dom-serializer/lib/foreignNames.d.ts +3 -0
- package/node_modules/dom-serializer/lib/foreignNames.d.ts.map +1 -0
- package/node_modules/dom-serializer/lib/foreignNames.js +103 -0
- package/node_modules/dom-serializer/lib/index.d.ts +52 -0
- package/node_modules/dom-serializer/lib/index.d.ts.map +1 -0
- package/node_modules/dom-serializer/lib/index.js +229 -0
- package/node_modules/dom-serializer/package.json +69 -0
- package/node_modules/domelementtype/LICENSE +11 -0
- package/node_modules/domelementtype/lib/esm/index.d.ts +48 -0
- package/node_modules/domelementtype/lib/esm/index.d.ts.map +1 -0
- package/node_modules/domelementtype/lib/esm/index.js +51 -0
- package/node_modules/domelementtype/lib/esm/package.json +1 -0
- package/node_modules/domelementtype/lib/index.d.ts +48 -0
- package/node_modules/domelementtype/lib/index.d.ts.map +1 -0
- package/node_modules/domelementtype/lib/index.js +55 -0
- package/node_modules/domelementtype/package.json +54 -0
- package/node_modules/domelementtype/readme.md +1 -0
- package/node_modules/domhandler/LICENSE +11 -0
- package/node_modules/domhandler/lib/esm/index.d.ts +76 -0
- package/node_modules/domhandler/lib/esm/index.d.ts.map +1 -0
- package/node_modules/domhandler/lib/esm/index.js +146 -0
- package/node_modules/domhandler/lib/esm/node.d.ts +245 -0
- package/node_modules/domhandler/lib/esm/node.d.ts.map +1 -0
- package/node_modules/domhandler/lib/esm/node.js +338 -0
- package/node_modules/domhandler/lib/esm/package.json +1 -0
- package/node_modules/domhandler/lib/index.d.ts +76 -0
- package/node_modules/domhandler/lib/index.d.ts.map +1 -0
- package/node_modules/domhandler/lib/index.js +165 -0
- package/node_modules/domhandler/lib/node.d.ts +245 -0
- package/node_modules/domhandler/lib/node.d.ts.map +1 -0
- package/node_modules/domhandler/lib/node.js +474 -0
- package/node_modules/domhandler/package.json +73 -0
- package/node_modules/domhandler/readme.md +92 -0
- package/node_modules/domutils/LICENSE +11 -0
- package/node_modules/domutils/lib/esm/feeds.d.ts +71 -0
- package/node_modules/domutils/lib/esm/feeds.d.ts.map +1 -0
- package/node_modules/domutils/lib/esm/feeds.js +183 -0
- package/node_modules/domutils/lib/esm/feeds.js.map +1 -0
- package/node_modules/domutils/lib/esm/helpers.d.ts +59 -0
- package/node_modules/domutils/lib/esm/helpers.d.ts.map +1 -0
- package/node_modules/domutils/lib/esm/helpers.js +136 -0
- package/node_modules/domutils/lib/esm/helpers.js.map +1 -0
- package/node_modules/domutils/lib/esm/index.d.ts +10 -0
- package/node_modules/domutils/lib/esm/index.d.ts.map +1 -0
- package/node_modules/domutils/lib/esm/index.js +10 -0
- package/node_modules/domutils/lib/esm/index.js.map +1 -0
- package/node_modules/domutils/lib/esm/legacy.d.ts +79 -0
- package/node_modules/domutils/lib/esm/legacy.d.ts.map +1 -0
- package/node_modules/domutils/lib/esm/legacy.js +152 -0
- package/node_modules/domutils/lib/esm/legacy.js.map +1 -0
- package/node_modules/domutils/lib/esm/manipulation.d.ts +49 -0
- package/node_modules/domutils/lib/esm/manipulation.d.ts.map +1 -0
- package/node_modules/domutils/lib/esm/manipulation.js +134 -0
- package/node_modules/domutils/lib/esm/manipulation.js.map +1 -0
- package/node_modules/domutils/lib/esm/package.json +1 -0
- package/node_modules/domutils/lib/esm/querying.d.ts +64 -0
- package/node_modules/domutils/lib/esm/querying.d.ts.map +1 -0
- package/node_modules/domutils/lib/esm/querying.js +142 -0
- package/node_modules/domutils/lib/esm/querying.js.map +1 -0
- package/node_modules/domutils/lib/esm/stringify.d.ts +46 -0
- package/node_modules/domutils/lib/esm/stringify.d.ts.map +1 -0
- package/node_modules/domutils/lib/esm/stringify.js +81 -0
- package/node_modules/domutils/lib/esm/stringify.js.map +1 -0
- package/node_modules/domutils/lib/esm/traversal.d.ts +67 -0
- package/node_modules/domutils/lib/esm/traversal.d.ts.map +1 -0
- package/node_modules/domutils/lib/esm/traversal.js +112 -0
- package/node_modules/domutils/lib/esm/traversal.js.map +1 -0
- package/node_modules/domutils/lib/feeds.d.ts +71 -0
- package/node_modules/domutils/lib/feeds.d.ts.map +1 -0
- package/node_modules/domutils/lib/feeds.js +190 -0
- package/node_modules/domutils/lib/feeds.js.map +1 -0
- package/node_modules/domutils/lib/helpers.d.ts +59 -0
- package/node_modules/domutils/lib/helpers.d.ts.map +1 -0
- package/node_modules/domutils/lib/helpers.js +142 -0
- package/node_modules/domutils/lib/helpers.js.map +1 -0
- package/node_modules/domutils/lib/index.d.ts +10 -0
- package/node_modules/domutils/lib/index.d.ts.map +1 -0
- package/node_modules/domutils/lib/index.js +33 -0
- package/node_modules/domutils/lib/index.js.map +1 -0
- package/node_modules/domutils/lib/legacy.d.ts +79 -0
- package/node_modules/domutils/lib/legacy.d.ts.map +1 -0
- package/node_modules/domutils/lib/legacy.js +168 -0
- package/node_modules/domutils/lib/legacy.js.map +1 -0
- package/node_modules/domutils/lib/manipulation.d.ts +49 -0
- package/node_modules/domutils/lib/manipulation.d.ts.map +1 -0
- package/node_modules/domutils/lib/manipulation.js +142 -0
- package/node_modules/domutils/lib/manipulation.js.map +1 -0
- package/node_modules/domutils/lib/querying.d.ts +64 -0
- package/node_modules/domutils/lib/querying.d.ts.map +1 -0
- package/node_modules/domutils/lib/querying.js +155 -0
- package/node_modules/domutils/lib/querying.js.map +1 -0
- package/node_modules/domutils/lib/stringify.d.ts +46 -0
- package/node_modules/domutils/lib/stringify.d.ts.map +1 -0
- package/node_modules/domutils/lib/stringify.js +91 -0
- package/node_modules/domutils/lib/stringify.js.map +1 -0
- package/node_modules/domutils/lib/traversal.d.ts +67 -0
- package/node_modules/domutils/lib/traversal.d.ts.map +1 -0
- package/node_modules/domutils/lib/traversal.js +125 -0
- package/node_modules/domutils/lib/traversal.js.map +1 -0
- package/node_modules/domutils/package.json +79 -0
- package/node_modules/domutils/readme.md +31 -0
- package/node_modules/entities/LICENSE +11 -0
- package/node_modules/entities/lib/decode.d.ts +211 -0
- package/node_modules/entities/lib/decode.d.ts.map +1 -0
- package/node_modules/entities/lib/decode.js +536 -0
- package/node_modules/entities/lib/decode.js.map +1 -0
- package/node_modules/entities/lib/decode_codepoint.d.ts +19 -0
- package/node_modules/entities/lib/decode_codepoint.d.ts.map +1 -0
- package/node_modules/entities/lib/decode_codepoint.js +76 -0
- package/node_modules/entities/lib/decode_codepoint.js.map +1 -0
- package/node_modules/entities/lib/encode.d.ts +22 -0
- package/node_modules/entities/lib/encode.d.ts.map +1 -0
- package/node_modules/entities/lib/encode.js +77 -0
- package/node_modules/entities/lib/encode.js.map +1 -0
- package/node_modules/entities/lib/escape.d.ts +43 -0
- package/node_modules/entities/lib/escape.d.ts.map +1 -0
- package/node_modules/entities/lib/escape.js +122 -0
- package/node_modules/entities/lib/escape.js.map +1 -0
- package/node_modules/entities/lib/esm/decode.d.ts +211 -0
- package/node_modules/entities/lib/esm/decode.d.ts.map +1 -0
- package/node_modules/entities/lib/esm/decode.js +496 -0
- package/node_modules/entities/lib/esm/decode.js.map +1 -0
- package/node_modules/entities/lib/esm/decode_codepoint.d.ts +19 -0
- package/node_modules/entities/lib/esm/decode_codepoint.d.ts.map +1 -0
- package/node_modules/entities/lib/esm/decode_codepoint.js +71 -0
- package/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
- package/node_modules/entities/lib/esm/encode.d.ts +22 -0
- package/node_modules/entities/lib/esm/encode.d.ts.map +1 -0
- package/node_modules/entities/lib/esm/encode.js +69 -0
- package/node_modules/entities/lib/esm/encode.js.map +1 -0
- package/node_modules/entities/lib/esm/escape.d.ts +43 -0
- package/node_modules/entities/lib/esm/escape.d.ts.map +1 -0
- package/node_modules/entities/lib/esm/escape.js +116 -0
- package/node_modules/entities/lib/esm/escape.js.map +1 -0
- package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts +3 -0
- package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map +1 -0
- package/node_modules/entities/lib/esm/generated/decode-data-html.js +7 -0
- package/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
- package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts +3 -0
- package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map +1 -0
- package/node_modules/entities/lib/esm/generated/decode-data-xml.js +7 -0
- package/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
- package/node_modules/entities/lib/esm/generated/encode-html.d.ts +8 -0
- package/node_modules/entities/lib/esm/generated/encode-html.d.ts.map +1 -0
- package/node_modules/entities/lib/esm/generated/encode-html.js +10 -0
- package/node_modules/entities/lib/esm/generated/encode-html.js.map +1 -0
- package/node_modules/entities/lib/esm/index.d.ts +96 -0
- package/node_modules/entities/lib/esm/index.d.ts.map +1 -0
- package/node_modules/entities/lib/esm/index.js +99 -0
- package/node_modules/entities/lib/esm/index.js.map +1 -0
- package/node_modules/entities/lib/esm/package.json +1 -0
- package/node_modules/entities/lib/generated/decode-data-html.d.ts +3 -0
- package/node_modules/entities/lib/generated/decode-data-html.d.ts.map +1 -0
- package/node_modules/entities/lib/generated/decode-data-html.js +9 -0
- package/node_modules/entities/lib/generated/decode-data-html.js.map +1 -0
- package/node_modules/entities/lib/generated/decode-data-xml.d.ts +3 -0
- package/node_modules/entities/lib/generated/decode-data-xml.d.ts.map +1 -0
- package/node_modules/entities/lib/generated/decode-data-xml.js +9 -0
- package/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -0
- package/node_modules/entities/lib/generated/encode-html.d.ts +8 -0
- package/node_modules/entities/lib/generated/encode-html.d.ts.map +1 -0
- package/node_modules/entities/lib/generated/encode-html.js +12 -0
- package/node_modules/entities/lib/generated/encode-html.js.map +1 -0
- package/node_modules/entities/lib/index.d.ts +96 -0
- package/node_modules/entities/lib/index.d.ts.map +1 -0
- package/node_modules/entities/lib/index.js +126 -0
- package/node_modules/entities/lib/index.js.map +1 -0
- package/node_modules/entities/package.json +90 -0
- package/node_modules/entities/readme.md +122 -0
- package/node_modules/he/LICENSE-MIT.txt +20 -0
- package/node_modules/he/README.md +379 -0
- package/node_modules/he/bin/he +148 -0
- package/node_modules/he/he.js +345 -0
- package/node_modules/he/man/he.1 +78 -0
- package/node_modules/he/package.json +58 -0
- package/node_modules/node-html-parser/CHANGELOG.md +137 -0
- package/node_modules/node-html-parser/LICENSE +7 -0
- package/node_modules/node-html-parser/README.md +365 -0
- package/node_modules/node-html-parser/dist/back.d.ts +1 -0
- package/node_modules/node-html-parser/dist/back.js +6 -0
- package/node_modules/node-html-parser/dist/index.d.ts +20 -0
- package/node_modules/node-html-parser/dist/index.js +32 -0
- package/node_modules/node-html-parser/dist/main.js +1646 -0
- package/node_modules/node-html-parser/dist/matcher.d.ts +6 -0
- package/node_modules/node-html-parser/dist/matcher.js +106 -0
- package/node_modules/node-html-parser/dist/nodes/comment.d.ts +20 -0
- package/node_modules/node-html-parser/dist/nodes/comment.js +57 -0
- package/node_modules/node-html-parser/dist/nodes/html.d.ts +240 -0
- package/node_modules/node-html-parser/dist/nodes/html.js +1218 -0
- package/node_modules/node-html-parser/dist/nodes/node.d.ts +24 -0
- package/node_modules/node-html-parser/dist/nodes/node.js +52 -0
- package/node_modules/node-html-parser/dist/nodes/text.d.ts +44 -0
- package/node_modules/node-html-parser/dist/nodes/text.js +144 -0
- package/node_modules/node-html-parser/dist/nodes/type.d.ts +6 -0
- package/node_modules/node-html-parser/dist/nodes/type.js +9 -0
- package/node_modules/node-html-parser/dist/parse.d.ts +1 -0
- package/node_modules/node-html-parser/dist/parse.js +5 -0
- package/node_modules/node-html-parser/dist/valid.d.ts +6 -0
- package/node_modules/node-html-parser/dist/valid.js +13 -0
- package/node_modules/node-html-parser/dist/void-tag.d.ts +7 -0
- package/node_modules/node-html-parser/dist/void-tag.js +29 -0
- package/node_modules/node-html-parser/package.json +114 -0
- package/node_modules/nth-check/LICENSE +11 -0
- package/node_modules/nth-check/README.md +136 -0
- package/node_modules/nth-check/lib/compile.d.ts +55 -0
- package/node_modules/nth-check/lib/compile.d.ts.map +1 -0
- package/node_modules/nth-check/lib/compile.js +121 -0
- package/node_modules/nth-check/lib/compile.js.map +1 -0
- package/node_modules/nth-check/lib/esm/compile.d.ts +55 -0
- package/node_modules/nth-check/lib/esm/compile.d.ts.map +1 -0
- package/node_modules/nth-check/lib/esm/compile.js +113 -0
- package/node_modules/nth-check/lib/esm/compile.js.map +1 -0
- package/node_modules/nth-check/lib/esm/index.d.ts +59 -0
- package/node_modules/nth-check/lib/esm/index.d.ts.map +1 -0
- package/node_modules/nth-check/lib/esm/index.js +63 -0
- package/node_modules/nth-check/lib/esm/index.js.map +1 -0
- package/node_modules/nth-check/lib/esm/package.json +1 -0
- package/node_modules/nth-check/lib/esm/parse.d.ts +9 -0
- package/node_modules/nth-check/lib/esm/parse.d.ts.map +1 -0
- package/node_modules/nth-check/lib/esm/parse.js +73 -0
- package/node_modules/nth-check/lib/esm/parse.js.map +1 -0
- package/node_modules/nth-check/lib/index.d.ts +59 -0
- package/node_modules/nth-check/lib/index.d.ts.map +1 -0
- package/node_modules/nth-check/lib/index.js +70 -0
- package/node_modules/nth-check/lib/index.js.map +1 -0
- package/node_modules/nth-check/lib/parse.d.ts +9 -0
- package/node_modules/nth-check/lib/parse.d.ts.map +1 -0
- package/node_modules/nth-check/lib/parse.js +77 -0
- package/node_modules/nth-check/lib/parse.js.map +1 -0
- package/node_modules/nth-check/package.json +78 -0
- package/package.json +154 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
5
|
+
const ssm = new client_ssm_1.SSM();
|
|
6
|
+
const SLEEP_MS = 2900;
|
|
7
|
+
const handler = async (event, context) => {
|
|
8
|
+
console.log('Event: %j', { ...event, ResponseURL: '...' });
|
|
9
|
+
if (event.RequestType !== 'Create') {
|
|
10
|
+
// do nothing
|
|
11
|
+
return {};
|
|
12
|
+
}
|
|
13
|
+
// only Create case
|
|
14
|
+
const resourceProperties = event.ResourceProperties;
|
|
15
|
+
const instanceId = event.ResourceProperties.InstanceId;
|
|
16
|
+
const documentName = event.ResourceProperties.DocumentName;
|
|
17
|
+
const cloudWatchLogGroupName = event.ResourceProperties.CloudWatchLogGroupName;
|
|
18
|
+
// debug
|
|
19
|
+
console.log('ResourceProperties raw: %j', resourceProperties);
|
|
20
|
+
console.log('InstanceId: %s', event.ResourceProperties.InstanceId);
|
|
21
|
+
console.log('VSCodePassword: %s', event.ResourceProperties.VSCodePassword);
|
|
22
|
+
// to be able to modify them
|
|
23
|
+
const resourcePropertiesPartial = resourceProperties;
|
|
24
|
+
console.log('ResourceProperties before: %j', resourcePropertiesPartial);
|
|
25
|
+
delete resourcePropertiesPartial.ServiceToken;
|
|
26
|
+
if (resourcePropertiesPartial.ServiceTimeout) {
|
|
27
|
+
delete resourcePropertiesPartial.ServiceTimeout;
|
|
28
|
+
}
|
|
29
|
+
delete resourcePropertiesPartial.InstanceId;
|
|
30
|
+
delete resourcePropertiesPartial.DocumentName;
|
|
31
|
+
delete resourcePropertiesPartial.CloudWatchLogGroupName;
|
|
32
|
+
if (resourcePropertiesPartial.PhysicalResourceId) {
|
|
33
|
+
delete resourcePropertiesPartial.PhysicalResourceId;
|
|
34
|
+
}
|
|
35
|
+
console.log('ResourceProperties filtered after: %j', resourcePropertiesPartial);
|
|
36
|
+
const parameters = {};
|
|
37
|
+
for (const [key, value] of Object.entries(resourcePropertiesPartial)) {
|
|
38
|
+
parameters[key] = [value];
|
|
39
|
+
}
|
|
40
|
+
console.log('mapped parameters: %j', parameters);
|
|
41
|
+
let attemptNo = 0;
|
|
42
|
+
let timeRemaining = context.getRemainingTimeInMillis();
|
|
43
|
+
console.log(`Running SSM Document '${documentName}' on EC2 instance '${instanceId}'. Logging to '${cloudWatchLogGroupName}' with parameters: '${JSON.stringify(parameters)}'`);
|
|
44
|
+
while (true) {
|
|
45
|
+
attemptNo += 1;
|
|
46
|
+
console.log(`Attempt: ${attemptNo}. Time Remaining: ${timeRemaining / 1000}s`);
|
|
47
|
+
try {
|
|
48
|
+
const response = await ssm.sendCommand({
|
|
49
|
+
DocumentName: documentName,
|
|
50
|
+
InstanceIds: [instanceId],
|
|
51
|
+
CloudWatchOutputConfig: {
|
|
52
|
+
CloudWatchLogGroupName: cloudWatchLogGroupName,
|
|
53
|
+
CloudWatchOutputEnabled: true,
|
|
54
|
+
},
|
|
55
|
+
Parameters: parameters,
|
|
56
|
+
});
|
|
57
|
+
console.log(`response: ${JSON.stringify(response)}`);
|
|
58
|
+
const command = response.Command;
|
|
59
|
+
const commandId = command.CommandId;
|
|
60
|
+
const responseData = { CommandId: commandId };
|
|
61
|
+
switch (command.Status) {
|
|
62
|
+
case 'Pending':
|
|
63
|
+
case 'InProgress':
|
|
64
|
+
timeRemaining = context.getRemainingTimeInMillis();
|
|
65
|
+
if (timeRemaining > SLEEP_MS) {
|
|
66
|
+
console.log(`Instance ${instanceId} not ready: 'InProgress'. Sleeping: ${SLEEP_MS / 1000}s`);
|
|
67
|
+
await new Promise(resolve => setTimeout(resolve, SLEEP_MS));
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} timed out while lambda in progress`);
|
|
72
|
+
}
|
|
73
|
+
case 'Success':
|
|
74
|
+
console.log(`Instance ${instanceId} successfully bootstrapped`);
|
|
75
|
+
return { Data: responseData };
|
|
76
|
+
case 'TimedOut':
|
|
77
|
+
throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} timed out`);
|
|
78
|
+
case 'Cancelled':
|
|
79
|
+
throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} cancelled`);
|
|
80
|
+
case 'Failed':
|
|
81
|
+
throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} failed`);
|
|
82
|
+
default:
|
|
83
|
+
throw new Error(`SSM Document ${documentName} on EC2 instance ${instanceId} status ${command.Status}`);
|
|
84
|
+
}
|
|
85
|
+
return { Data: responseData };
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.log(error);
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
exports.handler = handler;
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFsbGVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnN0YWxsZXIvaW5zdGFsbGVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBbUQ7QUFNbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxnQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBRWYsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLEtBQXFCLEVBQUUsT0FBZ0IsRUFBNEIsRUFBRTtJQUNqRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRTNELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxhQUFhO1FBQ2IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0lBQ3BELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7SUFDdkQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQztJQUMzRCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQztJQUUvRSxRQUFRO0lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTNFLDRCQUE0QjtJQUM1QixNQUFNLHlCQUF5QixHQUFHLGtCQUFtRixDQUFDO0lBQ3RILE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJQUN4RSxPQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztJQUM5QyxJQUFJLHlCQUF5QixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLE9BQU8seUJBQXlCLENBQUMsY0FBYyxDQUFDO0lBQ2xELENBQUM7SUFDRCxPQUFPLHlCQUF5QixDQUFDLFVBQVUsQ0FBQztJQUM1QyxPQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztJQUM5QyxPQUFPLHlCQUF5QixDQUFDLHNCQUFzQixDQUFDO0lBQ3hELElBQUkseUJBQXlCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNqRCxPQUFPLHlCQUF5QixDQUFDLGtCQUFrQixDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFFaEYsTUFBTSxVQUFVLEdBQTZCLEVBQUUsQ0FBQztJQUNoRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7UUFDckUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFakQsSUFBSSxTQUFTLEdBQVcsQ0FBQyxDQUFDO0lBQzFCLElBQUksYUFBYSxHQUFXLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBRS9ELE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLFlBQVksc0JBQXNCLFVBQVUsa0JBQWtCLHNCQUFzQix1QkFBdUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFL0ssT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNaLFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksU0FBUyxxQkFBcUIsYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFFL0UsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDO2dCQUNyQyxZQUFZLEVBQUUsWUFBWTtnQkFDMUIsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDO2dCQUN6QixzQkFBc0IsRUFBRTtvQkFDdEIsc0JBQXNCLEVBQUUsc0JBQXNCO29CQUM5Qyx1QkFBdUIsRUFBRSxJQUFJO2lCQUM5QjtnQkFDRCxVQUFVLEVBQUUsVUFBVTthQUN2QixDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckQsTUFBTSxPQUFPLEdBQVksUUFBUSxDQUFDLE9BQVEsQ0FBQztZQUMzQyxNQUFNLFNBQVMsR0FBVyxPQUFPLENBQUMsU0FBVSxDQUFDO1lBQzdDLE1BQU0sWUFBWSxHQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBRW5ELFFBQVEsT0FBTyxDQUFDLE1BQU8sRUFBRSxDQUFDO2dCQUN4QixLQUFLLFNBQVMsQ0FBQztnQkFDZixLQUFLLFlBQVk7b0JBQ2YsYUFBYSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO29CQUNuRCxJQUFJLGFBQWEsR0FBRyxRQUFRLEVBQUUsQ0FBQzt3QkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLFVBQVUsdUNBQXVDLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO3dCQUM3RixNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUM1RCxNQUFNO29CQUNSLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixZQUFZLG9CQUFvQixVQUFVLHFDQUFxQyxDQUFDLENBQUM7b0JBQ25ILENBQUM7Z0JBQ0gsS0FBSyxTQUFTO29CQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxVQUFVLDRCQUE0QixDQUFDLENBQUM7b0JBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssVUFBVTtvQkFDYixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixZQUFZLG9CQUFvQixVQUFVLFlBQVksQ0FBQyxDQUFDO2dCQUMxRixLQUFLLFdBQVc7b0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsWUFBWSxvQkFBb0IsVUFBVSxZQUFZLENBQUMsQ0FBQztnQkFDMUYsS0FBSyxRQUFRO29CQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLFlBQVksb0JBQW9CLFVBQVUsU0FBUyxDQUFDLENBQUM7Z0JBQ3ZGO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLFlBQVksb0JBQW9CLFVBQVUsV0FBVyxPQUFPLENBQUMsTUFBTyxFQUFFLENBQUMsQ0FBQztZQUM1RyxDQUFDO1lBRUQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUVoQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQztBQWpHVyxRQUFBLE9BQU8sV0FpR2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCwgU1NNIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbSc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgdHlwZSB7IE9uRXZlbnRSZXF1ZXN0LCBPbkV2ZW50UmVzcG9uc2UgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzL2xpYi9wcm92aWRlci1mcmFtZXdvcmsvdHlwZXMnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25DdXN0b21SZXNvdXJjZVJlc291cmNlUHJvcGVydGllc0NvbW1vbiB9IGZyb20gJ2F3cy1sYW1iZGEvdHJpZ2dlci9jbG91ZGZvcm1hdGlvbi1jdXN0b20tcmVzb3VyY2UnO1xuXG5jb25zdCBzc20gPSBuZXcgU1NNKCk7XG5jb25zdCBTTEVFUF9NUyA9IDI5MDA7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gYXN5bmMgKGV2ZW50OiBPbkV2ZW50UmVxdWVzdCwgY29udGV4dDogQ29udGV4dCk6IFByb21pc2U8T25FdmVudFJlc3BvbnNlPiA9PiB7XG4gIGNvbnNvbGUubG9nKCdFdmVudDogJWonLCB7IC4uLmV2ZW50LCBSZXNwb25zZVVSTDogJy4uLicgfSk7XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlICE9PSAnQ3JlYXRlJykge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvLyBvbmx5IENyZWF0ZSBjYXNlXG4gIGNvbnN0IHJlc291cmNlUHJvcGVydGllcyA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcztcbiAgY29uc3QgaW5zdGFuY2VJZCA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5JbnN0YW5jZUlkO1xuICBjb25zdCBkb2N1bWVudE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG9jdW1lbnROYW1lO1xuICBjb25zdCBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkNsb3VkV2F0Y2hMb2dHcm91cE5hbWU7XG5cbiAgLy8gZGVidWdcbiAgY29uc29sZS5sb2coJ1Jlc291cmNlUHJvcGVydGllcyByYXc6ICVqJywgcmVzb3VyY2VQcm9wZXJ0aWVzKTtcbiAgY29uc29sZS5sb2coJ0luc3RhbmNlSWQ6ICVzJywgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkluc3RhbmNlSWQpO1xuICBjb25zb2xlLmxvZygnVlNDb2RlUGFzc3dvcmQ6ICVzJywgZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLlZTQ29kZVBhc3N3b3JkKTtcblxuICAvLyB0byBiZSBhYmxlIHRvIG1vZGlmeSB0aGVtXG4gIGNvbnN0IHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwgPSByZXNvdXJjZVByb3BlcnRpZXMgYXMgUGFydGlhbDxDbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlUmVzb3VyY2VQcm9wZXJ0aWVzQ29tbW9uPjtcbiAgY29uc29sZS5sb2coJ1Jlc291cmNlUHJvcGVydGllcyBiZWZvcmU6ICVqJywgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbCk7XG4gIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLlNlcnZpY2VUb2tlbjtcbiAgaWYgKHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwuU2VydmljZVRpbWVvdXQpIHtcbiAgICBkZWxldGUgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5TZXJ2aWNlVGltZW91dDtcbiAgfVxuICBkZWxldGUgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5JbnN0YW5jZUlkO1xuICBkZWxldGUgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbC5Eb2N1bWVudE5hbWU7XG4gIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLkNsb3VkV2F0Y2hMb2dHcm91cE5hbWU7XG4gIGlmIChyZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLlBoeXNpY2FsUmVzb3VyY2VJZCkge1xuICAgIGRlbGV0ZSByZXNvdXJjZVByb3BlcnRpZXNQYXJ0aWFsLlBoeXNpY2FsUmVzb3VyY2VJZDtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKCdSZXNvdXJjZVByb3BlcnRpZXMgZmlsdGVyZWQgYWZ0ZXI6ICVqJywgcmVzb3VyY2VQcm9wZXJ0aWVzUGFydGlhbCk7XG5cbiAgY29uc3QgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc291cmNlUHJvcGVydGllc1BhcnRpYWwpKSB7XG4gICAgcGFyYW1ldGVyc1trZXldID0gW3ZhbHVlXTtcbiAgfVxuICBjb25zb2xlLmxvZygnbWFwcGVkIHBhcmFtZXRlcnM6ICVqJywgcGFyYW1ldGVycyk7XG5cbiAgbGV0IGF0dGVtcHRObzogbnVtYmVyID0gMDtcbiAgbGV0IHRpbWVSZW1haW5pbmc6IG51bWJlciA9IGNvbnRleHQuZ2V0UmVtYWluaW5nVGltZUluTWlsbGlzKCk7XG5cbiAgY29uc29sZS5sb2coYFJ1bm5pbmcgU1NNIERvY3VtZW50ICcke2RvY3VtZW50TmFtZX0nIG9uIEVDMiBpbnN0YW5jZSAnJHtpbnN0YW5jZUlkfScuIExvZ2dpbmcgdG8gJyR7Y2xvdWRXYXRjaExvZ0dyb3VwTmFtZX0nIHdpdGggcGFyYW1ldGVyczogJyR7SlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycyl9J2ApO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgYXR0ZW1wdE5vICs9IDE7XG4gICAgY29uc29sZS5sb2coYEF0dGVtcHQ6ICR7YXR0ZW1wdE5vfS4gVGltZSBSZW1haW5pbmc6ICR7dGltZVJlbWFpbmluZyAvIDEwMDB9c2ApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc3NtLnNlbmRDb21tYW5kKHtcbiAgICAgICAgRG9jdW1lbnROYW1lOiBkb2N1bWVudE5hbWUsXG4gICAgICAgIEluc3RhbmNlSWRzOiBbaW5zdGFuY2VJZF0sXG4gICAgICAgIENsb3VkV2F0Y2hPdXRwdXRDb25maWc6IHtcbiAgICAgICAgICBDbG91ZFdhdGNoTG9nR3JvdXBOYW1lOiBjbG91ZFdhdGNoTG9nR3JvdXBOYW1lLFxuICAgICAgICAgIENsb3VkV2F0Y2hPdXRwdXRFbmFibGVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBQYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGByZXNwb25zZTogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YCk7XG4gICAgICBjb25zdCBjb21tYW5kOiBDb21tYW5kID0gcmVzcG9uc2UuQ29tbWFuZCE7XG4gICAgICBjb25zdCBjb21tYW5kSWQ6IHN0cmluZyA9IGNvbW1hbmQuQ29tbWFuZElkITtcbiAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YTogYW55ID0geyBDb21tYW5kSWQ6IGNvbW1hbmRJZCB9O1xuXG4gICAgICBzd2l0Y2ggKGNvbW1hbmQuU3RhdHVzISkge1xuICAgICAgICBjYXNlICdQZW5kaW5nJzpcbiAgICAgICAgY2FzZSAnSW5Qcm9ncmVzcyc6XG4gICAgICAgICAgdGltZVJlbWFpbmluZyA9IGNvbnRleHQuZ2V0UmVtYWluaW5nVGltZUluTWlsbGlzKCk7XG4gICAgICAgICAgaWYgKHRpbWVSZW1haW5pbmcgPiBTTEVFUF9NUykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEluc3RhbmNlICR7aW5zdGFuY2VJZH0gbm90IHJlYWR5OiAnSW5Qcm9ncmVzcycuIFNsZWVwaW5nOiAke1NMRUVQX01TIC8gMTAwMH1zYCk7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgU0xFRVBfTVMpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNTTSBEb2N1bWVudCAke2RvY3VtZW50TmFtZX0gb24gRUMyIGluc3RhbmNlICR7aW5zdGFuY2VJZH0gdGltZWQgb3V0IHdoaWxlIGxhbWJkYSBpbiBwcm9ncmVzc2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnU3VjY2Vzcyc6XG4gICAgICAgICAgY29uc29sZS5sb2coYEluc3RhbmNlICR7aW5zdGFuY2VJZH0gc3VjY2Vzc2Z1bGx5IGJvb3RzdHJhcHBlZGApO1xuICAgICAgICAgIHJldHVybiB7IERhdGE6IHJlc3BvbnNlRGF0YSB9O1xuICAgICAgICBjYXNlICdUaW1lZE91dCc6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTU00gRG9jdW1lbnQgJHtkb2N1bWVudE5hbWV9IG9uIEVDMiBpbnN0YW5jZSAke2luc3RhbmNlSWR9IHRpbWVkIG91dGApO1xuICAgICAgICBjYXNlICdDYW5jZWxsZWQnOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU1NNIERvY3VtZW50ICR7ZG9jdW1lbnROYW1lfSBvbiBFQzIgaW5zdGFuY2UgJHtpbnN0YW5jZUlkfSBjYW5jZWxsZWRgKTtcbiAgICAgICAgY2FzZSAnRmFpbGVkJzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNTTSBEb2N1bWVudCAke2RvY3VtZW50TmFtZX0gb24gRUMyIGluc3RhbmNlICR7aW5zdGFuY2VJZH0gZmFpbGVkYCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTU00gRG9jdW1lbnQgJHtkb2N1bWVudE5hbWV9IG9uIEVDMiBpbnN0YW5jZSAke2luc3RhbmNlSWR9IHN0YXR1cyAke2NvbW1hbmQuU3RhdHVzIX1gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgRGF0YTogcmVzcG9uc2VEYXRhIH07XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59OyJdfQ==
|
package/lib/mappings.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAmiSSMParameterForLinuxArchitectureAndFlavor = getAmiSSMParameterForLinuxArchitectureAndFlavor;
|
|
4
|
+
/**
|
|
5
|
+
* SSM Parameters for the Architecture and Flavor of the Linux system.
|
|
6
|
+
*
|
|
7
|
+
* aws ssm get-parameters-by-path --path "/aws/service/canonical/ubuntu/" --recursive --query "Parameters[*].Name" > canonical-ami.txt
|
|
8
|
+
* aws ssm get-parameters-by-path --path "/aws/service/ami-amazon-linux-latest/" --recursive --query "Parameters[*].Name" > amazon-ami.txt
|
|
9
|
+
*/
|
|
10
|
+
const AmiSSMParameterForLinuxArchitectureAndFlavor = new Map([
|
|
11
|
+
// key, value
|
|
12
|
+
['arm-ubuntu22', '/aws/service/canonical/ubuntu/server/jammy/stable/current/arm64/hvm/ebs-gp2/ami-id'],
|
|
13
|
+
['arm-ubuntu24', '/aws/service/canonical/ubuntu/server/noble/stable/current/arm64/hvm/ebs-gp3/ami-id'],
|
|
14
|
+
['arm-al2023', '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-arm64'],
|
|
15
|
+
['amd64-ubuntu22', '/aws/service/canonical/ubuntu/server/jammy/stable/current/amd64/hvm/ebs-gp2/ami-id'],
|
|
16
|
+
['amd64-ubuntu24', '/aws/service/canonical/ubuntu/server/noble/stable/current/amd64/hvm/ebs-gp3/ami-id'],
|
|
17
|
+
['amd64-al2023', '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64'],
|
|
18
|
+
]);
|
|
19
|
+
function getAmiSSMParameterForLinuxArchitectureAndFlavor(arch, flavor) {
|
|
20
|
+
if (AmiSSMParameterForLinuxArchitectureAndFlavor.has(`${arch}-${flavor}`)) {
|
|
21
|
+
return AmiSSMParameterForLinuxArchitectureAndFlavor.get(`${arch}-${flavor}`);
|
|
22
|
+
}
|
|
23
|
+
throw new Error(`Linux architecture '${arch}' and flavor '${flavor}' not supported`);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFwcGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsMEdBS0M7QUFyQkQ7Ozs7O0dBS0c7QUFDSCxNQUFNLDRDQUE0QyxHQUFHLElBQUksR0FBRyxDQUFpQjtJQUMzRSxhQUFhO0lBQ2IsQ0FBQyxjQUFjLEVBQUUsb0ZBQW9GLENBQUM7SUFDdEcsQ0FBQyxjQUFjLEVBQUUsb0ZBQW9GLENBQUM7SUFDdEcsQ0FBQyxZQUFZLEVBQUUsc0VBQXNFLENBQUM7SUFDdEYsQ0FBQyxnQkFBZ0IsRUFBRSxvRkFBb0YsQ0FBQztJQUN4RyxDQUFDLGdCQUFnQixFQUFFLG9GQUFvRixDQUFDO0lBQ3hHLENBQUMsY0FBYyxFQUFFLHVFQUF1RSxDQUFDO0NBQzFGLENBQUMsQ0FBQztBQUVILFNBQWdCLCtDQUErQyxDQUFDLElBQTJCLEVBQUUsTUFBdUI7SUFDbEgsSUFBSSw0Q0FBNEMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzFFLE9BQU8sNENBQTRDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFFLENBQUM7SUFDaEYsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLElBQUksaUJBQWlCLE1BQU0saUJBQWlCLENBQUMsQ0FBQztBQUN2RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGludXhBcmNoaXRlY3R1cmVUeXBlLCBMaW51eEZsYXZvclR5cGUgfSBmcm9tICcuL3ZzY29kZS1zZXJ2ZXInO1xuLyoqXG4gKiBTU00gUGFyYW1ldGVycyBmb3IgdGhlIEFyY2hpdGVjdHVyZSBhbmQgRmxhdm9yIG9mIHRoZSBMaW51eCBzeXN0ZW0uXG4gKlxuICogYXdzIHNzbSBnZXQtcGFyYW1ldGVycy1ieS1wYXRoIC0tcGF0aCBcIi9hd3Mvc2VydmljZS9jYW5vbmljYWwvdWJ1bnR1L1wiIC0tcmVjdXJzaXZlIC0tcXVlcnkgXCJQYXJhbWV0ZXJzWypdLk5hbWVcIiAgPiBjYW5vbmljYWwtYW1pLnR4dFxuICogYXdzIHNzbSBnZXQtcGFyYW1ldGVycy1ieS1wYXRoIC0tcGF0aCBcIi9hd3Mvc2VydmljZS9hbWktYW1hem9uLWxpbnV4LWxhdGVzdC9cIiAtLXJlY3Vyc2l2ZSAtLXF1ZXJ5IFwiUGFyYW1ldGVyc1sqXS5OYW1lXCIgID4gYW1hem9uLWFtaS50eHRcbiAqL1xuY29uc3QgQW1pU1NNUGFyYW1ldGVyRm9yTGludXhBcmNoaXRlY3R1cmVBbmRGbGF2b3IgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXG4gIC8vIGtleSwgdmFsdWVcbiAgWydhcm0tdWJ1bnR1MjInLCAnL2F3cy9zZXJ2aWNlL2Nhbm9uaWNhbC91YnVudHUvc2VydmVyL2phbW15L3N0YWJsZS9jdXJyZW50L2FybTY0L2h2bS9lYnMtZ3AyL2FtaS1pZCddLFxuICBbJ2FybS11YnVudHUyNCcsICcvYXdzL3NlcnZpY2UvY2Fub25pY2FsL3VidW50dS9zZXJ2ZXIvbm9ibGUvc3RhYmxlL2N1cnJlbnQvYXJtNjQvaHZtL2Vicy1ncDMvYW1pLWlkJ10sXG4gIFsnYXJtLWFsMjAyMycsICcvYXdzL3NlcnZpY2UvYW1pLWFtYXpvbi1saW51eC1sYXRlc3QvYWwyMDIzLWFtaS1rZXJuZWwtZGVmYXVsdC1hcm02NCddLFxuICBbJ2FtZDY0LXVidW50dTIyJywgJy9hd3Mvc2VydmljZS9jYW5vbmljYWwvdWJ1bnR1L3NlcnZlci9qYW1teS9zdGFibGUvY3VycmVudC9hbWQ2NC9odm0vZWJzLWdwMi9hbWktaWQnXSxcbiAgWydhbWQ2NC11YnVudHUyNCcsICcvYXdzL3NlcnZpY2UvY2Fub25pY2FsL3VidW50dS9zZXJ2ZXIvbm9ibGUvc3RhYmxlL2N1cnJlbnQvYW1kNjQvaHZtL2Vicy1ncDMvYW1pLWlkJ10sXG4gIFsnYW1kNjQtYWwyMDIzJywgJy9hd3Mvc2VydmljZS9hbWktYW1hem9uLWxpbnV4LWxhdGVzdC9hbDIwMjMtYW1pLWtlcm5lbC1kZWZhdWx0LXg4Nl82NCddLFxuXSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbWlTU01QYXJhbWV0ZXJGb3JMaW51eEFyY2hpdGVjdHVyZUFuZEZsYXZvcihhcmNoOiBMaW51eEFyY2hpdGVjdHVyZVR5cGUsIGZsYXZvcjogTGludXhGbGF2b3JUeXBlKTogc3RyaW5nIHtcbiAgaWYgKEFtaVNTTVBhcmFtZXRlckZvckxpbnV4QXJjaGl0ZWN0dXJlQW5kRmxhdm9yLmhhcyhgJHthcmNofS0ke2ZsYXZvcn1gKSkge1xuICAgIHJldHVybiBBbWlTU01QYXJhbWV0ZXJGb3JMaW51eEFyY2hpdGVjdHVyZUFuZEZsYXZvci5nZXQoYCR7YXJjaH0tJHtmbGF2b3J9YCkhO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgTGludXggYXJjaGl0ZWN0dXJlICcke2FyY2h9JyBhbmQgZmxhdm9yICcke2ZsYXZvcn0nIG5vdCBzdXBwb3J0ZWRgKTtcbn0iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IPrefixList } from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
export interface AwsManagedPrefixListProps {
|
|
4
|
+
/**
|
|
5
|
+
* Name of the aws managed prefix list.
|
|
6
|
+
* See: https://docs.aws.amazon.com/vpc/latest/userguide/working-with-aws-managed-prefix-lists.html#available-aws-managed-prefix-lists
|
|
7
|
+
* eg. com.amazonaws.global.cloudfront.origin-facing
|
|
8
|
+
*
|
|
9
|
+
* see all via aws ec2 describe-managed-prefix-lists --region <REGION> | jq -r '.PrefixLists[] | select (.PrefixListName == "com.amazonaws.global.cloudfront.origin-facing") | .PrefixListId'
|
|
10
|
+
*/
|
|
11
|
+
readonly name: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class AwsManagedPrefixList extends Construct {
|
|
14
|
+
readonly prefixList: IPrefixList;
|
|
15
|
+
constructor(scope: Construct, id: string, { name }: AwsManagedPrefixListProps);
|
|
16
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AwsManagedPrefixList = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
6
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
8
|
+
const custom_resources_1 = require("aws-cdk-lib/custom-resources");
|
|
9
|
+
const cdk_nag_1 = require("cdk-nag");
|
|
10
|
+
const constructs_1 = require("constructs");
|
|
11
|
+
// copied with grace from here until cdk supports it
|
|
12
|
+
// https://github.com/aws/aws-cdk/issues/15115#issuecomment-1665104687
|
|
13
|
+
class AwsManagedPrefixList extends constructs_1.Construct {
|
|
14
|
+
constructor(scope, id, { name }) {
|
|
15
|
+
super(scope, id);
|
|
16
|
+
const cr = new custom_resources_1.AwsCustomResource(this, 'GetPrefixListId', {
|
|
17
|
+
logGroup: new aws_logs_1.LogGroup(this, 'GetPrefixListIdLogGroup', {
|
|
18
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
19
|
+
retention: 1,
|
|
20
|
+
}),
|
|
21
|
+
onUpdate: {
|
|
22
|
+
service: '@aws-sdk/client-ec2',
|
|
23
|
+
action: 'DescribeManagedPrefixListsCommand',
|
|
24
|
+
parameters: {
|
|
25
|
+
Filters: [
|
|
26
|
+
{
|
|
27
|
+
Name: 'prefix-list-name',
|
|
28
|
+
Values: [name],
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
physicalResourceId: custom_resources_1.PhysicalResourceId.of(`${id}-${this.node.addr.slice(0, 16)}`),
|
|
33
|
+
},
|
|
34
|
+
policy: custom_resources_1.AwsCustomResourcePolicy.fromStatements([
|
|
35
|
+
new aws_iam_1.PolicyStatement({
|
|
36
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
37
|
+
actions: ['ec2:DescribeManagedPrefixLists'],
|
|
38
|
+
resources: ['*'],
|
|
39
|
+
}),
|
|
40
|
+
]),
|
|
41
|
+
role: new aws_iam_1.Role(this, 'GetPrefixListIdRole', {
|
|
42
|
+
assumedBy: new aws_iam_1.ServicePrincipal('lambda.amazonaws.com'),
|
|
43
|
+
}),
|
|
44
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
45
|
+
});
|
|
46
|
+
cdk_nag_1.NagSuppressions.addResourceSuppressions([
|
|
47
|
+
cr,
|
|
48
|
+
], [
|
|
49
|
+
{ id: 'AwsSolutions-IAM5', reason: 'For this provider wildcards are fine' },
|
|
50
|
+
], true);
|
|
51
|
+
const prefixListId = cr.getResponseField('PrefixLists.0.PrefixListId');
|
|
52
|
+
this.prefixList = aws_ec2_1.PrefixList.fromPrefixListId(this, 'PrefixList', prefixListId);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.AwsManagedPrefixList = AwsManagedPrefixList;
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4bGlzdC1yZXRyaWV2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJlZml4bGlzdC1yZXRyaWV2ZXIvcHJlZml4bGlzdC1yZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTRDO0FBQzVDLGlEQUE4RDtBQUM5RCxpREFBc0Y7QUFDdEYsbURBQWdEO0FBQ2hELG1FQUE4RztBQUM5RyxxQ0FBMEM7QUFDMUMsMkNBQXVDO0FBYXZDLG9EQUFvRDtBQUNwRCxzRUFBc0U7QUFDdEUsTUFBYSxvQkFBcUIsU0FBUSxzQkFBUztJQUdqRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEVBQUUsSUFBSSxFQUE2QjtRQUMzRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFBRSxHQUFHLElBQUksb0NBQWlCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3hELFFBQVEsRUFBRSxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLHlCQUF5QixFQUFFO2dCQUN0RCxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO2dCQUNwQyxTQUFTLEVBQUUsQ0FBQzthQUNiLENBQUM7WUFDRixRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLG1DQUFtQztnQkFDM0MsVUFBVSxFQUFFO29CQUNWLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsa0JBQWtCOzRCQUN4QixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUJBQ2Y7cUJBQ0Y7aUJBQ0Y7Z0JBQ0Qsa0JBQWtCLEVBQUUscUNBQWtCLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUNsRjtZQUNELE1BQU0sRUFBRSwwQ0FBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsT0FBTyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDakIsQ0FBQzthQUNILENBQUM7WUFDRixJQUFJLEVBQUUsSUFBSSxjQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO2dCQUMxQyxTQUFTLEVBQUUsSUFBSSwwQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQzthQUN4RCxDQUFDO1lBQ0YsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztTQUNyQyxDQUFDLENBQUM7UUFDSCx5QkFBZSxDQUFDLHVCQUF1QixDQUFDO1lBQ3RDLEVBQUU7U0FDSCxFQUFFO1lBQ0QsRUFBRSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLHNDQUFzQyxFQUFFO1NBQzVFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFVCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUV2RSxJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNsRixDQUFDO0NBQ0Y7QUE5Q0Qsb0RBOENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElQcmVmaXhMaXN0LCBQcmVmaXhMaXN0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCwgUm9sZSwgU2VydmljZVByaW5jaXBhbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgTG9nR3JvdXAgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSwgQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3ksIFBoeXNpY2FsUmVzb3VyY2VJZCB9IGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgTmFnU3VwcHJlc3Npb25zIH0gZnJvbSAnY2RrLW5hZyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBBd3NNYW5hZ2VkUHJlZml4TGlzdFByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGF3cyBtYW5hZ2VkIHByZWZpeCBsaXN0LlxuICAgKiBTZWU6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS93b3JraW5nLXdpdGgtYXdzLW1hbmFnZWQtcHJlZml4LWxpc3RzLmh0bWwjYXZhaWxhYmxlLWF3cy1tYW5hZ2VkLXByZWZpeC1saXN0c1xuICAgKiBlZy4gY29tLmFtYXpvbmF3cy5nbG9iYWwuY2xvdWRmcm9udC5vcmlnaW4tZmFjaW5nXG4gICAqXG4gICAqIHNlZSBhbGwgdmlhIGF3cyBlYzIgZGVzY3JpYmUtbWFuYWdlZC1wcmVmaXgtbGlzdHMgIC0tcmVnaW9uIDxSRUdJT04+IHwganEgLXIgJy5QcmVmaXhMaXN0c1tdIHwgc2VsZWN0ICguUHJlZml4TGlzdE5hbWUgPT0gXCJjb20uYW1hem9uYXdzLmdsb2JhbC5jbG91ZGZyb250Lm9yaWdpbi1mYWNpbmdcIikgfCAuUHJlZml4TGlzdElkJ1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG4vLyBjb3BpZWQgd2l0aCBncmFjZSBmcm9tIGhlcmUgdW50aWwgY2RrIHN1cHBvcnRzIGl0XG4vLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzE1MTE1I2lzc3VlY29tbWVudC0xNjY1MTA0Njg3XG5leHBvcnQgY2xhc3MgQXdzTWFuYWdlZFByZWZpeExpc3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4TGlzdDogSVByZWZpeExpc3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgeyBuYW1lIH06IEF3c01hbmFnZWRQcmVmaXhMaXN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgY3IgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0dldFByZWZpeExpc3RJZCcsIHtcbiAgICAgIGxvZ0dyb3VwOiBuZXcgTG9nR3JvdXAodGhpcywgJ0dldFByZWZpeExpc3RJZExvZ0dyb3VwJywge1xuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgIHJldGVudGlvbjogMSxcbiAgICAgIH0pLFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogJ0Bhd3Mtc2RrL2NsaWVudC1lYzInLFxuICAgICAgICBhY3Rpb246ICdEZXNjcmliZU1hbmFnZWRQcmVmaXhMaXN0c0NvbW1hbmQnLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgRmlsdGVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBOYW1lOiAncHJlZml4LWxpc3QtbmFtZScsXG4gICAgICAgICAgICAgIFZhbHVlczogW25hbWVdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IFBoeXNpY2FsUmVzb3VyY2VJZC5vZihgJHtpZH0tJHt0aGlzLm5vZGUuYWRkci5zbGljZSgwLCAxNil9YCksXG4gICAgICB9LFxuICAgICAgcG9saWN5OiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnZWMyOkRlc2NyaWJlTWFuYWdlZFByZWZpeExpc3RzJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgfSksXG4gICAgICBdKSxcbiAgICAgIHJvbGU6IG5ldyBSb2xlKHRoaXMsICdHZXRQcmVmaXhMaXN0SWRSb2xlJywge1xuICAgICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgfSksXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgTmFnU3VwcHJlc3Npb25zLmFkZFJlc291cmNlU3VwcHJlc3Npb25zKFtcbiAgICAgIGNyLFxuICAgIF0sIFtcbiAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNScsIHJlYXNvbjogJ0ZvciB0aGlzIHByb3ZpZGVyIHdpbGRjYXJkcyBhcmUgZmluZScgfSxcbiAgICBdLCB0cnVlKTtcblxuICAgIGNvbnN0IHByZWZpeExpc3RJZCA9IGNyLmdldFJlc3BvbnNlRmllbGQoJ1ByZWZpeExpc3RzLjAuUHJlZml4TGlzdElkJyk7XG5cbiAgICB0aGlzLnByZWZpeExpc3QgPSBQcmVmaXhMaXN0LmZyb21QcmVmaXhMaXN0SWQodGhpcywgJ1ByZWZpeExpc3QnLCBwcmVmaXhMaXN0SWQpO1xuICB9XG59Il19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
/**
|
|
4
|
+
* Props for SecretRetrieverFunction
|
|
5
|
+
*/
|
|
6
|
+
export interface SecretRetrieverFunctionProps extends lambda.FunctionOptions {
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* An AWS Lambda function which executes src/secret-retriever/secret-retriever.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SecretRetrieverFunction extends lambda.Function {
|
|
12
|
+
constructor(scope: Construct, id: string, props?: SecretRetrieverFunctionProps);
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SecretRetrieverFunction = void 0;
|
|
4
|
+
// ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
7
|
+
/**
|
|
8
|
+
* An AWS Lambda function which executes src/secret-retriever/secret-retriever.
|
|
9
|
+
*/
|
|
10
|
+
class SecretRetrieverFunction extends lambda.Function {
|
|
11
|
+
constructor(scope, id, props) {
|
|
12
|
+
super(scope, id, {
|
|
13
|
+
description: 'src/secret-retriever/secret-retriever.lambda.ts',
|
|
14
|
+
...props,
|
|
15
|
+
runtime: new lambda.Runtime('nodejs18.x', lambda.RuntimeFamily.NODEJS),
|
|
16
|
+
handler: 'index.handler',
|
|
17
|
+
code: lambda.Code.fromAsset(path.join(__dirname, '../../assets/secret-retriever/secret-retriever.lambda')),
|
|
18
|
+
});
|
|
19
|
+
this.addEnvironment('AWS_NODEJS_CONNECTION_REUSE_ENABLED', '1', { removeInEdge: true });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.SecretRetrieverFunction = SecretRetrieverFunction;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXJldHJpZXZlci1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXItZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZFO0FBQzdFLDZCQUE2QjtBQUM3QixpREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQzFELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0M7UUFDNUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsaURBQWlEO1lBQzlELEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1REFBdUQsQ0FBQyxDQUFDO1NBQzNHLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztDQUNGO0FBWEQsMERBV0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogUHJvcHMgZm9yIFNlY3JldFJldHJpZXZlckZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0UmV0cmlldmVyRnVuY3Rpb25Qcm9wcyBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbk9wdGlvbnMge1xufVxuXG4vKipcbiAqIEFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gd2hpY2ggZXhlY3V0ZXMgc3JjL3NlY3JldC1yZXRyaWV2ZXIvc2VjcmV0LXJldHJpZXZlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlY3JldFJldHJpZXZlckZ1bmN0aW9uIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTZWNyZXRSZXRyaWV2ZXJGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3NyYy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXIubGFtYmRhLnRzJyxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcnVudGltZTogbmV3IGxhbWJkYS5SdW50aW1lKCdub2RlanMxOC54JywgbGFtYmRhLlJ1bnRpbWVGYW1pbHkuTk9ERUpTKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vYXNzZXRzL3NlY3JldC1yZXRyaWV2ZXIvc2VjcmV0LXJldHJpZXZlci5sYW1iZGEnKSksXG4gICAgfSk7XG4gICAgdGhpcy5hZGRFbnZpcm9ubWVudCgnQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQnLCAnMScsIHsgcmVtb3ZlSW5FZGdlOiB0cnVlIH0pO1xuICB9XG59Il19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { IResource } from 'aws-cdk-lib/core';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
export interface Secret {
|
|
4
|
+
username: string;
|
|
5
|
+
password: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SecretRetrieverOptionsBase {
|
|
8
|
+
readonly secretArn: string;
|
|
9
|
+
}
|
|
10
|
+
export interface SecretRetrieverOptions extends SecretRetrieverOptionsBase {
|
|
11
|
+
}
|
|
12
|
+
export declare abstract class SecretRetriever {
|
|
13
|
+
static new(options: SecretRetrieverOptions): SecretRetriever;
|
|
14
|
+
secretArn: string;
|
|
15
|
+
/**
|
|
16
|
+
* The ARN of the secretRetriever in SSM.
|
|
17
|
+
*/
|
|
18
|
+
secretRetrieverArn: string;
|
|
19
|
+
/**
|
|
20
|
+
* The plaintext secret
|
|
21
|
+
*/
|
|
22
|
+
secretPlaintext: Secret;
|
|
23
|
+
secretPasswordPlaintext: string;
|
|
24
|
+
customResource: IResource;
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
protected constructor();
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
abstract _bind(scope: Construct): any;
|
|
33
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SecretRetriever = void 0;
|
|
4
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
5
|
+
const core_1 = require("aws-cdk-lib/core");
|
|
6
|
+
const custom_resources_1 = require("aws-cdk-lib/custom-resources");
|
|
7
|
+
const cdk_nag_1 = require("cdk-nag");
|
|
8
|
+
const secret_retriever_function_1 = require("./secret-retriever-function");
|
|
9
|
+
;
|
|
10
|
+
class SecretRetriever {
|
|
11
|
+
static new(options) {
|
|
12
|
+
return new (class extends SecretRetriever {
|
|
13
|
+
_bind(scope) {
|
|
14
|
+
const secretRetriever = new CustomResourceSecretRetriever(scope, {
|
|
15
|
+
secretArn: options.secretArn,
|
|
16
|
+
});
|
|
17
|
+
return secretRetriever;
|
|
18
|
+
}
|
|
19
|
+
})();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
constructor() { }
|
|
25
|
+
}
|
|
26
|
+
exports.SecretRetriever = SecretRetriever;
|
|
27
|
+
class CustomResourceSecretRetriever extends SecretRetriever {
|
|
28
|
+
constructor(scope, options) {
|
|
29
|
+
super();
|
|
30
|
+
this.secretArn = options.secretArn;
|
|
31
|
+
const onEvent = new secret_retriever_function_1.SecretRetrieverFunction(scope, 'SecretRetrieverOnEventHandler', {
|
|
32
|
+
timeout: core_1.Duration.seconds(10),
|
|
33
|
+
memorySize: 128,
|
|
34
|
+
});
|
|
35
|
+
cdk_nag_1.NagSuppressions.addResourceSuppressions([
|
|
36
|
+
onEvent,
|
|
37
|
+
], [
|
|
38
|
+
{ id: 'AwsSolutions-IAM4', reason: 'For this event handler we do not need to restrict managed policies' },
|
|
39
|
+
{ id: 'AwsSolutions-L1', reason: 'For this lambda the latest runtime is not needed' },
|
|
40
|
+
], true);
|
|
41
|
+
onEvent.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
42
|
+
actions: [
|
|
43
|
+
'secretsmanager:GetSecretValue',
|
|
44
|
+
],
|
|
45
|
+
resources: [
|
|
46
|
+
this.secretArn,
|
|
47
|
+
],
|
|
48
|
+
}));
|
|
49
|
+
const provider = new custom_resources_1.Provider(scope, 'SecretRetrieveProvider', {
|
|
50
|
+
onEventHandler: onEvent,
|
|
51
|
+
});
|
|
52
|
+
cdk_nag_1.NagSuppressions.addResourceSuppressions([
|
|
53
|
+
provider,
|
|
54
|
+
], [
|
|
55
|
+
{ id: 'AwsSolutions-IAM4', reason: 'For this provider we do not need to restrict managed policies' },
|
|
56
|
+
{ id: 'AwsSolutions-IAM5', reason: 'For this provider wildcards are fine' },
|
|
57
|
+
{ id: 'AwsSolutions-L1', reason: 'For this provider the latest runtime is not needed' },
|
|
58
|
+
], true);
|
|
59
|
+
const resource = new core_1.CustomResource(scope, 'SecretRetrieverCustomResource', {
|
|
60
|
+
serviceToken: provider.serviceToken,
|
|
61
|
+
properties: {
|
|
62
|
+
SecretArn: options.secretArn,
|
|
63
|
+
ServiceTimeout: 305,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
this.secretPlaintext = resource.getAtt('secretValue').toJSON();
|
|
67
|
+
this.secretPasswordPlaintext = resource.getAttString('secretPasswordValue');
|
|
68
|
+
this.customResource = resource;
|
|
69
|
+
}
|
|
70
|
+
_bind() { }
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXJldHJpZXZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXNEO0FBRXRELDJDQUF1RTtBQUN2RSxtRUFBd0Q7QUFDeEQscUNBQTBDO0FBRTFDLDJFQUFzRTtBQVNyRSxDQUFDO0FBSUYsTUFBc0IsZUFBZTtJQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQStCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEtBQU0sU0FBUSxlQUFlO1lBQ2hDLEtBQUssQ0FBQyxLQUFnQjtnQkFDM0IsTUFBTSxlQUFlLEdBQUcsSUFBSSw2QkFBNkIsQ0FBQyxLQUFLLEVBQUU7b0JBQy9ELFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0IsQ0FBQyxDQUFDO2dCQUVILE9BQU8sZUFBZSxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLEVBQUUsQ0FBQztJQUNQLENBQUM7SUFnQkQ7O09BRUc7SUFDSCxnQkFBMEIsQ0FBQztDQU01QjtBQXBDRCwwQ0FvQ0M7QUFLRCxNQUFNLDZCQUE4QixTQUFRLGVBQWU7SUFDekQsWUFBWSxLQUFnQixFQUFFLE9BQTZDO1FBQ3pFLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBRW5DLE1BQU0sT0FBTyxHQUFhLElBQUksbURBQXVCLENBQUMsS0FBSyxFQUFFLCtCQUErQixFQUFFO1lBQzVGLE9BQU8sRUFBRSxlQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixVQUFVLEVBQUUsR0FBRztTQUNoQixDQUFDLENBQUM7UUFDSCx5QkFBZSxDQUFDLHVCQUF1QixDQUFDO1lBQ3RDLE9BQU87U0FDUixFQUFFO1lBQ0QsRUFBRSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLG9FQUFvRSxFQUFFO1lBQ3pHLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxrREFBa0QsRUFBRTtTQUN0RixFQUFFLElBQUksQ0FBQyxDQUFDO1FBRVQsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLHlCQUFlLENBQUM7WUFDMUMsT0FBTyxFQUFFO2dCQUNQLCtCQUErQjthQUNoQztZQUNELFNBQVMsRUFBRTtnQkFDVCxJQUFJLENBQUMsU0FBUzthQUNmO1NBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSixNQUFNLFFBQVEsR0FBRyxJQUFJLDJCQUFRLENBQUMsS0FBSyxFQUFFLHdCQUF3QixFQUFFO1lBQzdELGNBQWMsRUFBRSxPQUFPO1NBQ3hCLENBQUMsQ0FBQztRQUNILHlCQUFlLENBQUMsdUJBQXVCLENBQUM7WUFDdEMsUUFBUTtTQUNULEVBQUU7WUFDRCxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsK0RBQStELEVBQUU7WUFDcEcsRUFBRSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLHNDQUFzQyxFQUFFO1lBQzNFLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxvREFBb0QsRUFBRTtTQUN4RixFQUFFLElBQUksQ0FBQyxDQUFDO1FBRVQsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQkFBYyxDQUFDLEtBQUssRUFBRSwrQkFBK0IsRUFBRTtZQUMxRSxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7WUFDbkMsVUFBVSxFQUFFO2dCQUNWLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztnQkFDNUIsY0FBYyxFQUFFLEdBQUc7YUFDcEI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxFQUFZLENBQUM7UUFDekUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBR00sS0FBSyxLQUFLLENBQUM7Q0FDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSwgRHVyYXRpb24sIElSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IE5hZ1N1cHByZXNzaW9ucyB9IGZyb20gJ2Nkay1uYWcnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBTZWNyZXRSZXRyaWV2ZXJGdW5jdGlvbiB9IGZyb20gJy4vc2VjcmV0LXJldHJpZXZlci1mdW5jdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0IHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWNyZXRSZXRyaWV2ZXJPcHRpb25zQmFzZSB7XG4gIHJlYWRvbmx5IHNlY3JldEFybjogc3RyaW5nO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTZWNyZXRSZXRyaWV2ZXJPcHRpb25zIGV4dGVuZHMgU2VjcmV0UmV0cmlldmVyT3B0aW9uc0Jhc2Uge31cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlY3JldFJldHJpZXZlciB7XG4gIHB1YmxpYyBzdGF0aWMgbmV3KG9wdGlvbnM6IFNlY3JldFJldHJpZXZlck9wdGlvbnMpOiBTZWNyZXRSZXRyaWV2ZXIge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgU2VjcmV0UmV0cmlldmVyIHtcbiAgICAgIHB1YmxpYyBfYmluZChzY29wZTogQ29uc3RydWN0KTogU2VjcmV0UmV0cmlldmVyIHtcbiAgICAgICAgY29uc3Qgc2VjcmV0UmV0cmlldmVyID0gbmV3IEN1c3RvbVJlc291cmNlU2VjcmV0UmV0cmlldmVyKHNjb3BlLCB7XG4gICAgICAgICAgc2VjcmV0QXJuOiBvcHRpb25zLnNlY3JldEFybixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHNlY3JldFJldHJpZXZlcjtcbiAgICAgIH1cbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIHNlY3JldEFybiE6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgc2VjcmV0UmV0cmlldmVyIGluIFNTTS5cbiAgICovXG4gIHB1YmxpYyBzZWNyZXRSZXRyaWV2ZXJBcm4hOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFpbnRleHQgc2VjcmV0XG4gICAqL1xuICBwdWJsaWMgc2VjcmV0UGxhaW50ZXh0ITogU2VjcmV0O1xuICBwdWJsaWMgc2VjcmV0UGFzc3dvcmRQbGFpbnRleHQhOiBzdHJpbmc7XG4gIHB1YmxpYyBjdXN0b21SZXNvdXJjZSE6IElSZXNvdXJjZTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7IH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgX2JpbmQoc2NvcGU6IENvbnN0cnVjdCk6IGFueTtcbn1cblxuaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlU2VjcmV0UmV0cmlldmVyT3B0aW9ucyBleHRlbmRzIFNlY3JldFJldHJpZXZlck9wdGlvbnMge1xufVxuXG5jbGFzcyBDdXN0b21SZXNvdXJjZVNlY3JldFJldHJpZXZlciBleHRlbmRzIFNlY3JldFJldHJpZXZlciB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIG9wdGlvbnM6IEN1c3RvbVJlc291cmNlU2VjcmV0UmV0cmlldmVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnNlY3JldEFybiA9IG9wdGlvbnMuc2VjcmV0QXJuO1xuXG4gICAgY29uc3Qgb25FdmVudDogRnVuY3Rpb24gPSBuZXcgU2VjcmV0UmV0cmlldmVyRnVuY3Rpb24oc2NvcGUsICdTZWNyZXRSZXRyaWV2ZXJPbkV2ZW50SGFuZGxlcicsIHtcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMTApLFxuICAgICAgbWVtb3J5U2l6ZTogMTI4LFxuICAgIH0pO1xuICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhbXG4gICAgICBvbkV2ZW50LFxuICAgIF0sIFtcbiAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtSUFNNCcsIHJlYXNvbjogJ0ZvciB0aGlzIGV2ZW50IGhhbmRsZXIgd2UgZG8gbm90IG5lZWQgdG8gcmVzdHJpY3QgbWFuYWdlZCBwb2xpY2llcycgfSxcbiAgICAgIHsgaWQ6ICdBd3NTb2x1dGlvbnMtTDEnLCByZWFzb246ICdGb3IgdGhpcyBsYW1iZGEgdGhlIGxhdGVzdCBydW50aW1lIGlzIG5vdCBuZWVkZWQnIH0sXG4gICAgXSwgdHJ1ZSk7XG5cbiAgICBvbkV2ZW50LmFkZFRvUm9sZVBvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgdGhpcy5zZWNyZXRBcm4sXG4gICAgICBdLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFByb3ZpZGVyKHNjb3BlLCAnU2VjcmV0UmV0cmlldmVQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBvbkV2ZW50LFxuICAgIH0pO1xuICAgIE5hZ1N1cHByZXNzaW9ucy5hZGRSZXNvdXJjZVN1cHByZXNzaW9ucyhbXG4gICAgICBwcm92aWRlcixcbiAgICBdLCBbXG4gICAgICB7IGlkOiAnQXdzU29sdXRpb25zLUlBTTQnLCByZWFzb246ICdGb3IgdGhpcyBwcm92aWRlciB3ZSBkbyBub3QgbmVlZCB0byByZXN0cmljdCBtYW5hZ2VkIHBvbGljaWVzJyB9LFxuICAgICAgeyBpZDogJ0F3c1NvbHV0aW9ucy1JQU01JywgcmVhc29uOiAnRm9yIHRoaXMgcHJvdmlkZXIgd2lsZGNhcmRzIGFyZSBmaW5lJyB9LFxuICAgICAgeyBpZDogJ0F3c1NvbHV0aW9ucy1MMScsIHJlYXNvbjogJ0ZvciB0aGlzIHByb3ZpZGVyIHRoZSBsYXRlc3QgcnVudGltZSBpcyBub3QgbmVlZGVkJyB9LFxuICAgIF0sIHRydWUpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ3VzdG9tUmVzb3VyY2Uoc2NvcGUsICdTZWNyZXRSZXRyaWV2ZXJDdXN0b21SZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBTZWNyZXRBcm46IG9wdGlvbnMuc2VjcmV0QXJuLFxuICAgICAgICBTZXJ2aWNlVGltZW91dDogMzA1LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuc2VjcmV0UGxhaW50ZXh0ID0gcmVzb3VyY2UuZ2V0QXR0KCdzZWNyZXRWYWx1ZScpLnRvSlNPTigpIGFzIFNlY3JldDtcbiAgICB0aGlzLnNlY3JldFBhc3N3b3JkUGxhaW50ZXh0ID0gcmVzb3VyY2UuZ2V0QXR0U3RyaW5nKCdzZWNyZXRQYXNzd29yZFZhbHVlJyk7XG4gICAgdGhpcy5jdXN0b21SZXNvdXJjZSA9IHJlc291cmNlO1xuICB9XG5cblxuICBwdWJsaWMgX2JpbmQoKSB7IH1cbn0iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
|
|
5
|
+
const secretsManager = new client_secrets_manager_1.SecretsManager();
|
|
6
|
+
const handler = async (event) => {
|
|
7
|
+
console.log('Event: %j', { ...event, ResponseURL: '...' });
|
|
8
|
+
if (event.RequestType === 'Delete') {
|
|
9
|
+
// do nothing
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
// Create and update case
|
|
13
|
+
const secretArn = event.ResourceProperties.SecretArn;
|
|
14
|
+
console.log('secretArn: %j', secretArn);
|
|
15
|
+
try {
|
|
16
|
+
const secret = await secretsManager.getSecretValue({
|
|
17
|
+
SecretId: secretArn,
|
|
18
|
+
});
|
|
19
|
+
const secretValue = secret.SecretString;
|
|
20
|
+
console.log('secretValue: %j', secretValue);
|
|
21
|
+
const parsedSecretValue = JSON.parse(secretValue);
|
|
22
|
+
console.log('secretValue is JSON: %j', parsedSecretValue);
|
|
23
|
+
return {
|
|
24
|
+
Data: {
|
|
25
|
+
secretValue: parsedSecretValue,
|
|
26
|
+
secretPasswordValue: parsedSecretValue.password,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error(error);
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.handler = handler;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXJldHJpZXZlci5sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VjcmV0LXJldHJpZXZlci9zZWNyZXQtcmV0cmlldmVyLmxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0RUFBaUU7QUFLakUsTUFBTSxjQUFjLEdBQUcsSUFBSSx1Q0FBYyxFQUFFLENBQUM7QUFFckMsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLEtBQXFCLEVBQTRCLEVBQUU7SUFDL0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUUzRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsYUFBYTtRQUNiLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELHlCQUF5QjtJQUN6QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDO0lBQ3JELE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRXhDLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLGNBQWMsQ0FBQztZQUNqRCxRQUFRLEVBQUUsU0FBUztTQUNwQixDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsWUFBYSxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFNUMsTUFBTSxpQkFBaUIsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUUxRCxPQUFPO1lBQ0wsSUFBSSxFQUFFO2dCQUNKLFdBQVcsRUFBRSxpQkFBaUI7Z0JBQzlCLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLFFBQVE7YUFDaEQ7U0FDRixDQUFDO0lBRUosQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUMsQ0FBQztBQWxDVyxRQUFBLE9BQU8sV0FrQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VjcmV0c01hbmFnZXIgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB0eXBlIHsgT25FdmVudFJlcXVlc3QsIE9uRXZlbnRSZXNwb25zZSB9IGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMvbGliL3Byb3ZpZGVyLWZyYW1ld29yay90eXBlcyc7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tICcuL3NlY3JldC1yZXRyaWV2ZXInO1xuXG5jb25zdCBzZWNyZXRzTWFuYWdlciA9IG5ldyBTZWNyZXRzTWFuYWdlcigpO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIChldmVudDogT25FdmVudFJlcXVlc3QpOiBQcm9taXNlPE9uRXZlbnRSZXNwb25zZT4gPT4ge1xuICBjb25zb2xlLmxvZygnRXZlbnQ6ICVqJywgeyAuLi5ldmVudCwgUmVzcG9uc2VVUkw6ICcuLi4nIH0pO1xuXG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAvLyBkbyBub3RoaW5nXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLy8gQ3JlYXRlIGFuZCB1cGRhdGUgY2FzZVxuICBjb25zdCBzZWNyZXRBcm4gPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuU2VjcmV0QXJuO1xuICBjb25zb2xlLmxvZygnc2VjcmV0QXJuOiAlaicsIHNlY3JldEFybik7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBzZWNyZXQgPSBhd2FpdCBzZWNyZXRzTWFuYWdlci5nZXRTZWNyZXRWYWx1ZSh7XG4gICAgICBTZWNyZXRJZDogc2VjcmV0QXJuLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VjcmV0VmFsdWUgPSBzZWNyZXQuU2VjcmV0U3RyaW5nITtcbiAgICBjb25zb2xlLmxvZygnc2VjcmV0VmFsdWU6ICVqJywgc2VjcmV0VmFsdWUpO1xuXG4gICAgY29uc3QgcGFyc2VkU2VjcmV0VmFsdWU6IFNlY3JldCA9IEpTT04ucGFyc2Uoc2VjcmV0VmFsdWUpO1xuICAgIGNvbnNvbGUubG9nKCdzZWNyZXRWYWx1ZSBpcyBKU09OOiAlaicsIHBhcnNlZFNlY3JldFZhbHVlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBEYXRhOiB7XG4gICAgICAgIHNlY3JldFZhbHVlOiBwYXJzZWRTZWNyZXRWYWx1ZSxcbiAgICAgICAgc2VjcmV0UGFzc3dvcmRWYWx1ZTogcGFyc2VkU2VjcmV0VmFsdWUucGFzc3dvcmQsXG4gICAgICB9LFxuICAgIH07XG5cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTsiXX0=
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
3
|
+
import { Construct } from 'constructs';
|
|
4
|
+
export interface VSCodeServerProps {
|
|
5
|
+
/**
|
|
6
|
+
* UserName for VSCode Server
|
|
7
|
+
*
|
|
8
|
+
* @default - participant
|
|
9
|
+
*/
|
|
10
|
+
readonly vscodeUser?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Password for VSCode Server
|
|
13
|
+
*
|
|
14
|
+
* @default - empty and will then be generated
|
|
15
|
+
*/
|
|
16
|
+
readonly vscodePassword?: string;
|
|
17
|
+
/**
|
|
18
|
+
* VSCode Server EC2 instance name
|
|
19
|
+
*
|
|
20
|
+
* @default - VSCodeServer
|
|
21
|
+
*/
|
|
22
|
+
readonly instanceName?: string;
|
|
23
|
+
/**
|
|
24
|
+
* VSCode Server EC2 instance volume size in GB
|
|
25
|
+
*
|
|
26
|
+
* @default - 40
|
|
27
|
+
*/
|
|
28
|
+
readonly instanceVolumeSize?: number;
|
|
29
|
+
/**
|
|
30
|
+
* VSCode Server EC2 instance class
|
|
31
|
+
*
|
|
32
|
+
* @default - m7g
|
|
33
|
+
*/
|
|
34
|
+
readonly instanceClass?: ec2.InstanceClass;
|
|
35
|
+
/**
|
|
36
|
+
* VSCode Server EC2 instance size
|
|
37
|
+
*
|
|
38
|
+
* @default - xlarge
|
|
39
|
+
*/
|
|
40
|
+
readonly instanceSize?: ec2.InstanceSize;
|
|
41
|
+
/**
|
|
42
|
+
* VSCode Server EC2 operating system
|
|
43
|
+
*
|
|
44
|
+
* @default - Ubuntu-22
|
|
45
|
+
*/
|
|
46
|
+
readonly instanceOperatingSystem?: LinuxFlavorType;
|
|
47
|
+
/**
|
|
48
|
+
* VSCode Server EC2 cpu architecture for the operating system
|
|
49
|
+
*
|
|
50
|
+
* @default - arm
|
|
51
|
+
*/
|
|
52
|
+
readonly instanceCpuArchitecture?: LinuxArchitectureType;
|
|
53
|
+
/**
|
|
54
|
+
* Folder to open in VS Code server
|
|
55
|
+
*
|
|
56
|
+
* @default - /Workshop
|
|
57
|
+
*/
|
|
58
|
+
readonly homeFolder?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Base path for the application to be added to Nginx sites-available list
|
|
61
|
+
*
|
|
62
|
+
* @default - app
|
|
63
|
+
*/
|
|
64
|
+
readonly devServerBasePath?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Port for the DevServer
|
|
67
|
+
*
|
|
68
|
+
* @default - 8081
|
|
69
|
+
*/
|
|
70
|
+
readonly devServerPort?: number;
|
|
71
|
+
/**
|
|
72
|
+
* Additional instance role policies
|
|
73
|
+
*
|
|
74
|
+
* @default - []
|
|
75
|
+
*/
|
|
76
|
+
readonly additionalInstanceRolePolicies?: iam.PolicyStatement[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The flavor of linux you want to run vscode server on
|
|
80
|
+
*/
|
|
81
|
+
export declare enum LinuxFlavorType {
|
|
82
|
+
UBUNTU_22 = "ubuntu22",
|
|
83
|
+
UBUNTU_24 = "ubuntu24",
|
|
84
|
+
AMAZON_LINUX_2023 = "al2023"
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The architecture of the cpu you want to run vscode server on
|
|
88
|
+
*/
|
|
89
|
+
export declare enum LinuxArchitectureType {
|
|
90
|
+
ARM = "arm",
|
|
91
|
+
AMD64 = "amd64"
|
|
92
|
+
}
|
|
93
|
+
export declare class VSCodeServer extends Construct {
|
|
94
|
+
readonly domainName: string;
|
|
95
|
+
readonly password: string;
|
|
96
|
+
constructor(scope: Construct, id: string, props?: VSCodeServerProps);
|
|
97
|
+
}
|