AppConfig
Advanced feature flags utility
Usage Documentation
| CLASS | DESCRIPTION |
|---|---|
AppConfigExtensionStore |
Feature flags store that reads from the AWS AppConfig Agent Lambda extension. |
AppConfigStore |
|
AppConfigExtensionStore ¶
AppConfigExtensionStore(environment: str, application: str, name: str, max_age: int = 5, envelope: str | None = '', jmespath_options: dict | None = None, logger: Logger | Logger | None = None)
Bases: AppConfigStore
Feature flags store that reads from the AWS AppConfig Agent Lambda extension.
Same behaviour as AppConfigStore(use_extension=True): configuration is read from the
extension's local HTTP endpoint instead of calling AppConfig with boto3, so there are no
boto3 options to configure. Requires the AWS-AppConfig-Extension layer.
| PARAMETER | DESCRIPTION |
|---|---|
environment
|
AppConfig environment, e.g. 'dev'
TYPE:
|
application
|
AppConfig application name, e.g. 'powertools'
TYPE:
|
name
|
AppConfig configuration name, e.g. 'features'
TYPE:
|
max_age
|
Seconds to keep the configuration in Powertools' cache before reading the extension again. The extension keeps its own cache and refreshes it in the background; use 0 to read it on every call.
TYPE:
|
envelope
|
JMESPath expression to pluck feature flags data from the configuration
TYPE:
|
jmespath_options
|
Alternative JMESPath options to be included when filtering expr
TYPE:
|
logger
|
Used to log messages. If None is supplied, one will be created. |
Example
from aws_lambda_powertools.utilities.feature_flags import AppConfigExtensionStore, FeatureFlags
store = AppConfigExtensionStore(environment="dev", application="product-catalogue", name="features") feature_flags = FeatureFlags(store=store)
Source code in aws_lambda_powertools/utilities/feature_flags/appconfig.py
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | |
AppConfigStore ¶
AppConfigStore(environment: str, application: str, name: str, max_age: int = 5, sdk_config: Config | None = None, envelope: str | None = '', jmespath_options: dict | None = None, logger: Logger | Logger | None = None, boto_config: Config | None = None, boto3_session: Session | None = None, boto3_client: AppConfigDataClient | None = None, use_extension: bool = False)
Bases: StoreProvider
| PARAMETER | DESCRIPTION |
|---|---|
environment
|
Appconfig environment, e.g. 'dev/test' etc.
TYPE:
|
application
|
AppConfig application name, e.g. 'powertools'
TYPE:
|
name
|
AppConfig configuration name e.g.
TYPE:
|
max_age
|
cache expiration time in seconds, or how often to call AppConfig to fetch latest configuration
TYPE:
|
sdk_config
|
Botocore Config object to pass during client initialization
TYPE:
|
envelope
|
JMESPath expression to pluck feature flags data from config
TYPE:
|
jmespath_options
|
Alternative JMESPath options to be included when filtering expr
TYPE:
|
logger
|
Used to log messages. If None is supplied, one will be created. |
boto_config
|
Botocore configuration to pass during client initialization
TYPE:
|
boto3_session
|
Boto3 session to use for AWS API communication
TYPE:
|
boto3_client
|
Boto3 AppConfigDataClient Client to use, boto3_session and boto_config will be ignored if both are provided
TYPE:
|
use_extension
|
Fetch the configuration from the AWS AppConfig Agent Lambda extension on localhost instead of calling AppConfig with boto3. Requires the AWS-AppConfig-Extension layer. boto3 options are ignored.
TYPE:
|
| METHOD | DESCRIPTION |
|---|---|
get_configuration |
Fetch feature schema configuration from AWS AppConfig |
| ATTRIBUTE | DESCRIPTION |
|---|---|
get_raw_configuration |
Fetch feature schema configuration from AWS AppConfig |
Source code in aws_lambda_powertools/utilities/feature_flags/appconfig.py
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | |
get_raw_configuration
property
¶
get_raw_configuration: dict[str, Any]
Fetch feature schema configuration from AWS AppConfig
get_configuration ¶
get_configuration() -> dict[str, Any]
Fetch feature schema configuration from AWS AppConfig
If envelope is set, it'll extract and return feature flags from configuration, otherwise it'll return the entire configuration fetched from AWS AppConfig.
| RAISES | DESCRIPTION |
|---|---|
ConfigurationStoreError
|
Any validation error or AppConfig error that can occur |
| RETURNS | DESCRIPTION |
|---|---|
dict[str, Any]
|
parsed JSON dictionary |
Source code in aws_lambda_powertools/utilities/feature_flags/appconfig.py
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | |