Infrastructure as code and platform automation - Containers on AWS

This whitepaper is for historical reference only. Some content might be outdated and some links might not be available.

Infrastructure as code and platform automation

When you define your cloud resources as code, you spend less time creating and managing the infrastructure and achieve better operations through reusability and reduced changes of error. As with other AWS services, AWS CloudFormation provides you a way to model and set up your container resources. AWS CloudFormation templates are formatted text files in JSON or YAML. These templates describe the resources that you want to provision in your AWS CloudFormation stacks. All AWS container services have AWS CloudFormation support, providing you with an option to script your container infrastructure on AWS. AWS CloudFormation is powerful in its capabilities, but if you're unfamiliar with JSON or YAML, AWS also provides other options to script your container environments.

AWS Copilot CLI is a tool for developers to build, release, and operate production-ready containerized applications on Amazon ECS and AWS Fargate. Copilot takes best practices from infrastructure to continuous delivery, and makes them available to customers from the comfort of their command line. You can also monitor the health of your service by viewing your service's status or logs, scale up or down production services, and spin up a new environment for automated testing. For Amazon EKS, eksctl is a simple CLI tool for creating and managing clusters on Amazon EKS. It uses AWS CloudFormation under the covers, but allows you to specify your cluster configuration information using a config file, with sensible defaults for configuration that is not specified. If you prefer to use a familiar programming language to define cloud resources, you can use AWS Cloud Development Kit (AWS CDK). CDK is a software development framework for defining cloud infrastructure in code and provisioning it through AWS CloudFormation. Today CDK supports TypeScript, JavaScript, Python, Java, C#/.Net, and (in developer preview) Go. Amazon EKS Blueprints helps you compose complete Amazon EKS clusters, fully bootstrapped with the operational software that is needed to deploy and operate workloads. A blueprint defines configuration for the desired state of your Amazon EKS environment, such as the control plane, worker nodes, and Kubernetes add-ons. Blueprints can be implemented using Terraform or CDK.

Platform engineering is a discipline that promotes the idea of self-provisioning infrastructure on demand. This reduces friction within an organization and allows development teams to move in an agile manner. AWS Proton is a fully managed delivery service for container and serverless applications that enables platform engineering teams to connect and coordinate all the different tools needed for infrastructure provisioning, code deployments, monitoring, and updates.