Amazon web services 在CloudInformation中创建策略,授予从单独的AWS帐户访问s3存储桶的权限

Amazon web services 在CloudInformation中创建策略,授予从单独的AWS帐户访问s3存储桶的权限,amazon-web-services,amazon-s3,amazon-cloudformation,amazon-iam,Amazon Web Services,Amazon S3,Amazon Cloudformation,Amazon Iam,我已经阅读了“在策略中指定主体”文档:,并从中推断出一些行为,以及其他一些与云信息无关的问题 当我试图创建一个策略,授予外国角色访问本地bucket的权限时,我仍然被这个错误难住了。Cloudformation的错误是:策略文档不应指定主体。 情况细分 我有两个AWS账户。帐户A创建了一个bucket,我想授予帐户B对它的写访问权 在帐户A Cloudformation中我创建了一个策略,授予帐户B角色访问所述存储桶的权限。导游。该角色存在于帐户B中 会计准则3政策: 类型:“AWS::IAM

我已经阅读了“在策略中指定主体”文档:,并从中推断出一些行为,以及其他一些与云信息无关的问题

当我试图创建一个策略,授予外国角色访问本地bucket的权限时,我仍然被这个错误难住了。Cloudformation的错误是:
策略文档不应指定主体。

情况细分 我有两个AWS账户。帐户A创建了一个bucket,我想授予帐户B对它的写访问权

在帐户A Cloudformation中我创建了一个策略,授予帐户B角色访问所述存储桶的权限。导游。该角色存在于帐户B中


会计准则3政策:
类型:“AWS::IAM::策略”
特性:
保单名称:AccountBWriteToS3Policy
政策文件:
版本:2012-10-17
声明:
-负责人:
AWS:'arn:AWS:iam::123456789876:role/AccountBRole'
效果:允许
行动:
-'s3:PutObject'
-'s3:ListBucket'
资源:!附属的
-“${bucketArn}/*”
-巴克特伦:!格塔特
-会计核算
-阿恩
角色:
-会计

但是,cloudformation无法执行,并返回一个错误
策略文档不应指定主体。

我相当困惑

有人能解释这个错误吗?

有人能为我们指明前进的道路吗?


这似乎是一个简单而常见的需求,有很多例子。也许我应该在bucket声明本身中指定策略,而不是创建一个帐户范围的策略?

您需要创建一个角色,该角色具有原则的“信任策略”,然后是一个“权限策略”,以允许对S3 bucket进行读/写访问

下面是我的Cloudformation中的一个片段

  Role:
    Type: "AWS::IAM::Role"
    Properties:
      RoleName: !Sub '${RuleName}-Role'
      Path: "/"     
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal: !Sub 'arn:aws:iam::${AccountID}:user/*'
          Action: sts:AssumeRole      
  RolePolicies:
    Type: "AWS::IAM::ManagedPolicy"
    Properties:
      ManagedPolicyName: !Sub '${RuleName}-RolePolicies'
      Roles:
        - Ref: "Role"
      PolicyDocument:
        Version: "2012-10-17"
        Statement:       
        - Effect: Allow
          Action:
          - s3:Get*
          - s3:Put*
          - s3:List*
          - s3:AbortMultipartUpload       
          Resource:
          - !Ref Bucket

Ref:

成功了,谢谢!看起来角色可以有主体(可以是其他角色),而策略只指定操作