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

添加标签条件后EC2实例启动IAM策略报错排查

解决添加标签条件后EC2 RunInstances及密钥对资源的IAM策略报错问题

问题核心原因

当你给ec2:RunInstances操作添加aws:RequestTag/Key:Value条件时,报错的本质是密钥对资源不支持请求标签(aws:RequestTag)。IAM策略的条件会作用于语句中指定的所有资源,而密钥对本身无法携带请求标签,因此即使你把密钥对正确加入资源列表,条件检查也会失败,导致整个语句的授权被拒绝。

解决方案:拆分策略语句

将支持标签的资源与不支持标签的资源(密钥对)分开,仅在包含支持标签资源的语句中添加标签条件:

  • 第一组语句:针对实例、AMI、子网、安全组、EBS卷等支持标签的资源,添加标签条件,强制必须携带指定键值对标签。
  • 第二组语句:仅针对密钥对资源,不添加标签条件,确保密钥对的授权正常。

示例策略代码

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:us-east-1::image/ami-1234567890abcdef0",
                "arn:aws:ec2:us-east-1:123456789012:subnet/subnet-0123456789abcdef0",
                "arn:aws:ec2:us-east-1:123456789012:security-group/sg-0123456789abcdef0",
                "arn:aws:ec2:us-east-1:123456789012:instance/*",
                "arn:aws:ec2:us-east-1:123456789012:volume/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/Environment": "Production",
                    "aws:RequestTag/Project": "MyApp"
                },
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": ["Environment", "Project"]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:123456789012:key-pair/MyKeyPair"
        }
    ]
}

补充说明

  • 替换示例中的区域、账号ID、资源ID/名称为你实际的信息,确保ARN格式正确。
  • ForAllValues:StringEquals用于强制请求中只包含指定的标签键,避免额外标签(可选,可根据需求调整)。
  • 拆分语句后,IAM会分别检查两组资源的授权,密钥对的语句不受标签条件影响,因此不会再触发报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:48:59