Я вижу другое поведение AWS s3 Ls и AWS s3api список-ковширазличное поведение для "AWS s3 LS" и "AWS s3api список-объектов"
Вот первый один:
$ aws s3 ls s3://demo.for.customers
Bucket: demo.for.customers
Prefix:
LastWriteTime Length Name
------------- ------ ----
PRE 5CE4D191-FD14-4C85-8146-9FB8C29B7A7B/
PRE FFBC4675-F864-40E9-8AB8-BDF7A0437010/
Итак, я могу перечислить все объекты в ведре demo.for.customers
Теперь, когда я бегу то же самое, используя s3api, я получаю доступ запрещен:
$ aws s3api list-objects --bucket demo.for.customers
A client error (AccessDenied) occurred: Access Denied
ВОПРОС: Почему я получаю доступ запрещен для перечисления объектов с помощью s3api.
Причина, по которой я поднимаю эту проблему, заключается в том, что у меня такая же проблема, если я использую AWS S3 Ruby SDK.
Однако все в порядке, когда я использую aws s3 ls.
Так AWS S3 рубин SDK и AWS s3api выставляют такое же поведение. Итак, я вставляю только aws s3api CLI.
Кстати, здесь IAM политика, которая была применена к пользователю, который работает все выше команды:
{
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::"
]
},
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::demo.for.customers"
],
"Condition": {
"StringEquals": {
"s3:prefix": [
"",
"FFBC4675-F864-40E9-8AB8-BDF7A0437010/"
],
"s3:delimiter": [
"/"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::demo.for.customers/FFBC4675-F864-40E9-8AB8-BDF7A0437010/"
]
}
]
}
А вот рубин код, который производит ту же самую ошибку;
#!/usr/bin/ruby
require 'aws-sdk'
require 'awesome_print'
AWS.config(:access_key_id => 'whatever',
:secret_access_key => 'again whatever',
:region => 'us-west-2')
s3 = AWS.s3
buckets = s3.client.list_objects(:bucket_name => "demo.for.customers")
ap buckets
и выход:
# ruby s3policies.rb
/var/lib/gems/1.9.1/gems/aws-sdk-1.14.1/lib/aws/core/client.rb:366:in `return_or_raise': Access Denied (AWS::S3::Errors::AccessDenied)
Я столкнулся с этим вопросом ранее сегодня. Я перешел к моему ведру и выбранным свойствам и изменил разрешения на «Аутентифицированные пользователи», и теперь все хорошо. –