UNPKG

@aws-lambda-powertools/parameters

Version:
86 lines (85 loc) 3.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setParameter = void 0; const DefaultProviders_js_1 = require("../base/DefaultProviders.js"); const SSMProvider_js_1 = require("./SSMProvider.js"); /** * Set a parameter in AWS Systems Manager Parameter Store. * * **Basic Usage** * * @example * ```typescript * import { setParameter } from '@aws-lambda-powertools/parameters/ssm'; * * export const handler = async () => { * // Set a parameter * const version = await setParameter('/my-parameter', { value: 'my-value' }); * }; * ``` * * **Overwriting a parameter** * * By default, the provider will not overwrite a parameter if it already exists. You can force the provider to overwrite the parameter by using the `overwrite` option. * * @example * ```typescript * import { setParameter } from '@aws-lambda-powertools/parameters/ssm'; * * export const handler = async (): Promise<void> => { * // Set a parameter and overwrite it * const version = await setParameter('/my-parameter', { * value: 'my-value', * overwrite: true, * }); * console.log(Parameter version: ${version}); * }; * ``` * * **Extra SDK options** * * When setting a parameter, you can pass extra options to the AWS SDK v3 for JavaScript client by using the sdkOptions parameter. * * @example * ```typescript * import { setParameter } from '@aws-lambda-powertools/parameters/ssm'; * * export const handler = async (): Promise<void> => { * // Set a parameter with extra options * const version = await setParameter('/my-parameter', { * value: 'my-value', * sdkOptions: { * Overwrite: true, * }, * }); * }; * ``` * * This object accepts the same options as the AWS SDK v3 for JavaScript `PutParameterCommandInput` interface. * * For greater flexibility such as configuring the underlying SDK client used by built-in providers, you can use the {@link SSMProvider} utility. * * **Options** * * You can customize the storage of the value by passing options to the function: * * `value` - The value of the parameter, which is a mandatory option. * * `overwrite` - Whether to overwrite the value if it already exists (default: `false`) * * `description` - The description of the parameter * * `parameterType` - The type of the parameter, can be one of `String`, `StringList`, or `SecureString` (default: `String`) * * `tier` - The parameter tier to use, can be one of `Standard`, `Advanced`, and `Intelligent-Tiering` (default: `Standard`) * * `kmsKeyId` - The KMS key id to use to encrypt the parameter * * `sdkOptions` - Extra options to pass to the AWS SDK v3 for JavaScript client * * For more usage examples, see [our documentation](https://docs.powertools.aws.dev/lambda/typescript/latest/utilities/parameters/). * * @param name - Name of the parameter * @param options - Options to configure the parameter * @see https://docs.powertools.aws.dev/lambda/typescript/latest/utilities/parameters/ */ const setParameter = async (name, options) => { if (!Object.hasOwn(DefaultProviders_js_1.DEFAULT_PROVIDERS, 'ssm')) { DefaultProviders_js_1.DEFAULT_PROVIDERS.ssm = new SSMProvider_js_1.SSMProvider(); } return DefaultProviders_js_1.DEFAULT_PROVIDERS.ssm.set(name, options); }; exports.setParameter = setParameter;