{"_id":"@code-dome/cdk-parameter-store","_rev":"1-14f1fa1062aaeb9ad54f6ce78158b5e7","name":"@code-dome/cdk-parameter-store","dist-tags":{"latest":"1.64.0"},"versions":{"1.64.0":{"name":"@code-dome/cdk-parameter-store","version":"1.64.0","description":"CDK helper class that retrieves and stores values from AWS SSM Parameter Store and AWS Secrets Manager","main":"index.js","scripts":{"test":"jest"},"repository":{"type":"git","url":"git+https://whtlnv@github.com/bot-dome/cdk-parameter-store.git"},"keywords":["CDK","SSM","AWS","ParameterStore","SecretsManager"],"author":{"name":"Francisco Catalá"},"license":"ISC","bugs":{"url":"https://github.com/bot-dome/cdk-parameter-store/issues"},"homepage":"https://github.com/bot-dome/cdk-parameter-store#readme","dependencies":{"@aws-cdk/aws-ssm":"^1.64.0","@aws-cdk/core":"^1.64.0"},"devDependencies":{"jest":"^26.4.2"},"gitHead":"26df48a56034b5323f27cff4e51ee34e9f236802","_id":"@code-dome/cdk-parameter-store@1.64.0","_nodeVersion":"13.10.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6uNntuQofI1BgLUq9yuXVFfAJLVsuFmoOPaJ/DUz2IfA1ZX98RiqFDula6cZ6KEcFfTtCIZ64/48b4j1/H3zaw==","shasum":"55854428dc6cafaa12fc20a8c70a8f3012ef1489","tarball":"https://registry.npmjs.org/@code-dome/cdk-parameter-store/-/cdk-parameter-store-1.64.0.tgz","fileCount":5,"unpackedSize":10394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbhkbCRA9TVsSAnZWagAAwXEP/1xBzm/umgYgW0tPmnNw\n6pcA8JBodnPDsVcozISObBzFnFKznhDKr2fPgffAg/myiIglQ3HGKseuQhCd\nJ9D8Pgig+EhIMB2r5fxG8X/LT7gpFzBrwV4sR8NgeNPFVAsSRPqj0iY0IYfL\nDH+wPm3YDJMesju2N8yIpxguAFEJWjCteAR3lkyMXEapyKxnZS2wXstpPCr3\nvYkRO3aDpzScyVJ1ChxP9T5CecyZfMeTtUvNHOvPqRZ1B928hVp2ggThVSi7\nQA+WfKpeDlxnYJIpt9GPEJQO/blEj4XY9WLeQfuv9AKCW6RkBSjmpq3gdMYH\nPcPAW6i5spH4JW+7K0GR1AhaRiXfJK7716KsIj2JhSfwwut2w/kyVsDvTfvd\n99JvKlpLiJU6hlw2w0eGL9lN+4jMe3FEEvN2VThEg4qzP+APPJ/VPR54PSWe\n3WfM92MRh0zrhoY6kd+P+3WhXaAAhSqWHG49kOEPUYOBjoQwvqjDFy+7b3Pz\nQbKfvHsObvRhBtEum/00vqtSIposHn5hYEGqeDI2yJlwbB3xU16YKy04pCfe\n+x24oo1+Pe9oynong5iwZZXpueKChAF3EDDogeVeFwvvOVeluaiX4KPxGxd3\neZwSSXIpN0YS4cduHddwollCIKYhMe+R9BZb36EPg7hXH6S9kN2L8ogsuJWN\nFMam\r\n=Tvdh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGVNS5wL0mi0EIUUcRDAvrWhUA8MGkwm6yYvtRkJLPGzAiAeMNQynY7tFZzIyLVs2iJObfRvyVO9kO7u3eesOoHf5A=="}]},"maintainers":[{"name":"code-dome","email":"code.dome.root+npm@gmail.com"}],"_npmUser":{"name":"code-dome","email":"code.dome.root+npm@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/cdk-parameter-store_1.64.0_1601050906630_0.5175791117607598"},"_hasShrinkwrap":false}},"time":{"created":"2020-09-25T16:21:46.587Z","1.64.0":"2020-09-25T16:21:46.782Z","modified":"2022-04-04T23:56:53.390Z"},"maintainers":[{"name":"code-dome","email":"code.dome.root+npm@gmail.com"}],"description":"CDK helper class that retrieves and stores values from AWS SSM Parameter Store and AWS Secrets Manager","homepage":"https://github.com/bot-dome/cdk-parameter-store#readme","keywords":["CDK","SSM","AWS","ParameterStore","SecretsManager"],"repository":{"type":"git","url":"git+https://whtlnv@github.com/bot-dome/cdk-parameter-store.git"},"author":{"name":"Francisco Catalá"},"bugs":{"url":"https://github.com/bot-dome/cdk-parameter-store/issues"},"license":"ISC","readme":"# cdk-parameter-store\nCDK helper class that retrieves and stores values from AWS SSM Parameter Store and AWS Secrets Manager\n\n## Installation\n\n`$ npm install @code-dome/cdk-parameter-store`\n\n## Usage\n\n```\nconst { ParameterStore } = require('@code-dome/cdk-parameter-store');\n\n// 1.1 Define key/value relationships for your parameter names as found in SSM Parameter Store\nconst parameters = {\n  myParameter: 'name/of/my/parameter/in/ssm',\n  apiURL: 'project/backend/api/url',\n};\n\n// 1.2 Define key/value relationships for your secret names (and version) as found in Secrets Manager\nconst secrets = {\n  superSecretValue :{\n    name: 'name/of/my/secret/in/secretsManager',\n    version: 1\n  },\n}\n\nclass MyStack extends Stack {\n  constructor(scope, id, props) {\n    super(scope, id, props);\n\n    // 2. Create an instance of ParameterStore in the scope of your stack, construct or stage\n    const store = new ParameterStore(this);\n\n    // 3. Load parameter names\n    const cleanParameters = store.loadStringsWithNames(parameters);\n    const secureParameters = store.loadeSecureStringsWithNames(secrets);\n\n    // 4. Retreive parameter values (CDK resolvables)\n    const myParameter = cleanParameters.myParameter;\n    const myParameterAgain = store.getResolvableByKey('myParameter');\n    const myParameterYetAgain = store.getResolvableByName('name/of/my/parameter/in/ssm');\n\n    // Bonus. You can load more parameters later\n    const myOtherParameter = store.loadStringWithName('my/other/parameter', 'myOtherParameter');\n    const myOtherParameterAgain = store.getResolvableByKey('myOtherParameter');\n    const myOtherParameterYetAgain = store.getResolvableByName('my/other/parameter');\n  }\n}\n```\n\n## Important Notes\n\n1. ParameterStore is not a construct or a stack, it does not create any resources in AWS\n2. The instance still needs the scope of your stack, construct or stage so that CDK knows which account/region to search in.\n3. If the parameter does not exist, CDK will crash and burn.\n4. Current version of this module will only retrieve the latest version of the secret or parameter.\n5. Secure strings in SSM Parameter Store are not available in CDK as of CDK 1.64.0\n\n## Class Definition\n\n### Properties\n- **scope**:\nThe scope of the parent stack, construct or stage.\n- **resolvableParametersByKey**:\n`{ key1: 'value', ... }`\nAll loaded parameter and secret values by key.\n- **resolvableParametersByName**:\n`{ name1: 'value', ... }`\nAll loaded parameter and secret values by name.\n\n### Methods\n- `constructor(scope: Construct): ParameterStore`\nInitializes instance properties\n- `exposeValue(value: string, name: string, key: string): string (IResolvable)`\nAdds a `value` to the `resolvableParametersByKey` and `resolvableParametersByName` with the given `name` and `key`\n- `getResolvableByKey(key: string): string (IResolvable)`\nReturns the loaded value with key `key`\n- `getResolvableByName(name: string): string (IResolvable)`\nReturns the loaded value \n- `loadSecureStringWithName({ name: string, version: Number }, key: string): string (IResolvable)`\nLoads content of Secret with name `name` from Secrets Manager, then exposes the value by `key` and `name` using `exposeValue()`\n- `loadSecureStringsWithNames(secretNames: Object <{ key: { name: string, version: Number }, ...}>): Object <{ key: string (IResolvable), ... }>`\nCalls `loadSecureStringWithName()` for each key in `secretNames`\n- `loadStringWithName(name: string, key: string): string (IResolvable)`\nLookup of string parameter named `name` in SSM, then exposes the value by `key` and `name` using `exposeValue()`\n- `loadStringsWithNames(parameterNames: Object <{ key: 'name', ...}>): Object <{ key: string (IResolvable), ... }>`\nCalls `loadStringWithName()` for each key in `parameterNames`\n\n### Test\n\n`npm test`\n\n### TODO\n* Handle version in SSM and Secrets \n* Handle StringListParameter","readmeFilename":"README.md"}