Это сработало для меня. Я сделал следующее:
- Загрузил файл в:
s3://my-bucket/main_users/42/uploaded/foo.txt
- Создан
stack
пользователь IAM с политикой, показанной ниже
- Ран
aws s3 cp s3://my-bucket/main_users/42/uploaded/foo.txt . --profile stack
- Файл успешно скопирован
Политика была:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket/main_users/*/uploaded/*"
}
]
}
Сбой при попытке скопировать файл с:
aws s3 cp s3://my-bucket/main_users/24/something/foo.txt . --profile stack
Обратите внимание, что если вы пытаетесь перечислить (ls
) папку, вам потребуется другая политика. Вышесказанное было проверкой GetObject
, а не списком ведра.
Хотя эти политики назначаются конкретному пользователю IAM, они должны работать в Bucket Policy. Просто убедитесь, что вы отредактировали S3 Block Public Access , чтобы сделать содержимое корзины общедоступным.