Containers
Announcing the general availability of AWS Proton
It’s been six months since we introduced AWS Proton at re:Invent 2020, and today, we’re happy to announce that it is generally available and ready for your production usage!
For those not familiar with AWS Proton, let’s begin by reviewing what it is. Then, we’ll take a look at some of the features that have been added over the past six months.
AWS Proton – a review
AWS Proton is a fully managed application delivery service for containers and serverless applications. Platform engineering teams can use it to build complex architectures, and offer them to developers in simple, consumable units. With AWS Proton, platform teams can manage and maintain infrastructure while giving developers freedom to ship code even if they’re not cloud experts. It turns the infrastructure platform into a product the platform team delivers continuously.
When building a platform using AWS Proton, there are two main components: the environment and the service. Each of these components is made up of an AWS CloudFormation template, and a schema that describes the parameters required from the developers. Together, these parameters merge with the CloudFormation template, using common Jinja templating, to create the environment or service using any best practice or organizational standard that the platform engineers choose to include.
The process is simple:
- Platform engineers register and deploy the CloudFormation templates (environment and service)
- Platform engineers deploy environments using the newly registered environment template
- Developers deploy services to the new environment using the newly registered service template
Over time, the platform team can iterate and improve on the AWS Proton templates, issuing new revisions. Separately, the developers can iterate on their code and deploy it to their service.
To see a simple demo with code, check out the aws-proton-sample-templates repo on GitHub.
Since launching in preview, the AWS Proton team has been hard at work adding features requested by our customers. Some of the latest features include:
- Multi-account environments
Many AWS customers leverage the capabilities of AWS Control Tower and AWS Organizations for central management of their multi-account structure. You can now use AWS Proton to deploy for containers and serverless applications to multiple AWS accounts.
- Customer-managed environments
You now can import existing shared resources as customer-managed environments. This allows customers to start incorporating AWS Proton into their already existing infrastructure without having to recreate the shared resources.
- Centralized tagging for AWS Proton
Tagging allows you to assign metadata to AWS resources to categorize resources by purpose, owner, environment, or other criteria. You can find more information about tagging best practices here.
- Allow adding and removing instances from existing services
When you create a change in the deployment infrastructure, such as the addition or retirement of a production environment, developers need to add or remove instances from their services. You can use the AWS Proton CLI or console to define new instances and delete existing ones. AWS Proton will deprovision the removed instances, and update the service pipeline to match the new service configuration.
- Cancelling a deployment to aid in troubleshooting
Developer teams use AWS Proton as the single interface to create, manage, and deploy their services and infrastructure. With the new AWS Proton cancel deployment API, they can manage deployments in real time. Developers can stop the deployment of a service that is taking too long, or has an error, and try again later. This gives them the capacity to make adjustments and retry in a self-serve manner as part of their day-to-day workflow.
- Prevent accidental deletion of in-use templates
With the release of the new delete validation, AWS Proton now prevents the minor version from being mistakenly deleted while a resource is using it. AWS Proton uses the current minor version of an environment, service, or pipeline template to manage deployments and changes. This delete validation works in addition to existing AWS Proton validations that prevent you from deleting a template if it has major versions, or from deleting a template major version with underlying minor versions.
- Adding service instance names to Jinja templates to enhance cardinality
Template writers and developers faced the challenge of creating multiple unique identifiers when naming resources. With this feature, you can refer to service_name and service_instance_name in your templates, and AWS Proton will automatically inject the corresponding value. This will facilitate consistent naming standards and further reduce the number of required parameters.
All of these features were based on the feedback we receive from our customers, which helps us shape the AWS Proton roadmap. The roadmap is publicly available on GitHub and we encourage you to raise an issue or suggest an improvement that you would like to see in the future.