У меня есть следующий код, который я пытаюсь развернуть в CloudFormation.По какой-то причине он настаивает на том, что я пропускаю важный элемент в моем шаблоне.
Я только начал получать эту ошибку, так как я изменил политику корзины в ресурсе S3NotificationBucketPolicy
.
Любойпонимание будет отличным.
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "",
"Resources": {
"S3NotificationBucketPolicy": {
"Type": "AWS::S3::BucketPolicy",
"Properties": {
"Bucket": {
"Ref": "S3NotificationBucket"
},
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [{
"Version": "2012-10-17",
"Statement": [{
"Sid": "AWSCloudTrailAclCheck20150318",
"Action": "s3:GetBucketAcl",
"Effect": "Allow",
"Resource": {
"Fn::Join": ["",
["arn:aws:s3:::",
{
"Ref": "S3NotificationBucket"
}]]
},
"Principal": {
"Service": "cloudtrail.amazonaws.com"
}
},
{
"Sid": "AWSCloudTrailWrite20150318",
"Action": "s3:PutObject",
"Effect": "Allow",
"Resource": {
"Fn::Join": ["",
["arn:aws:s3:::",
{
"Ref": "S3NotificationBucket"
},
"/*"]]
},
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}]
}]
}
}
},
"S3Bucket": {
"Type": "AWS::S3::Bucket",
"DeletionPolicy": "Delete",
"Properties": {
}
},
"S3NotificationBucket": {
"Type": "AWS::S3::Bucket",
"DeletionPolicy": "Delete",
"Properties": {
}
},
"S3BucketPolicyForCloudTrail": {
"DependsOn": "S3Bucket",
"Type": "AWS::S3::BucketPolicy",
"Properties": {
"Bucket": {
"Ref": "S3Bucket"
},
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [{
"Sid": "AWSCloudTrailAclCheck20150319",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": {
"Fn::Join": ["",
["arn:aws:s3:::",
{
"Ref": "S3Bucket"
}]]
}
},
{
"Sid": "Permissions fot Cloudtrail",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "s3:*",
"Resource": {
"Fn::Join": ["",
["arn:aws:s3:::",
{
"Ref": "S3Bucket"
},
"/*"]]
}
}]
}
}
},
"CloudTrailForS3": {
"DependsOn": ["S3NotificationBucketPolicy",
"S3BucketPolicyForCloudTrail"],
"Type": "AWS::CloudTrail::Trail",
"Properties": {
"EventSelectors": [{
"DataResources": [{
"Type": "AWS::S3::Object",
"Values": [{
"Fn::Join": ["",
["arn:aws:s3:::",
{
"Ref": "S3Bucket"
},
"/*"]]
}]
}],
"ReadWriteType": "All",
"IncludeManagementEvents": false
}],
"S3BucketName": {
"Ref": "S3NotificationBucket"
},
"IsLogging": true,
"IncludeGlobalServiceEvents": true
}
}
}
}
И оно завершится неудачно со следующим сообщением, хотя я указал требуемый элемент.
Отсутствует обязательное поле Effect (Service: Amazon S3;Код состояния: 400; Код ошибки: MalformedPolicy; Идентификатор запроса: B44FBDB00CA6AFDD; Идентификатор расширенного запроса S3: jglPqCY9LCEOvIz5v7d2vyFbeaaelNVgahs7nGtYg5NJR20FRfef4m0lgtzqZ *1011* 1014 *1014* 1014 * 1011