EC2 Auto Scaling Group扩容失败:KMS密钥状态异常问题排查
问题分析与解决方案
1. 先排查KMS密钥本身状态
报错中的Client.InvalidKMSKey.InvalidState首先指向密钥状态异常:
- 登录AWS KMS控制台,定位到该客户托管密钥,确认其状态为启用(排除“已禁用”“待删除”状态)。
- 若密钥处于待删除倒计时,立即取消删除计划;若已禁用,重新启用密钥。
2. 补充KMS密钥策略缺失的权限
你的KMS策略仅授予了root账户和管理员角色权限,但ASG启动加密EBS卷的实例时,需要允许EC2实例关联的IAM角色访问密钥。需在现有策略中添加以下声明:
{ "Sid": "Allow EC2 Instance Role for EBS Encryption", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::303567773654:role/[你的EC2实例角色ARN]" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:ebs:id": "vol-*" } } }
替换[你的EC2实例角色ARN]为ASG实例配置文件绑定的IAM角色ARN。
权限说明
kms:GenerateDataKey*:用于生成加密EBS卷所需的数据密钥kms:Decrypt:用于解密EBS卷的加密密钥- 条件
kms:EncryptionContext:aws:ebs:id限制密钥仅用于EBS操作,缩小权限范围
3. 验证EC2实例角色的IAM权限
同时需确保EC2实例的IAM角色本身附加了以下权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:[区域]:303567773654:key/[你的KMS密钥ID]" } ] }
4. 额外检查项
- 若ASG使用加密自定义AMI,需确认KMS密钥策略允许AMI关联的权限主体访问密钥
- 验证ASG的实例配置文件是否正确绑定了上述IAM角色,无配置错误
内容的提问来源于stack exchange,提问作者Abhinav
相关产品推荐
相关产品推荐

