diff --git a/packages/api/src/config.ts b/packages/api/src/config.ts new file mode 100644 index 00000000..662c7027 --- /dev/null +++ b/packages/api/src/config.ts @@ -0,0 +1,29 @@ +import { findParameter, getParameters } from "./configHelpers"; +import { Parameter, SSM } from '@aws-sdk/client-ssm'; + +interface TranscriptionConfig { + test: string // TODO: This is just the foundation of getting params from SSM +} + +const region = process.env['AWS_REGION']; + +const ssm = new SSM({ + region, +}); + +export const getConfig = async (): Promise => { + const stage = process.env['STAGE'] || 'DEV'; + const paramPath = `/${stage}/investigations/transcription-service/`; + + const parameters = await getParameters(paramPath, ssm); + const parameterNames = parameters.map((param: Parameter) => { + return param.Name; + }); + + console.log(`Parameters fetched: ${parameterNames.join(", ")}`); + const testParam = findParameter(parameters, paramPath, "test"); + + return { + test: testParam + } +}; \ No newline at end of file diff --git a/packages/api/src/configHelpers.ts b/packages/api/src/configHelpers.ts index 063a2902..1d6c1ed5 100644 --- a/packages/api/src/configHelpers.ts +++ b/packages/api/src/configHelpers.ts @@ -40,3 +40,29 @@ export const getParameters = async ( throw err; } }; + +export const findParameter = ( + parameters: Parameter[], + paramPath: string, + paramKey: string + ): string => { + const parameter = parameters.find( + (param: Parameter) => param.Name === `${paramPath}${paramKey}` + ); + + return getValueOfParam(paramKey, parameter); + }; + + export const getValueOfParam = ( + paramKey: string, + parameter?: Parameter + ): string => { + if (!parameter) { + throw new Error(`The parameter ${paramKey} hasn't been configured`); + } + if (!parameter.Value) { + throw new Error(`The parameter ${paramKey} has no value`); + } + console.log(`Found value of parameter: ${paramKey}`); + return parameter.Value; + }; diff --git a/packages/api/src/index.ts b/packages/api/src/index.ts index d72bc873..fd823b00 100644 --- a/packages/api/src/index.ts +++ b/packages/api/src/index.ts @@ -3,25 +3,14 @@ import asyncHandler from 'express-async-handler'; import serverlessExpress from '@codegenie/serverless-express'; import bodyParser from 'body-parser'; import path from 'path'; -import { getParameters } from './configHelpers'; -import { SSM } from '@aws-sdk/client-ssm'; +import { getConfig } from './config'; -const region = process.env['AWS_REGION']; - -const ssm = new SSM({ - region, -}); - -export const getConfig = async (): Promise => { - const stage = process.env['STAGE'] || 'DEV'; - const paramPath = `/${stage}/investigations/transcription-service/`; - - const parameters = await getParameters(paramPath, ssm); +const getApp = async () => { + const config = await getConfig(); - console.log(parameters); -}; + // TODO: This is just for testing. Actual config values should never be logged + console.log(`config value retrieved: ${config.test}`); -const getApp = async () => { const app = express(); const apiRouter = express.Router();