Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News AWS Proton Adds Terraform Support and Git Template Storage

AWS Proton Adds Terraform Support and Git Template Storage

This item in japanese

AWS recently announced two new additions to AWS Proton, their fully-managed application delivery service. The first feature allows for defining and provisioning infrastructure via Terraform. The second feature allows for using Git repositories to manage the Proton templates.

AWS Proton is a managed delivery service for containers and serverless applications. It allows infrastructure teams to visualize and manage their environment and service templates. Developers can then select those templates and self-service their deployments.

With this release it is now possible to use both CloudFormation and Terraform as the infrastructure as code engine behind AWS Proton. Service and environment templates can be based on infrastructure defined using Terraform. Via a pull-request approach, Terraform can be used to provision and update the infrastructure.

With the IaC templates written in Terraform's language HCL, the infrastructure can then be provisioned using Terraform Open Source. AWS Proton will then render the Terraform module and make a pull request back to the infrastructure repository allowing for the change to be planned and applied.

As AWS Proton is not managing the provision of infrastructure, there needs to be a step that notifies Proton of the deployment status. Currently the only supported means for this is via a CodeStar connection linked with GitHub. At this time, provisioning via pull request is considered in feature preview and is only usable with Terraform based Proton templates.

CloudFormation can still be used to provision AWS Proton using standard provisioning. Note that you cannot combine the two provisioning methods. For example, you are not permitted to deploy a standard provisioned service to an environment provisioned with pull requests.

The second feature allows for pushing, updating, and publishing AWS Proton templates directly from Git repositories. When creating service or environment templates, it is now possible to specify a remote Git repository containing the template.

When using CloudFormation templates via standard provisioning, AWS Proton will automatically sync those templates and make them available via the console. When changes are made to the template files in Git, AWS Proton will take care of any necessary updates.

The AWS Proton template bundle can be written in either CloudFormation or Terraform, but not both. This bundle includes the IaC files with a manifest YAML file that lists the IaC file. When using Terraform, provisioning by pull request is currently the only option as described above.

With CloudFormation only a single file is listed in the manifest for environment templates as shown below:

    - file: "cloudformation.yaml"
      rendering_engine: jinja
      template_language: cloudformation

When defining service template bundles, one file will define the service instance definitions and a second optional file can describe the pipeline definition.

With Terraform, either a single file can be named or a wildcard, *.tf, to list each file in the directory:

    - file: "*.tf"
      rendering_engine: hcl
      template_language: terraform

This new feature allows for leveraging existing workflows for approving and tracking changes such as those available with GitHub.

AWS Proton is available in the US East (N. Virginia), US East (Ohio), US West (Oregon), Europe (Ireland), and Asia Pacific (Tokyo) regions. There is no additional charge for using AWS Proton, only the charges incurred for the resources that are created to store and run the application. More details can be found on the product landing page.

About the Author

Rate this Article