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

如何配置AWS IAM策略允许CloudFormation执行EC2操作?

解决CloudFormation因源IP限制无法执行EC2操作的问题

我之前处理过类似的问题,你遇到的核心矛盾是:CloudFormation在代你执行EC2操作时,是以服务自身的身份发起请求的,它的源IP是cloudformation.amazonaws.com,而非你的客户端IP 1.2.3.4,导致原有Deny策略误拦截了这些合法调用。

解决方案思路

我们需要调整IAM策略的条件逻辑,区分两种场景:

  • 你直接发起的EC2/CloudFormation操作:必须限制在指定IP 1.2.3.4
  • CloudFormation代理发起的EC2操作:无需检查源IP,允许正常执行

修改后的IAM策略

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": ["ec2:*", "cloudformation:*"],
      "Resource": "*",
      "Condition": {
        "And": [
          {
            "NotIpAddress": {
              "aws:SourceIp": ["1.2.3.4"]
            }
          },
          {
            "NotEquals": {
              "aws:CalledVia": "cloudformation.amazonaws.com"
            }
          }
        ]
      }
    }
  ]
}

策略逻辑解释

  1. And条件组合:只有当两个条件同时满足时,才会触发Deny:
    • 请求的源IP不是1.2.3.4(NotIpAddress)
    • 请求不是由CloudFormation服务代理发起的(NotEquals: aws:CalledVia)
  2. aws:CalledVia的作用:AWS会自动为通过服务代理的请求添加这个条件,当CloudFormation调用EC2的RunInstances时,该值会被设为cloudformation.amazonaws.com,从而绕过Deny限制。

额外注意事项

如果你的CloudFormation栈使用了专用服务角色(推荐的最佳实践),请确保该角色拥有足够的EC2操作权限(比如ec2:RunInstances、ec2:CreateVolume等),不过这部分权限配置和当前的源IP限制策略是相互独立的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:51:52