다음 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"
}
}
}
]
}
}
}
}
}