it-swarm.com.de

Aws s3 Objekt mit Javascript löschen

Ich möchte eine Datei aus Amazon S3 mit Javascript löschen. Ich habe bereits eine Datei mit JavaScript auf s3 hochgeladen. Ideen helfen bitte

16
user3335960

Sie können die js-Methode von s3 verwenden: http://docs.aws.Amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteObject-property

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./credentials-ehl.json');
var s3 = new AWS.S3();
var params = {  Bucket: 'your bucket', Key: 'your object' };
s3.deleteObject(params, function(err, data) {
  if (err) console.log(err, err.stack);  // error
  else     console.log();                 // deleted
});

Beachten Sie, dass S3 niemals zurückgibt, dass das Objekt gelöscht wurde. Sie müssen es vorher oder nachher mit getobject, headobject, waitfor usw. überprüfen

23
jlalcazar

Sie können die Konstruktion folgendermaßen verwenden:

var params = {
  Bucket: 'yourBucketName',
  Key: 'fileName'
/* where value for 'Key' equals 'pathName1/pathName2/.../pathNameN/fileName.ext' - full path name to your file without '/' at the beginning */
};
s3.deleteObject(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

Und vergessen Sie nicht, es in das Promise zu packen.

14

Bevor Sie die Datei löschen, müssen Sie die 1) -Datei überprüfen, ob sie sich im Bucket befindet. Wenn die Datei nicht im Bucket verfügbar ist und die deleteObject-API verwendet, wird kein Fehler 2) CORS Configuration des Bucket ausgelöst. Durch Verwendung von headObject API wird der Dateistatus im Bucket angezeigt.

AWS.config.update({
        accessKeyId: "*****",
        secretAccessKey: "****",
        region: region,
        version: "****"
    });
const s3 = new AWS.S3();

const params = {
        Bucket: s3BucketName,
        Key: "filename" //if any sub folder-> path/of/the/folder.ext
}
try {
    await s3.headObject(params).promise()
    console.log("File Found in S3")
    try {
        await s3.deleteObject(params).promise()
        console.log("file deleted Successfully")
    }
    catch (err) {
         console.log("ERROR in file Deleting : " + JSON.stringify(err))
    }
} catch (err) {
        console.log("File not Found ERROR : " + err.code)
}

Da die Parameter konstant sind, ist es am besten, sie mit const zu verwenden. Wenn die Datei nicht in der s3 gefunden wird, wird der Fehler NotFound : null ausgegeben.

Wenn Sie Vorgänge im Bucket anwenden möchten, müssen Sie die Berechtigungen von CORS Configuration im entsprechenden Bucket in der AWS ändern. Zum Ändern der Berechtigungen Bucket->permission->CORS Configuration und Diesen Code hinzufügen.

<CORSConfiguration>
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

weitere Informationen zur CROS-Konfiguration finden Sie unter: https://docs.aws.Amazon.com/AmazonS3/latest/dev/cors.html

1
banoth ravinder

Sie können die deleteObjects-API verwenden, um mehrere Objekte auf einmal zu löschen, anstatt die API für jeden zu löschenden Schlüssel aufzurufen. Spart Zeit und Netzwerkbandbreite. 

Sie können folgendes tun

var deleteParam = {
    Bucket: 'bucket-name',
    Delete: {
        Objects: [
            {Key: 'a.txt'},
            {Key: 'b.txt'},
            {Key: 'c.txt'}
        ]
    }
};    
s3.deleteObjects(deleteParam, function(err, data) {
    if (err) console.log(err, err.stack);
    else console.log('delete', data);
});

Referenz finden Sie unter - https://docs.aws.Amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteObjects-property

0
Aniket Thakur