Как удалить ключ в AWS S3 из JavaScript с помощью HTTP API - PullRequest
0 голосов
/ 01 июля 2019

Я не могу пройти мимо "403 (Forbidden)" или последующей ошибки AccessDenied Доступ запрещен ... ... при попытке удалить ключ из моего AWS S3. Для тестирования я сделал общедоступную корзину и добавил правила CORS для DELETE, и разрешил s3: DeleteObject для всех файлов в каталоге следующим образом: "Resource": "arn:aws:s3:::...(directory)/*.

Вот что я пробовал в коде:

function deleteS3file(bucket, path, filename) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
         if (xmlhttp.readyState == 4) {
         if (Math.floor(xmlhttp.status/100) != 2){
             alert(filename +" not deleted from S3\n"+xmlhttp.status+" "+xmlhttp.responseText);
             // http://mysourceip.com/
         } else {
            console.log(filename +" deleted from S3");
         }
         }
    }
    xmlhttp.open("DELETE", bucket, true);
    xmlhttp.send(path+'/'+filename);
}

(это просто дает мне ошибку 403)

и

function deleteS3file(bucket, path, filename) { // path without leading slash
    var fd = new FormData();
    fd.append('key', path+filename); // full path to file
    fd.append('acl', 'bucket-owner-full-control');

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
         if (xmlhttp.readyState == 4) {
         if (Math.floor(xmlhttp.status/100) != 2){
             alert(filename +" not deleted from S3\n"+xmlhttp.status+" "+xmlhttp.responseText);
             // http://mysourceip.com/
         } else {
            console.log(filename +" deleted from S3");
         }
         }
    }
    xmlhttp.open("DELETE", bucket, true);
    xmlhttp.send(fd);
}

(это дает мне 403 и ошибку отказа в доступе AWS)

У меня есть идея, что моя конфигурация корзины верна, потому что я могу загружать файлы без проблем. Документация AWS, кажется, указывает на мое первое решение, но тогда я даже не получаю ответ AWS.

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