AWS Proton is the first fully managed application deployment service for Container and Serverless Applications. We can use AWS Proton to connect and coordinate all the different tools needed for infrastructure provisioning, code deployments, monitoring, and updates.
Maintaining many microservices with frequently changing infrastructure resources and continuous integration/delivery (CI/CD) configurations is a hectic task for the platform teams. AWS Proton solves this by giving platform teams the tools to manage this complexity and making it easy for the developers to deploy their code using containers and serverless technologies.
AWS Proton enables infrastructure teams to define standard templates centrally and make them available for developers. It allows the infrastructure teams to manage and update infrastructure without impacting developer productivity.
2. Let us explore the various terms associated with AWS Proton
Who creates environment templates and service templates, responsible for any changes related to the infrastructure and services.
Select a registered Service Template and link to the source code repository. Then, AWS Proton deploys and manages the Service and the Service Instances running the source code as defined in the selected Service Template.
An environment represents the shared resources and policies that AWS Proton services are deployed. For example, it can contain resources that are shared across the AWS Proton service instances, such as VPCs, clusters, and shared load balancers or API Gateways, etc.
As administrators, we can create and register an environment template with AWS Proton. Then, it deploys the environment as per the environment template.
An environment template bundle comprises a schema, infrastructure CloudFormation, and infrastructure manifest YAML files, organized by directory.
Schema file (schema.yaml)
The schema file uses the OpenAPI format and includes some of the metadata that AWS Proton requires and a definition of all the input and output parameters that are injected in the Jinja parameterized CloudFormation templates. The parameter definitions contain such information as the parameter’s name, a description, type, whether the parameter is required, its default value, and other options if applicable. AWS Proton validates and verifies inputs based on the schema file.
CloudFormation file (cloudformation.yaml)
The CloudFormation templates define the infrastructure and resources used for the service. As an administrator, you write these templates using standard CloudFormation methods and then use Jinja to indicate the input and output parameters as defined in the schema.
Manifest file (manifest.yaml)
The manifest file includes a list of the templates that are used to define the provisioning of the service infrastructure and optional service pipeline.
An organized directory of environment template
3. Service Template
A service template includes several service instances and a pipeline. An AWS Proton service instance is an instantiation of a service template in a specific environment. A service template is a complete definition of the infrastructure and optional service pipeline for an AWS Proton service.
We can create and register service templates with AWS Proton.
The service template bundle is used to create and register a service template. A service template bundle comprises a schema, infrastructure CloudFormation, infrastructure manifest, and optionally, service pipeline CloudFormation and manifest, YAML files organized by directory.
CloudFormation file (pipeline.yaml)
The service pipeline CloudFormation templates define the pipeline that is used for the service. You write these templates using standard CloudFormation methods and then use Jinja to indicate the input and output parameters as defined in the schema.
An organized directory of service template
As an admin or part of a platform team, we define, create and manage the environment templates. we can make a template version and use that version to deploy the AWS resources. There were major and minor versions. Minor versions must be backward compatible. AWS Proton fails a new minor version registration if it’s not backward compatible.
4. How to Upload templates
AWS proton helps us to upload the entire environment and service template to S3. We need to make separate ZIP of the Environments and Services templates.
tar-zcvf env-template.tar.gz environment/
tar-zcvf srv-template.tar.gz service/
5. Getting started to use AWS Proton
Use this AWS GIT repo to try out a demo using the service
Let me demonstrate how a platform team can offer service teams self-service infrastructure provisioning and service deployment.
Let us start with setting up of template
Zip the template and upload it to s3
The console choose an environment from AWS Proton
3. Choose environment template and upload the template
4. Do the same with the service template also
5. Once the templates are created, go to environment template and service template and publish the version
6. Once the template version is published, go to environment from the proton console
7. Select create an environment and choose the environment template we created and go next, give the environment a name, choose an IAM role for the Environment roles, click on next, review the details, and click on create. It will start the creation of our environment; if we go to CloudFormation, we can see a new stack has been started creating
8. Once the creation is completed, choose a secure connection and create a connection to our source code repository from the console
9. Once the source connection is created, choose Services from the proton console
10. Choose a service template that we created and click on configure. We need to give a service name and provide the service repository details
11. Once the details are updated, click on next and add the details on the next page, give a service instance name, choose the environment in which we need to deploy the service if required add the optional parts also.
12. Click Next, review the details we added, and click create.
13. This will create the services that were added to the service template.
14. After the deployment is successful, we can see the service instance running in the console
15. If we add the CodePipeline CloudFormation template into the service templates, we can see the pipeline starts whenever we make pushes to the repository; new updates will be deployed into the service instances.
I hope this guide helps you to understand the AWS Proton service. Let me know if you have any questions or suggestions in the comments section.
CloudThatprovides end-to-end support with all the Microsoft services. As a pioneer in the Cloud Computing consulting realm, we are AWS (Amazon Web Services) Advanced Consulting Partner, and Training partner. We are on a mission to build a robust cloud computing ecosystem by disseminating knowledge on technological intricacies within the cloud space. Read more about CloudThat’s Consulting and Expert Advisory.
7. Frequently Asked Questions
What is proton AWS?
Managing hundreds or thousands of Microservices whose infrastructure resources change constantly and which need Continuous Integration/Continuous Development (CI/CD) is a tough ask even for a well-versed development team. In this context, AWS Proton is introduced as the first-fully managed delivery service for container and serverless applications.
What is code star in AWS?
It is a cloud-based development service for swift development, building, and deployment of applications on AWS. The AWS code star helps to configure the entire continuous delivery tool-chain within minutes.
How do I use AWS Proton?
The following video from AWS answers this question effectively.