我无法在我的 cloudformation 代码中添加“AWS”:“*”

Posted

技术标签:

【中文标题】我无法在我的 cloudformation 代码中添加“AWS”:“*”【英文标题】:I cannot add "AWS": "*" in my cloudformation code 【发布时间】:2018-03-11 12:47:25 【问题描述】:

我有一个简单的 cloudformation,它创建了一个附有策略的存储桶。这是我的云形成代码:

---
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: testforcfn
    DeletionPolicy: Retain

  BucketPolicy:
    Type: AWS::S3::BucketPolicy
    Properties:
      PolicyDocument:
        Id: MyPolicy
        Version: '2012-10-17'
        Statement:
        - Sid: PublicReadForGetBucketObjects
          Effect: Allow
          Principal: "*"
          Action: s3:GetObject
          Resource:
            Fn::Join:
            - ''
            - - 'arn:aws:s3:::'
              - Ref: S3Bucket
              - "/*"
      Bucket:
         Ref: S3Bucket
Outputs:
  S3Info:
    Value:
        Ref: S3Bucket

一切正常,但是,在主体的存储桶策略中,我需要“AWS”:“”,而不是“”。因此,这里的更多解释是我想要的存储桶策略:


    "Version": "2012-10-17",
    "Id": "Policy1506624486110",
    "Statement": [
        "Sid": "Stmt1506624421375",
        "Effect": "Allow",
        "Principal": 
            "AWS": "*"
        ,
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::testforcfn/*"
    ]

所以这部分是我想在我的 cloudformation 代码中包含的部分:

       "Principal": 
           "AWS": "*"
       

当我在 cloudformation 中执行此操作时出现错误:

              Principal: "AWS:*"

知道如何解决这个问题吗?

【问题讨论】:

您看到了什么错误?仅供参考“校长”:“”相当于“校长”:“AWS”:“”。 实际上我删除了堆栈并忘记捕获确切的错误,但基本上它说其中一个资源未能创建并且没有任何特定的位我确定这是因为这个: Principal: "AWS:* ” 因为当我这样做时它有效:校长:“*” 【参考方案1】:

我会尝试以下方法:

Principal: 
  AWS: "*"

你可以找到一个相关的例子here。

【讨论】:

以上是关于我无法在我的 cloudformation 代码中添加“AWS”:“*”的主要内容,如果未能解决你的问题,请参考以下文章

CloudFormation - 永久删除堆栈

无法在 cloudformation 中使用 https 设置我的弹性负载均衡器

无法仅使用 cloudformation 创建 IAM 策略

即使在我指定了自定义 VPC 之后,我的用于自动缩放组的 Cloudformation YAML 也会继续在默认 VPC 中创建 EC2 实例

导出 AppSync 状态/配置?

无法为执行AWS :: CloudFormation :: CustomResource的aws lambda函数设置环境变量