AppConfig class
AppConfig feature flags and dynamic configurations help software builders quickly and securely adjust application behavior in production environments without full code deployments. AppConfig speeds up software release frequency, improves application resiliency, and helps you address emergent issues more quickly. With feature flags, you can gradually release new capabilities to users and measure the impact of those changes before fully deploying the new capabilities to all users. With operational flags and dynamic configurations, you can update block lists, allow lists, throttling limits, logging verbosity, and perform other operational tuning to quickly respond to issues in production environments. Despite the fact that application configuration content can vary greatly from application to application, AppConfig supports the following use cases, which cover a broad spectrum of customer needs:
- Feature flags and toggles - Safely release new capabilities to your customers in a controlled environment. Instantly roll back changes if you experience a problem.
- Application tuning - Carefully introduce application changes while testing the impact of those changes with users in production environments.
- Allow list or block list - Control access to premium features or instantly block specific users without deploying new code.
- Centralized configuration storage - Keep your configuration data organized and consistent across all of your workloads. You can use AppConfig to deploy configuration data stored in the AppConfig hosted configuration store, Secrets Manager, Systems Manager, Parameter Store, or Amazon S3.
This section provides a high-level description of how AppConfig works and how you get started.
- 1. Identify configuration values in code you want to manage in the cloud
-
Before you start creating AppConfig artifacts, we recommend you identify
configuration data in your code that you want to dynamically manage using
AppConfig. Good examples include feature flags or toggles, allow and block
lists, logging verbosity, service limits, and throttling rules, to name a
few.
If your configuration data already exists in the cloud, you can take advantage of AppConfig validation, deployment, and extension features to further streamline configuration data management.
- 2. Create an application namespace
- To create a namespace, you create an AppConfig artifact called an application. An application is simply an organizational construct like a folder.
- 3. Create environments
-
For each AppConfig application, you define one or more environments. An
environment is a logical grouping of targets, such as applications in a
BetaorProductionenvironment, Lambda functions, or containers. You can also define environments for application subcomponents, such as theWeb,Mobile, andBack-end.You can configure Amazon CloudWatch alarms for each environment. The system monitors alarms during a configuration deployment. If an alarm is triggered, the system rolls back the configuration.
- 4. Create a configuration profile
-
A configuration profile includes, among other things, a URI that enables
AppConfig to locate your configuration data in its stored location and a
profile type. AppConfig supports two configuration profile types: feature
flags and freeform configurations. Feature flag configuration profiles store
their data in the AppConfig hosted configuration store and the URI is simply
hosted. For freeform configuration profiles, you can store your data in the AppConfig hosted configuration store or any Amazon Web Services service that integrates with AppConfig, as described in Creating a free form configuration profile in the the AppConfig User Guide.A configuration profile can also include optional validators to ensure your configuration data is syntactically and semantically correct. AppConfig performs a check using the validators when you start a deployment. If any errors are detected, the deployment rolls back to the previous configuration data.
- 5. Deploy configuration data
-
When you create a new deployment, you specify the following:
- An application ID
- A configuration profile ID
- A configuration version
- An environment ID where you want to deploy the configuration data
- A deployment strategy ID that defines how fast you want the changes to take effect
- Retrieves the configuration data from the underlying data store by using the location URI in the configuration profile.
- Verifies the configuration data is syntactically and semantically correct by using the validators you specified when you created your configuration profile.
- Caches a copy of the data so it is ready to be retrieved by your application. This cached copy is called the deployed data.
- 6. Retrieve the configuration
-
You can configure AppConfig Agent as a local host and have the agent poll
AppConfig for configuration updates. The agent calls the StartConfigurationSession
and GetLatestConfiguration
API actions and caches your configuration data locally. To retrieve the
data, your application makes an HTTP call to the localhost server. AppConfig
Agent supports several use cases, as described in Simplified
retrieval methods in the the AppConfig User Guide.
If AppConfig Agent isn't supported for your use case, you can configure your application to poll AppConfig for configuration updates by directly calling the StartConfigurationSession and GetLatestConfiguration API actions.
Constructors
- AppConfig({required String region, AwsClientCredentials? credentials, AwsClientCredentialsProvider? credentialsProvider, Client? client, String? endpointUrl})
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
close(
) → void - Closes the internal HTTP client if none was provided at creation. If a client was passed as a constructor argument, this becomes a noop.
-
createApplication(
{required String name, String? description, Map< String, String> ? tags}) → Future<Application> - Creates an application. In AppConfig, an application is simply an organizational construct like a folder. This organizational construct has a relationship with some unit of executable code. For example, you could create an application called MyMobileApp to organize and manage configuration data for a mobile application installed by your users.
-
createConfigurationProfile(
{required String applicationId, required String locationUri, required String name, String? description, String? kmsKeyIdentifier, String? retrievalRoleArn, Map< String, String> ? tags, String? type, List<Validator> ? validators}) → Future<ConfigurationProfile> - Creates a configuration profile, which is information that enables AppConfig to access the configuration source. Valid configuration sources include the following:
-
createDeploymentStrategy(
{required int deploymentDurationInMinutes, required double growthFactor, required String name, String? description, int? finalBakeTimeInMinutes, GrowthType? growthType, ReplicateTo? replicateTo, Map< String, String> ? tags}) → Future<DeploymentStrategy> - Creates a deployment strategy that defines important criteria for rolling out your configuration to the designated targets. A deployment strategy includes the overall duration required, a percentage of targets to receive the deployment during each interval, an algorithm that defines how percentage grows, and bake time.
-
createEnvironment(
{required String applicationId, required String name, String? description, List< Monitor> ? monitors, Map<String, String> ? tags}) → Future<Environment> -
Creates an environment. For each application, you define one or more
environments. An environment is a deployment group of AppConfig targets,
such as applications in a
BetaorProductionenvironment. You can also define environments for application subcomponents such as theWeb,MobileandBack-endcomponents for your application. You can configure Amazon CloudWatch alarms for each environment. The system monitors alarms during a configuration deployment. If an alarm is triggered, the system rolls back the configuration. -
createExtension(
{required Map< ActionPoint, List< actions, required String name, String? description, int? latestVersionNumber, Map<Action> >String, Parameter> ? parameters, Map<String, String> ? tags}) → Future<Extension> - Creates an AppConfig extension. An extension augments your ability to inject logic or behavior at different points during the AppConfig workflow of creating or deploying a configuration.
-
createExtensionAssociation(
{required String extensionIdentifier, required String resourceIdentifier, int? extensionVersionNumber, Map< String, String> ? parameters, Map<String, String> ? tags}) → Future<ExtensionAssociation> -
When you create an extension or configure an Amazon Web Services authored
extension, you associate the extension with an AppConfig application,
environment, or configuration profile. For example, you can choose to run
the
AppConfig deployment events to Amazon SNSAmazon Web Services authored extension and receive notifications on an Amazon SNS topic anytime a configuration deployment is started for a specific application. Defining which extension to associate with an AppConfig resource is called an extension association. An extension association is a specified relationship between an extension and an AppConfig resource, such as an application or a configuration profile. For more information about extensions and associations, see Extending workflows in the AppConfig User Guide. -
createHostedConfigurationVersion(
{required String applicationId, required String configurationProfileId, required Uint8List content, required String contentType, String? description, int? latestVersionNumber, String? versionLabel}) → Future< HostedConfigurationVersion> - Creates a new configuration in the AppConfig hosted configuration store. If you're creating a feature flag, we recommend you familiarize yourself with the JSON schema for feature flag data. For more information, see Type reference for AWS.AppConfig.FeatureFlags in the AppConfig User Guide.
-
deleteApplication(
{required String applicationId}) → Future< void> - Deletes an application.
-
deleteConfigurationProfile(
{required String applicationId, required String configurationProfileId, DeletionProtectionCheck? deletionProtectionCheck}) → Future< void> - Deletes a configuration profile.
-
deleteDeploymentStrategy(
{required String deploymentStrategyId}) → Future< void> - Deletes a deployment strategy.
-
deleteEnvironment(
{required String applicationId, required String environmentId, DeletionProtectionCheck? deletionProtectionCheck}) → Future< void> - Deletes an environment.
-
deleteExtension(
{required String extensionIdentifier, int? versionNumber}) → Future< void> - Deletes an AppConfig extension. You must delete all associations to an extension before you delete the extension.
-
deleteExtensionAssociation(
{required String extensionAssociationId}) → Future< void> - Deletes an extension association. This action doesn't delete extensions defined in the association.
-
deleteHostedConfigurationVersion(
{required String applicationId, required String configurationProfileId, required int versionNumber}) → Future< void> - Deletes a version of a configuration from the AppConfig hosted configuration store.
-
getAccountSettings(
) → Future< AccountSettings> -
Returns information about the status of the
DeletionProtectionparameter. -
getApplication(
{required String applicationId}) → Future< Application> - Retrieves information about an application.
-
getConfiguration(
{required String application, required String clientId, required String configuration, required String environment, String? clientConfigurationVersion}) → Future< Configuration> - (Deprecated) Retrieves the latest deployed configuration.
-
getConfigurationProfile(
{required String applicationId, required String configurationProfileId}) → Future< ConfigurationProfile> - Retrieves information about a configuration profile.
-
getDeployment(
{required String applicationId, required int deploymentNumber, required String environmentId}) → Future< Deployment> - Retrieves information about a configuration deployment.
-
getDeploymentStrategy(
{required String deploymentStrategyId}) → Future< DeploymentStrategy> - Retrieves information about a deployment strategy. A deployment strategy defines important criteria for rolling out your configuration to the designated targets. A deployment strategy includes the overall duration required, a percentage of targets to receive the deployment during each interval, an algorithm that defines how percentage grows, and bake time.
-
getEnvironment(
{required String applicationId, required String environmentId}) → Future< Environment> -
Retrieves information about an environment. An environment is a deployment
group of AppConfig applications, such as applications in a
Productionenvironment or in anEU_Regionenvironment. Each configuration deployment targets an environment. You can enable one or more Amazon CloudWatch alarms for an environment. If an alarm is triggered during a deployment, AppConfig roles back the configuration. -
getExtension(
{required String extensionIdentifier, int? versionNumber}) → Future< Extension> - Returns information about an AppConfig extension.
-
getExtensionAssociation(
{required String extensionAssociationId}) → Future< ExtensionAssociation> - Returns information about an AppConfig extension association. For more information about extensions and associations, see Extending workflows in the AppConfig User Guide.
-
getHostedConfigurationVersion(
{required String applicationId, required String configurationProfileId, required int versionNumber}) → Future< HostedConfigurationVersion> - Retrieves information about a specific configuration version.
-
listApplications(
{int? maxResults, String? nextToken}) → Future< Applications> - Lists all applications in your Amazon Web Services account.
-
listConfigurationProfiles(
{required String applicationId, int? maxResults, String? nextToken, String? type}) → Future< ConfigurationProfiles> - Lists the configuration profiles for an application.
-
listDeployments(
{required String applicationId, required String environmentId, int? maxResults, String? nextToken}) → Future< Deployments> - Lists the deployments for an environment in descending deployment number order.
-
listDeploymentStrategies(
{int? maxResults, String? nextToken}) → Future< DeploymentStrategies> - Lists deployment strategies.
-
listEnvironments(
{required String applicationId, int? maxResults, String? nextToken}) → Future< Environments> - Lists the environments for an application.
-
listExtensionAssociations(
{String? extensionIdentifier, int? extensionVersionNumber, int? maxResults, String? nextToken, String? resourceIdentifier}) → Future< ExtensionAssociations> - Lists all AppConfig extension associations in the account. For more information about extensions and associations, see Extending workflows in the AppConfig User Guide.
-
listExtensions(
{int? maxResults, String? name, String? nextToken}) → Future< Extensions> - Lists all custom and Amazon Web Services authored AppConfig extensions in the account. For more information about extensions, see Extending workflows in the AppConfig User Guide.
-
listHostedConfigurationVersions(
{required String applicationId, required String configurationProfileId, int? maxResults, String? nextToken, String? versionLabel}) → Future< HostedConfigurationVersions> - Lists configurations stored in the AppConfig hosted configuration store by version.
-
listTagsForResource(
{required String resourceArn}) → Future< ResourceTags> - Retrieves the list of key-value tags assigned to the resource.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
startDeployment(
{required String applicationId, required String configurationProfileId, required String configurationVersion, required String deploymentStrategyId, required String environmentId, String? description, Map< String, String> ? dynamicExtensionParameters, String? kmsKeyIdentifier, Map<String, String> ? tags}) → Future<Deployment> - Starts a deployment.
-
stopDeployment(
{required String applicationId, required int deploymentNumber, required String environmentId, bool? allowRevert}) → Future< Deployment> -
Stops a deployment. This API action works only on deployments that have a
status of
DEPLOYING, unless anAllowRevertparameter is supplied. If theAllowRevertparameter is supplied, the status of an in-progress deployment will beROLLED_BACK. The status of a completed deployment will beREVERTED. AppConfig only allows a revert within 72 hours of deployment completion. -
tagResource(
{required String resourceArn, required Map< String, String> tags}) → Future<void> - Assigns metadata to an AppConfig resource. Tags help organize and categorize your AppConfig resources. Each tag consists of a key and an optional value, both of which you define. You can specify a maximum of 50 tags for a resource.
-
toString(
) → String -
A string representation of this object.
inherited
-
untagResource(
{required String resourceArn, required List< String> tagKeys}) → Future<void> - Deletes a tag key and value from an AppConfig resource.
-
updateAccountSettings(
{DeletionProtectionSettings? deletionProtection}) → Future< AccountSettings> -
Updates the value of the
DeletionProtectionparameter. -
updateApplication(
{required String applicationId, String? description, String? name}) → Future< Application> - Updates an application.
-
updateConfigurationProfile(
{required String applicationId, required String configurationProfileId, String? description, String? kmsKeyIdentifier, String? name, String? retrievalRoleArn, List< Validator> ? validators}) → Future<ConfigurationProfile> - Updates a configuration profile.
-
updateDeploymentStrategy(
{required String deploymentStrategyId, int? deploymentDurationInMinutes, String? description, int? finalBakeTimeInMinutes, double? growthFactor, GrowthType? growthType}) → Future< DeploymentStrategy> - Updates a deployment strategy.
-
updateEnvironment(
{required String applicationId, required String environmentId, String? description, List< Monitor> ? monitors, String? name}) → Future<Environment> - Updates an environment.
-
updateExtension(
{required String extensionIdentifier, Map< ActionPoint, List< ? actions, String? description, Map<Action> >String, Parameter> ? parameters, int? versionNumber}) → Future<Extension> - Updates an AppConfig extension. For more information about extensions, see Extending workflows in the AppConfig User Guide.
-
updateExtensionAssociation(
{required String extensionAssociationId, Map< String, String> ? parameters}) → Future<ExtensionAssociation> - Updates an association. For more information about extensions and associations, see Extending workflows in the AppConfig User Guide.
-
validateConfiguration(
{required String applicationId, required String configurationProfileId, required String configurationVersion}) → Future< void> - Uses the validators in a configuration profile to validate a configuration.
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited