Using Intrinsic Functions in CloudFormation - Tutorial

Welcome to this tutorial on using intrinsic functions in AWS CloudFormation. Intrinsic functions are a powerful feature of CloudFormation that allow you to perform dynamic transformations and calculations within your templates. By leveraging intrinsic functions, you can make your CloudFormation templates more flexible and adaptable.

Example of an Intrinsic Function

Let's start with a simple example to illustrate the usage of an intrinsic function. Suppose you have a CloudFormation template that defines an Amazon S3 bucket, and you want to generate a unique name for the bucket.

Resources: MyBucket: Type: 'AWS::S3::Bucket' Properties: BucketName: !Sub 'my-bucket-${AWS::AccountId}'

In the above example, we use the !Sub intrinsic function to substitute the placeholder ${AWS::AccountId} with the actual AWS account ID. This ensures that the bucket name is unique within the account.

Steps to Use Intrinsic Functions in CloudFormation

  1. Create a new CloudFormation template or open an existing one.
  2. Identify the resource or property where you want to use an intrinsic function.
  3. Choose the appropriate intrinsic function based on your requirement. Some commonly used intrinsic functions include !Ref, !Sub, !Join, !Select, and !Split.
  4. Insert the intrinsic function in the desired location, ensuring proper syntax and formatting.
  5. Specify the necessary arguments or parameters within the intrinsic function.
  6. Save the CloudFormation template.
  7. Deploy the template using the AWS CloudFormation service.

Common Mistakes with Intrinsic Functions

  • Forgetting to use the exclamation mark (!) before the intrinsic function name.
  • Using incorrect syntax or invalid arguments for the intrinsic functions.
  • Not understanding the context in which the intrinsic function is evaluated.
  • Missing required permissions for the AWS resources accessed by the intrinsic functions.
  • Using unsupported intrinsic functions or functions that are not available in the selected AWS region.

Frequently Asked Questions (FAQs)

1. What is an intrinsic function in AWS CloudFormation?

An intrinsic function is a built-in function provided by AWS CloudFormation that allows you to perform dynamic operations and transformations within your templates.

2. Can I nest intrinsic functions?

Yes, you can nest intrinsic functions inside each other to create more complex expressions and calculations.

3. Are intrinsic functions evaluated during template deployment or during stack creation?

Intrinsic functions are evaluated during stack creation or update, not during template deployment. The resulting values are then used for resource creation or modification.

4. Can I use intrinsic functions in CloudFormation conditions?

Yes, intrinsic functions can be used in CloudFormation conditions to conditionally create or modify resources based on certain conditions.

5. Are there any limitations or restrictions when using intrinsic functions?

Yes, some intrinsic functions have limitations or restrictions. For example, the !Ref function cannot reference resources in other stacks or outputs from other templates.


Intrinsic functions are a valuable tool in AWS CloudFormation that allow you to add dynamic capabilities to your templates. By understanding how to use intrinsic functions effectively, you can create more flexible and customizable infrastructure as code.