AWS 存储桶策略中的主体无效

AWS invalid principal in bucket policy

我正在为 S3 存储桶编写一个 cfn 模板。我已将存储桶策略中的主体定义为

 Principal:
    AWS:
      Fn::Join:
        - ''
        - - 'arn:aws:s3:::'
        - !Ref "AWS::AccountId"
        - ":root"

我想将本金设为 aws 账户。这给了我一个无效的主体错误。 请帮忙

IAM 根主体的 ARN 类似于 arn:aws:iam::1234567890:root

注意:iam,不是s3,帐号前两个冒号,不是3。

对于Fn::Join你需要两个级别的-,而且它应该是iam:

 Principal:
    AWS:
      Fn::Join:
        - ''
        - - 'arn:aws:iam::'
          - !Ref "AWS::AccountId"
          - ":root"

不过用起来会更方便Sub:

 Principal:
    AWS: !Sub 'arn:aws::${AWS::AccountId}:root"