We use machine learning technology to do auto-translation. Click "English" on top navigation bar to check Chinese version.
The history and future roadmap of the Amazon Web Services CloudFormation Registry
History
The CloudFormation service was
It became obvious that we needed a change in strategy to scale resource development in a way that could keep up with the rapid pace of innovation set by hundreds of service teams delivering new features on a daily basis. Over the last decade, our pace of innovation has increased nearly 40-fold, with 80 significant new features launched in 2011 versus more than 3,000 in 2021. Since CloudFormation was a key adoption driver (or blocker) for new Amazon Web Services services, those teams needed a way to create and manage their own resources. The goal was to enable day one support of new services at the time of launch with complete CloudFormation resource coverage.
In 2016, we launched an internal self-service platform that allowed service teams to control their own resources. This began to solve the scaling problems inherent in the prior model where the core CloudFormation team had to do all the work themselves. The benefits went beyond simply distributing developer effort, as the service teams have deep domain knowledge on their products, which allowed them to create more effective IaC components. However, as we developed resources on this model, we realized that additional design features were needed, such as standardization that could enable automatic support for features like drift detection and resource imports.
We embarked on a new project to address these concerns, with the goal of improving the internal developer experience as well as providing a public registry where customers could use the same programming model to define their own resource types. We realized that it wasn’t enough to simply make the new model available—we had to evangelize it with a training campaign, conduct engineering boot-camps, build better tooling like dashboards and deployment pipeline templates, and produce comprehensive on-boarding documentation. Most importantly, we made CloudFormation support a required item on the feature launch checklist for new services, a requirement that goes beyond documentation and is built into internal release tooling (exceptions to this requirement are rare as training and awareness around the registry have improved over time). This was a prime example of one of the maxims we repeat often at Amazon: good mechanisms are better than good intentions.
In 2019, we made this new functionality available to customers when we
Once a service team on-boards their resources to the new resource model and builds the expected Create, Read, Update, Delete, and List (CRUDL) handlers, managed experiences like
Current State
We are building out future innovations for the CloudFormation service on top of this new standardized resource model so that customers can benefit from a consistent implementation of event handlers. We built
Figure 1. Cloud Control API Resource Handler Diagram
Besides 3rd party application support, the public registry can also be used by the developer community to create useful extensions on top of Amazon Web Services services. A common solution to extending the capabilities of CloudFormation resources is to write a
CREATE
,
UPDATE
, and
DELETE
signals during stack operations. Some of those use cases can now be solved by writing a registry extension resource type instead. For more information on custom resources and resource types, and the differences between the two, see
A useful by-product of publishing a resource type to the public registry is that you get automatic support for the Amazon Web Services Cloud Development Kit (CDK) via an experimental open source repository on GitHub called
If you want to see if a given CloudFormation resource is on the new registry model or not, check if the provisioning type is either Fully
Mutable
or
Immutable
by invoking the
ProvisioningType
response element.
Here is a sample CLI command that gets a description for the Amazon Web Services::Lambda::Function resource, which is on the new registry model.
The difference between
FULLY_MUTABLE
and
IMMUTABLE
is the presence of the Update handler.
FULLY_MUTABLE
types includes an update handler to process updates to the type during stack update operations. Whereas,
IMMUTABLE
types do not include an update handler, so the type can’t be updated and must instead be replaced during stack update operations. Legacy resource types will be
NON_PROVISIONABLE
.
Opportunities for improvement
As we continue to strive towards our ultimate goal of achieving full feature coverage and a complete migration away from the legacy resource model, we are constantly identifying opportunities for improvement. We are currently addressing feature gaps in supported resources, such as
The developer experience for creating registry extensions has some rough edges, particularly for languages other than Java, which is the language of choice on Amazon Web Services service teams for their resource types. It needs to be easier to author schemas, write handler functions, and test the code to make sure it performs as expected. We are devoting more resources to the maintenance of the
To keep up with progress on resource coverage, check out the
We have recently announced a new GitHub repository called
AwsCommunity::
namespace, which can be activated in any Amazon Web Services account for use in your own templates.
To get started with the CloudFormation registry, visit the
We recently created a new
Conclusion
In this post, we hope you gained some insights into the history of the CloudFormation registry, and the design decisions that were made during our evolution towards a standardized, scalable model for resource development that can be shared by Amazon Web Services service teams, customers, and APN partners. Some of the lessons that we learned along the way might be applicable to complex design initiatives at your own company. We hope to see you on Discord and GitHub as we build out a rich set of registry resources together!
About the authors:
The mentioned AWS GenAI Services service names relating to generative AI are only available or previewed in the Global Regions. Amazon Web Services China promotes AWS GenAI Services relating to generative AI solely for China-to-global business purposes and/or advanced technology introduction.