Choosing an IaC tool
So, which tool should you choose?
With so many different tool options and varying business requirements, there's no one-size-fits-all approach. In addition to the advantages and disadvantages for each tool discussed in this guide, consider the following recommendations for your business requirements and operating model:
If you are managing or deploying a serverless AWS solution with minimal dependency or dependents, AWS Serverless Application Model (AWS SAM) might be a good option for you. It has all the same features as AWS CloudFormation. It also simplifies testing and deployment of serverless applications to the AWS Cloud.
If you are managing your infrastructure entirely on AWS, then AWS CloudFormation and the AWS Cloud Development Kit (AWS CDK) are good options. They provide out-of-the-box state management, and you can also natively use new features or AWS resources.
If you want a multi-provider utility, especially for managing multi-cloud or hybrid-cloud infrastructure, Terraform might be a good choice because it is platform agnostic. With Terraform, you can also use a wide range of plugins, and it has a large community with enterprise support options.
If you have a top-down distribution with best practices and if you have orchestration where you create, publish, and distribute reusable modules by using common programming languages, then the AWS CDK might be a good option.
If your organization can tolerate a high level of risk and needs to support multi-cloud or hybrid-cloud environments, consider using Pulumi.