Может загружать файлы, но не может перечислять объекты S3 Bucket. Ошибка доступа запрещена
Я пытаюсь перечислить все файлы в моей корзине S3. Но постоянно получаю ошибку Доступ запрещен. Я думаю, что у меня есть необходимые разрешения в моем IAM
пользователь:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SID",
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:GetBucketAcl",
"s3:GetBucketCORS",
"s3:GetBucketLocation",
"s3:GetBucketLogging",
"s3:GetBucketNotification",
"s3:GetBucketPolicy",
"s3:GetBucketRequestPayment",
"s3:GetBucketTagging",
"s3:GetBucketVersioning",
"s3:GetBucketWebsite",
"s3:GetLifecycleConfiguration",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectTorrent",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTorrent",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListBucketVersions",
"s3:ListMultipartUploadParts",
"s3:PutBucketAcl",
"s3:PutBucketCORS",
"s3:PutBucketLogging",
"s3:PutBucketNotification",
"s3:PutBucketPolicy",
"s3:PutBucketRequestPayment",
"s3:PutBucketTagging",
"s3:PutBucketVersioning",
"s3:PutBucketWebsite",
"s3:PutLifecycleConfiguration",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl",
"s3:RestoreObject"
],
"Resource": [
"arn:aws:s3:::bucket/*"
]
}
]
}
Если я предоставлю полный доступ к S3, (политика AmazonS3FullAccess), я могу перечислить объекты. В чем может быть проблема? Я думаю, что я только удалил разрешения на удаление и создание сегментов в пользовательской политике.
Когда я добавляю полный доступ к той же политике:
"Action": [
"s3:*"
],
до сих пор я не могу перечислить объекты. Но с текущими разрешениями я могу загружать и удалять объекты.
2 ответа
Только что нашел ответ! Действия, разрешенные в политике, являются правильными. Проблема с Resource
, Я использовал это:
"Resource": [
"arn:aws:s3:::bucket/*"
]
Но похоже, что это не дает разрешения на корень ведра. Нет полного доступа. Итак, чтобы это работало, мы должны удалить /
как это:
"Resource": [
"arn:aws:s3:::bucket*"
]
Теперь это работает как шарм.
У меня была такая же проблема. Я использовал две машины, на одной был создан профиль aws, и я смог вывести список s3, но на второй машине, где мой профиль не был создан, и я использовал команду Set-AWSCredential, я не смог вывести список s3. В тот момент, когда я создал профиль, я смог получить доступ к s3 ls.