// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.

// Package appconfig provides the client and types for making API
// requests to Amazon AppConfig.
//
// 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.
//
// AppConfig is a capability of Amazon Web Services Systems Manager.
//
// 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.
//
// # How AppConfig works
//
// 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 Beta or Production
// environment, Lambda functions, or containers. You can also define environments
// for application subcomponents, such as the Web, Mobile, and Back-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 (http://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-free-form-configurations-creating.html)
// 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
//
// When you call the StartDeployment (https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_StartDeployment.html)
// API action, AppConfig performs the following tasks:
//
// 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
// (https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_StartConfigurationSession.html)
// and GetLatestConfiguration (https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html)
// 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
// (http://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-retrieving-simplified-methods.html)
// 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 (https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_StartConfigurationSession.html)
// and GetLatestConfiguration (https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html)
// API actions.
//
// This reference is intended to be used with the AppConfig User Guide (http://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html).
//
// See https://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09 for more information on this service.
//
// See appconfig package documentation for more information.
// https://docs.aws.amazon.com/sdk-for-go/api/service/appconfig/
//
// # Using the Client
//
// To contact Amazon AppConfig with the SDK use the New function to create
// a new service client. With that client you can make API requests to the service.
// These clients are safe to use concurrently.
//
// See the SDK's documentation for more information on how to use the SDK.
// https://docs.aws.amazon.com/sdk-for-go/api/
//
// See aws.Config documentation for more information on configuring SDK clients.
// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config
//
// See the Amazon AppConfig client AppConfig for more
// information on creating client for this service.
// https://docs.aws.amazon.com/sdk-for-go/api/service/appconfig/#New
package appconfig
