Amazon s3 创建失败的Bucketpolicy-未知字段Fn::Join

Amazon s3 创建失败的Bucketpolicy-未知字段Fn::Join,amazon-s3,amazon-cloudformation,Amazon S3,Amazon Cloudformation,由于以下S3桶策略,我的Cloudformation堆栈失败并不断回滚。引用的S3 bucket是一个单独的bucket,用于CloudTrail日志(正如我所读到的,使用CloudTrail时,这样做是最佳实践)。在cloudFormation过程中,bucket与堆栈的其余部分一起创建:[stackname]-cloudtraillogs-[randomstring] 我试着不使用任何函数来指定bucket,但这似乎不起作用。我的猜测是因为它然后去寻找一个bucket‘cloudtraill

由于以下S3桶策略,我的Cloudformation堆栈失败并不断回滚。引用的S3 bucket是一个单独的bucket,用于CloudTrail日志(正如我所读到的,使用CloudTrail时,这样做是最佳实践)。在cloudFormation过程中,bucket与堆栈的其余部分一起创建:[stackname]-cloudtraillogs-[randomstring]

我试着不使用任何函数来指定bucket,但这似乎不起作用。我的猜测是因为它然后去寻找一个bucket‘cloudtraillogs’,却找不到任何具有该名称的bucket。使用带有引用的Fn::Join可能会解决这个问题(?),但当评估bucket策略时,CloudFormation会给出“未知字段Fn::Join”

有谁能发现我可能做错了什么

巴克特政策

{
  "Resources": {
    "policycloudtraillogs": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "cloudtraillogs"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Sid": "AWSCloudTrailAclCheck20160224",
              "Effect": "Allow",
              "Principal": {
                "Service": "cloudtrail.amazonaws.com"
              },
              "Action": "s3:GetBucketAcl",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:s3:::",
                    {
                      "Ref": "cloudtraillogs"
                    },
                    "/*"
                  ]
                ]
            },
            {
              "Sid": "AWSCloudTrailWrite20160224",
              "Effect": "Allow",
              "Principal": {
                "Service": "cloudtrail.amazonaws.com"
              },
              "Action": "s3:PutObject",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:aws:s3:::",
                    {
                      "Ref": "cloudtraillogs"
                    },
                    "/AWSLogs/myAccountID/*"
                  ]
                ]
              },
              "Condition": {
                "StringEquals": {
                  "s3:x-amz-acl": "bucket-owner-full-control"
                }
              }
            }
          ]
        }
      }
    }
  }
}

您的模板似乎不是有效的JSON。您的第一个策略语句(
AWSCloudTrailAclCheck20160224
)缺少其
资源
对象的结束括号
}