我有一个交叉帐户,该帐户需要访问存储桶(准确地说是文件夹),当我在terraform中应用此帐户时,出现错误,有人可以让我知道,该政策中的错误>
我正在尝试编写s3 acl策略。用户应该只对存储桶中的folder1具有权限。
请指出如何使用该条件(我具有AccountA-CanonicalUserID)和用户名
resource "aws_s3_bucket_policy" "policy" {
bucket = "${aws_s3_bucket.xxx.id}"
policy = <<POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MicrositesLogs",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxx:user/user1"
},
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::xxxx/folder1/*",
"Condition": {
"StringEquals": {
"s3:x-amz-grant-full-control": "id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
]
}
POLICY
}
错误:应用计划时出错:
发生1个错误:
aws_s3_bucket_policy.policy:发生1个错误:
aws_s3_bucket_policy.policy:错误放置S3策略:MalformedPolicy:条件不适用于语句中的动作和资源组合 状态码:400,请求ID:84C92DAD0C9AC0FB,主机ID:rvg7fqFDXdigCHPLLM / FXtOTXJXGKXSN9eQNRBZdkd0GrGRzis9ZkJu1Kkyu896RUvOx7mI7lcQ =
答案 0 :(得分:1)
s3:x-amz-grant-full-control
是一个条件键,要求对象的 creator 要求在创建对象时授予列出的权限。它不授予任何东西-它使上传者有负担进行授予,否则上传被拒绝。因此,不可能在s3:GetObject
上匹配此条件,因此,如果系统允许您创建此策略,它将永远无法工作。