Utilizing function flags and different runtime configuration sorts is a fast-evolving expertise section. Adjusting your software program habits with a minor configuration replace as a substitute of deploying code lets groups transfer quicker and extra safely. Moreover, releasing a function utilizing a function flag permits engineering groups to activate options to a restricted set of customers after which measure the impression. The aptitude can immediately flip off and roll again if one thing goes mistaken, considerably limiting the change’s impression. At Amazon, we name the follow of utilizing function flags and runtime configuration, Steady Configuration.
AWS AppConfig began in 2017 as an inner device for Amazon. It shortly grew to become a top-used service for inner groups that needed a secure and measured strategy to handle their function flags and operational flags. In 2019, AWS launched AppConfig for exterior clients. This providing had all the discovered classes and finest practices for using runtime configuration and have flags constructed into the product. Now we’re asserting AppConfig Extensions, which permits clients to increase the facility of dynamic configuration and have flags in new and revolutionary methods. After studying this submit, you’ll perceive what AppConfig Extensions are, what issues they resolve, and what extension sorts you’ll be able to construct.
What are AppConfig Extensions?
Because the inner launch of AppConfig in 2017, and the exterior launch in 2019, we’ve added many options that clients have requested. These embrace integrations with Lambda, AWS CodePipeline, and Amazon CloudWatch, in addition to releasing an opinionated format for function flags in 2021. We’ve innovated on behalf of our clients, and we frequently obtain many requests for brand new performance. One remark we’ve had on these requests is that there are elements to them that make them impractical to construct in a generic means. One other remark was seeing how some clients have constructed options on high of our service in ways in which had been particular to their very own workflows. Nonetheless, as a substitute of getting the AppConfig workforce construct all new options as requested, we determined to empower others to construct on high of AppConfig. We knew that permitting different engineers, each inner and exterior, to make the most of a framework to increase AppConfig can be a power multiplier, plus give the liberty to assist integrations into customer-specific methods and processes.
AppConfig Extensions are add-ons to AppConfig that improve the facility and security of the principle AppConfig service. Managing configuration sometimes follows a lifecycle just like creating code: create/replace, validate/take a look at, deploy, and monitor. The AppConfig Extension framework exposes hooks, referred to as motion factors, at every of those lifecycle milestones. When an motion level is triggered, no matter actions (e.g. calling a Lambda perform) are outlined within the set of AppConfig Extensions relevant at that lifecycle step will likely be invoked.
The framework permits for simpler integration of different companies (AWS and in any other case) to assist clients enhance their velocity and security. Over the approaching months and years, we count on the variety of extensions to develop considerably, offering bespoke options created by AWS and our clients.
Self-authored AppConfig Extensions
To offer a way of the performance that AppConfig Extensions can present, we’ll illustrate some examples similar to the lifecycle steps talked about above, beginning with the primary section: the creation of configuration knowledge. Let’s say, for instance, that you simply needed so as to add a timestamp inside your hosted configuration knowledge’s JSON every time it will get up to date. With an extension, you may hook into the PRE_CREATE_HOSTED_CONFIGURATION_VERSION motion level and write a easy AWS Lambda to insert the timestamp. You could subsequent resolve that you simply need to export a replica of every model of your hosted configuration knowledge right into a supply repository like Github, no matter its knowledge format. You possibly can create one other extension that additionally hooks into the PRE_CREATE_HOSTED_CONFIGURATION_VERSION motion level to export the hosted knowledge into your repo each time the information adjustments. Whereas each extensions could possibly be related to a selected Configuration Profile, you may as a substitute affiliate this extension to an Software which is able to trigger it to mechanically apply to all hosted Configuration Profiles in your Software, even these created at a later date. Persevering with down the lifecycle steps, you may have to merge knowledge from one other supply, equivalent to a legacy configuration database, into your configuration knowledge earlier than it deploys. Your extension would include an motion that triggers at PRE_START_DEPLOYMENT and calls a Lambda to retrieve the information and merge it into the to-be-deployed model of configuration knowledge. As a ultimate instance, you may set off take a look at automation to run after you’ve deployed new configuration knowledge by hooking into the ON_DEPLOYMENT_COMPLETE motion level that publishes a message to an SNS matter.
Obtainable Motion Factors
As famous above, an extension can hook into AppConfig Extension motion factors. Presently, AppConfig exposes the next motion factors:
|PRE_CREATE_HOSTED_CONFIGURATION_VERSION||happens when an AppConfig hosted configuration is created or up to date, however simply earlier than it’s saved|
|PRE_START_DEPLOYMENT||happens simply earlier than a deployment begins|
|ON_DEPLOYMENT_START||happens when an AppConfig deployment begins|
|ON_DEPLOYMENT_STEP||happens throughout a deployment, and increments relying on the deployment technique step proportion|
|ON_DEPLOYMENT_BAKING||happens after the deployment completes, however bake time (if specified) begins|
|ON_DEPLOYMENT_COMPLETE||happens after the deployment and bake time is full|
|ON_DEPLOYMENT_ROLLED_BACK||happens if a deployment roll again initiates|
AWS-authored AppConfig Extensions
Along with the AppConfig extensions you create, we have now a handful of extensions which are already obtainable so that you can use. The AppConfig Notification Extensions enable clients to be notified for the ON_DEPLOYMENT_START, ON_DEPLOYMENT_COMPLETE, and ON_DEPLOYMENT_ROLLEDBACK motion factors. Prospects can have these notifications despatched to Amazon EventBridge, Amazon Easy Notification Service (Amazon SNS), or Amazon Easy Queue Service (Amazon SQS). We even have an AppConfig Characteristic Flags Helper extension, which performs a task in our Characteristic Flags function and is mechanically related to Characteristic Flag Configuration Profiles, in addition to a Jira Integration extension that creates and manages Jira Points related to your function flags.
This preliminary launch of AppConfig Extensions lays the inspiration for the platforming of configuration knowledge and have flags. Nonetheless, that is simply the beginning. Sooner or later, we count on to launch many AWS-owned extensions and a few third-party extensions. Furthermore, we’re trying ahead to speaking to clients concerning the extensions they’ve authored, and persevering with to innovate with our clients in how they’re using function flags and runtime configuration.
Get began with AWS AppConfig Extensions.
By Steve Rice and Jonathan (JT) Thompson
The ‘Cloud Syndicate’ is a mixture of quick time period visitor contributors, curated sources and syndication companions protecting a wide range of fascinating expertise associated matters. Contact us for syndication particulars on the right way to join your expertise article or information feed to our syndication community.