Terraform部署CloudFormation栈时Capabilities参数报错求助
解决Terraform部署CloudFormation栈时capabilities参数的错误
你遇到的错误根源是:Terraform将CAPABILITY_IAM和CAPABILITY_AUTO_EXPAND解析成了资源引用,但实际上这两个是CloudFormation要求的字符串常量,必须用双引号包裹才能被正确识别。
修正后的代码如下:
resource "aws_cloudformation_stack" "member_remediation" { name = "smx-sharr-member-remediation" capabilities = ["CAPABILITY_IAM", "CAPABILITY_AUTO_EXPAND"] parameters = { SecHubAdminAccount = var.parameter_SecHubAdmin CreateS3BucketForRedshiftAuditLogging = var.parameter_CreateS3 LogGroupName = var.parameter_LogGroupName LoadAFSBPMemberStack = var.parameter_LoadAFSBPStack LoadCIS120MemberStack = var.parameter_LoadCISStack LoadPCI321MemberStack = var.parameter_LoadPCIStack } template_body = file("${path.module}/cf-templates/aws-sharr-member.yml") }
补充说明:
- 控制台提示的所需权限正好对应这两个字符串,CloudFormation要求当栈包含IAM资源(对应
CAPABILITY_IAM)或嵌套栈(对应CAPABILITY_AUTO_EXPAND)时,必须显式声明这些capabilities。 - Terraform的
aws_cloudformation_stack资源要求这些能力值以字符串形式传入,不能裸写标识符,否则会被误判为资源引用。
内容的提问来源于stack exchange,提问作者Justin Lawhorne
相关产品推荐
相关产品推荐

