Mirror of static site repo git.pfy.ch/pfych/static
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import { SSMClient, GetParameterCommand } from '@aws-sdk/client-ssm';import { err, ok, Result, ResultAsync } from 'neverthrow';import { ErrorWithCode, newError } from 'web-shared/src/types/errors';
const ssm = new SSMClient( !process.env.LAMBDA_TASK_ROOT ? { region: 'ap-southeast-2', profile: 'dev' } : { region: 'ap-southeast-2' },);
const ssmSafeSend = ResultAsync.fromThrowable( (parameterName: string, decrypt?: boolean) => ssm.send( new GetParameterCommand({ Name: parameterName, WithDecryption: decrypt, }), ), () => newError( 'SecretFetchError', 'An error occurred while fetching secret values', ),);
const parameterCache: Record<string, string> = {};export const getParameter = async ( parameterName: string, decrypt?: boolean,): Promise< Result<string, ErrorWithCode<'ServerError' | 'SecretFetchError'>>> => { try { if (parameterCache[parameterName]) { return ok(parameterCache[parameterName]); }
const result = await ssmSafeSend(parameterName, decrypt);
if (result.isErr()) { return err(result.error); }
parameterCache[parameterName] = result.value.Parameter?.Value || ''; return ok(parameterCache[parameterName]); } catch (error) { return err( newError( 'ServerError', 'An unexpected error occurred while fetching secret values', { error }, ), ); }};