From 0a0a4d643cd0fe7301033b9145e69ad0fb6ea534 Mon Sep 17 00:00:00 2001 From: Alberto Menendez Romero Date: Sat, 7 Jan 2023 23:04:47 -0500 Subject: [PATCH] Add support to decrypt params (#3) --- README.md | 3 +++ lib/interfaces/config-options.interface.ts | 1 + lib/providers/config-parameters.provider.ts | 5 ++++- lib/services/parameter-store.service.ts | 6 +++++- package.json | 2 +- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2f98156..b26ec6d 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ This package allows you to configure your NestJS application by loading the conf ```bash npm install nestjs-param-store @aws-sdk/client-ssm ``` + ## Configuration ### Static configuration @@ -19,6 +20,7 @@ import { PSConfigModule } from 'nestjs-param-store'; imports: [ PSConfigModule.register({ ssmParamStorePath: '/production/services/my-service', + ssmDecryptParams: true, ssmClientOptions: { region: 'us-east-1', }, @@ -45,6 +47,7 @@ import { PSConfigModule } from 'nestjs-param-store'; imports: [ConfigModule], useFactory: async (config: ConfigService) => ({ ssmParamStorePath: config.get('APP_CONFIG_PATH'), + ssmDecryptParams: true, ssmClientOptions: { region: config.get('AWS_REGION'), }, diff --git a/lib/interfaces/config-options.interface.ts b/lib/interfaces/config-options.interface.ts index 577cf6b..c9cfef4 100644 --- a/lib/interfaces/config-options.interface.ts +++ b/lib/interfaces/config-options.interface.ts @@ -2,5 +2,6 @@ import { SSMClientConfig } from '@aws-sdk/client-ssm'; export interface PSConfigOptions { ssmParamStorePath: string; + ssmDecryptParams?: boolean; ssmClientOptions?: SSMClientConfig; } diff --git a/lib/providers/config-parameters.provider.ts b/lib/providers/config-parameters.provider.ts index 6c1e438..3b40731 100644 --- a/lib/providers/config-parameters.provider.ts +++ b/lib/providers/config-parameters.provider.ts @@ -9,7 +9,10 @@ export const configParametersProvider: FactoryProvider = { configOptions: PSConfigOptions, psService: ParameterStoreService, ): Promise => { - return psService.getParametersByPath(configOptions.ssmParamStorePath); + return psService.getParametersByPath( + configOptions.ssmParamStorePath, + configOptions.ssmDecryptParams ?? false, + ); }, inject: [PS_CONFIG_OPTIONS, ParameterStoreService], }; diff --git a/lib/services/parameter-store.service.ts b/lib/services/parameter-store.service.ts index edfe25d..f05d331 100644 --- a/lib/services/parameter-store.service.ts +++ b/lib/services/parameter-store.service.ts @@ -12,9 +12,13 @@ export class ParameterStoreService { @Inject(SSM_PS_CLIENT) private readonly client: SSMClient, ) {} - public async getParametersByPath(path: string): Promise { + public async getParametersByPath( + path: string, + decrypt = false, + ): Promise { const getParameters = new GetParametersByPathCommand({ Path: path, + WithDecryption: decrypt, }); const { Parameters = [] } = await this.client.send(getParameters); diff --git a/package.json b/package.json index 25c4f5a..92f0528 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nestjs-param-store", - "version": "1.0.0", + "version": "1.1.0", "description": "Configure your NestJS application with AWS Parameter Store", "author": "Alberto Menendez Romero ", "keywords": [