API Reference
    Preparing search index...
    • The Parameters utility provides an AppConfigProvider that allows to retrieve configuration profiles from AWS AppConfig.

      This utility supports AWS SDK v3 for JavaScript only (@aws-sdk/client-appconfigdata). This allows the utility to be modular, and you to install only the SDK packages you need and keep your bundle size small.

      Basic usage

      Type Parameters

      Parameters

      • name: string

        The name of the configuration profile to retrieve

      • options: NonNullable<InferredFromOptionsType & GetAppConfigOptions>

        Options to configure the provider

        • application

          The application ID or the application name

        • environment

          The environment ID or the environment name

        • maxAge

          Optional maximum age of the value in the cache, in seconds (default: 5)

        • forceFetch

          Optional flag to always fetch a new value from the store regardless if already available in cache (default: false)

        • transform

          Optional transform to be applied, can be json or binary

        • sdkOptions

          Optional additional options to pass to the AWS SDK v3 client, supports all options from StartConfigurationSessionCommandInput | StartConfigurationSessionCommandInput except ApplicationIdentifier, EnvironmentIdentifier, and ConfigurationProfileIdentifier

      Returns Promise<
          | AppConfigGetOutput<ExplicitUserProvidedType, InferredFromOptionsType>
          | undefined,
      >

      import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';

      const encodedConfig = await getAppConfig('my-config', {
      application: 'my-app',
      environment: 'prod',
      });
      const config = new TextDecoder('utf-8').decode(encodedConfig);

      export const handler = async (): Promise<void> => {
      // Use the config variable as needed
      console.log(config);
      };

      Caching

      By default, the provider will cache parameters retrieved in-memory for 5 seconds. You can adjust how long values should be kept in cache by using the maxAge parameter.

      import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';

      const encodedConfig = await getAppConfig('my-config', {
      application: 'my-app',
      environment: 'prod',
      maxAge: 10, // Cache for 10 seconds
      });
      const config = new TextDecoder('utf-8').decode(encodedConfig);

      export const handler = async (): Promise<void> => {
      // Use the config variable as needed
      };

      If instead you'd like to always ensure you fetch the latest parameter from the store regardless if already available in cache, use the forceFetch parameter.

      import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';

      const encodedConfig = await getAppConfig('my-config', {
      application: 'my-app',
      environment: 'prod',
      forceFetch: true, // Always fetch the latest value
      });
      const config = new TextDecoder('utf-8').decode(encodedConfig);

      export const handler = async (): Promise<void> => {
      // Use the config variable as needed
      console.log
      };

      Transformations

      For configurations stored as freeform JSON, Freature Flag, you can use the transform argument for deserialization. This will return a JavaScript object instead of a string.

      import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';

      // Retrieve a JSON config and parse it as JSON
      const encodedConfig = await getAppConfig('my-config', {
      application: 'my-app',
      environment: 'prod',
      transform: 'json'
      });

      export const handler = async (): Promise<void> => {
      // Use the config variable as needed
      console.log(config);
      };

      For configurations that are instead stored as base64-encoded binary data, you can use the transform argument set to binary for decoding. This will return a decoded string.

      import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';

      export const handler = async (): Promise<void> => {
      // Retrieve a base64-encoded string and decode it
      const config = await getAppConfig('my-config', {
      application: 'my-app',
      environment: 'prod',
      transform: 'binary'
      });
      };

      Extra SDK options

      When retrieving a configuration profile, you can pass extra options to the AWS SDK v3 for JavaScript client by using the sdkOptions parameter.

      import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';

      export const handler = async (): Promise<void> => {
      // Retrieve a config and pass extra options to the AWS SDK v3 for JavaScript client
      const config = await getAppConfig('my-config', {
      application: 'my-app',
      environment: 'prod',
      sdkOptions: {
      RequiredMinimumPollIntervalInSeconds: 60,
      },
      });
      const config = new TextDecoder('utf-8').decode(encodedConfig);
      };

      This object accepts the same options as the AWS SDK v3 for JavaScript AppConfigData client.

      For greater flexibility such as configuring the underlying SDK client used by built-in providers, you can use the AppConfigProvider class.