我正在尝试使用2种不同的策略创建2个存储桶。
一个桶,VendorsWGLogs,将成为日志输出的目的地。
另一个存储桶VendorsWG将授予GetObject,PutObject和DeleteObject访问指定IAM组的权限。
这是我到目前为止所做的:
"Resources": {
"VendorsWGLogs": {
"Type": "AWS::S3::Bucket",
"Properties": {},
},
"LogsBucketPolicy": {
"Type": "AWS::S3::BucketPolicy",
"Properties": {
"Bucket": {
"Ref": "VendorsWGLogs"
},
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "WeatherGuidance LogBucket permissions",
"Effect": "Allow",
"Principal": {
"AWS" : "arn:aws:s3:::VendorsWG"
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource" : { "Fn::Join" : [
"", [ "arn:aws:s3:::", { "Ref" : "VendorsWGLogs" } , "/*" ]
]}
}
]
}
}
},
"VendorsWG": {
"Type": "AWS::S3::Bucket",
"Properties": {
"LoggingConfiguration": {
"DestinationBucketName": {"Ref" : "VendorsWGLogs"},
"LogFilePrefix": "testing-logs"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "a1169860-d743-406e-a3e5-e12831826439"
},
}
},
"S3BP4TNQZ": {
"Type": "AWS::S3::BucketPolicy",
"Properties": {
"Bucket": {
"Ref": "VendorsWG"
},
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "WeatherGuidance Object permissions",
"Effect": "Allow",
"Principal": {
"AWS" : "arn:aws:iam::someUserGroup"
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource" : { "Fn::Join" : [
"", [ "arn:aws:s3:::", { "Ref" : "VendorsWG" } , "/*" ]
]}
},
{
"Sid": "WeatherGuidance ListBucket",
"Effect": "Allow",
"Principal": {
"AWS" : "arn:aws:iam::someUserGroup"
},
"Action": "s3:ListBucket",
"Resource" : { "Fn::Join" : [
"", [ "arn:aws:s3:::", { "Ref" : "VendorsWG" } ]
]},
"Condition": {
"StringLike": {
"s3:prefix": "weatherguidance*"
}
}
}
]
}
}
}
}
事件日志输出:
类型:
AWS::S3::Bucket
逻辑ID:
VendorsWG
身份原因:
You must give the log-delivery group WRITE and READ_ACP permissions to the target bucket
我认为将目标存储桶的策略主体指定为VendorsWGLogs会解决这个问题,现在我已经没有想法了。
我做错了什么?如何启用日志记录? 感谢
答案 0 :(得分:9)
需要将其置于日志存储桶属性
下Properties: {
AccessControl: "LogDeliveryWrite"
}
答案 1 :(得分:1)
我认为你的问题有两个方面:
s3:ListBucket
因此无法读取存储桶的内容对s3存储桶的操作在存储桶(VendorsWGLogs)和内容(VendorsWGLogs/*
)级别运行,因此需要在资源下列出这两个存储桶。由此产生的政策应为
"资源":[ " ARN:AWS:S3 ::: VendorsWGLogs&#34 ;, " ARN:AWS:S3 ::: VendorsWGLogs / *" ]