AWS S3 отклоняет запрос deleteDirectory (), хотя delete () работает - PullRequest
0 голосов
/ 18 октября 2018

Я работаю над проектом Laravel 5.4, и в моем файле composer.json я использую следующие зависимости:

"league/flysystem-aws-s3-v3": "~1.0",
"aws/aws-sdk-php-laravel": "3.*",

Когда я пытаюсь запустить приведенное ниже, все работает нормально:

Storage::disk('s3')->delete('exports/a_few_subdirectories/file.xls');

Однако, когда я пытаюсь запустить эту строку кода в команде Artisan, я получаю следующую ошибку:

Storage::disk('s3')->deleteDirectory('exports');

Вот сообщение об ошибке, которое я получаю:

Aws\S3\Exception\S3Exception Error executing "DeleteObjects" on "https://mybucket.s3.us-west-2.amazonaws.com/?delete"; AWS HTTP error: Client error: `POST https://mybucket.s3.us-west-2.amazonaws.com/?delete` resulted in a `400 Bad Request` response:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>MalformedXML</Code><Message>The XML you provided was not well-formed (truncated...)
 MalformedXML (client): The XML you provided was not well-formed or did not validate against our published schema - <?xml version="1.0" encoding="UTF-8"?>

После поисков, я нашел пару пользователей, у которых была такая же ошибка по существенно разным причинам.Один пользователь сказал, что он достиг предела в 1000 ключей, а другой сказал, что в своем пост-запросе отсутствует обязательный параметр, но оба эти пользователя использовали Ruby, а не Laravel.Поскольку я использую эти пакеты композитора, я предполагаю, что пакеты работают правильно, и также кажется, что все на S3 настроено правильно (например, разрешения и настройки безопасности).Еще один забавный факт: я могу успешно использовать deleteDirectory с локальным драйвером вместо драйвера S3, поэтому в этом случае работает deleteDirectory.

Есть какие-нибудь идеи относительно того, что может быть не так?Я предпочел бы удалить каталог, чем перебирать файлы и удалять их один за другим на S3.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...