You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform创建EC2实例时因根块设备加密报错无法达到目标状态

排查步骤

  • 校验KMS密钥权限:你使用的自定义KMS密钥必须给EC2服务关联角色、执行Terraform操作的IAM身份(用户/角色)授予至少kms:CreateGrant、kms:Decrypt、kms:GenerateDataKeyWithoutPlaintext、kms:DescribeKey的操作权限。
  • 检查AMI合法性:你提供的配置中AMI ID仅填写了ami-前缀,需确认使用的是ap-south-1区域下有权限访问的合法AMI;如果该AMI本身为加密状态,还需确保你持有AMI对应加密密钥的访问权限。
  • 排查配置冲突:你已在EC2控制台开启新EBS卷默认加密,可临时删除代码中encrypted和kms_key_arn两个参数,使用默认加密配置测试实例是否能正常启动,排除配置冲突问题。
  • 校验可用区库存:确认ap-south-1a可用区有t2.micro实例的库存,可临时修改availability_zone参数为ap-south-1b测试,排除可用区库存不足的问题。
  • 检查账号配额:确认你的账号在ap-south-1区域的EC2实例配额、EBS卷配额未达到上限。

解决方法

该报错90%以上的场景为KMS密钥策略配置错误,可按以下流程修复:

  1. 打开AWS KMS控制台,找到你代码中指定的KMS对称密钥,进入密钥策略编辑页面
  2. 在密钥策略中添加如下权限语句,替换对应账号、区域、密钥参数即可:
{
    "Sid": "Allow EC2 service to use KMS key for EBS encryption",
    "Effect": "Allow",
    "Principal": {
        "Service": "ec2.amazonaws.com"
    },
    "Action": [
        "kms:CreateGrant",
        "kms:Decrypt",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:DescribeKey"
    ],
    "Resource": "*"
}
  1. 确认执行Terraform操作的IAM身份的权限策略中,也包含上述KMS操作权限,以及ec2:RunInstances、ec2:CreateVolume等EC2相关操作权限。
  2. 补全配置文件中的完整AMI ID,确认该AMI在ap-south-1区域可用后,重新执行terraform apply验证。

内容的提问来源于stack exchange,提问作者Shekhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:39:03