AWS CloudFormation

Last updated
AWS CloudFormation
Developer(s) Amazon Web Services
Initial releaseFebruary 25, 2011;13 years ago (2011-02-25)
Operating system Cross-platform
Platform Amazon Web Services
Type Infrastructure as Code, Cloud computing
License Proprietary software
Website aws.amazon.com/cloudformation/

AWS CloudFormation is a service provided by Amazon Web Services (AWS) that enables users to model and manage infrastructure resources in an automated and secure manner. [1] Using CloudFormation, developers can define and provision AWS infrastructure resources using a JSON- or YAML-formatted infrastructure as code template. [2] [3] The service was released on February 25, 2011. [4] [5] [6] [7]

Contents

Overview

AWS CloudFormation provides a way for users to model an entire AWS infrastructure in a text file, allowing for the infrastructure to be version-controlled, shared, and reused. [8] By using templates, users can create, update, and delete a collection of resources together as a single unit, known as a stack. [9]

Template anatomy

A CloudFormation template consists of several sections, including Resources, Parameters, Mappings, Conditions, Outputs, and Metadata. [10] The most important section is the Resources section, which defines the AWS resources to be created or modified.

Resources

Resources are the AWS components that are created, updated, or deleted when the CloudFormation stack is created, updated, or deleted. Examples of resources include Amazon EC2 instances, Amazon S3 buckets, and AWS Lambda functions. [11]

Parameters

Parameters enable users to input custom values to a CloudFormation template, allowing for customization without modifying the template itself. [12] This makes templates more reusable and flexible to accommodate different environments and use cases.

Mappings

Mappings define a set of key-value pairs that can be used to map input values to corresponding output values, making it possible to conditionally define properties and values based on the input parameters. [13] For example, mappings can be used to define different instance types and Amazon Machine Images (AMIs) for different environments.

Conditions

Conditions enable users to define conditional statements within a CloudFormation template, allowing for the creation or modification of resources based on specific criteria. [14] This can be useful in cases where certain resources should only be created or modified under specific circumstances.

Outputs

Outputs provide a way to export information about the created resources, making it possible to share this information between stacks or with external systems. [15] Outputs can be used to easily reference resources created by a stack in another stack, facilitating the integration of different AWS services.

Metadata

Metadata is used to provide additional information about the template or resources within the template. [16] This can include documentation, licensing information, or other descriptive data.

Example CloudFormation template

The following example demonstrates a simple AWS CloudFormation template in YAML format: [17]

  --- AWSTemplateFormatVersion: '2010-09-09' Description: A simple AWS CloudFormation template for an Amazon S3 bucket. Parameters:   BucketName:     Description: The name of the Amazon S3 bucket.     Type: String Resources:   S3Bucket:     Type: 'AWS::S3::Bucket'     Properties:       BucketName: !Ref BucketName Outputs:   BucketARN:     Description: The Amazon S3 bucket ARN.     Value: !GetAtt S3Bucket.Arn  

This template has the following sections:

AWSTemplateFormatVersion: Specifies the CloudFormation template version.

Description: Provides a brief description of the template.

Parameters: Defines input parameters for the template. In this example, the parameter is the Amazon S3 bucket's name.

Resources: Lists the AWS resources to be created. Here, it specifies the creation of an Amazon S3 bucket.

Outputs: Defines the values to be returned after the stack is created. In this case, it returns the Amazon Resource Name (ARN) of the created S3 bucket.

By using this template in AWS CloudFormation, a user can create an Amazon S3 bucket with a specified name, and the ARN of the created bucket will be returned as an output value.

AWS CloudFormation Drift Detection

AWS CloudFormation Drift Detection is a feature that allows users to detect whether their stack resources have drifted from their expected template configurations. [18] Drift detection helps maintain the consistency of infrastructure resources and aids in troubleshooting when unexpected changes occur.

Key milestones

2011: AWS CloudFormation was officially launched on February 25, 2011, providing users with a way to define and manage AWS infrastructure resources using a single text file. [19]

2016: Support for YAML formatted templates was introduced, in addition to the original JSON format, offering users more options when creating templates. [20]

2018: AWS CloudFormation Drift Detection was launched, allowing users to detect when their stack resources have drifted from their expected configurations. This feature helps users identify and address configuration discrepancies. [21]

2019: AWS CloudFormation Registry and CLI were introduced, enabling users to extend the service with third-party and custom resource types. This enhancement allows for more flexibility in managing resources beyond the native AWS offerings. [22]

See also

Related Research Articles

NetApp, Inc. is an intelligent data infrastructure company that provides unified data storage, integrated data services, and cloud operations (CloudOps) solutions to enterprise customers. The company is based in San Jose, California. It has ranked in the Fortune 500 from 2012 to 2021. Founded in 1992 with an initial public offering in 1995, NetApp offers cloud data services for management of applications and data both online and physically.

<span class="mw-page-title-main">Amazon Web Services</span> On-demand cloud computing company

Amazon Web Services, Inc. (AWS) is a subsidiary of Amazon that provides on-demand cloud computing platforms and APIs to individuals, companies, and governments, on a metered, pay-as-you-go basis. Clients will often use this in combination with autoscaling. These cloud computing web services provide various services related to networking, compute, storage, middleware, IoT and other processing capacity, as well as software tools via AWS server farms. This frees clients from managing, scaling, and patching hardware and operating systems. One of the foundational services is Amazon Elastic Compute Cloud (EC2), which allows users to have at their disposal a virtual cluster of computers, with extremely high availability, which can be interacted with over the internet via REST APIs, a CLI or the AWS console. AWS's virtual computers emulate most of the attributes of a real computer, including hardware central processing units (CPUs) and graphics processing units (GPUs) for processing; local/RAM memory; Hard-disk(HDD)/SSD storage; a choice of operating systems; networking; and pre-loaded application software such as web servers, databases, and customer relationship management (CRM).

Amazon S3 or Amazon Simple Storage Service is a service offered by Amazon Web Services (AWS) that provides object storage through a web service interface. Amazon S3 uses the same scalable storage infrastructure that Amazon.com uses to run its e-commerce network. Amazon S3 can store any type of object, which allows uses like storage for Internet applications, backups, disaster recovery, data archives, data lakes for analytics, and hybrid cloud storage. AWS launched Amazon S3 in the United States on March 14, 2006, then in Europe in November 2007.

<span class="mw-page-title-main">Amazon Elastic Compute Cloud</span> Cloud computing platform

Amazon Elastic Compute Cloud (EC2) is a part of Amazon.com's cloud-computing platform, Amazon Web Services (AWS), that allows users to rent virtual computers on which to run their own computer applications. EC2 encourages scalable deployment of applications by providing a web service through which a user can boot an Amazon Machine Image (AMI) to configure a virtual machine, which Amazon calls an "instance", containing any software desired. A user can create, launch, and terminate server-instances as needed, paying by the second for active servers – hence the term "elastic". EC2 provides users with control over the geographical location of instances that allows for latency optimization and high levels of redundancy. In November 2010, Amazon switched its own retail website platform to EC2 and AWS.

<span class="mw-page-title-main">Cloud computing</span> Form of shared internet-based computing

Cloud computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user. Large clouds often have functions distributed over multiple locations, each of which is a data center. Cloud computing relies on sharing of resources to achieve coherence and typically uses a pay-as-you-go model, which can help in reducing capital expenses but may also lead to unexpected operating expenses for users.

Eucalyptus is a paid and open-source computer software for building Amazon Web Services (AWS)-compatible private and hybrid cloud computing environments, originally developed by the company Eucalyptus Systems. Eucalyptus is an acronym for Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems. Eucalyptus enables pooling compute, storage, and network resources that can be dynamically scaled up or down as application workloads change. Mårten Mickos was the CEO of Eucalyptus. In September 2014, Eucalyptus was acquired by Hewlett-Packard and then maintained by DXC Technology. After DXC stopped developing the product in late 2017, AppScale Systems forked the code and started supporting Eucalyptus customers.

An Amazon Machine Image (AMI) is a special type of virtual appliance that is used to create a virtual machine within the Amazon Elastic Compute Cloud ("EC2"). It serves as the basic unit of deployment for services delivered using EC2.

<span class="mw-page-title-main">Amazon Virtual Private Cloud</span> Cloud-based service

Amazon Virtual Private Cloud (VPC) is a commercial cloud computing service that provides a virtual private cloud, by provisioning a logically isolated section of Amazon Web Services (AWS) Cloud. Enterprise customers can access the Amazon Elastic Compute Cloud (EC2) over an IPsec based virtual private network. Unlike traditional EC2 instances which are allocated internal and external IP numbers by Amazon, the customer can assign IP numbers of their choosing from one or more subnets.

gUSE Grid computing framework

The Grid and Cloud User Support Environment (gUSE), also known as WS-PGRADE /gUSE, is an open source science gateway framework that enables users to access grid and cloud infrastructures. gUSE is developed by the Laboratory of Parallel and Distributed Systems (LPDS) at Institute for Computer Science and Control (SZTAKI) of the Hungarian Academy of Sciences.

Google Cloud Storage is a RESTful online file storage web service for storing and accessing data on Google Cloud Platform infrastructure. The service combines the performance and scalability of Google's cloud with advanced security and sharing capabilities. It is an Infrastructure as a Service (IaaS), comparable to Amazon S3. Contrary to Google Drive and according to different service specifications, Google Cloud Storage appears to be more suitable for enterprises.

Amazon Relational Database Service is a distributed relational database service by Amazon Web Services (AWS). It is a web service running "in the cloud" designed to simplify the setup, operation, and scaling of a relational database for use in applications. Administration processes like patching the database software, backing up databases and enabling point-in-time recovery are managed automatically. Scaling storage and compute resources can be performed by a single API call to the AWS control plane on-demand. AWS does not offer an SSH connection to the underlying virtual machine as part of the managed service.

Amazon Route 53 is a scalable and highly available Domain Name System (DNS) service. Released on 5 December 2010, it is part of Amazon.com's cloud computing platform, Amazon Web Services (AWS). The name is a possible reference to U.S. Routes, and "53" is a reference to the TCP/UDP port 53, where DNS server requests are addressed.

<span class="mw-page-title-main">Amazon DynamoDB</span> NoSQL database service

Amazon DynamoDB is a fully managed proprietary NoSQL database offered by Amazon.com as part of the Amazon Web Services portfolio. DynamoDB offers a fast persistent key–value datastore with built-in support for replication, autoscaling, encryption at rest, and on-demand backup among other features.

Amazon S3 Glacier is an online file storage web service that provides storage for data archiving and backup.

AWS Elastic Beanstalk is an orchestration service offered by Amazon Web Services for deploying applications which orchestrates various AWS services, including EC2, S3, Simple Notification Service (SNS), CloudWatch, autoscaling, and Elastic Load Balancers. Elastic Beanstalk provides an additional layer of abstraction over the bare server and OS; users instead see a pre-built combination of OS and platform, such as "64bit Amazon Linux 2014.03 v1.1.0 running Ruby 2.0 (Puma)" or "64bit Debian jessie v2.0.7 running Python 3.4 ". Deployment requires a number of components to be defined: an 'application' as a logical container for the project, a 'version' which is a deployable build of the application executable, a 'configuration template' that contains configuration information for both the Beanstalk environment and for the product. Finally an 'environment' combines a 'version' with a 'configuration' and deploys them. Executables themselves are uploaded as archive files to S3 beforehand and the 'version' is just a pointer to this.

Topology and Orchestration Specification for Cloud Applications (TOSCA) is an OASIS standard language to describe a topology of cloud based web services, their components, relationships, and the processes that manage them. The TOSCA standard includes specifications of a file archive format called CSAR.

<span class="mw-page-title-main">BOSH (software)</span>

BOSH is an open-source software project that offers a toolchain for release engineering, software deployment and application lifecycle management of large-scale distributed services. The toolchain is made up of a server and a command line tool. BOSH is typically used to package, deploy and manage cloud software. While BOSH was initially developed by VMware in 2010 to deploy Cloud Foundry PaaS, it can be used to deploy other software. BOSH is designed to manage the whole lifecycle of large distributed systems.

Infrastructure as code (IaC) is the process of managing and provisioning computer data center resources through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools. The IT infrastructure managed by this process comprises both physical equipment, such as bare-metal servers, as well as virtual machines, and associated configuration resources. The definitions may be in a version control system, rather than maintaining the code through manual processes. The code in the definition files may use either scripts or declarative definitions, but IaC more often employs declarative approaches.

This is a timeline of Amazon Web Services, which offers a suite of cloud computing services that make up an on-demand computing platform.

The AWS Cloud Development Kit is an open-source software development framework developed by Amazon Web Services (AWS) for defining and provisioning cloud infrastructure resources using familiar programming languages. The AWS CDK aims to improve the experience of working with Infrastructure as Code by providing higher-level, reusable constructs that enable developers to create and manage AWS resources more efficiently and with less boilerplate code compared to traditional configuration files like AWS CloudFormation templates.

References

  1. "AWS CloudFormation - Infrastructure as Code & AWS Resource Provisioning". Amazon Web Services, Inc. Retrieved 2023-03-19.
  2. "AWS CloudFormation User Guide". Amazon Web Services, Inc. Retrieved 2023-03-19.
  3. Br, John; Published, On (2020-01-11). "What is AWS CloudFormation?". TechRadar. Retrieved 2023-03-19.
  4. Ricknäs, Mikael (2011-02-25). "Amazon aims to make it easier to build complex clouds". InfoWorld. Retrieved 2023-03-19.
  5. Writer, CBR Staff (2011-02-28). "Amazon launches AWS CloudFormation". Tech Monitor. Retrieved 2023-03-19.
  6. "Amazon AWS Launches CloudFormation". InfoQ. Retrieved 2023-03-19.
  7. "Release history - AWS CloudFormation". docs.aws.amazon.com. Retrieved 2023-03-19.
  8. "AWS CloudFormation Features". Amazon Web Services, Inc. Retrieved 2023-03-19.
  9. "Working with Stacks - AWS CloudFormation". Amazon Web Services, Inc. Retrieved 2023-03-19.
  10. "Template Anatomy - AWS CloudFormation". Amazon Web Services, Inc. Retrieved 2023-03-19.
  11. "Resource and Property Types Reference - AWS CloudFormation". Amazon Web Services, Inc. Retrieved 2023-03-19.
  12. "Parameters - AWS CloudFormation". Amazon Web Services, Inc. Retrieved 2023-03-19.
  13. "Mappings - AWS CloudFormation". Amazon Web Services, Inc. Retrieved 2023-03-19.
  14. "Conditions - AWS CloudFormation". Amazon Web Services, Inc. Retrieved 2023-03-19.
  15. "Outputs - AWS CloudFormation". Amazon Web Services, Inc. Retrieved 2023-03-19.
  16. "Metadata - AWS CloudFormation". Amazon Web Services, Inc. Retrieved 2023-03-19.
  17. "Template Anatomy". Amazon Web Services, Inc. Retrieved 2023-03-19.
  18. "New – Drift Detection for AWS CloudFormation Stack Resources". Amazon Web Services, Inc. Retrieved 2023-03-19.
  19. "Introducing AWS CloudFormation". Amazon Web Services, Inc. 2011-02-25. Retrieved 2023-03-19.
  20. Jeff Barr (2016-09-19). "AWS CloudFormation Update – YAML, Cross-Stack References, Simplified Substitution". Amazon Web Services, Inc. Retrieved 2023-03-19.
  21. "New – CloudFormation Drift Detection | AWS News Blog". aws.amazon.com. 2018-11-13. Retrieved 2023-03-19.
  22. "CloudFormation Update – CLI + Third-Party Resource Support + Registry | AWS News Blog". aws.amazon.com. 2019-11-18. Retrieved 2023-03-19.