Terraform创建AWS IAM策略时触发MalformedPolicyDocument错误
解决Terraform配置AWS IAM策略时SID格式错误问题
问题原因
报错信息明确说明:IAM策略的语句ID(SID)必须是字母数字,需匹配正则表达式[0-9A-Za-z]*。你当前配置中的SID值"don't_delete_production_dbs !"包含单引号、空格、感叹号和下划线,均属于非法字符,导致terraform apply时被AWS API拒绝(terraform plan仅做Terraform语法校验,不会验证AWS的具体规则限制)。
解决方案
将SID修改为仅包含大小写英文字母和数字的合法值,示例如下:
data "aws_iam_policy_document" "db_iam_policy_document" { version = "2012-10-17" statement { actions = ["rds:DeleteDBInstance"] effect = "Deny" resources = [ "arn:aws:rds:us-west-2:123456789:db:*" ] condition { test = "StringEquals" variable = "rds:db-tag/environment" values = [ "production" ] } sid = "DontDeleteProductionDbs" } }
只要SID仅由大小写英文字母和数字组成即可,比如dontdeleteproductiondbs、DontDeleteProductionDbs123等都是符合要求的取值。
内容的提问来源于stack exchange,提问作者Aviv
相关产品推荐
相关产品推荐

