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

为何AWS CLI可创建无关联身份的IAM策略,CloudFormation却不行?

问题解析:AWS CLI与CloudFormation创建IAM策略的差异

核心原因:对应不同的IAM策略类型

  • AWS CLI执行aws iam create-policy创建的是IAM托管策略(Managed Policy):这类策略是独立的IAM资源,不需要直接关联用户、组或角色,创建后可按需附加到任意IAM实体上。
  • CloudFormation中AWS::IAM::Policy类型定义的是IAM内联策略(Inline Policy):内联策略是直接嵌入到用户、组或角色中的策略,必须和具体IAM实体绑定,因此CloudFormation强制要求指定Groups、Roles或Users属性,否则无法完成创建。

用CloudFormation创建独立托管策略的正确方式

如果要实现和CLI一致的效果(创建独立的托管策略),需要使用AWS::IAM::ManagedPolicy资源类型,示例模板如下:

Resources:
  OfficialSimpleManagedPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      ManagedPolicyName: OfficialSimplePolicy
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Resource: "*"
            Action:
              - cloudformation:Describe*

执行创建栈命令:

aws cloudformation create-stack --stack-name bucket-managed-policy --template-body file://BucketManagedPolicy.yaml --capabilities CAPABILITY_IAM

创建完成后,通过aws iam list-policies就能查看到这个独立的托管策略。

原错误的验证说明

你之前的模板用了AWS::IAM::Policy却未指定关联的IAM实体,触发了内联策略的强制约束,所以栈事件提示At least one of [Groups,Roles,Users] must be non-empty,且不会生成独立的托管策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:55:28