Retrieves configuration profiles from AWS AppConfig with session management, automatic caching, and value transformation.
Note: getMultiple not supported for AppConfig.
function getAppConfig<T>(name: string, options: GetAppConfigOptions): Promise<T | undefined>;
class AppConfigProvider extends BaseProvider {
constructor(config: AppConfigProviderOptions);
get<T>(name: string, options?: AppConfigGetOptions): Promise<T | undefined>;
}
interface GetAppConfigOptions {
application?: string; // Required (or set POWERTOOLS_SERVICE_NAME env var)
environment: string; // Required
maxAge?: number;
forceFetch?: boolean;
transform?: 'json' | 'binary';
sdkOptions?: Omit<Partial<StartConfigurationSessionCommandInput>, 'ApplicationIdentifier' | 'EnvironmentIdentifier' | 'ConfigurationProfileIdentifier'>;
}
interface AppConfigProviderOptions {
environment: string;
application?: string; // Defaults to POWERTOOLS_SERVICE_NAME env var
clientConfig?: AppConfigDataClientConfig;
awsSdkV3Client?: AppConfigDataClient;
}
interface AppConfigGetOptions {
maxAge?: number;
forceFetch?: boolean;
transform?: 'json' | 'binary';
sdkOptions?: Omit<Partial<StartConfigurationSessionCommandInput>, 'ApplicationIdentifier' | 'EnvironmentIdentifier' | 'ConfigurationProfileIdentifier'>;
}import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
// Retrieve config (returns Uint8Array by default)
const config = await getAppConfig('my-config', {
application: 'my-app',
environment: 'prod'
});
// Parse JSON
interface AppConfig { featureFlags: Record<string, boolean>; apiEndpoints: string[]; }
const appConfig = await getAppConfig<AppConfig>('feature-config', {
application: 'my-app',
environment: 'prod',
transform: 'json'
});
// Decode binary
const binaryConfig = await getAppConfig('binary-config', {
application: 'my-app',
environment: 'prod',
transform: 'binary'
});
// Use POWERTOOLS_SERVICE_NAME env var for application
const config2 = await getAppConfig('my-config', {
environment: 'prod' // application defaults to env var
});
// Custom cache
const cached = await getAppConfig('my-config', {
application: 'my-app',
environment: 'prod',
maxAge: 300,
forceFetch: true
});import { AppConfigProvider } from '@aws-lambda-powertools/parameters/appconfig';
import { AppConfigDataClient } from '@aws-sdk/client-appconfigdata';
// Explicit application and environment
const provider = new AppConfigProvider({
application: 'my-app',
environment: 'production'
});
// Use POWERTOOLS_SERVICE_NAME for application
const providerEnv = new AppConfigProvider({
environment: 'production'
});
// Custom client config
const customProvider = new AppConfigProvider({
application: 'my-app',
environment: 'staging',
clientConfig: { region: 'us-west-2', maxAttempts: 3 }
});
// Custom client instance
const client = new AppConfigDataClient({ region: 'eu-west-1' });
const providerWithClient = new AppConfigProvider({
application: 'my-app',
environment: 'production',
awsSdkV3Client: client
});
// Use provider
const flags = await provider.get('feature-flags', { transform: 'json', maxAge: 600 });
const raw = await provider.get('app-config'); // Uint8Array
// Cache management
provider.clearCache(); // e.g., after config deployment
// Multiple environments
const prodProvider = new AppConfigProvider({ application: 'my-app', environment: 'production' });
const devProvider = new AppConfigProvider({ application: 'my-app', environment: 'development' });AppConfig uses session-based tokens:
Two-level caching:
maxAge (default 5s)This optimizes both API calls and retrieval performance.
const config = await getAppConfig('freeform', { application: 'app', environment: 'prod' });const json = await getAppConfig('json-config', {
application: 'app',
environment: 'prod',
transform: 'json'
});Use AppConfig feature flags API separately for type-safe feature flag access.
AppConfig supports:
Provider retrieves currently active version based on strategy. No special code handling needed.
POWERTOOLS_SERVICE_NAME: Default application name when not explicitly provided
export POWERTOOLS_SERVICE_NAME=my-appconst config = await getAppConfig('my-config', { environment: 'prod' });{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["appconfig:StartConfigurationSession", "appconfig:GetLatestConfiguration"],
"Resource": ["arn:aws:appconfig:region:account-id:application/app-id/environment/env-id/configuration/profile-id"]
}
]
}maxAge based on deployment frequency (60-300s for frequent, 600-3600s for stable)POWERTOOLS_SERVICE_NAME for consistent application namingclearCaches() or provider.clearCache()