在迁移到 AWS EC2 时,我有充分的理由希望限制实例的用户权限。实例需要做的一件事是访问 S3 上的文件并在那里写入文件。然而,如果不向该用户授予所有权限,我找不到任何方法来实现此目的.
s3cmd 允许我在我授予策略权限的 s3 存储桶上调用“ls”和“du”,但在尝试与这些文件夹之一进行 PUT/同步时总是失败并出现 403 错误。如果我使用我的 root 凭据,传输就会直接完成。
所以,我不明白为什么如果我向用户授予所述存储桶的所有权限,它就不能 PUT,但如果我授予它阿恩:aws:s3:::*(所有桶)然后就可以了。对我来说毫无意义。
以前还有其他人处理过这个问题吗?
尝试这样的事情。我认为问题是您需要 s3:ListAllMyBuckets 和 s3:ListBuckets 才能使 s3cmd 正常工作。不知道为什么,但除非它可以获得存储桶列表,否则它不会工作。第一次尝试使用 s3cmd 的权限时,我遇到了同样的问题,这就是解决方案。
{
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
},
{
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket/path",
"arn:aws:s3:::bucket/path/*"
]
}
]
}
Edit我已经添加了s3:PutObjectAcl
较新版本的 s3cmd 所需的操作如下 Will Jessop 所述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)