2017-02-24 1 views
0

다음 S3 버킷 정책으로 인해 My Cloudformation 스택이 실패하고 계속 롤백됩니다. 참조 된 S3 버킷은 CloudTrail 로그를위한 별도의 버킷입니다 (CloudTrail을 사용할 때 이러한 점이 가장 좋습니다). 버킷은 cloudFormation 프로세스 중에 나머지 스택과 함께 생성됩니다. [스택 이름] -cloudtraillogs- [randomstring]CREATE_FAILED Bucketpolicy - 알 수없는 필드 Fn :: Join

버킷을 지정하는 데 함수를 사용하지 않았지만 작동하지 않는 것 같습니다. 내 추측은 다음에 'cloudtraillogs'버킷을 찾고 그 이름의 버킷을 찾을 수 없기 때문입니다. 참조와 함께 Fn :: Join을 사용하면 그 (?)를 해결할 수 있지만, CloudFormation은 버킷 정책을 평가할 때 '알 수없는 필드 Fn :: Join'을 제공합니다.

내가 여기서 잘못하고있는 것을 알아낼 수있는 사람은 누구입니까?

Bucketpolicy

{ 
    "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" 
       } 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

답변

0

템플릿이 유효 JSON으로 표시되지 않습니다. 첫 번째 정책 설명 (AWSCloudTrailAclCheck20160224)에 Resource 개체의 닫는 괄호 }이 누락되었습니다.

관련 문제