Michael
05/22/2026, 1:45 PMRB
05/22/2026, 2:52 PMRB
05/22/2026, 2:53 PMRB
05/22/2026, 2:53 PMpaulm
05/22/2026, 5:54 PMList<String> . Use join(",", <http://local.my|local.my>_list) to pass a single string of comma-delimited values. Implicit type conversion, a recommended practice in HCL, is a really bad idea.
• Other data types: Unexpected semantics are possible with other data types, including confusion between not setting a member of aws_cloudformation_stack.parameters , setting it to HCL null , or setting it to "" (the empty string).
• Template source changes: Modules I've seen that stash a long CloudFormation template in S3 don't enable versioning for the S3 bucket or don't append ?versionId= to the value of aws_cloudformation_stack.template_url . Without these steps, Terraform won't notice updates to the CloudFormation template.
Most of my AWS utilities can be installed as a CloudFormation stack, a CloudFormation StackSet, or a Terraform module that wraps one or the other, so I have a lot of experience in this area. Here is a model you can use (GPLv3) that correctly recognizes CloudFormation template changes:
github.com/sqlxpert/lights-off-aws/blob/c86306c/terraform/main.tf#L213
People deploying the same Terraform module in multiple regions but within one AWS account might be fine with enhanced multi-region support, introduced mid-2025 in Terraform AWS provider v6. Deploying a module in multiple AWS accounts, even in just one region, still requires some sort of multi-account framework, so CloudFormation StackSets can be a simple alternative. Enhanced multi-region example:
github.com/sqlxpert/lights-off-aws#installation-with-terraform
Hope this helps! I'm glad to answer questions here or if we happen to attend CloudPosse office hours on Zoom in the same week.Michael
05/22/2026, 7:14 PMJeremy White (Cloud Posse)
05/24/2026, 3:25 PMJeremy White (Cloud Posse)
05/24/2026, 3:26 PMMichael
05/24/2026, 3:29 PMmanagedkaos
05/25/2026, 2:49 PMpaulm
05/27/2026, 1:27 AM